SpeIISinger

SpeIISinger

Пикабушник
Дата рождения: 2 октября
16К рейтинг 18 подписчиков 28 подписок 81 пост 11 в горячем
Награды:
10 лет на Пикабу Высокий разум «За пятничные ребусы»
36

Уже два года пытаемся сделать качественную браузерную игру

Игра называется Бурить-Копать!, это 2D рогалик про ломание блоков и сбор ресурсов

Предыдущий пост я писал почти полтора года назад и за это время:

Мы сильно доработали игру

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

  1. Добавили систему квестов в игру, реализовали обучение с помощью цепочки квестов.

  2. Написали свой сервер для таблиц лидеров (лидербордов).

  3. Встроили в игру систему шаблонов - заранее заготовленных интересных участков шахты.

  4. Добавили сундуки, которые можно найти в шахтах и из которых выпадают ресурсы.

  5. Добавили портреты (аватарки) для лидербордов.

  6. Добавили особые облики, которые красиво выглядят и дают особые свойства буру.

  7. Добавили "Систему сжигания топлива", чтобы темп игры не замедлялся на глубине.

  8. Сделали круче анимации ломания блоков.

  9. Заменили почти все спрайтовые анимации на Spine.

  10. Несколько раз переработали весь UI.

У нас все ещё огромные планы на игру, а именно добавление новых миров, с новыми блоками, бурами и уникальными особенностями.

Мы несколько раз переработали рекламную монетизацию

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

Но игра не особо взлетела на веб-площадках, а взлетают те игры, которые хорошо зарабатывают. Мы добавили больше рекламы, но доходы не выросли, а остальные метрики упали.

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

Мы добавили внутриигровые покупки

Вот вам ваша чарующая игра в одном скриншоте...

К сожалению или к счастью, сейчас браузерным и мобильным играм не получается выживать только на одной рекламе. Игре нужно уметь что-то продавать, чтобы окупать разработку и быть конкурентной среди других игр. Мы добавили внутриигровую валюту, реликвии, которые можно приобрести за реальные деньги. За эту валюту можно купить облики, дающие необычные свойства. Но, эту валюту также можно получить и в самой игре. Она выпадает из сундуков, и прямо сейчас у нас в разработке новые способы её получения.

Мы участвовали в онлайн фестивале российских игр Игропром и победили в номинации лучшая браузерная игра

Всего в конкурсе участвовало 65 игр, среди них 10 браузерных и наша игра оказалась лучшей. Мы выиграли стенд на оффлайн фестивале Игропром, а также фичеринг на Пикабу Играх. Конкурс завершился в мае, мы попросили немного времени, чтобы доделать игру, и на прошлой неделе игра появилась на Пикабу!

Сыграть можно по ссылке:

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

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

Ответ CheburekSmerti в «Девочка в мужском туалете»9

Честно говоря, не понимаю, что вы тут вообще все обсуждаете. Так получилось, что я очень много раз был в мужских туалетах (возможно потому, что я мальчик), но я ни разу не видел там чужих писюнов. Всё, что я там видел, это спины мужиков, которые писают в писсуары.

У меня сын, но будь у меня дочка, я бы тоже пошёл с ней в мужской туалет (при отсутствии туалета для инвалидов). На всякий случай взяв её на руки и прикрыв ей глаза рукой.

11

Я выстрелил себе в ногу

Распространенное выражение среди программистов, но мне всегда было только примерно понятно, что оно означает. А вчера я смог это прочувствовать на себе.

TL;DR Я обосрался с циклическими зависимостями

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

Так как обучение появилось в игре не сразу, есть ряд игроков, которые уже прокачались, и им не нужно показывать всё обучение или его часть. Для этого предусмотрена возможность пропустить квест по какому-то условию. Естественно, эти условия вычисляются при инициализации QuestService.

Добавляя последний квест, я сделал условие, которое зависело от сервиса Foo, при этом сам этот сервис Foo зависел от QuestService. В итоге, при вычислении условия, код получал не проинициализированную до конца зависимость, и падал с NRE (NPE, прим. для моих коллег джавистов). Обиднее всего то, что баг был плавающий, и не воспроизвелся, когда я тестировал, поэтому он попал на все площадки, где есть наша игра, и нам срочно пришлось выпускать хотфикс.

Чтобы не допустить такого в будущем, я буду потихоньку рефакторить весь код, и переходить от field injection к constructor injection. Ибо

Constructor injection guarantees no circular dependencies between classes, which is generally a bad thing to do. Zenject does allow circular dependencies when using other injections types however such as method/field/property injection

Изначально я поленился использовать constructor injection, потому что приходилось писать больше кода, и потому что я делал сервисами монобехи (а для монобехов не поддерживается constructor injection), чтобы хранить в них ссылки на объекты сцены или какие-то serialized параметры. Видимо, очень зря. Надо будет поискать какой-нибудь lombok для C# или плагинчик для Rider, который будет генерировать конструкторы, и делать монобехи со ссылками и параметрами отдельными зависимостями для сервисов, чтобы сервисы были обычным объектами.

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

Про петиции на РОИ

Господа, которые считают, что петицию не нужно подписывать, потому что она плохо сформулирована, а вы правда думаете, что как только наберем 100 000 голосов, она автоматически превратится в закон в том виде, в каком она написана?

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

20

Мы попробовали сделать качественную игру для Яндекс Игр

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

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

Это казуальный рогалик про копание. Ломаешь блоки, собираешь ресурсы, прокачиваешься. По задумке, в игру будут играть, чтобы весело убить время в транспорте, на паре или в туалете =)

Что нас отличает от других игр:
- Мы не сунем вам в лицо полноэкранную рекламу ещё до того, как игра загрузится
- У нас довольно длинные игровые сессии, но мы не паузим их, чтобы показать вам рекламу
- Есть возможность 1 раз заправиться и 1 раз починиться за просмотр рекламного ролика, но это совсем не обязательно - вы и так без проблем прокачаетесь.
- Мы очень тщательно проработали интерфейс, в том числе добились того, что он одинаково хорошо выглядит и на ПК, и на телефоне, и вообще при любом соотношении сторон.
- Нас в команде двое, программист и художник, и вся графика нарисована художником - оценить качество вы можете на скриншотах
- Мы собираем аналитику и собираемся дорабатывать игру, чтобы она нравилась максимально широкой аудитории
- Мы прошли модерацию с первого раза без единого замечания =)

Игра ещё 5 дней будет находиться в новинках, а оценку рейтинга игра получит через 2 недели. Нам самим интересно, насколько окупятся наши усилия. Разработка длилась 7 месяцев по вечерам после работы.

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

Алгоритм выбора цели в игре Sneaky Monsters

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

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

Алгоритм выбора цели в игре Sneaky Monsters

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

Поэтому, мы решили дополнительно учитывать как скоро монстр выйдет из радиуса атаки башни, и вот что у нас получилось.

Надеемся, что этот алгоритм подарит более приятный опыт игрокам.

Показать полностью 1 1
15

Дневник разработки игры Sneaky Monsters - 13 неделя 2023 года

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

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

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

Видео версия дневника разработки

Отличная работа, все прочитано!