Комментарии 34
Это же популярный тренд с joyreactor?)
Зачем я это тащу на Хабр
Потому что мне интересна не только реакция "нравится / не нравится игра", а техническая проверка: где такая архитектура выглядит разумной, а где я сам себе построил бетонный гроб.
Попытался оценить\почитать статью но что-то больше вопросов чем комментов.
Вообще раз уж статья уже о "вайб кодинге", я бы посоветовал хотя бы статью писать руками, выглядело бы получше.
Многие мои вопросы как раз поэтому больше к кривым формулировкам не несущим никакого смысла чем о статье, была бы написана по настоящему может дискуссия вышла бы интересней.
Рейкастер вместо честного 3D
Честный 3D был бы красивее. Еще он был бы дороже, тяжелее, дольше и потребовал бы другой pipeline.
А чего не честного в рекйастинге? Рейкастинг это просто запуск лучей, это вполне себе часть честного 3д. Судя по всему вы имели в виду систему билбординга. Где все персонажи это спрайт который всегда на игрока повернут.
В начале новой игры создается большой пул процедурных жителей. На активном этаже материализуется только нужная часть: живые NPC, их инвентарь, отношения, фракции, занятия, смерть, память о событиях. Остальные остаются компактными записями, а не симулируются покадрово в фоне.
Если честно вообще не понятно о чем речь идет. Не все рендерятся? Они сгенерированы но "замарожены"? В чем разница генерации когда нужно против генерации с самого начала?
Что болит
Первый запуск. Интерфейс. Читаемость. Темп вылазки. Плотность текста. Баланс между «я ничего не понимаю» и «я хочу разобраться».
Системы уже умеют больше, чем новый игрок способен принять за первые десять минут. Это типичная болезнь игры, которая долго росла изнутри: разработчик видит связи, игрок видит шум.
Поэтому сейчас приоритет не в том, чтобы добавить еще двадцать монстров. Приоритет в том, чтобы один живой путь был понятен:
проснулся в жилой зоне;
взял еду, воду, патроны;
понял ближайшую зацепку;
вышел в вылазку;
получил опасность;
принял решение;
вернулся или умер с понятной причиной.
Когда этот путь работает, поверх него можно строить странность. Когда он не работает, вся процедурность превращается в дым.
Я попытался поиграть но чет вообще не понятно о чем игра и что делать надо. В первые 3-4 минут ничего не произошло ни зацепило. Поговорил, получил задание, побродил. Где оружейния не понятно, зачем я там тоже не понятно. Врагов, движа не увидел.
Миникарта есть но кстати тоже сложно читаемая, стенки сливаются с разными текстурами пола.
Отдельно смешно, что самая тяжелая работа оказалась не в «сделать монстра», а в «сделать так, чтобы игрок понял, что сейчас вообще можно делать».
Не понятно чего тут смешного, но логично. Фичи нужно минимизировать и полировать, а не генерировать больше и больше.
Поэтому базовое правило проекта стало таким: ноль runtime‑зависимостей, один браузерный билд, максимум данных и поведения из кода.
Это сильно отрезвляет. Если у тебя нет папки с ассетами, то текстуры должны родиться процедурно. Если нет нормального 3D‑движка, то камера и мир должны быть достаточно простыми, чтобы держаться на raycasting и фейках. Если нет ECS‑библиотеки, то сущности должны быть плоскими объектами, а мир — typed arrays и маленькие регистры.
Опять все это выглядит как то бесмысленно. Если нет ECS то нельзя рендерить не билборды? или о чем речь идет?
И вернемся к
Потому что мне интересна не только реакция "нравится / не нравится игра", а техническая проверка: где такая архитектура выглядит разумной, а где я сам себе построил бетонный гроб.
О какой архитектуре речь идет не понятно, в статье практически ничего о ней не сказано, исходников тоже не видно.
Вообще тема мне немного близка. В индустрии давно работаю и делаю себе проект для души тоже.
Тоже выбрал браузер для input-output но вся логика на бэкенде .net. То есть, есть webserver который всю логику обрабатывает и браузер который все рендерит. Идея в том, что браузер легко использовать как часть интеграции автоматических тестов (с помощью playwright), итерации намного быстрее чем в Unity. Идея в том чтобы в итоге если взлетело можно будет очень легко перенести на Unity. Unity-подход также диктует и сносную архитектуру рендеринга, компоненты, game objects, это все.
Полный отход от ассетов имхо это скорее слабость чем что то позитивное. Есть генерация ассетов и они выходят намного лучше в среднем чем генерация их через код. Для 2д билбордов можно использовать pixellab например. Они дешевые и можно тысячи нагенерировать если хочется.
В целом для проекта я бы посоветовал следующее. Меньше фичей, больше внимания к каждой фиче. Сместить фокус на геймдизайн, определить циклы, вовлечение, удержание внимания. Убедиться что игроку в первые 1-3 минуты придется делать что то важное и будет понятно как.
Спасибо за столь детальный фидбек!
По крайней мере на этот комментарий вам ответит человек.)
По поводу рейкастера, имелся в виду игровой мир, который представляет собой двумерную плоскость. Так сказать "2.5" как в думе или wolfenstein. Мы осознано отказались от трёхмерности, чтобы достичь наиболее чистой и элегантной эмерджентной архитектуры игрового мира.
Имеется в виду, что полная симуляция мира происходит только на активном этаже, остальные этажи намеренно замораживаются, иначе бы невозможно было создать живой гигахрущ с сотней тысяч жителей.
Да, вы правы, это проблема с которой сталкивается большинство игроков Гигахруща - непонятно, что делать. Игра позиционируется как песочница симулятор гигаструктуры, но мы понимаем, что любому игроку нужна зацепка и осязаемый геймплей луп, так что работает над этим.
Почти все фичи в игре являются частью монолитной единой системы основная проблема которой это слишком широкий размах, но с каждым обновлением цельная картина собирается всё больше и больши, и мы надеемся, что в скором времени сможем показать вам тот Гигахрущ, который соответствует видению большинства любителей вселенной Самосбора.
Мы отказались от всех готовых систем, в том числе и ECS, потому что сама игра представляет собой и движок и систему. Основная парадигма игры в том, что Гигахрущ существует без игрока и живёт своей жизнью, игрок здесь не Бог и не царь, а самый обычный житель, причём далеко не самый сильный.
Спасибо ещё раз, архитектура игры Гигахрущ это предмет отдельного разговора и следуя вашему комментарию мы опубликуем полноценный текст посвящённый именно архитектурной организации Гигахруща. Поверьте, там есть про что рассказать в деталях.
Мы используем web для мультиплатформенности и наиболее широкой доступности игры. Поскольку Самосбор как культурный феномен зародился в интернете в анонимных онлайн сообществах, игра Гигахрущ следует этой традиции и позиционируется как абсолютно бесплатный, анонимный браузерный опыт. Надеемся, что и новые игроки смогут через Гигахрущ приобщиться к хаотичной культуре анонимных имиджборд.
я бы посоветовал хотя бы статью писать руками
Чукча — не писатель, чукча — вайбкодер!
Взаимоисключающие параграфы детектед

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

