Инди космос за 6 лет. От лобби в VR до мультиплеерной игры

Я помню свои первые впечатления от лобби когда я впервые включил Oculus Quest. Космическая станция на орбите. За окном — вселенная. Солнечный свет отражается от стен каюты. За пределами атмосферы солнце кажется необычайно ярким. Вентиляция тихо гудит. Хотелось запрыгнуть в челнок и помчаться по просторам космоса. Но тогда я не знал о существовании подходящей игры. А может, её просто не было. Безумно хотелось летать.
Шесть лет назад появилась идея игры, которая со временем превратилась в Орбиту.
Я не хочу нагружать статью технической информацией, всё это можно посмотреть в репозитории. Здесь я хочу рассказать о тех вещах, которые повлияли на меня и нашли отражение в моём творении.
Был 2020 год. Пандемия, локдаун. Мы с семьёй оказались заперты дома, и мне хотелось хоть какого-то ощущения открытого пространства.
Так у меня появился Oculus Quest 2.

Та самая космическая станция.
Даже сегодня это отличное устройство. Его главное преимущество — автономность: не нужен мощный компьютер, чтобы погрузиться в виртуальную реальность.
Но за это приходится платить производительностью: возможности гарнитуры ограничены по сравнению с игровым ПК с мощной видеокартой.
Я тогда начал записывал первые мысли, какой хочу видеть свой виртуальный уголок.
Я черпал вдохновение в культовых Elite (1984), Unreal tournament (1999), Homeworld (1999).



В веб-разработке я не новичок. Но GameDev оказался совершенно другим миром. Одно дело - разрабатывать формы для интернет-магазина или банковского приложения. Совсем другое - создавать виртуальное пространство, в котором хочется чувствовать себя частью мира.
Мне пришлось перенастроить мышление на совершенно другой подход к разработке.
Изначально сервер был на Tornado потому что он поддерживает web socket. Я тогда активно играл в RecRoom в эту игру встроен 3D редактор, дети 11-15 лет учили меня что такое SkyBox и как строятся сцены. Самое сложное для меня было воссоздать ощущение космоса. Я не дизайнер я инженер.
Тут я воспользовался советом друга из RecRoom когда мы создавали очередную атмосферную комнату для релакса. Он сказал, в интерьере должны быть выражены лишь главные детали, остальное мозг игрока дорисует сам.
Больше атмосферности добавляют звуки и музыка. Об этом я знаю ещё с игры Homeworld и с их потрясающего музыкального оформления от группы Yes.
Разработка шла медленно я поменял Tornado на FastApi. Tornado терял свои позиции а FastApi стал востребованным, хотелось его изучить поближе и добавить в резюме. Сделал нагрузочное тестирование. Хотелось понять какое количество игроков потянет мой рабочий ноут. Первые тесты показали что не больше 100 игроков на карту/ядро. Пришлось карты разбить на шарды. Проклятие GIL! А позднее и внутри шарды создал отдельные карты. Так можно создавать карту желаемого типа на самом не нагруженном шарде.
Кстати почему WebXR? С самого начала я хотел сделать игру под web.
Мне нравилась идея, что для игры не потребуется проходить через магазин приложений, скачивать устанавливать. Достаточно открыть ссылку в браузере — и всё, можно играть.
По крайней мере, такова была задумка.
У этого подхода есть и обратная сторона. Браузерная игра должна быстро загружаться, поэтому приходится внимательно относиться к размеру ресурсов и производительности. Особенно если речь идёт о виртуальной реальности, где очень важна стабильная частота кадров от этого зависит комфорт игрока, иначе есть риск получить головокружение и морскую болезнь.
Идея постепенно обрастала механиками, но разработка продвигалась медленно. Время от времени я возвращался к проекту, добавлял что-то новое и снова откладывал его.
В июне 2026 года закрыли RecRoom.
Rec Room был для нас не просто игрой. Из интернета исчезло уютное место где мы с друзьями любили зависать. Поэтому мне захотелось довести собственный проект до состояния, в котором в нём действительно можно собираться и играть. Не стану скрывать что и Claude своим появлением сильно ускорил процесс и помог разобраться с fronend-ом.
Проект перестал быть просто маленьким местом, которое я когда-то придумал для себя.
В нём появился голосовой чат. Я добавил несколько карт.
Например карта "Save station" появилась из игры танчики на Денди. Я считал несправедливым, что у игроков есть база а у противника нет.

Можно делать баталии команда на команду "Team battle" или все против всех "PvP".
Все карты, кроме "Farming space" это карты где игроки играют друг против друга.
"Farming space" исключение, там отключен огонь по игрокам и если не приближаться к пиратам то, в целом, безопасно.
До понедельника игра работала на моём рабочем ноутбуке. Но теперь я перенёс её на VDS, так что она получила отдельное место в сети.
Поддержка сервера мне обошлась не дорого. DNS 3 евро/год + VDS 12 евро/мес. Чтобы снова быть вместе с друзьями это не много.
Попробовать игру можно здесь: https://orbita.p2me.in
Открывается на шлеме в VR режиме, но можно играть и на PC или даже с мобильных устройств.
https://youtu.be/w7_UKV_I_Jo?si=_lVAiKnihFMPrXtC
Исходный код игры вы можете найти в моем репозитории на GitHab лицензия MIT
Буду рад, если вы заглянете, поделитесь впечатлениями и расскажете, что стоит улучшить.
Меня можно, чаще всего, найти на карте "Farming space" пилот "Akinava" и пообщаться лично.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.