Свой бэкенд, а не прослойка
Картинку рисует наш собственный код поверх Vulkan — без переходников над старыми библиотеками. Путь на OpenGL остался запасным и включается сам, если у видеокарты слишком старый драйвер.
Готма
Российский проект · собственный движок
Готма — это собственный игровой движок и игры, которые на нём растут. Мир взят из русского фольклора. Сегодня в клиенте одна игра — со временем их число будет расти.
Крутите — камера полетит вперёд
02 — Движок
Картинку рисует наш собственный код поверх Vulkan — без переходников над старыми библиотеками. Путь на OpenGL остался запасным и включается сам, если у видеокарты слишком старый драйвер.
Vulkan 1.3 — для свежих видеокарт, OpenGL — для слабых и встроенных. Движок сам смотрит, что нашёл в системе, и выбирает, как рисовать. Игроку настраивать нечего.
За стеной и за спиной ничего не считается. Существа пропадают из расчёта вместе с куском мира, в котором стоят, — и кадр остаётся дешёвым даже в людном месте.
Слабая видеокарта считает картинку в меньшем размере, а движок растягивает её до экрана. На встроенной графике это ровно вдвое больше кадров — без этого она игру бы просто не потянула.
Клиент собран на актуальной Java: работа с памятью и системой идёт напрямую, без обходных трюков, которые обычно тянутся за такими проектами годами.
Модели, звуки и небо читаются одновременно, каждое на своём потоке, а не по очереди. Собирается всё потом в одном и том же порядке — от спешки в игре ничего не разъезжается.
03 — Коллизия
У каждой модели своя невидимая оболочка — точно по её форме, а не ящик вокруг неё. Поэтому в палатку входят внутрь, под аркой проходят, а сами модели ставят вплотную и вкладывают друг в друга.
04 — Графика
В клиент встроены счётчики: они показывают, что именно съедает кадр, — гадать не приходится. Три случая из практики: нашли, поправили, замерили снова.
Проверка «что видно, а что нет» сама оказалась дороже, чем отрисовка лишнего. Сделали её необязательной — и кадр вырос вчетверо.
Счётчики показали: почти весь кадр съедала трава под ногами, а не вдалеке. Пересчитали кольца — дальность при этом не тронули.
Слабая видеокарта считает картинку в меньшем размере, а движок растягивает её до экрана. Без этого встроенная графика игру бы просто не потянула.
04 — Графика · железо
Больше пятидесяти конфигураций за плечами; ниже — пять опорных. Как именно рисовать, движок решает сам под найденное железо.
RTX 3050 и Intel UHD Graphics сняты монитором внутри игры. Значения со знаком ≈ округлены по нашим прогонам.