Неплохо. Есть нюансы, но сама идея разработки через оркестрацию радует.
Мышиного курсора нет - так и задумано? Текст не помещается в диалоги, обрезается. В ячейках инвентаря какой-то текст скролится, не смог прочитать, очень мелко. Не смог выйти из интерфейса первого контейнера. Дальше играть не смог.
Первое впечатление по улучшениям:
- Шрифт сисстемный 100% увелчивать. Раза в три.
- Если есть возможность, сделать чуть лучше шрифт на стенах - менее размытым на расстоянии
- Уменьшить скорость поворота чувствительности мыши. У меня она как реактивная поворачивается
- Подсказка "Кликните по экрану" - на двух языках. Если я выбрал Русский, то оставьте подсказку только на русском
- ДОБАВИТЬ (пожалуйста) кнопку-подсказку с горячими клавишами куда-то в UI (вверх или вниз). Кнопку настроек, если она есть. "?" например в правый нижний угол.
- Ну и улучшать, тестировать, и ещё раз улучшать UI текстов. У меня часто накладывались надписи друг на друга
Благодарим за детальный фидбек
- поменяем шрифты
- шрифты на стенах это отдельный случай кодового преобразования текста в текстуры, постораемся улучшить, но не гарантируем быстрого решения
- чувствительность мыши можно менять в настройках клавиш, но если вы меняли и не помогло, то это реальная проблема
- хорошо, это не выглядит принципиальной проблемой, но можем исправить
- поняли, сделаем по классике олдскула - на F1 окошко мини туториал со всеми клавишами
- да
Ещё раз благодарим за ваше время, надеемся, вы продолжите играть в Гигахрущ, апдейты выходят регулярно!
Почему решили на голом WebGL, а не с использованием three.js например?
Решили на голом WebGL не потому, что three.js плохой, а потому что ГИГАХРУЩ не строит обычную 3D-сцену с мешами, ассетами и камерой. Это кастомный raycasting-рендер под конкретную симуляцию: процедурные текстуры, процедурные спрайты, canvas HUD, typed-array мир и один браузерный билд без runtime-зависимостей.
Three.js дал бы удобства для типового 3D, но здесь большую часть его абстракций пришлось бы обходить или подстраивать. Голый WebGL дает прямой контроль над пикселем, памятью, draw calls, стилем картинки и интеграцией с игровой логикой. Для проекта важнее минимальный слой между симуляцией и изображением, чем универсальный движок поверх браузера.
Коротко: three.js хорош для общей 3D-графики, а здесь нужен узкий, контролируемый и процедурный renderer под конкретную игру.
нельзя раздать полгига ассетов и надеяться, что игрок терпелив;
ну какой-нибудь doom3 тянет и ничего. главное покэшировать не забыть, что второй раз не перекачивать, а сразу грузить.
нельзя делать вид, что WebGL/canvas сами решат UX.
не понял причём тут UX. Это дизайнераская проблема, не техническая.
Это сильно отрезвляет. Если у тебя нет папки с ассетами, то текстуры должны родиться процедурно.
ну поглядели б как тот же emscripten делает виртаульную файлуху. С одной стороны текстурная генерация добавляет новизны, с другой - загрузка ассетов заменяется генерацией ассетов - не сказать чтобы сильно более лёгкая задача, разве что чуть более стабильная по времени.
Если нет ECS‑библиотеки,
то что мешает её написать? кажется не настолько космическая задача. Добавить пулы/арены, добавить типизацию, добавить генеративных индексов чтобы переиспользовать убитые компоненты и будет тебе счастье.
делать «уровень» как коллекцию красивых объектов.
непонятно что это значит. пропсы на уровне в том или ином виде всё равно появятся. не обязательно делать их все полезными.
Рейкастер вместо честного 3D
так рендеринг картинки сводится либо к raycast либо к raymarch. Что одно, что другое будет "честным" 3D, т.к. честный 3D это проекция сцены на 2D плоскость экрана.
Демка выглядит неплохо для прототипа, но определённо есть проблемы:
поворот камеры мышью очень медленный. не мышью тоже
нет не мышиной кнопки назад, хотя чисто с клавиатуры кажется удобнее играть. повесьте хотя бы на backspace.
подписи/надписи не слишком контрастные. Что там можно рассмотреть в меню торговли - непонятно. быстрым решением будет сделать интерактивные элементы кнопкой с фоном. в том числе и для интерактивных элементов на сцене.
система диалогов несколько странно работает. иногда пункты диалогов просто не реагируют на ввод. кажется не хватает пункта "уйти"
для предметов в инветаре не хватает какого-нибудь окошка с информацией о предмете. в магазине тоже. Плюс к порогу входа для новчиков.
Есть миникарта которая крутится во все стороны. Было бы нелпохо сделать хотя бы минимальный компас, чтобы понимать направление. А то прапор выдал мне квест про северную сторону, а я и хз где север искать, когда всё уже сто раз по всем осям повернулось.
уберите с сайта здоровенную картинку в начале и прибейте канвас в начале страницы, а не как щас - спустя пол экрана торчит половинка невидимого канваса. смотрите как на itch делают, например.
- чувствительность мыши можно менять в настройках клавиш, но если вы меняли и не помогло, то это реальная проблема
а где их искать-то? in-game меню нет, а при старте там нет конфигурации.
Критиковать каждый может. А что вы сами делали?
Всякое разное делал. Включая игры. Только вам-то моё зачем? Я открыл, поиграл, дал фидбэк.
Спасибо вам за столь детальный фидбек!
Но у нас не дум 3, а процедурный рогвелайк симулятор Гигахруща!
Да, это факт, Гигахрущ как игра довольно сурова и не слишком дружелюбна к игроку.
Да, решили генерить всё процедурно и постепенно развивать проекту по модульной системе - однообразные контент пакеты.
Мы решили придерживаться дата ориентед подхода, нпц не создаются (за редкими исключениями) и не исчезают, и являются такой же честной частью мира как и сам игрок.
Да, у нас это делает в три этапа - сперва генерится геометрия этажа, потом назначенные комнаты заполняются декорациями, а уже после на существующие декорации навешиваются интеракционные маркеры.
Имеется в виду, что в игре нет стен, нет потолка, а есть только двумерные плоскости этажей, так что Гигахрущ является честной 2д игрой с триде рендером (как дум и вольфнштайн) это было осознанное решение на самом низком уровне при заложении архитектуры игры.
- даже при настройки чувствительности мыши?
- в настройках клавиш можно выставить доп кнопку для назад, но придумаем, что можно сделать (просто так поставить какую-то клавишу на назад не выйдет, потому что в игре присутствует ввод текстов)
- спасибо, попробуем улучшить кнопки
- логично, добавм меню выхода из диалога (это интерактивное меню)
- постараемся добавить, но вроде в инвентаре справа должно быть описание предмета
- постараемся разобраться, но вроде миникарта не крутится и север фиксирован наверх
-попытаемся пофиксить
Ингейм меню на ENTER
Да, у нас это делает в три этапа
на кдпв у вас там какое-то мясо было и я подумал у вас там полноценные модельки и текстуры 2к. Поиграв, понял что в таком формате как есть вообще не проблема. Carry on.
2д игрой
2d игрой зовут игры в которых степеней свободы всего две - либо вверх вниз, либо влево вправо. Какой-нибудь meat boy, teleglitch или binding of isaac - 2D. У вас же полноценный 3D - камеру можно крутить во всех 4 направлениях. Модельки с псевдо трехмерностью, да.
- даже при настройки чувствительности мыши?
chrome windows - мышиная скорость была адекватная. linux/ firefox 151 - скорости сильно не хватало, переключение раскладки на русский ломает все буквенные кнопочные действия, отсутствует звук. firefox 145 windows - мышиная скорость была нормальной, но ощущались просадки fps при повороте камеры.
- спасибо, попробуем улучшить кнопки
работа с инвентарём и с торговым интерфейсом отличается. Взаимодействие с ящиками (положить предмет в инвентарь или из него) рисует ложную подсказку про [E] вместо [Enter]. В интерфейсе торговли этих подсказок нет вовсе. Тоже работает через Enter. Вообще для предметных интерфейсов очень хочется мышью поорудовать, но курсора в них вы пока нам не завезли.
но вроде в инвентаре справа должно быть описание предмета
описание в обоих меню снизу под панелями инвентарей. При бОльших экранах надписи будут мелковаты. Плюс на самих предметах тоже есть нечитаемые надписи, которые ещё и бегущей строкой рисуются. Лучше оставить немного места и сделать описания как в инвентаре.
Навигация по меню с квестами никак не отображается визуально ввиду отсутствия все того же курсора.
Отдельно забавляет надпись "данная играя является fps и НЕ использует мышь. ЛКМ атака, ПКМ назад." bruh.
постараемся разобраться, но вроде миникарта не крутится и север фиксирован наверх
не знаю то ли новая версия появилась, то ли были приколы с firefox, но сейчас карта зафиксирована. Прикольно идти "по приборам" глядя только на открытую карту. При открытии карты там какие-то серые подсказки про кнопки появляются, но их не видно т.к. они серые и рисуются только частично.
Автор, как успехи? В телеграме не вижу новостей, но игра обновляется.

Я делаю ГИГАХРУЩ: браузерный survival horror без движка, ассетов и спокойной жизни