Искусственный интеллект в геймдеве или где проходит граница творчества? 🎨
Недавно в индустрии прогремел очередной громкий скандал. На этот раз под прицел попали крупные студии вроде Square Enix за использование нейросетей в создании арта. Фанаты по всему миру обрушились с критикой на разработчиков. Игроки считают, что корпорации просто экономят на живых авторах и выдают бездушный продукт. Тема сейчас максимально раскалена, поэтому мне стало интересно ваше мнение на этот счет.
🤔 Мое отношение к этому вопросу довольно однозначное. Игнорировать ИИ сегодня это точно большая ошибка. Это прежде всего невероятно мощный инструмент для работы. Нейросети могут многому научить, они помогают быстро найти нужную информацию или поправить сложный кусок кода. Это идеальный ассистент, который берет на себя скучную рутину и позволяет нам больше времени уделять самому геймдизайну.
🚫 Однако здесь критически важно не впадать в крайности. Отдавать ИИ абсолютно всю работу за себя это путь к деградации автора. Однажды я услышал золотые слова. Если вы хотите в чем то действительно преуспеть, то вам нужно заниматься этим непосредственно своими руками. В этом и заключается суть мастерства.
Если за вас всё будет делать алгоритм, то в результате в игре не останется ничего вашего. Вы не пройдете через свои ошибки и не получите реального опыта. В итоге проект потеряет ту самую искру, которую всегда чувствует игрок. Машина может собрать картинку или текст, но она не понимает их смысла и не может вложить в них свои переживания.
Я использую нейросети как умный справочник или как способ быстро проверить гипотезу. Но финальный штрих и вся архитектура игры всегда остаются за мной. Ведь игры это способ передать эмоцию от человека к человеку, а машина на такое просто не способна.
👇 А как вы относитесь к ИИ в играх? Это крутой прогресс или всё же убийство настоящего искусства? Пишите в комментариях!
Недавно в индустрии прогремел очередной громкий скандал. На этот раз под прицел попали крупные студии вроде Square Enix за использование нейросетей в создании арта. Фанаты по всему миру обрушились с критикой на разработчиков. Игроки считают, что корпорации просто экономят на живых авторах и выдают бездушный продукт. Тема сейчас максимально раскалена, поэтому мне стало интересно ваше мнение на этот счет.
🤔 Мое отношение к этому вопросу довольно однозначное. Игнорировать ИИ сегодня это точно большая ошибка. Это прежде всего невероятно мощный инструмент для работы. Нейросети могут многому научить, они помогают быстро найти нужную информацию или поправить сложный кусок кода. Это идеальный ассистент, который берет на себя скучную рутину и позволяет нам больше времени уделять самому геймдизайну.
🚫 Однако здесь критически важно не впадать в крайности. Отдавать ИИ абсолютно всю работу за себя это путь к деградации автора. Однажды я услышал золотые слова. Если вы хотите в чем то действительно преуспеть, то вам нужно заниматься этим непосредственно своими руками. В этом и заключается суть мастерства.
Если за вас всё будет делать алгоритм, то в результате в игре не останется ничего вашего. Вы не пройдете через свои ошибки и не получите реального опыта. В итоге проект потеряет ту самую искру, которую всегда чувствует игрок. Машина может собрать картинку или текст, но она не понимает их смысла и не может вложить в них свои переживания.
Я использую нейросети как умный справочник или как способ быстро проверить гипотезу. Но финальный штрих и вся архитектура игры всегда остаются за мной. Ведь игры это способ передать эмоцию от человека к человеку, а машина на такое просто не способна.
👇 А как вы относитесь к ИИ в играх? Это крутой прогресс или всё же убийство настоящего искусства? Пишите в комментариях!
👍2
Векторы в пространстве: как работает математика направлений 📐
🛌 На этих выходных я почти не открывал Unity и просто восстанавливал силы. Переход между сценами уже доделал и завтра покажу результат в небольшом видео. А пока есть время, давайте разберем базу по векторам, потому что без этого в геймдеве буквально никуда.
📍 Сложение векторов и правило треугольника.
Представьте, что у вас есть вектор AB и вектор BC. Если сложить их между собой, то в итоге мы получим вектор AC. Это работает очень логично. Мы как будто проходим путь из точки A в точку B, а потом сразу в точку C. В игре это используется постоянно, например, когда мы прибавляем к текущей позиции игрока вектор его скорости, чтобы вычислить, где он окажется в следующем кадре.
📏 Как найти расстояние до объекта.
Чтобы вычислить вектор между двумя точками, нам нужно из позиции цели вычесть позицию нашего объекта. Полученная разность это и есть вектор, который указывает точно на цель. Если нам нужно узнать само расстояние в метрах, мы просто берем длину этого вектора. В коде это делается через свойство magnitude.
📎 Нормализация или зачем нам единичный вектор.
Часто нам нужно знать только направление, а не само расстояние. Для этого используется нормализация вектора. Это процесс, который делает длину вектора равной единице, но при этом полностью сохраняет его направление. Если вы хотите, чтобы персонаж двигался с одинаковой скоростью в любую сторону, вам нужно всегда нормализовать вектор ввода от игрока. Без этого при движении по диагонали герой будет бежать быстрее, чем по прямой.
🧮 Скалярное умножение и проверка видимости.
Есть еще такая крутая штука как Dot Product. Она позволяет понять, насколько два вектора смотрят в одну сторону. Если результат положительный, значит объекты направлены примерно в одну сторону. Если отрицательный, то они смотрят друг от друга. На этом строятся почти все системы зрения врагов или расчет освещенности поверхностей в шейдерах.
🛌 На этих выходных я почти не открывал Unity и просто восстанавливал силы. Переход между сценами уже доделал и завтра покажу результат в небольшом видео. А пока есть время, давайте разберем базу по векторам, потому что без этого в геймдеве буквально никуда.
📍 Сложение векторов и правило треугольника.
Представьте, что у вас есть вектор AB и вектор BC. Если сложить их между собой, то в итоге мы получим вектор AC. Это работает очень логично. Мы как будто проходим путь из точки A в точку B, а потом сразу в точку C. В игре это используется постоянно, например, когда мы прибавляем к текущей позиции игрока вектор его скорости, чтобы вычислить, где он окажется в следующем кадре.
📏 Как найти расстояние до объекта.
Чтобы вычислить вектор между двумя точками, нам нужно из позиции цели вычесть позицию нашего объекта. Полученная разность это и есть вектор, который указывает точно на цель. Если нам нужно узнать само расстояние в метрах, мы просто берем длину этого вектора. В коде это делается через свойство magnitude.
📎 Нормализация или зачем нам единичный вектор.
Часто нам нужно знать только направление, а не само расстояние. Для этого используется нормализация вектора. Это процесс, который делает длину вектора равной единице, но при этом полностью сохраняет его направление. Если вы хотите, чтобы персонаж двигался с одинаковой скоростью в любую сторону, вам нужно всегда нормализовать вектор ввода от игрока. Без этого при движении по диагонали герой будет бежать быстрее, чем по прямой.
🧮 Скалярное умножение и проверка видимости.
Есть еще такая крутая штука как Dot Product. Она позволяет понять, насколько два вектора смотрят в одну сторону. Если результат положительный, значит объекты направлены примерно в одну сторону. Если отрицательный, то они смотрят друг от друга. На этом строятся почти все системы зрения врагов или расчет освещенности поверхностей в шейдерах.
🔥2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
👀 Ребят, я немного задержался с обещанным видео по переходам. Всё дело в том, что в последний момент я решил добавить шейдер исчезновения и буквально пропал в коде. Я не мог оставить дело на полпути, пока не добился нужного результата. В итоге у меня получилось почти идеально повторить эффект из Balatro. Если заглянете в мой самый первый пост про переходы, то сможете сравнить мой результат с оригиналом.
🛠 С технической стороны всё работает по схеме, которую я описывал ранее. У нас есть две сцены и скрипт DoTween, который отвечает за начальную анимацию. После этого состояние фиксируется в статику, а следующая сцена запускается с проигрывания обратной анимации. Но именно на стыке этих процессов я решил, что обычного исчезновения мне мало, и полез изучать шейдеры.
🧬 Рано или поздно я бы всё равно пришел к теме шейдеров, но эффект Dissolve (растворение) оказался идеальным поводом для старта. Если говорить просто, то это способ заставить объект исчезать не целиком, а через специальную маску шума. Шейдер попиксельно проверяет значения этой маски и решает, какую часть картинки нужно отрисовать, а какую сделать прозрачной или подсветить по краям.
📺 Видео с результатом уже в посте. Теперь переходы выглядят законченно, и я наконец могу двигаться дальше. В следующий раз мы более подробно коснемся темы шейдеров и Shader Graph в Unity. Я расскажу, как визуальное программирование помогает создавать магию без написания сотен строк сложного кода.
Ну что, похоже?
🛠 С технической стороны всё работает по схеме, которую я описывал ранее. У нас есть две сцены и скрипт DoTween, который отвечает за начальную анимацию. После этого состояние фиксируется в статику, а следующая сцена запускается с проигрывания обратной анимации. Но именно на стыке этих процессов я решил, что обычного исчезновения мне мало, и полез изучать шейдеры.
🧬 Рано или поздно я бы всё равно пришел к теме шейдеров, но эффект Dissolve (растворение) оказался идеальным поводом для старта. Если говорить просто, то это способ заставить объект исчезать не целиком, а через специальную маску шума. Шейдер попиксельно проверяет значения этой маски и решает, какую часть картинки нужно отрисовать, а какую сделать прозрачной или подсветить по краям.
📺 Видео с результатом уже в посте. Теперь переходы выглядят законченно, и я наконец могу двигаться дальше. В следующий раз мы более подробно коснемся темы шейдеров и Shader Graph в Unity. Я расскажу, как визуальное программирование помогает создавать магию без написания сотен строк сложного кода.
Ну что, похоже?
🔥8
За туманом войны: как рождается концепция нашей игры 🗺
🕯 Мы давно не рассказывали новостей о самом проекте, хотя работа за кулисами буквально кипит. Сейчас мы находимся на самом важном и одновременно сложном этапе. Мы всей командой погрузились в режим бесконечных дебатов и штурмов. Это время, когда в спорах рождаются фичи и закладывается фундамент будущего геймплея.
🏰 В наших обсуждениях мы всё чаще начинаем уходить в сторону идей из Heroes of Might and Magic III. Мы воображаем невероятные механики и масштабные системы, рисуем в голове идеальный мир. Однако в такой момент очень важно вовремя сказать себе «стоп». Нельзя построить замок, не заложив крепкое основание, поэтому сейчас мы занимаемся расстановкой точек развилок. Мы определяем места, где позже сможем добавить разные варианты механик, чтобы в будущем выбрать лучший игровой опыт через тесты.
📦 Наша ближайшая цель это создание MVP или минимально жизнеспособного продукта. Суть этого подхода заключается в том, чтобы собрать самую простую версию игры, которую уже можно запустить и потрогать. В MVP мы планируем реализовать основной игровой процесс выбора бойцов и систему уникальных бафов от командиров. Возможно, туда же войдет и базовая механика боя. Главная задача здесь — проверить, работает ли сама идея, прежде чем тратить месяцы на полировку деталей.
🌫 Многие другие части системы пока скрыты от нас за туманом войны. Мы еще не знаем точно, каким станет магазин или система экономики. Остается открытым вопрос о наличии полноценной сюжетной кампании. Мы сознательно оставляем эти зоны пустыми, чтобы сфокусироваться на главном и не утонуть в бесконечном планировании того, что может измениться.
🤝 Рано или поздно мы снова встретимся с этими вопросами лицом к лицу. Когда база будет готова, мы обязательно позовем вас участвовать в обсуждении и выборе лучших решений. Ведь именно взгляд со стороны помогает увидеть те нюансы, которые мы могли упустить в пылу командных споров.
👇 А как вы считаете, что в тактических стратегиях важнее всего на самом старте?
🕯 Мы давно не рассказывали новостей о самом проекте, хотя работа за кулисами буквально кипит. Сейчас мы находимся на самом важном и одновременно сложном этапе. Мы всей командой погрузились в режим бесконечных дебатов и штурмов. Это время, когда в спорах рождаются фичи и закладывается фундамент будущего геймплея.
🏰 В наших обсуждениях мы всё чаще начинаем уходить в сторону идей из Heroes of Might and Magic III. Мы воображаем невероятные механики и масштабные системы, рисуем в голове идеальный мир. Однако в такой момент очень важно вовремя сказать себе «стоп». Нельзя построить замок, не заложив крепкое основание, поэтому сейчас мы занимаемся расстановкой точек развилок. Мы определяем места, где позже сможем добавить разные варианты механик, чтобы в будущем выбрать лучший игровой опыт через тесты.
📦 Наша ближайшая цель это создание MVP или минимально жизнеспособного продукта. Суть этого подхода заключается в том, чтобы собрать самую простую версию игры, которую уже можно запустить и потрогать. В MVP мы планируем реализовать основной игровой процесс выбора бойцов и систему уникальных бафов от командиров. Возможно, туда же войдет и базовая механика боя. Главная задача здесь — проверить, работает ли сама идея, прежде чем тратить месяцы на полировку деталей.
🌫 Многие другие части системы пока скрыты от нас за туманом войны. Мы еще не знаем точно, каким станет магазин или система экономики. Остается открытым вопрос о наличии полноценной сюжетной кампании. Мы сознательно оставляем эти зоны пустыми, чтобы сфокусироваться на главном и не утонуть в бесконечном планировании того, что может измениться.
🤝 Рано или поздно мы снова встретимся с этими вопросами лицом к лицу. Когда база будет готова, мы обязательно позовем вас участвовать в обсуждении и выборе лучших решений. Ведь именно взгляд со стороны помогает увидеть те нюансы, которые мы могли упустить в пылу командных споров.
👇 А как вы считаете, что в тактических стратегиях важнее всего на самом старте?
👍3
Почему нельзя просто так взять и сделать автобой ⚔️
🏗 Казалось бы, задача звучит максимально просто, но на деле мы столкнулись с серьезным архитектурным вызовом. Если мы захотим позже добавить в игру мультиплеер, то закладывать сложную структуру нужно уже сейчас. Обычные уроки из интернета здесь не особо помогают, ведь нельзя просто раскидать всю логику по скриптам на объектах и надеяться на стабильную работу сети.
🖥 Сейчас мы находимся в активном поиске правильного решения и каждый день открываем для себя новые нюансы. Мы пришли к выводу, что всю симуляцию боя желательно выносить за пределы Unity. Сам движок в такой схеме выступает лишь в роли презентера, который просто отрисовывает результаты вычислений. Вся математика должна жить отдельно в чистом коде, иначе добиться синхронности между игроками будет практически невозможно.
⏳ Еще одна важная деталь заключается в системе тиков. Мы хотим перевести симуляцию на абстрактные шаги времени, которые потом будут привязываться к таймингам Unity. Это позволит ускорять или замедлять бои без потери точности расчетов. Если это будет мультиплеер в духе автошахмат, то сервер должен присылать готовый лог боя, а наша игра будет работать как обычный проигрыватель этих данных.
🧩 По сложности такая архитектура порой обходит даже очень серьезные системы. Мы постоянно дебатируем внутри команды и пока не пришли к итоговому решению, которое бы нас полностью устроило. В геймдеве слишком много подводных камней на стыке визуальной части и сухой логики, поэтому мы сейчас буквально продираемся сквозь туман в поисках идеального паттерна.
🤝 Возможно, среди вас есть те, кто уже решал подобные задачи или проектировал системы для автобоев. Буду рад любым советам или опыту по этой теме. Как вы разделяете симуляцию и визуализацию, и какие инструменты используете для синхронизации состояния между сервером и клиентом?
🏗 Казалось бы, задача звучит максимально просто, но на деле мы столкнулись с серьезным архитектурным вызовом. Если мы захотим позже добавить в игру мультиплеер, то закладывать сложную структуру нужно уже сейчас. Обычные уроки из интернета здесь не особо помогают, ведь нельзя просто раскидать всю логику по скриптам на объектах и надеяться на стабильную работу сети.
🖥 Сейчас мы находимся в активном поиске правильного решения и каждый день открываем для себя новые нюансы. Мы пришли к выводу, что всю симуляцию боя желательно выносить за пределы Unity. Сам движок в такой схеме выступает лишь в роли презентера, который просто отрисовывает результаты вычислений. Вся математика должна жить отдельно в чистом коде, иначе добиться синхронности между игроками будет практически невозможно.
⏳ Еще одна важная деталь заключается в системе тиков. Мы хотим перевести симуляцию на абстрактные шаги времени, которые потом будут привязываться к таймингам Unity. Это позволит ускорять или замедлять бои без потери точности расчетов. Если это будет мультиплеер в духе автошахмат, то сервер должен присылать готовый лог боя, а наша игра будет работать как обычный проигрыватель этих данных.
🧩 По сложности такая архитектура порой обходит даже очень серьезные системы. Мы постоянно дебатируем внутри команды и пока не пришли к итоговому решению, которое бы нас полностью устроило. В геймдеве слишком много подводных камней на стыке визуальной части и сухой логики, поэтому мы сейчас буквально продираемся сквозь туман в поисках идеального паттерна.
🤝 Возможно, среди вас есть те, кто уже решал подобные задачи или проектировал системы для автобоев. Буду рад любым советам или опыту по этой теме. Как вы разделяете симуляцию и визуализацию, и какие инструменты используете для синхронизации состояния между сервером и клиентом?
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
📐 Речь про Георгия Вороного. Еще в начале прошлого века он описал принцип разбиения плоскости, который мы теперь называем Диаграммой Вороного. В связке с методами геометрического моделирования Филипа Шнейдера эта математика позволяет превращать случайные точки в логичные природные структуры.
🦒 Природа использует эти формулы повсюду. Посмотрите на расцветку жирафа — это же чистая диаграмма Вороного в действии. Тот же узор мы видим в структуре крыльев стрекозы, на корке ананаса или в том, как бликует вода в бассейне. Везде, где области растут из разных центров и сталкиваются друг с другом, образуется этот характерный многоугольный узор.
В геймдеве это применяется повсеместно:
🔹 Генерация биомов: Каждая ячейка становится зоной леса, пустыни или болота, создавая естественные границы без прямых линий.
🔹Разрушаемость: Когда в игре эффектно разлетается стекло или трескается камень, за форму осколков часто отвечает именно этот алгоритм.
🔹Поиск пути: Системы навигации используют эти ячейки, чтобы ИИ понимал, где находится безопасная зона.
🔲 Использование этих паттернов позволяет нам уйти от скучных квадратных сеток к органическим формам. В своей разработке я тоже планирую опираться на эти наработки для создания уникальных игровых полей и распределения ресурсов. Математика позволяет сделать так, чтобы мир не выглядел «нарисованным по линейке», а казался живым и естественным.
🪆 Приятно осознавать, что в базе мировых хитов лежат труды нашего соотечественника. Геймдев это не только картинки, но и мощная научная школа. Каждый раз, когда вы видите реалистичную структуру почвы или процедурный узор на броне, помните, что за этим стоит серьезная фундаментальная наука.
А вы замечали подобные узоры в других местах?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯3
Месяц в эфире! 🚀
🗓 Сегодня исполнился ровно месяц с того момента, как я начал ежедневно делиться с вами процессом разработки и своими мыслями. За это время я не пропустил ни одного дня, и мне очень приятно видеть, что этот контент находит отклик. Нас в канале уже почти 40 человек и для меня это прекрасный старт. Я искренне благодарен каждому за поддержку и интерес.
⚙️ Теперь к главным новостям. Подготовительный этап окончен, и я официально объявляю о начале разработки MVP нашей игры. Весь теоретический фундамент, о котором я писал раньше, теперь начинает воплощаться в коде и визуале.
🕹 Ставлю себе цель показать первые результаты геймплея уже через месяц. Это будет непростой период, но крайне важный для проекта. Будем расти и двигаться дальше. Чем больше нас здесь будет, тем круче мотивация делать игру качественнее.
🫰 Спасибо, что вы со мной. Как вам вообще такой темп постов, продолжаем в том же духе?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
🌑 Хочу поделиться настоящим «гемом», одной из любимых игр. В детстве я так и не смог пройти Heart of Darkness (1998), но запустив её сейчас, поразился: она до сих пор смотрится органичнее многих современных игр.
В детстве она меня буквально гипнотизировала. Тени в игре не казались просто набором пикселей, они ощущались живыми. Воображение само дорисовывало их образы, и этот страх заставлял сопереживать герою по-настоящему.
Что в ней крутого с точки зрения геймдева:
🔹 Бесшовный NoHUD. На экране нет вообще ничего: ни полосок здоровья, ни счетчиков. Ты видишь только мир. Это дает тот уровень погружения, к которому современные проекты только пытаются подобраться. Весь фидбек игрок получает через анимации героя.
🔹 Смешивание технологий. Разработчики использовали пре-рендеренные задники, на которые накладывали спрайты. Но фокус в том, как они работали с масками и слоями: персонаж мог заходить за объекты, тонуть в тени или быть подсвеченным вспышкой. Для 1998 года такая глубина кадра в 2D была запредельной.
🔹 Кинематографичная анимация. Энди — не просто спрайт с парой фаз движения. Его анимации создавались с оглядкой на физику и инерцию. Когда он прыгает или цепляется за край, ты буквально чувствуешь его вес. Это делает управление отзывчивым, а персонажа — уязвимым и «настоящим».
🔹 Интеллект теней. Поведение врагов прописано так, что они не просто ходят туда-сюда, а буквально вытекают из геометрии уровня. Это заставляло верить в их органичность, а не просто видеть в них скрипты.
🕯 Создатель игры Эрик Шайи потратил на разработку 6 лет. Для него это было делом жизни, и это чувствуется в каждой детали. Heart of Darkness это пример того, что качественная работа над атмосферой не устаревает даже спустя десятилетия. Если пропустили в свое время то очень очень советую глянуть.
А у вас была такая игра, которую в детстве так и не осилили, а сейчас понимаете, что это был шедевр?
В детстве она меня буквально гипнотизировала. Тени в игре не казались просто набором пикселей, они ощущались живыми. Воображение само дорисовывало их образы, и этот страх заставлял сопереживать герою по-настоящему.
Что в ней крутого с точки зрения геймдева:
🔹 Бесшовный NoHUD. На экране нет вообще ничего: ни полосок здоровья, ни счетчиков. Ты видишь только мир. Это дает тот уровень погружения, к которому современные проекты только пытаются подобраться. Весь фидбек игрок получает через анимации героя.
🔹 Смешивание технологий. Разработчики использовали пре-рендеренные задники, на которые накладывали спрайты. Но фокус в том, как они работали с масками и слоями: персонаж мог заходить за объекты, тонуть в тени или быть подсвеченным вспышкой. Для 1998 года такая глубина кадра в 2D была запредельной.
🔹 Кинематографичная анимация. Энди — не просто спрайт с парой фаз движения. Его анимации создавались с оглядкой на физику и инерцию. Когда он прыгает или цепляется за край, ты буквально чувствуешь его вес. Это делает управление отзывчивым, а персонажа — уязвимым и «настоящим».
🔹 Интеллект теней. Поведение врагов прописано так, что они не просто ходят туда-сюда, а буквально вытекают из геометрии уровня. Это заставляло верить в их органичность, а не просто видеть в них скрипты.
🕯 Создатель игры Эрик Шайи потратил на разработку 6 лет. Для него это было делом жизни, и это чувствуется в каждой детали. Heart of Darkness это пример того, что качественная работа над атмосферой не устаревает даже спустя десятилетия. Если пропустили в свое время то очень очень советую глянуть.
А у вас была такая игра, которую в детстве так и не осилили, а сейчас понимаете, что это был шедевр?
👍4🔥1
Планировать часами вместо того чтобы писать код!
🚀 Вчера мы командой два часа кряду декомпозировали наш MVP, и со стороны это могло показаться бесполезным топтанием на месте. Но я на своем опыте знаю, насколько тяжело сдвинуться с мертвой точки, если у тебя нет четкого видения финального продукта или хотя бы следующего шага. Теперь у нас есть внятный план и бэклог, по которому можно прикидывать реальные сроки готовности каждой части игры.
👥 Многие инди разработчики привыкли делать всё в одиночку и просто не знают, как подступиться к командному взаимодействию. Мне в этом плане повезло. Опыта управления командами у меня навалом, поэтому я понимаю, как нужно выстроить процессы, чтобы никто не буксовал. Это экономит кучу нервов, когда проект начинает обрастать деталями.
😨 Правда, уже сейчас я начинаю чувствовать, как мне аукается количество сфер, которые я взвалил на свои плечи. Программирование, архитектура, менеджмент и теперь еще маркетинг. Задач становится слишком много для одного фокуса внимания, и это только начало пути.
📢 В связи с этим у меня есть мысль. Может быть, среди вас есть кто то, кто хочет поучаствовать в проекте и помочь мне с соцсетями и продвижением? Если вам интересен геймдев и вы хотите на практике попробовать себя в раскрутке игры с нуля, это отличный шанс поработать в команде.
👇 Как вы обычно планируете свои задачи, держите всё в голове или расписываете каждый шаг до мельчайших деталей?
🚀 Вчера мы командой два часа кряду декомпозировали наш MVP, и со стороны это могло показаться бесполезным топтанием на месте. Но я на своем опыте знаю, насколько тяжело сдвинуться с мертвой точки, если у тебя нет четкого видения финального продукта или хотя бы следующего шага. Теперь у нас есть внятный план и бэклог, по которому можно прикидывать реальные сроки готовности каждой части игры.
👥 Многие инди разработчики привыкли делать всё в одиночку и просто не знают, как подступиться к командному взаимодействию. Мне в этом плане повезло. Опыта управления командами у меня навалом, поэтому я понимаю, как нужно выстроить процессы, чтобы никто не буксовал. Это экономит кучу нервов, когда проект начинает обрастать деталями.
📢 В связи с этим у меня есть мысль. Может быть, среди вас есть кто то, кто хочет поучаствовать в проекте и помочь мне с соцсетями и продвижением? Если вам интересен геймдев и вы хотите на практике попробовать себя в раскрутке игры с нуля, это отличный шанс поработать в команде.
👇 Как вы обычно планируете свои задачи, держите всё в голове или расписываете каждый шаг до мельчайших деталей?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Ребят, помогите определить жанр!
🤔 Мем смешной, ситуация не понятная. Увидев этот мем, я сначала посмеялся, а потом поймал экзистенциальный кризис. Я ведь тоже строю свою игру, и в моей голове всё выглядит стройно, но если начать перечислять механики по отдельности, получается тот самый «бильярд» на шахматном столе. Помогите разобраться, что же выходит на самом деле.
🃏 С одной стороны, у нас есть карты, которые мы собираем и разыгрываем в начале раунда. Мы комбинируем их, ищем синергии и пытаемся собрать идеальную руку. А ещё это постоянные попытки переиграть систему в коротких сессиях. Получается, наш жанр — Roguelike Deckbuilder?
⚔️ С другой стороны, после розыгрыша карт мы просто смотрим, как наши бойцы месят друг друга, опираясь на заложенную нами логику. Мы не управляем ими напрямую в бою, мы лишь подготовили почву. А ещё результат зависит от того, как мы расставили силы. Значит, это Auto Battler?
📈 Но если копнуть глубже, то вся суть игры сводится к тому, чтобы выжать максимум из модификаторов. Мы считаем проценты, накладываем бафы от командиров и ждем, когда итоговое число перевесит чашу весов в нашу сторону. А ещё здесь важен менеджмент ресурсов между битвами. Выходит, это Strategy Sim или симулятор подсчёта очков?
🏗 Мы строим систему на событиях, где каждый «чих» карты вызывает цепочку последствий, которые Unity потом просто проигрывает как кино. А ещё у нас есть мета-прогрессия и влияние командиров на общую экономику забега. В какой-то момент кажется, что мы пытаемся скрестить ежа с ужом, называя это «просто пошаговой игрой».
🤨 И вот я смотрю на наш бэклог и понимаю: мы создаем нечто на стыке тактики, математического расчёта и карточного азарта. Мы сознательно берем лучшее от разных жанров, но главное теперь это не превратиться в тот самый мем, где на столе лежит всё сразу, а играть в это невозможно.
👇 Друзья, глядя на этот набор, как бы вы назвали такую смесь?
🃏 С одной стороны, у нас есть карты, которые мы собираем и разыгрываем в начале раунда. Мы комбинируем их, ищем синергии и пытаемся собрать идеальную руку. А ещё это постоянные попытки переиграть систему в коротких сессиях. Получается, наш жанр — Roguelike Deckbuilder?
🏗 Мы строим систему на событиях, где каждый «чих» карты вызывает цепочку последствий, которые Unity потом просто проигрывает как кино. А ещё у нас есть мета-прогрессия и влияние командиров на общую экономику забега. В какой-то момент кажется, что мы пытаемся скрестить ежа с ужом, называя это «просто пошаговой игрой».
👇 Друзья, глядя на этот набор, как бы вы назвали такую смесь?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🤨1
Похоже я уже закипаю 🔥
🚀 Проект растет, работа кипит, и сегодня мы закопались в одну из самых жестких тем — вложенность сущностей. Казалось бы, есть просто юнит на поле, но на него одновременно влияют формации, бонусы командиров и куча внешних условий. Каждый фактор срабатывает в разные этапы боя, в нескольких вариациях и при определенных триггерах. Уместить такую матрешку в голове практически невозможно.
📈 Чтобы не сойти с ума, мы перенесли всё на схемы и полупсевдокод. И знаете, случилось маленькое чудо: пазл начал сходиться. Когда видишь архитектуру на бумаге, хаос превращается в систему. В эти выходные планы грандиозные — плотно садимся за модели данных и основной алгоритм первого этапа отыгрыша.
⏱ Именно этот этап станет решающим. Он определит, успеем ли мы выдать MVP через месяц или сроки придется двигать. Пока надежда есть, а огонь в глазах не гаснет, поэтому продолжаем делать всё от чистого сердца. Мы сейчас на том самом этапе, когда закладывается фундамент, на котором будет стоять вся игра.
📺 Жду не дождусь момента, когда мы закончим с этой «математикой» и перейдем к визуальной части. Очень хочется наконец показать вам не только голый код, но и то, как это всё выглядит в движении. А пока вместо скриншотов геймплея делюсь новой партией «записок сумасшедших» — наших рабочих схем и набросков.
🌛 Всем доброго вечера, а мы, пожалуй, еще чуть-чуть поработаем, пока есть драйв и четкое понимание, куда идти.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6🥰2
РАЗРЫВАЕМ СВЯЗАННЫЙ КОД: КАК СООБЩИТЬ ВИЗУАЛУ ОБ ИЗМЕНЕНИЯХ 🛠
⌨️ Давно у нас не было постов на техническую тему, пора исправлять. Сегодня разберем Event Bus (Шину событий). Если вы когда-нибудь пытались напрямую из логики меча вызвать скрипт UI-полоски здоровья — вы создали «жесткую связь». Стоит удалить врага из сцены, как ваш код посыплется с ошибками NullReferenceException.
🧠 Решается это через аналогию с почтальоном. Издательство просто отдает газеты на почту, а почтальон разносит их подписчикам. В нашей игре это работает так: когда командир бафает отряд, симуляция на C# меняет статы и просто создает объект события — например, new StatChangedEvent { UnitId = 10, NewVal = 15f }.
🧠 Сама шина это по сути «умный» словарь Dictionary<Type, List<Action<IEvent>>>. Когда мы хотим, чтобы Unity узнала об изменениях, мы вызываем метод EventBus.Raise(IEvent ev). Он берет тип пришедшего события через ev.GetType() и пробегает циклом по всем функциям, которые на него подписались через Subscribe.
😠 Визуальная часть игры при старте делает EventBus.Subscribe<StatChangedEvent>(OnStatChanged). Теперь, как только в недрах математического движка изменится хоть одна цифра, Unity мгновенно получит уведомление и запустит нужную анимацию свечения или звуковой эффект.
🤨 Главный плюс то что симуляция и визуал живут в разных мирах. Логика расчёта бафов вообще не знает, есть ли у нас в проекте Unity, частицы или камера. Если завтра я решу добавить тряску камеры при бафе, мне не придется менять ни строчки в коде статов, я просто добавлю нового подписчика в визуальный слой.
👇 Кстати, внимательный разработчик заметит в моем коде одну потенциальную проблему, кто догадался?
👇 Кстати, внимательный разработчик заметит в моем коде одну потенциальную проблему, кто догадался?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Сразу вдогонку к шине событий разберем еще одного кита архитектуры Dependency Injection (DI). Те, кто пришел из бэкенда (особенно из .NET/ASP.NET), сейчас сразу поймут, о чем речь: мы тащим в геймдев классические DI-контейнеры.
❌ Проблема: Чем больше проект, тем сложнее объектам находить друг друга. Юниту нужен CombatEngine, движку нужен SoundManager, менеджеру нужны GameSettings. Если каждый будет искать соседа через FindObjectOfType или стучаться в глобальные синглтоны, ваш проект превратится в карточный домик: тронул одно — посыпалось всё.
😁 Представьте, что вы повар. Вместо того чтобы самому бегать на рынок за ножами, искать фермера с помидорами и копать картошку (это жесткие связи в коде), вы просто выходите на кухню. К вашему приходу всё уже лежит на столе в готовом виде. Вы не знаете, откуда взялись продукты, вы просто ими пользуетесь. За это отвечает «служба снабжения», наш DI-контейнер.
🏗 Наш выбор это VContainer. Это быстрый и легкий DI-контейнер. Мы выбрали его за производительность и минимализм. Суть проста, есть единая точка сборки LifetimeScope, где мы регистрируем всё через builder.Register<IBattleSim, BattleSim>(Lifetime.Singleton). Теперь контейнер сам знает, кому и что нужно доставить.
👩💻 Для чистых C# классов (наша логика) всё работает через классический constructor injection. Контейнер видит, что классу нужен интерфейс, и сам его подставляет: public BattleProcessor(ICombatData data) { ... }. Весь граф объектов собирается автоматически.
Нюанс есть с монобехами. У компонентов Unity нет конструктора, их создает сам движок. Чтобы прокинуть в них зависимости, используется метод с атрибутом [Inject]
👌 В итоге вся архитектура становится прозрачной. Мы просто описываем связи в коде: builder.RegisterEntryPoint<GameLoop>(), и VContainer сам «склеивает» логику, визуал и данные. Это позволяет менять системы (например, подменить реальную сеть на моки для тестов) одной строчкой в одном файле, не бегая по префабам.
Нужно ли в следующий раз разобрать больше подробностей с конкретными примерами кода?
🏗 Наш выбор это VContainer. Это быстрый и легкий DI-контейнер. Мы выбрали его за производительность и минимализм. Суть проста, есть единая точка сборки LifetimeScope, где мы регистрируем всё через builder.Register<IBattleSim, BattleSim>(Lifetime.Singleton). Теперь контейнер сам знает, кому и что нужно доставить.
Нюанс есть с монобехами. У компонентов Unity нет конструктора, их создает сам движок. Чтобы прокинуть в них зависимости, используется метод с атрибутом [Inject]
Нужно ли в следующий раз разобрать больше подробностей с конкретными примерами кода?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
ЭКЗИСТЕНЦИАЛЬНЫЙ КРИЗИС ОТМЕНЯЕТСЯ: ПАЗЛ MVP СЛОЖИЛСЯ 🧩
🕺 Превосходное утро! Сегодня я официально заявляю: MVP быть меньше чем через месяц. Я наконец-то победил самую сложную архитектурную задачу в проекте, над которой мы ломали голову последние несколько дней.
❌ Проблема: У нас есть командиры. Они должны влиять на игру при любых событиях, при любых условиях, да еще и сами прокачиваться от этих же условий. Когда сущностей становится много, начинается хаос: как гарантировать, что баф сработает раньше дебафа? А что, если игрок сам должен выбрать очередность срабатывания способностей из своей «руки»?
⚙️ Решение: Сначала мы думали, что каждый командир будет сам слушать «свои» события. Но это путь в ад зависимостей и непредсказуемых багов. И тут осенило.
⚙️ Commander Sequencer: Мы выделили вышестоящего управляющего. Вместо того чтобы сотня командиров «орала» одновременно, на шину событий подписан один Секвенсор. Он перехватывает сигнал, смотрит на текущую руку игрока и выстраивает очередь исполнения.
🔥 События порождают события. Это выглядит как идеально настроенный часовой механизм. Если не брать в расчет саму симуляцию автобоя, это была самая зубодробительная задача. Но теперь, когда логика проработана на схемах и псевдокоде, пазл сошелся. Впервые система функционирует именно так, как ожидалось в самых смелых планах.
🎨 Теперь, когда фундамент залит бетоном, я с чистой совестью могу переходить к алгоритмам отыгрыша и визуалу.
А у вас бывали моменты в разработке, когда одна удачная идея спасала недели работы? 👇
🎨 Теперь, когда фундамент залит бетоном, я с чистой совестью могу переходить к алгоритмам отыгрыша и визуалу.
А у вас бывали моменты в разработке, когда одна удачная идея спасала недели работы? 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1