05 — Системы
Девять систем уже работают, три собираются прямо сейчас.
Каталог моделей открывается по клавише: выбрал, поставил, подвинул. Видно размер модели и сколько таких уже стоит в мире.
Модели заносятся из обычных форматов, оболочку столкновений игра считает сама.
Хотбар из семи типовых ячеек: меч, щит, дальнее оружие, ремесленный предмет и три свободные. Под луком — отдельная ячейка снарядов, ниже сумка семь на два.
Правила «что куда кладётся» одни и те же на компьютере игрока и на сервере.
У существ настоящий скелет, а не жёсткая фигура: толпа целиком уходит на видеокарту одним заходом и потому ничего не стоит.
Голова следит за взглядом, удар идёт отдельным слоем поверх шага, хитбоксы — по костям.
Сетевая часть на свежей Netty. Инвентарь и столкновения сервер считает тем же кодом, что и клиент, — разойтись им неоткуда.
Вход только через наш лаунчер: чужой клиент до мира не доходит.
Шрифт растрируется под текущий масштаб интерфейса, а не тянется из картинки: буквы остаются резкими и на ноутбуке, и на ультрашироком мониторе.
Масштаб подбирается по высоте окна сам; окно и полоса заголовка тоже свои.
Разделы на пергаменте, выцветшие зарисовки зверей, живое перелистывание с поднятием края страницы.
Открывается как книга и читается как книга — это часть мира, а не служебное окно.
Каналы и личные разговоры разложены по вкладкам, у каждой свои фильтры и метки времени. Окно переносится и растягивается.
Формат сообщений сервера можно менять, не выпуская обновление клиента.
Монитор в углу показывает ядра, частоты, память, загрузку и температуру видеокарты — и честное время кадра, а не приглаженное среднее.
Это не сторонняя программа рядом, а часть клиента: замер всегда под рукой.
Сторонние дополнения рисуют свои экраны теми же средствами, что и сама игра, и при этом не могут её сломать.
Есть предпросмотр без перезапуска — экран правится на живой игре.
Тем же редактором внутри игры: поставил жителя, задал маршрут, повесил реакцию. Никаких внешних инструментов и перезапусков.
Скелетная анимация под них уже готова — остаётся поведение.
Мир получит свою историю: записи, находки, задания и то, что рассказывают жители. Бестиарий и книги — уже готовая витрина под это.
Нарратив пишется под конкретные локации, а не вешается поверх готовой карты.
Не случайная генерация, а собранный вручную кластер: деревня, дорога, руины, места, куда есть смысл идти.
Именно его и увидят первые бета-тестеры.
06 — Клиент
Мир собирают внутри игры, а не в стороннем редакторе. Игру ставит свой лаунчер. Меню и настройки нарисованы тем же движком, что и мир. Ничего чужого в этой цепочке нет.
07 — Требования
Java внутри лаунчера. Игре хватает половины гигабайта памяти.
Рабочий минимум, а не аварийный режим: кадр считается мельче экрана.
Полный кадр в родном разрешении. Резать нечего.
Во что движок упирается, когда железо перестаёт мешать.
На встроенной графике Vulkan выигрывает. На Intel UHD Graphics путь Vulkan 1.3 даёт заметно больше кадров, чем OpenGL, и движок выберет его сам. Наш замер на встройке — 80–100 кадров в секунду.
08 — История
Это не строчка в презентации. Это сотни решений, половина из которых оказалась неверной, и каждая переписана своими руками. Дорога открыта целиком в наших сообществах — мы её не прячем и не переписываем задним числом.
09 — Контакты
Мы показываем работу по ходу дела, а не готовым релизом: правки, замеры, кадры из альфы. Заходите туда, где вам удобнее, — отвечаем везде.
10 — В команду
Мы делаем lowpoly-pixel игру на собственном движке. Небольшой командой, без издателя и без сроков, спущенных сверху. Если это ваш формат — напишите.
Условия обсуждаются индивидуально. Это не подработка на вечер: мы ищем тех, кто со временем возглавит своё направление и будет решать, как оно выглядит.
Опыт и портфолио — да. Зарплаты пока нет, есть доля.
Прямо с нуля. Нужно не умение, а желание разбираться и привычка доводить начатое до конца. Всему, что умеем сами, научим — нас так же никто не учил.
Тринадцать лет назад мы начинали ровно с этого места.
Как написать. В Telegram или Discord — ссылки были на прошлом экране. Портфолио приветствуется, но если его нет, а желание есть, это тоже разговор.
11 — Друзья проекта
У Готмы нет издателя и не было инвестора. Всё это время рядом были люди, которые верили в проект дольше, чем это выглядело разумным. Эта страница существует во многом благодаря им.
Заходили на наши сервера, когда там было сыро, и оставались, когда всё в очередной раз переписывалось начисто.
Находили баги раньше нас, присылали логи и скриншоты, спорили о механиках в чате до ночи. Половина правок в этом движке началась с чьего-то сообщения.
Рублём на Boosty и словом в тяжёлые месяцы. У проекта без издателя это не мелочь, а то, на чём он держится.
Спасибо. Без пафоса: мы помним, кто был рядом, когда показывать было нечего.
Готма
Фундамент готов. Дальше — жители, лор и первый кластер локаций, а за ними закрытая бета. И не одна игра, а площадка для нескольких на одном движке.