Серия «HackeRPG»

11

Механика Хакинга. HackeRPG DevLog #5

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

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

Механика Хакинга. HackeRPG DevLog #5 Разработка, Инди игра, Gamedev, Программирование, Взлом, Хакеры, Инди, Код, Гифка, Длиннопост

Создание вируса

Для запуска и поддержания одного вируса на одном враге требуется 1 ядро. Так что для того, чтобы контролировать таким образом всех врагов, потребуется определённы билд в прокачке.

Механика Хакинга. HackeRPG DevLog #5 Разработка, Инди игра, Gamedev, Программирование, Взлом, Хакеры, Инди, Код, Гифка, Длиннопост

Вирусы под контролем

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

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

Новая система прокачки и IDE. HackeRPG DevLog #4

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

Новая система прокачки и IDE. HackeRPG DevLog #4 Разработка, Gamedev, Инди игра, Программирование, Инди, Pixel Art, Гифка

Когда таймер раунда заканчивается игрок "вынужден" прокачаться и дополнить/поправить код

Таким образом в течение 1.5 минуты ничто не будет отвлекать от экшона (разве что ошибки в собственном коде).

Прокачка

Я реализовал ещё не все виды апгрейдов, но теперь явно выделил вектор развития: больше никакого разделения на hardware и software - все апгрейды теперь по сути hardware. Написание кода же никак не привязано к прокачке.

Новая система прокачки и IDE. HackeRPG DevLog #4 Разработка, Gamedev, Инди игра, Программирование, Инди, Pixel Art, Гифка

Внутриигровая IDE

Можно создавать/обновлять/удалять любой код сколько угодно (но не во время раундов, хотя над этим ещё буду думать и смотреть на результаты тестов). Ограничением же будет наше железо. Для хранения кода нужна память (улучшается прокачкой SSD), для работы и хранения переменных - оперативная память (прокачка RAM), для запуска демонов нужны дополнительные ядра.

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

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

Новая система атаки в игре

Новая система атаки в игре Pixel Art, Инди игра, Gamedev, Разработка, 2D анимация, Анимация, Инди, Программирование, Гифка

Теперь у атаки нет перезарядки и они выстраиваются в комбо с вот такими анимациями.

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

Учитывая управление через код, это все равно ощущается немного деревянно, но это к лучшему: игра таким образом очередной раз подталкивает автоматизировать действия с помощью кода, а не делать всё самому.

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

Новая фоновая текстура, которая куда лучше вписывается в игровой лор

Новая фоновая текстура, которая куда лучше вписывается в игровой лор

Персонаж геймплейно - аватар программиста, который борется с разными проблемами в компе.

12

Новый концепт и анимации персонажа

Новый концепт и анимации персонажа Gamedev, Инди игра, Pixel Art, Анимация, Разработка, Инди, Гифка

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

  1. Для начала перешёл с разрешения 64x64 на 32x32: меньше детализации - проще анимировать.

  2. Далее ознакомился с хорошими референсами бега и подтянул матчасть по анимациям.

  3. Увеличил скорость бега, чтобы камера "не успевала", что увеличивает ощущение скорости.

  4. Немного партиклов никогда не помешают.

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

Подготовка к раннему доступу. HackeRPG DevLog #3

Закончил работу над сборкой 0.0.3, которую снова не буду никуда выкладывать.

Список изменений, которые не вошли в прошлый девлог:

  • Новые фичи в коде (переменные, демоны)

  • Новые команды (raytrace, sleep)

  • Система освещения

  • Улучшенная коллизия

  • Улучшенный баланс

  • Небольшие правки

Геймплейное видео с комментариями на забугорном:

Что я хочу добавить/изменить в следующей версии:

  • Больше видов врагов

  • Перерисовать персонажа

  • Механика хакинга

  • Новое оружие/скиллы и сундуки, с которых их можно получить

  • Изменённая система прокачки и кодинга

  • Улучшение визуала

  • Ещё больше правок по балансу

  • Оригинальный и динамичный саундтрек

Про баланс:

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

Про ранний доступ в стим:

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

Мысли:

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

Спасибо за уделённое время.

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

Давай по новой, всё х...орошо. HackeRPG DevLog #2

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

Новые фичи

Когда вот так вот сел описывать всё, что я сделал за последние почти 2 недели пришло понимание, насколько много всего было добавлено:

  • Автокомлит

  • Прокачка статов с уровнем

  • 3 вида врагов

  • Более динамичный и приятный глазу (надеюсь) фон

  • Улучшенная IDE

  • Маркетинг (c игрой не связано, но занимает не мало времени)

  • Тонна фиксов и архитектурных правок + Звуки и визуальные эффекты (здесь расписывать не буду, поэтому объединил всё месте)

Автокомплит

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

