theasmoth

javascript developer
Пикабушник
Дата рождения: 17 июня
148 рейтинг 0 подписчиков 9 подписок 5 постов 0 в горячем
Награды:
5 лет на Пикабу
5

City States Idle - менеджмент игра про построение бизнеса

С прошлого поста про игру на хакатон прошло чуть больше года, было не до геймдева. Всё как обычно началось с желания создать игру, игру которая бы сочетала элементы idle и менеджмента. Хотелось, чтобы игроки могли развивать свой город, но при этом не были привязаны к постоянному управлению. Так родилась концепция City States Idle.

City States Idle - менеджмент игра про построение бизнеса Разработка, Программирование, Gamedev, Инди, Javascript, Phaser, Браузерные игры, Яндекс Игры, Длиннопост

Выбор технологий

Для реализации проекта был выбран игровой фреймворк Phaser, так как эта библиотека отлично подходит для создания браузерных игр и имеет множество готовых инструментов для работы с графикой и физикой.

Первый прототип

Первым делом был создан базовый прототип с гексагональной сеткой. Это было ключевым элементом игры, так как гексагональные плитки позволяли создавать интересные стратегические решения при планировании карты. Очень помог плагин rexBoard для создания сетки.

City States Idle - менеджмент игра про построение бизнеса Разработка, Программирование, Gamedev, Инди, Javascript, Phaser, Браузерные игры, Яндекс Игры, Длиннопост

Система покупок и размещения

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

Система производства и доставки

Одним из ключевых элементов стала система производства ресурсов. Здания автоматически генерировали ресурсы, но так же и перерабатывали их. Это создавало интересный баланс между развитием инфраструктуры и управлением финансами.

City States Idle - менеджмент игра про построение бизнеса Разработка, Программирование, Gamedev, Инди, Javascript, Phaser, Браузерные игры, Яндекс Игры, Длиннопост

Графика

Как обычно графика сгенерирована нейросетями, лучший помощник при разработке игр.

Система соединений

Важной частью геймплея стала система соединений между зданиями. Здания должны были быть связаны с другими открытыми зданиями для эффективной работы - некий стратегический элемент в процессе игры.

Инструменты

Отдельно пришлось создать редактор карт на базе самой игры и локальный сервер для обработки и хранения этих карт. Это очень сильно облегчило создание и редактирование карт.

Оптимизация и балансировка

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

Так же пришлось поиграться с ценами товаров и скоростью производства зданий, чтобы достичь некоторого баланса.

City States Idle - менеджмент игра про построение бизнеса Разработка, Программирование, Gamedev, Инди, Javascript, Phaser, Браузерные игры, Яндекс Игры, Длиннопост

Релиз и обновления

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

Заключение

Разработка City States Idle стала интересным проектом, который объединил элементы градостроительства и idle-геймплея. Продолжается работа над улучшением игры, основываясь на обратной связи от игроков и новых идеях для развития проекта.

City States Idle на Яндекс Играх

Показать полностью 4
20

Age of Robots - Игра для хакатона

В конце сентября 2023 пришло письмо о проведении хакатона и я решил в нём поучаствовать. Хакатон немного нестандартный, не два-три дня как обычно проводят, а аж целых 2 недели. Начало было 4 октября, а окончание 18. На момент написания поста результатов еще никаких нет кроме того что игра опубликована.

Age of Robots - Игра для хакатона Gamedev, Idle игры, Idle, HTML, Javascript, Яндекс Игры, Длиннопост

Зарегистрировался и осталось подождать начала, о котором я благополучно забыл. Вечером 7 октября внезапно вспомнил про него, а уже прошло 3 дня с начала, и решил всё таки поучаствовать несмотря ни на что.

Команда за это время не подобралась, да и я особо не старался, поэтому пришлось участвовать в соло команде. Выбрал трек "Игры" и начал.

Идея

Тут проблем особо не было, у меня в заметках накопилось порядка 40 с лишним идей игр, бери любую и делай. Не все они уже актуальны и продуманы, некоторые записаны просто одной фразой.

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

Роботов можно назначать работать в постройки. Постройки приносят ресурся или производят опять же роботов. У роботов есть параметр редкости и каждый созданный робот случайным образом создается из списка доступных типов роботов.

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

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

Что по технологиям?

Несколько раз пробовал пользоваться ECS паттерном и библиотеками в Unity, но всё никак не мог привыкнуть. Давненько смотрел доклады и помнил что это очень удобно для разработки игр. Сейчас был хороший повод использовать этот подход. Немного погуглив библиотеки для JavaScript, а было решено писать на нём, решил остановиться на Ape ECS.

