Мои друзья выпустили трейлер игры и я хотел бы вас очень попросить поставить лайк и прокомментировать, если вам понравится. Ребята из Obsession делают смесь SSH и резидента.
Сначала я думал, что сделаю одноэкранную игру за несколько часов и успокоюсь на этом. Но со временем втянулся, стал добавлять новые фичи. Делал, как получилось и особо не напрягался, что называется работал реактивно.
Если интересно, о какой игре идет речь, посмотрите другие мои посты. Там есть записи геймплея.
Из такого развлечения на вечер игра превратилось в развлечение на много вечеров с перспективой когда-то сделать нормальный играбельный билд:)
К чему я веду? К тому, что наступил момент, когда нужно сделать новый шаг в отношениях с проектом - задуматься об архитектуре. Этим я сейчас и занимаюсь. Так как программист я такой себе, слова вроде Масштабируемость, Гибкость ид были совсем не про мои работы. Я попросил о помощи Сашу, он рассказал, как можно организовать данные и взаимодействие между сущностями в игре. Довольно терпеливо рассказал, спасибо ему за это:) Ведь тупых вопросов я задал немало.
Таким образом с прошлого раза игра визуально и геймплейно практически не поменялась, так как в основном все изменения внутри кода.
Сейчас я занят тем, что полностью переделываю подход к генерации планет в игре. Если раньше планеты генерились на ходу, и данные о планетах содержались раздроблено - каждая планета содержала информацию о себе. Из-за этого было неудобно сделать даже радар - приходилось искать каждый объект для отображения на радаре отдельно, так как их ничего не объединяло.
Но теперь данные о планетах (и о всех остальных объектах в игре) генерируются до старта игры, сохраняются, и уже потом на их основе будет строиться игровой мир.
Все, что есть на данный момент - это логи, которые показывают, что планеты успешно сгенерировались и к каждой из них есть доступ.
И это только планеты, а я губу раскатал еще на очень много сущностей в игре. Впереди долгий путь, в котором придется подкачать свои скиллы разработчика. Звучит не очень весело, но я уверен, что оно того стоит и результат в итоге будет хорошим :)На сегодня у меня все, спасибо за внимание!
На картинке - лог с генераций планет и схема наследования классов, в которых будет содержать слой данных игры и слой геймплея.
"LTA: Light. Thrusters. Action!" - Осколки. Горение в атмосфере. Метки на радаре
Привет. Очередной апдейт по космической игре.
С прошлого раза сделано немного, но сделано кое-что, а именно:
Осколки кораблей
Если раньше осколки кораблей и пилот, который нечаянно вылетал из кабины во время взрыва корабля, могли вечно летать в космосе. То теперь они также получают урон, как и корабли. Поэтому возможна ситуация, как на видео - пилот, который погиб от собственной ракеты.
Горение в атмосфере
Как и планировал, добавил планетам атмосферу. Атмосфера обладает плотностью, если через нее летит объект, например, корабль, он нагревается. Если нагрев превышает критические значения, корабль начинает гореть и может разрушиться. Также все, что попадает в атмосферу планеты, начинает нагреваться и может сгореть в ней.
Метки на радаре
Для того, чтобы можно было ориентироваться в звездной системе и лучше видеть врагов, я добавил в игру радар. Пока он собран из космического говна и палок. Но принцип его работы понятен :) Дальше в планах сделать радар более читаемым, убрать числа, добавить метки.
Скорость и динамика игры
Также доработал параметры корабля - управление стало более отзывчивым, добавлено ограничение на максимальную скорость корабля, увеличена тяга двигателя. Теперь проще садиться на планеты и взлетать с них.
Привет! Самая главная фича - это то, что я придумал название:)
Что добавлено с прошлого раза:
Атмосфера вокруг планет
Пока только визуально, но в будущем планирую сделать, что у некоторых планет в прямом смысле была "своя атмосфера", со своими свойствами. Свойств пока в плане два: это радиус атмосферы и плотность. Плотность влияет на то, как атмосфера будет противодействовать предметам, которые падают на планету.
Если атмосфера плотная, то все, что через нее летит будет получать урон пропорциональный свой скорости. Опять же повторюсь, не знаю, как это будет работать на практике, но посмотреть очень интересно :)
Сделал не очень мудреный генератор планет. Они как бы располагаются каждая на свой орбите вокруг общего большого центра масс. На этом месте будет звезда, но пока ее там нет :)
Тестировал генерацию на большом количестве планет. Вроде выглядит неплохо. Но думаю, что в итоге в игре в одной звездной системе будет не больше 10-20 планет.
Все генерится по ключу, и в будущем можно будет запоминать особо удачные системы, чтобы снова сгенерить их в таком же виде и сыграть в них снова.
Сейчас у каждой планеты минимум параметров и разнообразия сильно не хватает, но я над этим работаю:)
Эффекты от попадания снарядов
Тут ничего особенного. Эти эффекты сильно напрашивались. Вариант не финальный, но уже есть с чем работать.
Оружейные системы и получение урона
Изначально в прототипе я сделал только один вид оружия - ракеты. Они сделаны максимально просто и негибко. В целом все получение урона сводилось к тому, что если корабль столкнулся с ракетой, он получает урон и все.
Когда задумал сделать урон от атмосферы - уже начались проблемы, она в эту систему не вписывается, и нужно делать более универсальное решение. Я посоветовался с другом, и он на программистском языке рассказал мне, как все можно доработать.
Взрывы, осколки и мертвые космонавты: Небольшой апдейт по игре
Привет, в последнее время не часто удается засесть за свою игру. Но когда получается, стараюсь немного улучшать старые и добавлять новые механики.
Что добавлено с прошлого раза.
-Эффект взрыва.
-Осколки разбитого корабля, которые разлетаются от взрыва, подверженны гравитации, могут падать на планеты.
- Тело пилота. После взрыва корабля из него выбрасывает пилота. Если это игрок, то камера продолжает следить за ним.
Что в планах.
Не знаю когда, но постараюсь следующими сделать следующие штуки:
- Зацикленный сектор космоса - чтобы игрок и враги не могли далеко улететь, хочу сделать космос зацикленным.
- Случайная генерация секторов космоса.
- Атмосфера вокруг планет - Все, что попадает в атмосферу начинает гореть, в зависимости от плотности атмосферы и скорости объекта. Понятия не имею, как это будет работать, но хочу попробовать.
- Режимы с разделенным экраном PVE и PVP - это необходимый минимум, чтобы можно было показать игру игрокам. В игру можно будет поиграть за одним компом вместе с другом. Против компьютерных врагов или друг против друга.
Сделал прототип за выходные. Думал на этом остановиться, но периодически возникают мысли. Интересно попробовать то или это. Когда есть настроение, добавляю новые функции, исправляю старые.
Что нового:
Добавил простенький ИИ для врагов.
Вражеский пилот постоянно пытается сделать три вещи:
- Не упасть на планету
- Догнать игрока и пострелять в него
- Стабилизировать корабль, если он сильно разогнался, и есть риск потерять контроль.
У пилота-врага есть такие же органы управления кораблем, как и у игрока (поворотные двигатели и главный двигатель). Его корабль практически не отличается от корабля, которым управляет игрок. Враг также крутит штурвал и жмякает на педали, условно конечно же.
У него не всегда это получается. Но на то он и космос - суровое беспощадное место.
Также добавил небольшие украшения и улучшения:
- Частицы в пространстве, по которым можно понять, в какую сторону и с какой скоростью летит ваш кораблик, если рядом нет других объектов.
- Ракеты игрока и врага теперь выравниваются параллельно вектору своего ускорения. Наконечник ракеты направлен туда, куда она летит. Раньше было не так и было некрасиво.
Черная дыра
Также экспериментировал - добавлял гравитационные искажения на карту или большое количество врагов. Пока все работает не очень хорошо.
Пишу небольшую игру с графикой, созданной нейросетью.
Решил проверить, возможно ли при помощи нейросети сгенерить спрайты для игры. Оказалось, что очень даже можно.
Попросил моего друга, у которого есть аккаунт на Midjourney, сделать спрайты.
Важный момент - в запрос нужно указывать, что вам нужен spritesheet - готовая таблица со спрайтами. Нейросеть понимает это конечно по своему, но все равно выдает то, с чем можно работать.