Столкнулся с проблемой не лучшего UX: на букву "P" начинаются две команды (pause() и ping()). Первая по сути не имеет отношения к игровому процессу, но алфавитно является более приоритетной. Пока не пофиксил этот момент, но планирую вручную задать этой команде минимальный приоритет, чтобы не выбивать игрока из потока случайными паузами.

Прокачка статов с уровнем

Теперь не каждый лвл-ап приходится кодить, а только каждый второй(хотя не обязательно, если нет идей, то можно взять статы). Каждый первый же лвл-ап будет возможность взять один из бафов статов.

Получается такое разделение: можно качать железо(hardware) или программную составляющую (software). Название железа пытался как-то логически связывать со статами, но особо не заморачивался, т.к. ещё 10 раз буду балансить это дело.

Давай по новой, всё х...орошо. HackeRPG DevLog #2 Gamedev, Программирование, Инди игра, Инди, Длиннопост, Pixel Art, Разработка, Личный опыт, Видео, Без звука, Гифка
Давай по новой, всё х...орошо. HackeRPG DevLog #2 Gamedev, Программирование, Инди игра, Инди, Длиннопост, Pixel Art, Разработка, Личный опыт, Видео, Без звука, Гифка

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

Новые враги

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

В бэклоге у меня дополнительно лежит механика хакинга и основное её применение будет - сбивать щиты, значит кто-то эти щиты должен создавать - но кто? Это точно должна быть башня, которая стреляет по врагам и делает их сильнее (в будущем будет так же ускорять и т.д.). И как же должна выглядеть злая башня? Конечно же как 5G вышка!

Чтобы проще было рисовать нашёл несколько референсов:

Давай по новой, всё х...орошо. HackeRPG DevLog #2 Gamedev, Программирование, Инди игра, Инди, Длиннопост, Pixel Art, Разработка, Личный опыт, Видео, Без звука, Гифка

Получилась вот такая чудесная башня зла:

С таким разнообразием игра играется уже куда интереснее.

Фон

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

до:

Давай по новой, всё х...орошо. HackeRPG DevLog #2 Gamedev, Программирование, Инди игра, Инди, Длиннопост, Pixel Art, Разработка, Личный опыт, Видео, Без звука, Гифка

после:

Давай по новой, всё х...орошо. HackeRPG DevLog #2 Gamedev, Программирование, Инди игра, Инди, Длиннопост, Pixel Art, Разработка, Личный опыт, Видео, Без звука, Гифка

Улучшенная IDE

IDE в этой игре - это моя самая большая гордость (поэтому нужно писать про неё в середине статьи ☠️). За это время в ней появилась возможность скроллить (ограничение в 5 строк кода максимум мне показалось крайне тупым, хотя я думаю привязать этот параметр к макропрокачке), а так же возможность использовать условный оператор if. Теперь это уже начинает походить на программирование.

Давай по новой, всё х...орошо. HackeRPG DevLog #2 Gamedev, Программирование, Инди игра, Инди, Длиннопост, Pixel Art, Разработка, Личный опыт, Видео, Без звука, Гифка

Изначально я довольно костыльно и на скорую реализовал парсинг функций в стиле:

if input.starts_with("function ") {
input = input.replace("function ");
...
} else {
return CompilationResult::Error(1);

}

С if я хотел сделать это несколько более грациозно, довольно долго поковырялся с регулярками в поисках идеального решения, но в итоге на чистых регулярных выражениях парсер сделать не получилось, однако большую часть работы они выполнили: теперь и if и function парсятся одинаковым образом, а главное - довольно малой кровью можно добавлять другие аналогичные структуры (например циклы).

Маркетинг

Самое страшное для инди геймдевера слово. Уверен, что я это делаю далеко не идеально, но и не худшим образом: наштамповал соц. сетей (реддит, gamejolt, itch.io, tiktok, youtube и пикабу, разумеется) и делаю контент подходящих форматов (короткие видео для tt, gamejolt и ytshorts; текстовые девлоги для reddit, itch и пикабу).

Радует, что к проекту начинает точечно появляться интерес - это очень вдохновляет, учитывая нереально узкую ЦА.

Я вам запрещаю играть

Давай по новой, всё х...орошо. HackeRPG DevLog #2 Gamedev, Программирование, Инди игра, Инди, Длиннопост, Pixel Art, Разработка, Личный опыт, Видео, Без звука, Гифка

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

Ближайшие планы:

  • Добавить переменные и демоны.

  • Сделать наконец гугл таблицу статов и начать балансить цифры.

  • Добавить механику хакинга.

  • Сундуки + возможность менять оружие.

Спасибо за уделённое время.

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

Игра для кодеров. HackeRPG DevLog #1

Идея:

Около полгода я вынашивал идею игры в которой управление будет построено полностью на программировании.
Изначально задумка была крайне примитивной:
Жанр: Roguelite арена. Референсом послужил недавно нашумевший Brotato, но управление будет полностью кодом. А ещё можно будет писать свои функции, создавать переменные, потоки, демоны (не те, которые из потустороннего мира, хотя для новичков в программировании они могут быть куда страшнее).

Игра для кодеров. HackeRPG DevLog #1 Разработка, Gamedev, Программирование, Rust, Инди, Инди игра, Pixel Art, Roguelike, Личный опыт, Длиннопост, Видео, YouTube

Так выглядит игра референс. Порекомендовал бы её фанатам жанра, но думаю все и любители жанра и так знают эту игру.

В дальнейшем я несколько подробнее расписал своё видение и выделил механики, на которых будет базироваться интересный геймплей. Но это были лишь идеи, которые только предстоит протестировать. Ведь на бумаге идея GTA для Android с возможностью грабить караваны кажется крутой, но суровые реалии опыта игроков все расставляют на свои места.

Подготовка:

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

Самыми важными для меня были:

  1. Удобство.
    Многим начинающим большое количество элементов визуального программирования и возможность руками расставлять объекты на сцене и на экране кажется крайне удобным, но не мне. Мне больше нравится всё делать через код. Поэтому уже на этом этапе я исключил для себя титанов вроде UE, Unity и Godot.
    2. Лицензия.
    Кодеры любят писать код и не любят делать что-то ещё (вот я например не люблю писать этот пост сейчас, но боль от того, что я буду пилить игру год и про неё никто не узнает куда сильнее, поэтому держусь). Лишние проблемы с лицензиями и авторскими правами мне ни к чему, поэтому UE, насчёт которого я ещё сомневался после первого пункта вылетает.
    3. Перформанс и устойчивость к ошибкам.
    Эти два пункта я объединил в один, чтобы точнее передать муки выбора - большая часть моего опыта - Kotlin и Java. На них можно создавать довольно хороший код с точки зрения ошибкоустойчивости + у меня есть небольшой опыт использования библиотеки LibGDX (популярный игровой движок на Java). Но, учитывая тот факт, что я тот ещё геймдевер, а JVM не самое лучшее решение для производительных игр, я решил отбросить этот вариант.
    После чего задумался о языках семейства C, узнал о наличии довольно большого количества движков, но понял, что с моими навыками писать безопасный код (они на самом деле неплохие, просто холодно сейчас), это - не лучшая идея и я сел думать.

Так идея и продолжала консервироваться, т.к. я не мог выбрать идеальные для себя инструменты, до того момента, как однажды я не увидел статью про то, что Microsoft стремительно переписывает свою любимую ОС на Rust. Я немного касался этого языка, но по сути не знал о нём ничего и мне стало интересно.

Закинул себе на Kindle вот эту книгу и с каждой страницей всё больше начинал влюбляться в этот язык. Я подумал: "Вот оно!". И принялся искать игровые движки на этом языке, и довольно быстро наткнулся на Bevy.

Игра для кодеров. HackeRPG DevLog #1 Разработка, Gamedev, Программирование, Rust, Инди, Инди игра, Pixel Art, Roguelike, Личный опыт, Длиннопост, Видео, YouTube

Движок был относительно молодой и опенсорсный, что внушало некоторое опасение. Я изучил сайт (движок поддерживается неплохой, по меркам смертных, копеечкой), принцип ECS, что значит Data-Driven, пообщался с ребятами в дискорде и понял - это оно!

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

Игра для кодеров. HackeRPG DevLog #1 Разработка, Gamedev, Программирование, Rust, Инди, Инди игра, Pixel Art, Roguelike, Личный опыт, Длиннопост, Видео, YouTube

Вот так выглядела игра, арты любезно сгенерил старина Кандинский.

Прототип (Версия 0.0.1)

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

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

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

Игра для кодеров. HackeRPG DevLog #1 Разработка, Gamedev, Программирование, Rust, Инди, Инди игра, Pixel Art, Roguelike, Личный опыт, Длиннопост, Видео, YouTube
Игра для кодеров. HackeRPG DevLog #1 Разработка, Gamedev, Программирование, Rust, Инди, Инди игра, Pixel Art, Roguelike, Личный опыт, Длиннопост, Видео, YouTube

Главное меню с окном в стиле MacOS и возможность почитать описание основных игровых команд.

Игра для кодеров. HackeRPG DevLog #1 Разработка, Gamedev, Программирование, Rust, Инди, Инди игра, Pixel Art, Roguelike, Личный опыт, Длиннопост, Видео, YouTube

А вот и наш игровой персонаж.

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

Первое геймплейное видео.

Проблемы первой версии

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

  1. Сложна, страшна, паника

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

  2. Медленно, нет экшона, нудно

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

  3. Обучение игре

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

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

Спасибо за уделённое время, потрогать игру можно по ссылке

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