Быстренько скопипастил систему сборки из Immortal Knight и начал изучать Ape ECS. На удивление в этот раз как-то всё было более понятно и стало получаться. Без ошибок не обошлось, пытался использовать паттерн не по назначению, превращяя ECS в EC, но вовремя одумался и всё получилось более-менее неплохо.

Для UI решил оставить React из Immortal Knight, т.к. к Phaser еще не до конца привык, быстрее было сделать на обычных div'ах и CSS.

Age of Robots - Игра для хакатона Gamedev, Idle игры, Idle, HTML, Javascript, Яндекс Игры, Длиннопост

Один из ранних скриншотов интерфейса

Графика

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

А ведь сейчас как раз такой расцвет генеративных моделей изображений. Самым простым способом было взять Stable Diffusion XL 1.0 с Pixel Art XL. Интерфейсом послужил ComfyUI.

В итоге получились вот такие изображения:

Роботы всех видов и размеров, а так же здания

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

Процесс

Основной игровой процесс был написан примерно за четыре дня. Остальное уже дописывалось по мере необходимости.

Важной частью, и одновременно самой долгой, для меня оказалось придумывать сценарий и реализовывать его в виде квестов и технологий для изучения. В итоге в игре получилось 20 квестов и 20 технологий.

Ну и куда же без небольших приколов в игре? У всех роботов интересные названия, местами в описаниях зданий или технологий есть отсылки. Например "Лаборатория GPT-9000" или "Шахтёр BTC-25". Можете сами поискать.

Что дальше?

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

Поиграть в Age of Robots можно на Яндекс Играх https://yandex.ru/games/app/262827

Показать полностью 6
8

Игра выживалка Эмодзи

Игра выживалка Эмодзи Gamedev, Онлайн-игры, Инди, Эмодзи, Survivors, Яндекс Игры, Javascript, Phaser, Длиннопост

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

Ну штош. В этот раз захотелось сделать игру из еще одного жанра который мне нравится. Аналог Vampire Survivors. У этой игры уже появилось очень много различных клонов, разного уровня проработки, 2D и 3D, мобильные и десктопные, и еще куча различных комбинаций.

Для начала решил поковыряться в 2D движках для JS. Когда-то был небольшой опыт с pixi.js, но я еще слышал про Phaser. Почитав различные англоязычные сравнения было выявлено что свои плюсы и минусы есть у обоих движков, но Phaser полегче для новичков. На нем и остановился.

Из плагинов добавил Rex UI чтобы было полегче мастерить менюшки и прочие UI'ные элементы. Долго пришлось разбираться как это всё дело правильно масштабировать для разных экранов, но наконец получилось сделать нормальный вариант, который прошел модерацию. Изначально выявились баги на некоторых разрешениях что меню обрезалось, элементы UI улетали за экран. Теперь всё ок. Если вдруг что-то найдете, вы знаете куда писать.

Игра выживалка Эмодзи Gamedev, Онлайн-игры, Инди, Эмодзи, Survivors, Яндекс Игры, Javascript, Phaser, Длиннопост

Рисовать я не особо умею, но зато имеется большой опыт составления коллажей и фотошоперства. Поэтому в качестве персонажей было решено выбрать эмодзи, которые и будут выживать. Логотип нарисовал сам по гайдам :)

Про фон для меню отдельная тема, т.к. не умею рисовать, а нужно получить что-то красивое и приятное, то было решено использовать AI генератор изображений. Нагенерил множество картинок без копирайтов, осталось только их скомбинировать вместе, а это я умел. Кажется получилось отлично. Выглядит сочнее чем сама игра, возможно придется сделать еще итерацию для улучшения изображений эмодзи. Критика приветствуется.

В игре есть несколько различных персонажей, изначально доступно 2, следующие открываются при добыче монет. Механика аналогичная вампирам, убиваешь монстров, получаешь опыт и иногда различные ништяки. Есть потенциал для усложнения механик, но решил пока выпустить MVP версию для проверки. Всё таки клонов и на Яндекс Играх полно.

Игра выживалка Эмодзи Gamedev, Онлайн-игры, Инди, Эмодзи, Survivors, Яндекс Игры, Javascript, Phaser, Длиннопост

Монетизация простая: стики баннеры, rewarded реклама за получение 5 монет и воскрешение.

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

Собственно сама игра на Яндекс Играх https://yandex.ru/games/app/243190

Показать полностью 2
11

Полтора месяца в Яндекс Играх или финстрип

