Обновить
8

Godot *

Открытый кроссплатформенный 2D/3D-движок для игр

Сначала показывать
Порог рейтинга
Уровень сложности

NewOnGears | Невангеры 2 на Godot 4

Время на прочтение4 мин
Количество просмотров1.8K

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

Читать далее

Новости

Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 11. Описываем деревья

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров1K

В прошлой главе мы избавились от необходимости непрерывно соприкасаться с C#-генераторами Godot, после чего пришли к выводу, что нам нужен адекватный задаче DSL. Я дам небольшую вводную по написанию самого дешёвого, но при этом крайне эффективного варианта, а все возможные навороты и прочую крутотень оставлю для DLC статей за пределами текущего цикла (иначе он никогда не закончится). Начнём мы с инициализации нод, настройки статических характеристик и выстраивания иерархии, а в следующий раз разберёмся с описанием их поведения.

Читать далее

В 40 лет в геймдев: от корпоративного архитектора к инди-разработчику

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров5.9K

Привет, хабр!

Это моя первая статья, поэтому для начала представлюсь. Меня зовут Виктор, мне 40 лет, из которых почти 20 я на разных ролях участвую в разработке различного программного обеспечения для крупных корпораций (в основном финтех). Путь был долгий и тернистый, но сейчас я занимаю роль Системного архитектора и по совместительству Руководителя направления интеграции.

Я всегда любил игры, у меня даже был собственный канал с летсплеями и обзорами разных игр, который, к сожалению, не сыскал успеха. Несмотря на это, около двух лет назад я решил с ноги ворваться в мир геймдева. Ничто не предвещало беды, просто одним февральским вечером будто щелкнуло что-то в мозгу - ХОЧУ… ДЕЛАТЬ… ИГРЫ…

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

Читать далее

Большая труба Сида Мейера (как устроен мир в Civilization и моей маленькой 4X-стратегии MyCivGame)

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров13K

Приветствую тебя, читатель, меня зовут Вадим Бельский, и я уже больше полугода делаю свою небольшую 4-x стратегию MyCivGame, вдохновленную играми Civilization и Total War. Сейчас я расскажу тебе, как устроен мир в нашей любимой игре Civilization, и мы с тобой вместе подумаем, можно ли сделать его лучше (а самое главное, нужно ли это)!

Читать далее

Как нейросети могут помогать делать игры

Время на прочтение6 мин
Количество просмотров2.7K

Недавно я написал статью в трех частях о том, как мы с нейросетью Qwen делали игры: аналог Pong!, платформер и клон «Героев меча и магии 3». Это вдохновило меня на то, чтобы еще детальнее погрузиться в возможности использования нейросетей в геймдеве и написать об этом.

Читать далее

Вышел открытый игровой движок Godot 4.5 — подробный обзор нововведений

Уровень сложностиПростой
Время на прочтение22 мин
Количество просмотров9.2K

Godot — это 2D/3D игровой движок с открытым исходным кодом по лицензии MIT и большим сообществом, поддерживающий основные настольные и мобильные ОС, VR и веб (приставки с помощью сторонних компаний), ядро написано на C++, для скриптов поддерживается GDScript и C#, возможно подключение модулей практически на любом языке вплоть до Rust через GDExtension. Примеры игр — список раз, список два. Версия 4.5 вышла 15 сентября 2025. Главные нововведения: трафаретный буфер (stencil buffer), поддержка средств чтения с экрана, обратная трассировка скриптов и пользовательские логгеры, запекатель шейдеров (shader baker), живой предпросмотр интернационализации, поддержка Apple Vision, физика сегментированных тайловых карт (chunk tilemap physics), фовеальный рендеринг (foveated rendering) на Vulkan Mobile, поддержка WebAssembly SIMD в веб. Далее сделанный человеком перевод официального обзора нововведений с доступными объяснениями для новичков и ссылками на PR с исходным кодом на C++ для профессионалов.

Поддержка трафаретного буфера (stencil buffer). Как нам «прорезать дыру» в этой стене, чтобы посмотреть на игрока на другой стороне? Теперь вы можете сделать это с трафаретными буферами! Представьте невидимую сферу, которая окружает нашего персонажа. Даже если геометрия не отрисовывается на экране, мы вставляем ее форму в трафаретный буфер. Теперь сделаем так, чтобы наши шейдеры отрисовывались, только если целевой пиксель не покрыт трафаретом. Вот так! Трафаретный буфер — это специальный буфер, в который меши могут писать для последующего сравнения. Он похож на существующий буфер глубины, но в него можно записать произвольные значения и у вас больше контроля над тем, что можно сделать со сравнениями. Подробнее и код. Добавлено Apples.

Читать далее

Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 10. C# не нужен

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров2K

