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/cpp.md | 48 ++++++++++++++++++++++++++++++++++++++++++ blog/yuydev.md | 66 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 104 insertions(+), 10 deletions(-) create mode 100644 blog/cpp.md (limited to 'blog') 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://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 в которой можно создавать и сохранять основные +Найти в глобальном поиске нашу группу +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