💡 Внимание, лайфхак! Раз я вчера проштрафился, сегодня будет второй пост - и для кого-то он может стать реальным спасением. Поговорим про то, как не утонуть в документации.
📝 Я нашел оптимальный вариант для инди-команды - вольт Obsidian прямо в репозитории с исходниками игры. Главный плюс такого подхода в том, что вы получаете полноценное версионирование. Вся история изменений вашего ГДД теперь хранится вместе с кодом - вы всегда видите, когда и почему изменилась механика, и можете легко откатиться к любой старой версии документа.
🤖 Но тут есть важный нюанс: я выступаю за то, чтобы смыслы и идеи вы всегда писали лично. Агент не должен додумывать за вас или подменять ваше видение игры. Его задача - чисто механическая: расставить ссылки, сделать форматирование в мд и встроить ваш текст в структуру вики. Мы убираем рутину и обучение синтаксису, оставляя человеку самое важное - проектирование смыслов.
🔄 В итоге получается идеальная навигация и порядок без лишних усилий. Вы просто набрасываете поток мыслей, а на выходе имеете структурированную базу знаний, которую потом можно скармливать ИИ для поиска логических несостыковок в механиках.
Было полезно? Расскажите, как вы ведете документацию и доверяете ли оформление нейронкам? 👇
📝 Я нашел оптимальный вариант для инди-команды - вольт Obsidian прямо в репозитории с исходниками игры. Главный плюс такого подхода в том, что вы получаете полноценное версионирование. Вся история изменений вашего ГДД теперь хранится вместе с кодом - вы всегда видите, когда и почему изменилась механика, и можете легко откатиться к любой старой версии документа.
🤖 Но тут есть важный нюанс: я выступаю за то, чтобы смыслы и идеи вы всегда писали лично. Агент не должен додумывать за вас или подменять ваше видение игры. Его задача - чисто механическая: расставить ссылки, сделать форматирование в мд и встроить ваш текст в структуру вики. Мы убираем рутину и обучение синтаксису, оставляя человеку самое важное - проектирование смыслов.
🔄 В итоге получается идеальная навигация и порядок без лишних усилий. Вы просто набрасываете поток мыслей, а на выходе имеете структурированную базу знаний, которую потом можно скармливать ИИ для поиска логических несостыковок в механиках.
Было полезно? Расскажите, как вы ведете документацию и доверяете ли оформление нейронкам? 👇
❤3🔥3
🌓 Добрый вечер, господа!
Сегодня похоливарим на тему - что важнее визуал, механика, история или эстетика? Знали ли вы о таком понятии, как элементарная тетрада? Так вот...
Обсуждая будущее Deckart, мы в команде порой довольно громко спорим. Какой должна быть игра? Насколько сложной? Как она должна выглядеть? Скажу честно: мы не всегда сходимся во мнениях, и это нормально для живого процесса. Чтобы не утонуть в спорах, предлагаю разложить всё на кирпичики.
🧱 Тетрада разделяет игру на четыре основы. Если баланса нет, получается специфический продукт:
⚙️ Механика минус эстетика = таблица Excel. Правила работают, но вовлекать нечем.
🎨 Эстетика минус механика = открытка. Красиво смотреть, но не во что играть.
📖 История минус технология = багованное кино. Сюжет есть, но всё постоянно виснет.
💻 Технология минус история = пустой бенчмарк. Летает быстро, но смысла в этом ноль.
🗳 Как вы считаете, что важнее и на что мне сейчас делать упор?
1. Механика (аддиктивный геймплей)
2. Эстетика (атмосфера и арт)
3. История (глубокий лор)
4. Технология (стабильный код)
🃏 Поделитесь мыслями комментарии!
Сегодня похоливарим на тему - что важнее визуал, механика, история или эстетика? Знали ли вы о таком понятии, как элементарная тетрада? Так вот...
Обсуждая будущее Deckart, мы в команде порой довольно громко спорим. Какой должна быть игра? Насколько сложной? Как она должна выглядеть? Скажу честно: мы не всегда сходимся во мнениях, и это нормально для живого процесса. Чтобы не утонуть в спорах, предлагаю разложить всё на кирпичики.
🧱 Тетрада разделяет игру на четыре основы. Если баланса нет, получается специфический продукт:
⚙️ Механика минус эстетика = таблица Excel. Правила работают, но вовлекать нечем.
🎨 Эстетика минус механика = открытка. Красиво смотреть, но не во что играть.
📖 История минус технология = багованное кино. Сюжет есть, но всё постоянно виснет.
💻 Технология минус история = пустой бенчмарк. Летает быстро, но смысла в этом ноль.
🗳 Как вы считаете, что важнее и на что мне сейчас делать упор?
1. Механика (аддиктивный геймплей)
2. Эстетика (атмосфера и арт)
3. История (глубокий лор)
4. Технология (стабильный код)
🃏 Поделитесь мыслями комментарии!
❤4🤔3
Чтож я всё пишу и пишу... Уже 5 месяцев как сумасшедший. Теперь ваша очередь!
🗣 Развеем немного производственную духоту. Есть ли у вас какие-нибудь вопросы ко мне? Или советы по игре? А может, просто история, которой хочется поделиться?
📅 Расскажите хотя бы, какие планы на выходные? Уходите в гейминг, едете на дачу или тоже заварили кашу со своими проектами и будете кодить?
Жду вас в комментариях, давайте просто поболтаем. 👇
🗣 Развеем немного производственную духоту. Есть ли у вас какие-нибудь вопросы ко мне? Или советы по игре? А может, просто история, которой хочется поделиться?
📅 Расскажите хотя бы, какие планы на выходные? Уходите в гейминг, едете на дачу или тоже заварили кашу со своими проектами и будете кодить?
Жду вас в комментариях, давайте просто поболтаем. 👇
❤2👍1🤔1
За месяц до того, как всё это случилось, я написал в своём блоге: «Прощай, стабильность. Копите подушку безопасности на годы вперёд». Потому что я знал, что бы нас ни ждало впереди, анархия на рынке труда неизбежна. Я надеялся, что смогу подготовить хоть кого-то. Тех, кто меня действительно слушал - чтобы они выжили, когда старый IT накроются медным тазом.
Но оказалось, что слушали меня немногие...
И вот, джуны и мидлы сидят без офферов, проекты закрываются, а люди начинают буквально голодать без работы. Помните басню про муравья и стрекозу? Мы - муравьи, те, кто годами пахал, строил сложную архитектуру и готовился к грядущему катаклизму. Но мы не смогли просто смотреть, как умирают от голода беззаботные стрекозы, которые всё лето бездумно генерировали код одной кнопкой и не думали о будущем. И теперь мы все расплачиваемся за это.
С вами Шеф, правда освобождает! Не верьте лжи.
--------------------------------
П.С. Ну а если серьезно, выходные я провожу в Days Gone. Коупленд параноик, но в чём-то он чертовски прав.
Но оказалось, что слушали меня немногие...
И вот, джуны и мидлы сидят без офферов, проекты закрываются, а люди начинают буквально голодать без работы. Помните басню про муравья и стрекозу? Мы - муравьи, те, кто годами пахал, строил сложную архитектуру и готовился к грядущему катаклизму. Но мы не смогли просто смотреть, как умирают от голода беззаботные стрекозы, которые всё лето бездумно генерировали код одной кнопкой и не думали о будущем. И теперь мы все расплачиваемся за это.
С вами Шеф, правда освобождает! Не верьте лжи.
--------------------------------
П.С. Ну а если серьезно, выходные я провожу в Days Gone. Коупленд параноик, но в чём-то он чертовски прав.
❤6😁3
Ну раз вы не хотите холиварить на тему тетрады, давайте я сам разложу вам Deckart через призму этого инструмента.
🎯 Зачем это вообще нужно? Во-первых, это очередная попытка ввести вас в самую глубь дела и показать изнанку разработки. Во-вторых, такой пересказ чертовски помогает мне самому. Пока формулируешь мысли для постов, в голове невольно всплывают скрытые аспекты и косяки, которые точно не хотелось бы упустить в процессе
.🧱 Поэтому в ближайших четырех постах мы подробно разберем каждую составную часть игры. Ну а под конец подведем итоги, и вы сами оцените, что у нас вообще получается на стыке всех элементов
Напомню, из чего состоит наша тетрада
⚙️ Механика - правила, карты и ритуалы
🎨 Эстетика - наш мрачный билибинский стиль и атмосфера
📖 История - славянский фольклор и лор
💻 Технология - Unity, архитектура и то, как это работает изнутри
.🚀 Завтра начнем с самого главного - с механики. Пишите, какой элемент лично вам интереснее всего?
🎯 Зачем это вообще нужно? Во-первых, это очередная попытка ввести вас в самую глубь дела и показать изнанку разработки. Во-вторых, такой пересказ чертовски помогает мне самому. Пока формулируешь мысли для постов, в голове невольно всплывают скрытые аспекты и косяки, которые точно не хотелось бы упустить в процессе
.🧱 Поэтому в ближайших четырех постах мы подробно разберем каждую составную часть игры. Ну а под конец подведем итоги, и вы сами оцените, что у нас вообще получается на стыке всех элементов
Напомню, из чего состоит наша тетрада
⚙️ Механика - правила, карты и ритуалы
🎨 Эстетика - наш мрачный билибинский стиль и атмосфера
📖 История - славянский фольклор и лор
💻 Технология - Unity, архитектура и то, как это работает изнутри
.🚀 Завтра начнем с самого главного - с механики. Пишите, какой элемент лично вам интереснее всего?
❤2
⚙️ Погнали по списку, МЕХАНИКИ!
Признаюсь многое поменялось после того как пошла разработка, добавились новые референсы и произошла замена референса на боевку. Пойдем по порядку и буду уточнять что брали за основу чтоб пришло понимание процесса.
И так, начнем с main loop: У нас рогалик, а значит забеги.
В рамках рана мы вступаем в бой, получаем за него награду и идем в город закупаться и улучшать снаряжение для последующих боев. Периодически нам встречаются боссы с сложными условиями прохождения.
И дальше по частям:
🃏 Идолы (Слой Balatro)
Это артефакты, которые не дерутся сами, а меняют правила игры. Главная механика это цепочка влияний. Вы выкладываете юнитов на поле, и идолы срабатывают по очереди. Один и тот же отряд при разном порядке идолов выдает абсолютно разную мощь. Это чистый декбилдинг, где статы перемножаются, позволяя сломать систему.
⚔️ Юниты и бой (Слой Hearthstone)
Юниты это карты вашей колоды. Перед боем приходит случайная рука, вы выбираете, кто идет в стычку, и накручиваете им атаку и HP через идолов. Сам бой пошаговый: ряды стоят друг против друга, а бойцы бьют по очереди, исходя из инициативы. Ваша тактика заканчивается на этапе подготовки в самом бою вы просто смотрите результат своих решений. Процессы быстр как поля сражений.
🏰 Экономика и Город (Слой Heroes III)
За золото после боев вы прокачиваетесь в городе. Это не просто магазин, а хаб с отделами: Казармы (юниты), Таверна (дорогие идолы), Кузница (апгрейды) и Рынок. Город это стабильная база, а на самой карте вас ловит Караван рисковый шоп с механикой «выбери 1 из 3» и платными рероллами.
Вот такая сборная солянка, до этого автобой был на основе Hero's Hours, но я не смог его вывезти)
Объемно?
Признаюсь многое поменялось после того как пошла разработка, добавились новые референсы и произошла замена референса на боевку. Пойдем по порядку и буду уточнять что брали за основу чтоб пришло понимание процесса.
И так, начнем с main loop: У нас рогалик, а значит забеги.
В рамках рана мы вступаем в бой, получаем за него награду и идем в город закупаться и улучшать снаряжение для последующих боев. Периодически нам встречаются боссы с сложными условиями прохождения.
И дальше по частям:
🃏 Идолы (Слой Balatro)
Это артефакты, которые не дерутся сами, а меняют правила игры. Главная механика это цепочка влияний. Вы выкладываете юнитов на поле, и идолы срабатывают по очереди. Один и тот же отряд при разном порядке идолов выдает абсолютно разную мощь. Это чистый декбилдинг, где статы перемножаются, позволяя сломать систему.
⚔️ Юниты и бой (Слой Hearthstone)
Юниты это карты вашей колоды. Перед боем приходит случайная рука, вы выбираете, кто идет в стычку, и накручиваете им атаку и HP через идолов. Сам бой пошаговый: ряды стоят друг против друга, а бойцы бьют по очереди, исходя из инициативы. Ваша тактика заканчивается на этапе подготовки в самом бою вы просто смотрите результат своих решений. Процессы быстр как поля сражений.
🏰 Экономика и Город (Слой Heroes III)
За золото после боев вы прокачиваетесь в городе. Это не просто магазин, а хаб с отделами: Казармы (юниты), Таверна (дорогие идолы), Кузница (апгрейды) и Рынок. Город это стабильная база, а на самой карте вас ловит Караван рисковый шоп с механикой «выбери 1 из 3» и платными рероллами.
Вот такая сборная солянка, до этого автобой был на основе Hero's Hours, но я не смог его вывезти)
Объемно?
🫡6🔥4❤3
🃏 Окей, дальше у нас на очереди Эстетика.
🎨 Сначала всё задумывалось как обычное фэнтези, но за этот месяц мы переработали всю идею с ног на голову. У нас появились идеи по стилю, окружению и наполнению на стыке с механиками, и всё на вдохновении от нашего фольклора. Игра будет в стилистике темной сказки, как пространство болота или озера где-то глубоко в темном лесу. Для референсного стиля были выбраны работы Билибина, создающие нужную атмосферу.
👁 Весь ЮИ интегрирован в игровой мир, чтобы не выбивать из погружения. Цветовая палитра подобрана приглушенная и строгая, без лишней кислотности, под стать окружению. Сама эстетика напрямую завязана на механики, те же идолы выглядят как осязаемые объекты этого мира, и их дизайн подчеркивает славянские мотивы проекта.
Закину вам фрагменты нашего мудборда с референсами, может что то будет вам знакомо. Эх сколько там было споров и идей...
🎨 Сначала всё задумывалось как обычное фэнтези, но за этот месяц мы переработали всю идею с ног на голову. У нас появились идеи по стилю, окружению и наполнению на стыке с механиками, и всё на вдохновении от нашего фольклора. Игра будет в стилистике темной сказки, как пространство болота или озера где-то глубоко в темном лесу. Для референсного стиля были выбраны работы Билибина, создающие нужную атмосферу.
👁 Весь ЮИ интегрирован в игровой мир, чтобы не выбивать из погружения. Цветовая палитра подобрана приглушенная и строгая, без лишней кислотности, под стать окружению. Сама эстетика напрямую завязана на механики, те же идолы выглядят как осязаемые объекты этого мира, и их дизайн подчеркивает славянские мотивы проекта.
Закину вам фрагменты нашего мудборда с референсами, может что то будет вам знакомо. Эх сколько там было споров и идей...
❤3🔥2👍1
Третий кирпич нашей тетрады это История. И тут всё повернулось даже очень интересно!
📖 Если сначала мы планировали классическое безликое фэнтези, то сейчас у нас развязаны руки на создание лора исходя из нам знакомых сказок. Это кардинально меняет подход к нарративу. Нам больше не нужно выдумывать абстрактный мир с нуля, мы берем базу нашего фольклора и пересобираем её в формате темного фэнтези.
👹 Так же и существа больше не являются проблемой. Вместо стандартных гоблинов или эльфов, которых все видели тысячу раз, в колоду залетает родная нечисть и герои легенд. Каждая карта юнита или идола сразу получает понятный бэкграунд, который круто обыгрывать в механиках. Игроку не надо объяснять, почему Кощей бессмертный, а Леший управляет лесом.
И их так же легко классифицировать, например -
Хозяева локаций (Баба Яга, Леший, Водяной)
Мелкая нечисть (Кикиморы, Лихо, Полудницы)
Эпические персонажи (Кощей, Богатыри)
🃏 Накидывайте свои идеи по персонажам в комменты, это было бы очень полезно.
📖 Если сначала мы планировали классическое безликое фэнтези, то сейчас у нас развязаны руки на создание лора исходя из нам знакомых сказок. Это кардинально меняет подход к нарративу. Нам больше не нужно выдумывать абстрактный мир с нуля, мы берем базу нашего фольклора и пересобираем её в формате темного фэнтези.
👹 Так же и существа больше не являются проблемой. Вместо стандартных гоблинов или эльфов, которых все видели тысячу раз, в колоду залетает родная нечисть и герои легенд. Каждая карта юнита или идола сразу получает понятный бэкграунд, который круто обыгрывать в механиках. Игроку не надо объяснять, почему Кощей бессмертный, а Леший управляет лесом.
И их так же легко классифицировать, например -
Хозяева локаций (Баба Яга, Леший, Водяной)
Мелкая нечисть (Кикиморы, Лихо, Полудницы)
Эпические персонажи (Кощей, Богатыри)
🃏 Накидывайте свои идеи по персонажам в комменты, это было бы очень полезно.
🔥4❤3🥰2🤯1
Четвертый, финальный кирпич нашей тетрады это Технология. То, что под капотом, и на чем вся эта магия крутится.
💻 Как вы знаете, мы пилим проект на Unity и C#. Выбор движка очевиден из-за моих знаний дотнета. Сама архитектура Deckart получилась очень гибкой благодаря четкому разделению домена и отображения (логики и визуала). Это позволяет нам спокойно крутить механики, не ломая при этом картинку.
🛠 Плюс Unity дает удобные инструменты для работы с графикой. Так как у нас планируется много артов, шейдеров и партиклов, нам предстоит по ходу дела учиться со всем этим работать. И круто, что в экосистеме движка уже есть куча готовых ресурсов и ассетов, которые серьезно упрощают жизнь и экономят время на старте.
🚀 Интересно узнать, какая техническая база у вас. Вы в каком движке делаете свои проекты и какими технологиями пользуетесь?
🃏 Пишите в комментарии, на чем кодите! 👇
💻 Как вы знаете, мы пилим проект на Unity и C#. Выбор движка очевиден из-за моих знаний дотнета. Сама архитектура Deckart получилась очень гибкой благодаря четкому разделению домена и отображения (логики и визуала). Это позволяет нам спокойно крутить механики, не ломая при этом картинку.
🛠 Плюс Unity дает удобные инструменты для работы с графикой. Так как у нас планируется много артов, шейдеров и партиклов, нам предстоит по ходу дела учиться со всем этим работать. И круто, что в экосистеме движка уже есть куча готовых ресурсов и ассетов, которые серьезно упрощают жизнь и экономят время на старте.
🚀 Интересно узнать, какая техническая база у вас. Вы в каком движке делаете свои проекты и какими технологиями пользуетесь?
🃏 Пишите в комментарии, на чем кодите! 👇
❤6🔥3🥰3
Пришло время подвести итоги и посмотреть на игру целиком.
🧩 Этот разбор помог мне собрать все мысли в кучу. В итоге вырисовывается проект, где аддиктивная математика Balatro и пошаговые бои Hearthstone работают на движке Unity, но завернуты не в приевшееся фэнтези, а в густую, мрачную атмосферу славянских сказок в стиле Билибина. Технологии всё это скрепляют, позволяя гибко менять правила игры на ходу.
🎯 На самом деле этот разбор чертовски помог мне самому. Теперь у нас есть классное верхнеуровневое вью проекта. Если мне нужно будет кому-то быстро и емко рассказать про игру, я смогу просто отправить человека к этим постам. Тут как раз собрана вся суть.
🗳 Ну а теперь ваша очередь оценивать. Как вам в целом? Делитесь честным мнением в комментариях👇
П.С. какое бы имя вы придумали такой игре?
🧩 Этот разбор помог мне собрать все мысли в кучу. В итоге вырисовывается проект, где аддиктивная математика Balatro и пошаговые бои Hearthstone работают на движке Unity, но завернуты не в приевшееся фэнтези, а в густую, мрачную атмосферу славянских сказок в стиле Билибина. Технологии всё это скрепляют, позволяя гибко менять правила игры на ходу.
🎯 На самом деле этот разбор чертовски помог мне самому. Теперь у нас есть классное верхнеуровневое вью проекта. Если мне нужно будет кому-то быстро и емко рассказать про игру, я смогу просто отправить человека к этим постам. Тут как раз собрана вся суть.
🗳 Ну а теперь ваша очередь оценивать. Как вам в целом? Делитесь честным мнением в комментариях👇
П.С. какое бы имя вы придумали такой игре?
❤4
Лудомания...
Это серьезная проблема, но разве каждая игра не вызывает эти же чувства?
📺 Геймдизайнеры ведь тоже стремятся к аддиктивности своих творений. То же понятие «потока» как раз говорит про то, как сделать игрока полностью погруженным в процесс. Разорвать связь от мира, перенести его в тело персонажа через стопроцентную иммерсивность игры, чтобы он еще сильнее переживал все, что происходит в ней. Это ли не зависимость, это ли не проблема?
🎰 Но есть грань, где крутая иммерсивность превращается в жесткую аддикцию. Это когда игрока цепляют на крючок не за счет интересного вызова, а через вариативный график наград (привет, ящик Скиннера, если надо, я потом про него подробно расскажу). Ты жмешь кнопку не потому, что тебе интересен сам процесс, а потому что мозг ждет случайного выброса гормонов от выигрыша или редкого дропа.
🃏 Возьмем ту же Balatro. Она балансирует на самой грани. Азарт от того, что твоя сборка сейчас крутанет счетчик это мощнейший крючок. Но разница в том, что в нормальном сингловом декбилдере этот азарт интеллектуальный. Ты радуешься тому, что ты сам додумался и собрал этот работающий движок, а не тому, что тебе просто повезло в рулетке.
🚀 Геймдизайн стремится сделать игру интересной, чтобы в нее хотелось возвращаться ради опыта и эмоций. Проблема начинается тогда, когда геймплей высушивают, оставляя только механику казино.
Есть на додеп?
Это серьезная проблема, но разве каждая игра не вызывает эти же чувства?
📺 Геймдизайнеры ведь тоже стремятся к аддиктивности своих творений. То же понятие «потока» как раз говорит про то, как сделать игрока полностью погруженным в процесс. Разорвать связь от мира, перенести его в тело персонажа через стопроцентную иммерсивность игры, чтобы он еще сильнее переживал все, что происходит в ней. Это ли не зависимость, это ли не проблема?
🎰 Но есть грань, где крутая иммерсивность превращается в жесткую аддикцию. Это когда игрока цепляют на крючок не за счет интересного вызова, а через вариативный график наград (привет, ящик Скиннера, если надо, я потом про него подробно расскажу). Ты жмешь кнопку не потому, что тебе интересен сам процесс, а потому что мозг ждет случайного выброса гормонов от выигрыша или редкого дропа.
🃏 Возьмем ту же Balatro. Она балансирует на самой грани. Азарт от того, что твоя сборка сейчас крутанет счетчик это мощнейший крючок. Но разница в том, что в нормальном сингловом декбилдере этот азарт интеллектуальный. Ты радуешься тому, что ты сам додумался и собрал этот работающий движок, а не тому, что тебе просто повезло в рулетке.
🚀 Геймдизайн стремится сделать игру интересной, чтобы в нее хотелось возвращаться ради опыта и эмоций. Проблема начинается тогда, когда геймплей высушивают, оставляя только механику казино.
Есть на додеп?
❤5🔥1🥰1
Вчера, если следите за видосиками, я сказал, что прекращаю заниматься рандомными механиками в Unity. Все последующие дни марафона я полностью посвящаю игре, её механикам, архитектуре и лору, так что дальше будет что посмотреть.
🚀 Тут я планирую либо углублять какие-то рассказы из видео, либо детально разбирать различные геймдизайнерские приемы и фишки. В общем-то, планы такие. Какое-то время уйдет на стабилизацию процессов создания контента, но это точно лучше, чем просто ковырять абстрактные прототипы и не делать саму игру вовсе.
🎯 Спасибо всем, кто в комментариях и обсуждениях надоумил меня поменять план и сфокусироваться на проекте!
П.С. всякие хохмы продолжаю снимать, надеюсь будут еще от меня бенгеры
🚀 Тут я планирую либо углублять какие-то рассказы из видео, либо детально разбирать различные геймдизайнерские приемы и фишки. В общем-то, планы такие. Какое-то время уйдет на стабилизацию процессов создания контента, но это точно лучше, чем просто ковырять абстрактные прототипы и не делать саму игру вовсе.
🎯 Спасибо всем, кто в комментариях и обсуждениях надоумил меня поменять план и сфокусироваться на проекте!
П.С. всякие хохмы продолжаю снимать, надеюсь будут еще от меня бенгеры
❤7🔥3🥰1
Ух ты ж, ничего себе! Снова проштрафился и пропустил вчерашний день блога. Не дело, будем наверстывать.
🎬 Как поменял формат вечерних видео, так времени на подготовку стало уходить ощутимо больше, и всё остальное просто вылетает из головы. Буду стабилизировать процессы. Ну а сегодня давайте поговорим по коду, а точнее, про один фундаментальный паттерн. Встречайте: State Machine (Конечный автомат) и стейты для разработки игр.
💻 Вообще, в коммерческом бэкенде я почти не встречал, чтобы стейт-машины использовали повсеместно, хотя идейно штука крутая. Возможно, в DDD (Domain-Driven Design) для сложной бизнес-логики это бы где-нибудь очень пригодилось, надо на досуге обмозговать.
❌ Как было бы без паттерна? Наш код превратился бы в бесконечную, нечитаемую простыню из ифов или свитчей:
«Если State == Enum.Idle делай то-то, а если State == Enum.Attack делай другое».
🛠 Идея паттерна кардинально другая: мы даем доменному объекту отдельные состояния и выделяем логику поведения внутрь этих самых классов-состояний. Объект просто делегирует выполнение текущему стейту, а стейты сами знают, когда переключить контекст.
🎮 В Unity и геймдеве в целом это абсолютный маст-хэв:
Персонаж имеет разные состояния (патруль, погоня, атака, смерть), и от них жестко зависит логика его поведения.
Сама игра постоянно переключается между фазами (загрузка, главное меню, фаза хода, подсчет очков), и всё это гораздо проще контролировать отдельными изолированными классами-стейтами, а не плодить баги в одном гигантском менеджере.
Это чертовски удобно, изолирует код и защищает от ситуации, когда персонаж начинает бежать во время анимации смерти.
🤖 Коллеги-разработчики, используете стейт-машины в своих проектах (и не только в геймдеве)?
🎬 Как поменял формат вечерних видео, так времени на подготовку стало уходить ощутимо больше, и всё остальное просто вылетает из головы. Буду стабилизировать процессы. Ну а сегодня давайте поговорим по коду, а точнее, про один фундаментальный паттерн. Встречайте: State Machine (Конечный автомат) и стейты для разработки игр.
💻 Вообще, в коммерческом бэкенде я почти не встречал, чтобы стейт-машины использовали повсеместно, хотя идейно штука крутая. Возможно, в DDD (Domain-Driven Design) для сложной бизнес-логики это бы где-нибудь очень пригодилось, надо на досуге обмозговать.
❌ Как было бы без паттерна? Наш код превратился бы в бесконечную, нечитаемую простыню из ифов или свитчей:
«Если State == Enum.Idle делай то-то, а если State == Enum.Attack делай другое».
🛠 Идея паттерна кардинально другая: мы даем доменному объекту отдельные состояния и выделяем логику поведения внутрь этих самых классов-состояний. Объект просто делегирует выполнение текущему стейту, а стейты сами знают, когда переключить контекст.
🎮 В Unity и геймдеве в целом это абсолютный маст-хэв:
Персонаж имеет разные состояния (патруль, погоня, атака, смерть), и от них жестко зависит логика его поведения.
Сама игра постоянно переключается между фазами (загрузка, главное меню, фаза хода, подсчет очков), и всё это гораздо проще контролировать отдельными изолированными классами-стейтами, а не плодить баги в одном гигантском менеджере.
Это чертовски удобно, изолирует код и защищает от ситуации, когда персонаж начинает бежать во время анимации смерти.
🤖 Коллеги-разработчики, используете стейт-машины в своих проектах (и не только в геймдеве)?
❤2
Наглядный пример, как это работает в коде Deckart. Так как у нас игра не построена на апдейтах, наши состояния максимально упрощены. Никакой покадровой логики, только вход и выход. У каждого стейта есть всего две точки. Это Enter для отработки логики при входе в фазу и Exit для зачистки хвостов перед переключением.
Вся архитектура разложена на две изолированные стейт-машины, которые управляют игрой на разных уровнях.
Глобальная машина забега рулит верхнеуровневыми фазами всего похода. Она переключает контекст между стартом, картой боев, самим сражением, получением наград и магазином, а в случае неудачи фиксирует проигрыш.
Локальная машина боя включается изолированно только внутри фазы битвы. Она гоняет внутренний цикл сражения, то есть ждет ход игрока, запускает расчет очков и определяет исход. Как только бой окончен, она возвращает управление глобальной машине.
🔮 Главный плюс такой иерархии в том, что стейт магазина вообще понятия не имеет, как математически считаются очки в бою, а фазе расчета очков плевать, что там происходит на карте. Логика жестко разделена, каши в коде нет, а новые экраны или фазы боя добавляются созданием одного изолированного класса.
На скринах показал, как это реализовано в проекте.
Сложно?
Вся архитектура разложена на две изолированные стейт-машины, которые управляют игрой на разных уровнях.
Глобальная машина забега рулит верхнеуровневыми фазами всего похода. Она переключает контекст между стартом, картой боев, самим сражением, получением наград и магазином, а в случае неудачи фиксирует проигрыш.
Локальная машина боя включается изолированно только внутри фазы битвы. Она гоняет внутренний цикл сражения, то есть ждет ход игрока, запускает расчет очков и определяет исход. Как только бой окончен, она возвращает управление глобальной машине.
🔮 Главный плюс такой иерархии в том, что стейт магазина вообще понятия не имеет, как математически считаются очки в бою, а фазе расчета очков плевать, что там происходит на карте. Логика жестко разделена, каши в коде нет, а новые экраны или фазы боя добавляются созданием одного изолированного класса.
На скринах показал, как это реализовано в проекте.
Сложно?
🤯2❤1