F# и C# в плане выразительности ООП различаются не так радикально, как некоторым кажется. Но у них разные дефолты, и мы вольны как бороться с ними, так и эксплуатировать их на полную катушку. Для этого необходимо понять, что F#-ный подход ориентирован на симуляцию процессов, а C#-ный — на симуляцию данных. Формально от нас требуется и то, и то, но по моему мнению, моделирование процессов — это 80% моей работы. Оставшиеся 20% — это данные, которые затачиваются под те же самые процессы.

C#-еры то ли обитают в другом мире, то ли как-то пропустили этот момент, поэтому систематически пишут код в обратном направлении — от данных к процессам. Первое время я думал о Godot в том же ключе, но чем больше ковырял <Prefix>Server-ы (там их много, VisualServer — это лишь один из подобных), тем больше у меня складывалось ощущение, что где-то в недрах его команды сидит вменяемый ФП-программист. Уж слишком сильно некоторые решения напоминали наши. К сожалению, я ещё многое не расковырял из того, что нужно расковырять для потенциального разрыва с дефолтным API. Поэтому в рамках текущего цикла мы не будем избавляться от ООП-нагромождений. Вместо этого мы нагородим новых, но так, чтобы нам было удобно работать в ФП-парадигме.

Читать далее

Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 9. Первичный конструктор, _Ready

Уровень сложностиПростой
Время на прочтение20 мин
Количество просмотров897

В прошлой главе мы ненадолго прервали изучение синтаксиса F#, но в этой всё с лихвой нагоним, так как сегодня у нас в программе первичный конструктор, расширения типов (снова) и их архитектурные следствия. Я попытался описать их в одном тексте, но обычно они раскиданы по разным частям документации, что серьёзно мешает целостному восприятию, в результате чего даже весьма башковитые ребята тупят как мальчики с Википедией при обсуждении истории древнего Рима. То есть формально у них есть доступ ко всем знаниям человечества, но фактически они соображают слабее, чем человек, прочитавший трижды устаревшего Моммзена.

Начиная с этой главы мы будем постепенно отказываться от того сценария разработки, который предлагает Godot по умолчанию. Итогом отказа будет почти полное исчезновение C# (пока только в рамках проекта) и переход на удобную и идиоматически правильную архитектуру.

Читать далее

Разбираемся, на чём делают игры: обзор 13 лучших движков для геймдева

Уровень сложностиПростой
Время на прочтение29 мин
Количество просмотров53K

Собрали большую подборку бесплатных и платных инструментов для создания игр разных жанров и форматов. Разделили их по задачам, чтобы было проще понять, какой подойдёт под ваш проект и уровень подготовки.

Кратко рассказываем, как устроен каждый, чем удобен и какие есть ограничения. А в конце — таблица для сравнения, если нужно быстро сориентироваться.

Читать далее

Как новичку начать разработку игр

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров11K

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

Читать далее

Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 8. Запоминающий поиск пути

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров1.8K

Мы ковыряли поиск пути через A* на протяжении двух глав и при этом были сосредоточены на синтаксических изысках F#. В этой главе мы отдохнём от синтаксиса и посмотрим на то, как этот алгоритм мог бы развиваться в более функциональном стиле.

Читать далее

Процедурная генерация миров с использованием AI: интеграция MidJourney и GauGAN2 в геймдев

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров3.3K

Создание сотен локаций вручную непрактично для инди-разработчиков, а алгоритмы шума о которых я писал ранее ограничены. Искусственный интеллект, такой как MidJourney и NVIDIA GauGAN2 (интегрирована в NVIDIA Canvas, бесплатно доступный для пользователей с видеокартами NVIDIA RTX), предлагает новые возможности: нейросети генерируют текстуры, биомы и концепт-арт с высокой детализацией.

Читать далее

Свой проект — это ловушка для новичка

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров16K

Когда мне было 16, я устроился работать в небольшую студию. Это была по факту официальная работа: с реальными задачами, пайплайном, дедлайнами и даже большим издателем. Тогда это казалось чем-то невероятным. Игра, над которой мы работали, выглядела амбициозно. У неё были красивые промо, целевая аудитория, маркетинг — всё как у взрослых.

А в центре команды был парень, старший разработчик, которому на тот момент было 23. Для меня он был почти как герой: я только начинал, а он уже 7 лет программировал. Уверенный, спокойный, очень самостоятельный. Я всерьёз думал, что именно к этому и стоит стремиться.

Но потом к нам присоединились более опытные ребята. Разработчики, у которых за плечами были и запущенные проекты, и провальные — но главное — была реальная практика и мышление архитектора. Они сразу начали задавать вопросы: — Почему у нас 6000 строк в одном скрипте? — Почему нет нормального разделения логики? — Почему переменные называются a, b1, mainLogic, veryImportantManager?

Код, который мы считали рабочим, оказался большой горой хрупкого говнокода, которая могла рухнуть от любого изменения. И когда она рушилась — её латали так же вслепую. Без юнит-тестов, без понимания, почему оно работает. Главное, чтобы запускалось.

🧨 А потом проект провалился. Несмотря на издателя

