Double Jump in GameDev
4 subscribers
6 links
Геймдизайн платформеров от разработчика с опытом.
Переводы, разбор механик, левел-дизайн, Godot.
Основатель студии (50+ игр), работал с Alawar, Nevosoft, Chillingo (EA).
Download Telegram
Channel created
На днях друг подкинул полезное видео:

«10 Things I Wish I Knew Before Starting a Large Godot Project» (10 вещей, которые я хотел бы знать перед началом большого проекта на Godot) от канала Fat Earth Studios

https://www.youtube.com/watch?v=zLdTvkLsmgA


Автор видео — опытный инженер, который делится уроками, извлеченными в ходе разработки крупного проекта на Godot 4. Некоторые из этих ошибок стоили ему месяцев переделок.

10 советов для больших проектов на Godot

1. Не доверяйте слепо туториалам
То, что хорошо работает в маленьком демо-проекте или прототипе, часто «рассыпается» при масштабировании. Используйте уроки для понимания концепций, но всегда думайте, как это впишется в архитектуру большой игры.

2. Спрайты: используйте Offset вместо Position
Для выравнивания графики внутри спрайта используйте свойство Offset. Если вы меняете Position, за спрайтом будут двигаться все привязанные к нему дочерние узлы (например, точки вылета пуль), что может создать трудноуловимые баги при анимации.

3. Создайте Debug-режим («режим бога»)
С самого первого дня заложите в игру возможность включать неуязвимость, бесконечные прыжки или быстрый проход сквозь стены. Это колоссально ускоряет тестирование уровней на поздних этапах.

4. Ошибка с Scale X = -1
Никогда не разворачивайте персонажа, просто меняя масштаб (Scale) корневого узла на -1. Это инвертирует физику, лучи (Raycasts) и коллизии, что ведет к непредсказуемым багам. Вместо этого используйте flip_h для спрайта и меняйте позиции физических узлов через код.

5. Осторожнее с preload
preload жестко загружает ресурс в память при инициализации скрипта. Если вы используете его для тяжелых сцен (уровней) в глобальных скриптах (синглтонах), игра будет потреблять лишнюю память. Для динамического контента используйте load или асинхронную загрузку load_threaded.

6. Оптимизация через VisibleOnScreenNotifier2D

Не позволяйте логике всех врагов на уровне работать одновременно. Используйте этот узел, чтобы активировать ИИ врага только тогда, когда он попадает в область видимости камеры или приближается к ней.

7. Настройка разрешения на старте
Определитесь с базовым разрешением и режимом растягивания (stretch mode) в настройках проекта как можно раньше. Изменение этих параметров в середине разработки может привести к размытию арта или поломке интерфейса.

8. Используйте статическую типизацию
Пишите var x: int = 5 вместо просто var x = 5. Это не только повышает производительность в Godot 4, но и дает отличные подсказки в редакторе, помогая ловить ошибки еще до запуска игры.

9. Контроль версий (Git)
Важно иметь правильно настроенный .gitignore и понимать, как Godot сохраняет сцены (это текстовые файлы). Это критично для работы в команде или если вы случайно сломаете важную сцену.

10. Быстрые советы по UX и оптимизации:
- MSDF-шрифты: Включайте этот режим для шрифтов в настройках импорта, чтобы они оставались четкими при любом масштабе.
- Ограничение FPS в редакторе: Помогает видеокарте не перегреваться и не шуметь во время долгой работы.
- Цветные папки и Избранное: Используйте цвета для папок, чтобы мгновенно находить нужные ассеты в дереве файлов.
- Быстрый выбор: Зажимайте Alt + правый клик в 2D-вьюпорте, чтобы выбрать конкретный узел в куче наложенных друг на друга объектов.
- Главный вывод: тратьте время на изучение того, как движок работает «под капотом», и планируйте архитектуру заранее — это сэкономит вам сотни часов в будущем.

#разработка #godot #youtube #gamedev
Как создавать ВЕЛИКОЛЕПНЫЕ уровни в жанре Metroidvania
По мотивам методологии LazyTeaStudios

https://youtu.be/RISNX2USJvk?is=1PQGbYydZe74wtIE

Дизайн уровней в метроидвании — это не просто расстановка платформ. Это создание живого, взаимосвязанного мира, который направляет игрока через открытия, препятствия и триумфы. Если вы хотите, чтобы ваш мир ощущался единым целым (как в Hollow Knight или Metroid), а не набором случайных коридоров, следуйте этой проверенной системе из пяти шагов.

