summaryrefslogtreecommitdiff
path: root/blog
diff options
context:
space:
mode:
Diffstat (limited to 'blog')
-rw-r--r--blog/cpp.md48
-rw-r--r--blog/yuydev.md66
2 files changed, 104 insertions, 10 deletions
diff --git a/blog/cpp.md b/blog/cpp.md
new file mode 100644
index 0000000..4cc03c5
--- /dev/null
+++ b/blog/cpp.md
@@ -0,0 +1,48 @@
+# Чё по си плюс плюс
+
+## Непосредственно плюсы
+- - -
+
+- [Лекции С++ (Мещерин 2018)](https://youtu.be/2PM4TgCZIQs) --- первый лекции
+ можно скипнуть (но не желательно, т.к есть тонкие моменты и в самой базовой
+ части), важна часть про итераторы, возможно аллокаторы, умные указатели и
+ compile-time вычисления (последнее маловероятно, но может пригодиться)
+- [Лекции С++ (Мещерин 2020)](https://youtu.be/9WO24IJQP_Q) --- базовые темы
+ уточнены, где-то добавлен более сложный материал, но всё это на дистанте, что
+ лично мне меньше нравится:
+- [Лекции ТП (2020)](https://youtu.be/XjGbg-N4sQc) - очень веселые, крутые и
+ ненапряжные лекции о базовых принципах разработки ПО.:
+- [Перечисление важных фич С++11](https://habr.com/ru/post/182920/)
+- [Шаблоны C++](https://habr.com/ru/post/436880/)
+- [Примерная реализация системы компонентов](https://austinmorlan.com/posts/entity_component_system/)
+- [Quick Start in CLion](https://www.jetbrains.com/help/clion/clion-quick-start-guide.html#customize-the-environment)
+ (можно пролистать все разделы слева)
+
+## Git
+- - -
+
+- [Местный туториал](git.html) (обязательно к прочтению)
+- <https://git-scm.com/docs/gittutorial>
+- <https://www.vogella.com/tutorials/Git/article.html> (отличный источник на английском)
+- <https://proglib.io/p/git-for-half-an-hour> (на русском)
+
+## Сборка:
+- - -
+
+- [Системы сборки](https://habr.com/ru/post/478124/)
+- [GCC make](https://habr.com/ru/post/211751/)
+- [Header guards](https://ravesli.com/urok-23-header-guards/)
+- [Частые беды с инклудами](https://samwho.dev/blog/duplicate-symbol-what/) (о тонкостях линковки)
+
+## Misc
+- - -
+
+- [Побаловаться с алгоритмами](https://docs.google.com/spreadsheets/d/1eQ7WS1U7HxhytsDYRsNsgXRi7w3DUoBTonXvUq1Fbt4/edit?usp=sharing)
+ (если какие-то уже известны - скип. Снизу есть ссылка на док с наиболее важной
+ теорией, если там что-то известно - тоже скип. Задачи разделены по цветам - от
+ простого к сложному.):
+- [JSON формат](https://habr.com/ru/post/554274/)
+- [Спецификация TOML](https://toml.io/en/v1.0.0)
+- [Референс по маркдауну](https://support.typora.io/Markdown-Reference)
+- [Finite State Machine](https://neerc.ifmo.ru/wiki/index.php?title=Детерминированные_конечные_автоматы)
+
diff --git a/blog/yuydev.md b/blog/yuydev.md
index c7584fc..a3e95fb 100644
--- a/blog/yuydev.md
+++ b/blog/yuydev.md
@@ -3,9 +3,9 @@
## Что делать
- - -
-Найти в глобальном поиске groups.google.com нашу группу yuydev@googlegroups.com
-и подать в неё заявку на вступление. После этого в гугл диске появится
-директория Yuydev в которой можно создавать и сохранять основные
+Найти в глобальном поиске <https://groups.google.com> нашу группу
+yuydev@googlegroups.com и подать в неё заявку на вступление. После этого в гугл
+диске появится директория Yuydev в которой можно создавать и сохранять основные
документы/ассеты связанные с игрой.
## Про архитектуру движка
@@ -25,6 +25,11 @@
состояние объектов, у которых есть компоненты `Transform` и `Player`, а
система `moveEnemy` --- `Transform` и `Enemy`.
+Идейные вдохновители:
+
+- Unity 3D
+- <https://github.com/saintruler/brandNewEngine>
+
## Стек технологий
- - -
@@ -36,6 +41,8 @@
лицензию за несколько минут. Иначе, можно использовать студак во вкладке
Official Document, но тогда придётся подождать несколько дней.
+Почитать инфу по C++ можно [тут](cpp.html).
+
Для работы с графикой, со звуком и остальными мультимедийными вещами будет
использоваться библиотека [SFML](https://www.sfml-dev.org/). Для её изучения
можно почитать [туториалы](https://www.sfml-dev.org/tutorials/2.5/) на
@@ -115,13 +122,27 @@ someFunctionName(int param1, int param2)
- Комментарии на русском языке.
Также можно заметить, что в комментариях есть конструкции `TODO(имя)` и
-`NOTE(имя)`. Комментарии такого вида обычно распознаются в IDE и, например,
-по TODO-комментария можно искать части проекта, в которых следовало бы
-добавить какие-то вещи, которые могут быть не обязательны для сборки и работы
-проекта в данный момент, но могут привести к неожиданным ошибкам. Например,
-обработку ошибок/исключений можно отложить на потом, но чтобы не забыть о
-том, что такая необходимость существует, надо добавить комментарий `TODO(имя)`
-и через двоеточие указать чего именно не хватает.
+`NOTE(имя)`. Имя указывает только на автора комментария, а не на того, кто
+это будет чинить. Нужно это для того, чтобы можно было найти автора этого
+комментария, если не совсем понятна проблема или что-то ещё. Комментарии такого
+вида обычно распознаются в IDE и, например, по TODO-комментария можно искать
+части проекта, в которых следовало бы добавить какие-то вещи, которые могут быть
+не обязательны для сборки и работы проекта в данный момент, но могут привести
+к неожиданным ошибкам. Например, обработку ошибок/исключений можно отложить
+на потом, но чтобы не забыть о том, что такая необходимость существует, надо
+добавить комментарий `TODO(имя)` и через двоеточие указать чего именно не
+хватает.
+
+### Особенности работы с C++ в этом проекте
+
+Очень желательно везде использовать [Plain Old
+Data](https://ru.wikipedia.org/wiki/Простая_структура_данных), то есть обычные
+`struct`. Использование наследования и рефлексии запрещено (до тех пор, пока не
+найдётся место, где это **действительно** понадобится). Макросы не запрещены,
+но их количество следует минимизировать. Если какой-то сложный тип данных
+встречается достаточно часто есть возможность рассмотреть вынесение его в
+отдельный `typedef`. Глобальных переменных следует избегать, а нужные данные
+хранить непосредственно в компонентах.
### Работа с git
@@ -155,3 +176,28 @@ someFunctionName(int param1, int param2)
Основные команды и процесс работы с нашим репозиторием можно прочитать
[тут](git.html).
+## Какие есть задачи
+- - -
+
+- Сборка проекта под разные архитектуры
+ - Debug и Release сборки
+- Система логгирования
+- Чтение конфигов в каком-то языке разметки
+ - Выбрать этот язык (кандидаты: toml, yaml, json, ini)
+- Движок
+ - Система компонентов
+ - Подсистема рендеринга
+ - Подсистема ввода
+ - Подсистема сцен
+ - Подсистема сохранений
+ - Сериализация/десериализация объектов
+ - Работа с незапакованными ассетами (Debug build)
+ - Звуковая подсистема
+ - Подсистема событий
+ - Фреймворк для разработки графического интерфейса (а также работа со шрифтами)
+ - Запаковка ассетов и загрузка этих архивов в собранном проекте (Release build)
+- Графический интерфейс для создания сцен
+- Игровые механики (придумывание идей и реализация)
+- Сюжет
+- Графика
+- Музыка