Читать далее

Ближайшие события

MyCivGame. Как я сделал свою Civilization?

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров11K

MyCivGame - Как я сделал свою Civilization! Я расскажу, как я в одиночку делаю свою пошаговую стратегию, вдохновленную играми Civilization и Total War...

Читать далее

Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 7. Как удержать нечто

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров1.5K

В прошлой главе мы перенесли A* на F#, после чего в образовательных целях занялись выдёргиванием его «кишок» наружу. Тогда процесс «потрошения» не был завершён до конца, но сегодня мы его добьём. Что касается метагейма, то мы продолжим путь от функции к конструктору и даже успеем слегка залезть на «ту сторону».

Читать далее

Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 6. Как добыть нечто

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров1.9K

Концепция этого цикла начиналась с простого переноса тайловых миров на F#. Однако в процессе его описания я основательно растёкся по древу, за счёт чего у нас образовался большой подготовительный этап из пяти глав про языковые фичи и прочую «фундаменталочку». Думаю, что с подготовкой закончено, поэтому сегодня мы обратимся непосредственно к тайловым мирам.

Но начнём мы практически с конца — с адаптации поиска пути. Это несложная задачка, но в процессе её решения мы успеем закрепить пройденный материал и по инерции заскочить в новый.

Читать далее

Никому не советую, но мы попробовали, или Интеграция игры в React Native с помощью Unity, Game Engine и Godot

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров2.7K

Меня зовут Алексей Цуцоев, я разработчик мобильных приложений в KODE, и я хочу поделиться историей того, как мы внедряли игру в уже готовое React-Native приложение. Как выбирали технологию, с какими трудностями столкнулись и к каким выводам пришли.

Читать далее

Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 5. Ошибки и исключения

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров1.5K

Мы закончили обсуждать тело функции, и теперь пришло время вывода данных. Простые сценарии мы сразу отбросим, так как по ним уже хорошо прошлись, когда изучали выражения. Мы начнём с косяков выполнения, под которыми я подразумеваю не баги, а непреодолимые препятствия с различной степенью неожиданности. Это может прозвучать странно, так как аварийный выход не подпадает под определения output, codomain и т. д. Я с этим согласен и пересматривать эти термины не собираюсь. Однако меня интересует не только легитимная часть, но и вообще всё, что выходит из функции. Вплоть до того, что в следующих главах я начну включать в это аморфное понятие сайд-эффекты, фоновые процессы и много чего другого.

Я начал с ошибок, потому что Godot эту тему фактически проигнорировал, и вряд ли за ненадобностью, так как несколько раз мне уже было очень больно. У меня всё ещё не дошли руки покопаться в GDScript, так что я понятия не имею, вызван ли этот пробел ограничениями языка или архитектурным решением, но в любом случае нам его надо закрывать.

C# и ФП пропагандируют разные подходы к ошибкам. F#, будучи на перепутье, испытывает влияние обоих. Можно много говорить про плюсы взаимного обогащения культур, но судя по публичным баталиям, это не совсем наш случай. Вместо синтеза я куда чаще наблюдаю эмоциональные взрывы в среде представителей то одного, то другого лагеря. Я не буду ввязываться в эту борьбу (в этот раз) и сосредоточусь на решении более насущной задачи. Мне нужно доработать интероп так, чтобы он соблюдал привычную систему распределения ответственности. Так что сегодня только рутина, без красивых ходов и эффектных бросков.

Читать далее

Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 4. Дефолты, option и дженерики

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров1.8K

В прошлых частях мы подключились к Godot, обсудили адаптацию к API и разобрались с устройством тела функции. Дальше в планах было перейти к входным и выходным данным, от них к общей архитектуре и далее снова к особенностям API. Если бы я отстрелялся быстрее, то так бы и было, но я возился слишком долго (об этом чуть ниже), из-за чего до моей телеги успел доползти читатель с типовым набором набивших оскомину вопросов. Допускаю, что я собрал всю коллекцию практикующих читателей, но мне хочется верить, что где-то прячется «молчаливое большинство» с аналогичными проблемами. Поэтому я решил передвинуть некоторые рассуждения из конца цикла в середину.

Это задержит кульминацию, но не критично, так как финальные части цикла я планировал запостить без длительных пауз. Поэтому эта глава пролежит в ожидании до тех пор, пока не будет готов черновик всего цикла. Если этот текст появился на Хабре, то остальные главы уже на подходе.

Читать далее

An incursion under C#. Протаскиваем F# в Godot. Исправления

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров1.1K

Этой статьёй я хочу внести некоторые правки в алгоритм развёртывания, который я описывал год назад вот здесь. Статья тогда получилась объёмная, и я искал способы её сократить, в результате чего опрометчиво пренебрёг несколькими сценариями, которые пригодились мне в дальнейшей разработке. Они образовали техдолг, который мне необходимо закрыть ввиду грядущего продолжения.

Читать далее