Прошло 30 дней с публикации поста о моей первой игре в Яндекс Играх, а значит можно показать какие-то результаты доходов из РСЯ.

Финстрип – сокращение фразы «финансовый стриптиз». Отчет о доходах за какой-то период.

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

Будет статистика с 22 мая по 15 июля, да это чуть больше полутора месяца, но там и первую неделю ничего не происходило.

Начнем с посещений

Immortal Knight 1158 посетителей

Полтора месяца в Яндекс Играх или финстрип Онлайн-игры, Gamedev, Яндекс Игры, Рся, Длиннопост

"Кем быть? В мире профессий" 1780 посетителей

Полтора месяца в Яндекс Играх или финстрип Онлайн-игры, Gamedev, Яндекс Игры, Рся, Длиннопост

По заработку график получается следующий:

Полтора месяца в Яндекс Играх или финстрип Онлайн-игры, Gamedev, Яндекс Игры, Рся, Длиннопост

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

Было небольшое количество отзывов , в том числе с указанием багов. Плюс про баги писали в комментариях к прошлому посту. Все они исправлены и выпущены новые версии, спасибо комментаторам :)

Пробовал отключить начальную рекламу, но на метрики это никак не повлияло.

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

У "Immortal Knight" неплохие метрики по времени играния и монетизации по сравнению с играми в этих же категориях, а игра указана в 2ух категориях - симуляторы и экономика.

Полтора месяца в Яндекс Играх или финстрип Онлайн-игры, Gamedev, Яндекс Игры, Рся, Длиннопост
Полтора месяца в Яндекс Играх или финстрип Онлайн-игры, Gamedev, Яндекс Игры, Рся, Длиннопост

В планах попробовать добавить в Immortal Knight инап покупки и выпустить еще одну игру, убивалку времени, над которой сейчас работаю.

Оставляю ссылку на "Кем быть? В мире профессий" на Яндекс Играх, может кому-то будет интересно глянуть https://yandex.ru/games/app/233343

Показать полностью 5
11

Браузерная игра Immortal Knight

С самого детства мечтал создавать игры, поэтому и увлекся программированием в 13 лет... Через какое-то время начали с друзьями делать игры, но ни одна из них так и не увидела свет, школа закончилась и все разъехались. А дальше поступил в универ, бросил, устроился на работу программистом, поднимался по карьерной лестнице, но мечта о написании игр так и остается.

Мучал время от времени Unity, но всё никак вкатиться обратно в геймдейв не выходило. Пока однажды не попалась мне одна игры, эдакий фэнтезийный симулятор жизни с системой перерождений из idle игр. Долго играл в неё пока случайно не наткнулся на ссылочку на её исходный код. Стало интересно разобраться как она работает.

Исходные коды оказались под лицензией без ограничений и, т.к. были некоторые идеи по улучшению её, было принято решение переписать код и опубликовать улучшенную версию. В репозитории находились простенький CSS и очень переусложненный JS код.

На разбор кода ушло пару дней в нерабочее время. А еще через пару дней заработала минимальная MVP версия написанная уже на TypeScript на нормальных классах. Релизовав полноценную копию уже принялся за улучшение интерфейса, добавление красивостей, анимаций и картинок.

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

Браузерная игра Immortal Knight Онлайн-игры, Gamedev, Idle игры, Idle, HTML, Javascript, Яндекс Игры, Браузерные игры, Пятничный тег моё

Что можно делать в игре:

  • выбрать работу (да, да 🤮)

  • выбрать текущий навык для изучения

  • купить себе жилье и предметы экипировки

  • по достижение некоторых временных точек можно переродиться для дальнейшего прогресса

  • после первого перерождения становится доступен выбор персонажей, которые дают полезные эффекты

Комбинируя эти различные аспекты можно быстро прогрессировать по игре и стать самым могущественным :)

Игра есть. Играть можно. А куда её выложить? Был когда-то опыт с мобильными приложениями, но было как-то лень собирать его, поэтому было решено выложить игру на платформу для браузерных игр. И выбор пал на Яндекс Игры.

Быстренько подключил JS SDK, написал текстов, нагенерировал через нейросети картинок без авторских прав и отправил на модерацию. Спустя день приходит ответ со скриншотами что игра не работает. Быстро поправил и отправил на повторную модерацию, после которой игру всё таки опубликовали. Счастью не было предела, моя игра увидела свет 27 мая.

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

Страница игры на Яндекс Играх https://yandex.ru/games/app/231027

Показать полностью 1
Отличная работа, все прочитано!