Найти тему

Пишу игру Space shooter

Оглавление

День 1. Знакомство

Немного о себе.

Мне уже 40 лет. С детства увлекаюсь программированием. Однако работаю не по этой специальности. В начале 2022 года решил всё-таки профессионально заняться программированием, если точнее пойти в разработку игр. Сейчас прохожу курс в онлайн школе. Текущий модуль, которым сейчас занимается мой поток, посвящён написанию космической стрелялки. Я решил пойти своим путём и стал писать свой первый коммерческий (надеюсь) проект. Именно ему и будет посвящены следующие статьи. Буду работать над проектом и делиться здесь своим прогрессом.

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

О чем моя игра. Коротко.

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

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

Графика 3d, но перемещаться можно только в одной плоскости. Это так сказать 2d space shooter, только в трехмерном пространстве.

Что уже сделано.

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

Сделал простенький ландшафт, накидал модулей, написал логику соединения их в один объект и, естественно, управление. Вот что получилось: https://dzen.ru/video/watch/631f7bcc9870940eac516f12

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

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

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

Результат работы в этом видео: https://dzen.ru/video/watch/631f7e3a64f39e46316bffe7

Корабль летает, даже с огоньком. Планета есть. Теперь можно сделать простейший геймплей.

Сначала я занялся проблемой с уроном (самое простое) от столкновения. Первая задача: как изобразить повреджения модулей корабля? Городить на экране схему с компонентами и рисовать в % сколько жизней осталось? Идея так себе. Думал, думал, и надумал. При повреждении модуля вокруг него начинает появляться обводка. Сначала зелёная и, по мере уменьшения очков жизни модуля, становится жёлтой, а затем - красной.

Далее пришла идея состряпать тестовый уровень. Основные действующие лица - метеориты. Но что бы сделать такое.... ну... чтоб было интересно. А давайте, запустим корабль в лабиринт. Стенки сделаем из скопления астероидов, так, чтобы нельзя было пролететь. Идея шикарная, надо делать.

Честно скажу, не доделал. Есть пара причин. Первое - метеориты взял из бесплатного ассета камней, их надо перерабатывать и оптимизировать, а то боюсь дымок из мобильного устройства пойдёт при загрузке такой сцены. Второе - после двух часов расставления камней вместо стенок, понял, что надо эту работу поручить компьютеру. Это вполне несложно будет сделать, зато плюсов будет уйма. Можно сделать серию квестов с лабиринтами, да, в принципе, много чего можно будет очень быстро делать.

На коленке заставил планету притягивать мой кораблик к себе.

По традиции мини-видео с результатом работы:

https://dzen.ru/video/watch/631f832d1a8cba3dc5e69a28

Вот как-то так.

Далее у меня вагон и маленькая тележка планов:

1. Меню игры (уже кое-чего сделал).

2. Подключение к серверу, авторизация, загрузка/выгрузка данных игрока.

3. Переделка метода сборки корабля.

4. Новая тестовая сцена, уже для игрока, с возможностью тонкой настройки параметров корабля.

ну и ещё много чего...