From a6d398751cc4d46a6dbaa08b681cd1fa2d015f08 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sun, 20 Jun 2021 16:20:38 +0400 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D1=82=20=D0=BF=D1=80=D0=BE=20C++?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/yuydev.md | 66 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 56 insertions(+), 10 deletions(-) (limited to 'blog/yuydev.md') 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 в которой можно создавать и сохранять основные +Найти в глобальном поиске нашу группу +yuydev@googlegroups.com и подать в неё заявку на вступление. После этого в гугл +диске появится директория Yuydev в которой можно создавать и сохранять основные документы/ассеты связанные с игрой. ## Про архитектуру движка @@ -25,6 +25,11 @@ состояние объектов, у которых есть компоненты `Transform` и `Player`, а система `moveEnemy` --- `Transform` и `Enemy`. +Идейные вдохновители: + +- Unity 3D +- + ## Стек технологий - - - @@ -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) +- Графический интерфейс для создания сцен +- Игровые механики (придумывание идей и реализация) +- Сюжет +- Графика +- Музыка -- cgit v1.2.3