1. Начните с глобального наброска
Самая большая ошибка новичков — начинать проектирование с одной комнаты. Вместо этого взгляните на картину целиком.

Мир как персонаж: Создайте уникальные, запоминающиеся биомы. Каждая зона должна иметь свое «лицо», настроение и механику. Например, City of Tears в Hollow Knight запоминается своей атмосферой дождя и вертикальностью, а Norfair в Super Metroid — опасным жаром.
Связи: На этом этапе не нужны детали. Просто обозначьте кругами основные зоны и линиями — как они соединяются. Это поможет вам сразу увидеть «узкие места» или излишнюю линейность.

2. Разработайте таймлайн прогрессии
Забудьте на секунду о сюжете и лоре. На этом этапе ваша задача — продумать «дорожную карту» игрока.

Логика ключей: Определите, в каком порядке игрок получает способности, находит ключи и побеждает боссов.
Эмоциональная связь: Прогрессия должна расширять мир. Когда игрок находит ключ в одном конце карты, который открывает дверь, встреченную им три часа назад, он чувствует глубокую связь с пространством и радость открытия.

3. Синхронизируйте способности с пространством
Геометрия вашего мира напрямую зависит от того, как двигается ваш герой.

Метрики прежде всего: Прежде чем строить уровни, точно определите высоту и длину прыжка, скорость бега и радиус атаки.
Комфорт перемещения: Вспомните Majora's Mask — разработчики сначала отточили управление Линком, чтобы прыжки по платформам ощущались естественно. Если мир кажется «тесным» или прыжки — «дергаными», проблема обычно в несоответствии способностей и размеров платформ.

4. Детальное проектирование комнат
Теперь, когда у вас есть глобальная структура и отточенное управление, пора переходить к детализации «скелета» карты.

Соединение пазла: Продумайте миникарту каждой области. Как именно комнаты перетекают друг в друга? Где находятся секреты, а где — главные ориентиры?
Борьба с линейностью: На этом этапе вы можете заметить, что путь игрока превращается в прямую линию. Добавьте развилки, короткие пути (shortcuts) и петли, которые возвращают игрока в уже знакомые места с новыми возможностями.

5. Тестируйте, пересматривайте, адаптируйте
Дизайн уровня в теории никогда не совпадает с реальностью на 100%.

Ощущение потока: Пробегитесь по комнатам. Не слишком ли они пусты? Не заставляют ли они игрока совершать скучные действия?
Логика испытаний: Каждое препятствие или пазл должны иметь смысл в контексте локации.
Итерации: Будьте готовы переделывать. Иногда одна удачно перемещенная платформа может превратить посредственную комнату в запоминающийся игровой момент.
Золотое правило: Отзывчивость управления
Никакой, даже самый гениальный уровень, не спасет игру с «ватным» или непредсказуемым управлением. В метроидвании игрок постоянно возвращается назад, и этот процесс должен приносить удовольствие сам по себе.

Резюме: Планируйте глобально, знайте возможности своего героя и никогда не прекращайте тестировать. Хорошая метроидвания — это мир, в котором хочется заблудиться.


#gamedesigh #metroidvania #youtube #gamedev
Привет всем!

Меня зовут Дмитрий и я заядлый игроман. Меня всегда увлекали не только игры, но и их создание.

Моя история в разработке игр началась в 2009 году, когда вышел SDK для разработки приложений под iPhone. С тех пор на протяжении 6-7 лет я был тесно связан с индустрией видеоигр. Вначале это было вечернее хобби, но через год-полтора стало основной деятельностью. Я собрал команду, которая занималась разработкой игр на заказ и иногда выпускала свои собственные проекты. На пике численность команды составляла около 10 человек.

За этот период мы создали значительное количество игровых проектов (по грубым подсчетам, не менее 50 штук). Мы сотрудничали с такими издателями, как Alawar, Nevosoft и Cillingo (которые издавали первые версии Angry Birds и позже были куплены компанией EA). Мы также портировали на iPhone известную многим игру Color Lines 98.

Однако в конце 2015 года всё резко закончилось, так же внезапно, как и началось. Но появилось новое увлечение – настольные игры, и даже были попытки их разработки, которые со временем сошли на нет. Как говорится, можно уйти из геймдева, но вот обратное затруднительно!

В последние два года я пробовал участвовать в игровых джемах (и как программист, и как пиксельный художник, и как воксельный моделлер), но часто интерес быстро пропадал, либо появлялись более важные дела. Хотелось бы сказать, что желание есть, но прежний драйв куда-то исчез. На этих джемах я пробовал работать с Unity3D и Defold, но это было совсем не то, что я ожидал. Это не те ощущения, какие я испытывал с любимым движком Cocos2d (а затем Cocos2d-x).

Но недавно я несколько раз подходил к движку Godot, и он мне понравился больше остальных! Мне показалось, что это отличный выбор для джемов и небольших проектов!

И вот на новогодних праздниках 2025 года я в очередной раз решил поучаствовать в игровом джеме на itch.io и сразу решил, что буду делать платформер именно на Godot. Каково же было мое удивление, когда практически в одиночку (хоть и с использованием готовых ассетов) я наконец-то "доделал" игру для джема! У меня даже хватило запала на следующий день пофиксить критические баги и добавить в игру несколько пасхалок, как в старые добрые времена.

После джема я точно понял - мы с Godot точно надолго вместе!

За 2025 года я еще пару раз поучаствовал в игровых джемах в команде друзей.

И вот на старте 2026 года я понимаю что я точно готов сделать свой первый полноценный проект платформер и здесь начинается новая история! Double Jump это как раз об этом.
Буду описывать здесь свой прогресс, а также делиться полезной информацией, которую буду собирать по мере своего продвижения к заветной цели!

To be continued…
1
Создание Масштабной Карты Метроидвании

Конспект видео от Inbound Shovel по разработке игры Isadora’s Edge
https://www.youtube.com/watch?v=FI0-yz5Xcz0

🛠 Основная Проблема: Масштабируемость
Создание огромных миров путем ручного управления отдельными сценами Godot неэффективно. Для большой метроидвании необходим системный подход, основанный на данных (data-driven), чтобы гарантировать согласованность связей и высокую скорость разработки.

🏗 1. Разработка Собственного Инструмента Мира
Вместо того чтобы просто работать в стандартных вкладках сцен Godot, создайте (или используйте) кастомный инструмент, который:
Визуализирует Весь Мир: Позволяет видеть, как все комнаты соединяются на сетке или общей схеме.
Управляет Данными Комнат: Централизованный способ "знать", какая комната где находится.

📄 2. Метаданные Комнаты
Каждая сцена уровня/комнаты должна иметь свой файл Resource или файл метаданных, содержащий:
Позиция в Мире: Координаты X, Y на большой "Карте Мира".
Размеры Комнаты: Сколько "экранных юнитов" или ячеек сетки она занимает в ширину и высоту.
Точки Соединения: Определения того, где именно находятся переходы (двери/границы).

🌉 3. Специальные Узлы Переходов
Используйте специализированные узлы (например, RoomTransition2D) для связи уровней:
Зоны Триггеров: Области коллизии, размещенные сразу за видимыми границами камеры.
Целевая Комната: Свойство, которое указывает системе, какую именно сцену загружать следующей.
Целевая Позиция: Где именно должен появиться игрок в новой комнате (например, на той же высоте, где он вышел из предыдущей).

👁 4. Визуализация в Редакторе и "Двойная Проверка"
Ключевой момент — отображение соединений прямо в Редакторе Godot:
Используйте tool-скрипты или функции отрисовки CanvasItem, чтобы рисовать стрелки или линии между комнатами в режиме просмотра мира.
Это позволяет разработчику визуализировать "поток" (flow) игры, не запуская её каждый раз для проверки тупиков или смещенных дверей.

⚡️ 5. Логика Бесшовных Переходов
Система переходов в идеале должна:
Обнаруживать Пересечение Игрока: (Обычно на границе экрана).
Предзагружать Следующую Комнату: (Опционально, но помогает производительности).
Создавать Инстанс и Закреплять: Размещать следующую комнату в глобальном пространстве на основе её метаданных.
Перемещать Игрока: Телепортировать или плавно сдвигать игрока в соответствующую точку входа.

📈 Итоги для Внедрения
Данные > Ручное Управление: Пусть позиция комнаты определяется данными, а не только тем, где она физически лежит в дереве сцен.
Визуальная Обратная Связь: Создавайте инструменты для себя, которые показывают связи комнат, чтобы не терять общую картину мира.
Стандартизированные Переходы: Создайте единый класс "Узел Перехода", который единообразно обрабатывает все смены комнат.

#разработка #youtube #gamedev