Пост о том, как я игрушку делал

Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка

Внимание! Очень длиннопост!

Давно уже в голове витала влажная мечта сделать небольшую PC игрушку. Требования были не жёсткие. Хотелось сделать аркадную гонялку в духе Playstation One. Жми газ, подруливай и просто наблюдай за тем, как оно ездит. Без сложностей вроде регулировок ходовой перед стартом, без сложной физики авто, которая бы заставляла постоянно думать. Ну, как - то так в общем.

Начал я с самого начала - обратился к своему воображению. Нужно было составить небольшой список того, что я хотел получить от игры.
1. Приятный геймплей. Без сложного управления.
2. Плавная и мягкая физика с максимальной предсказуемостью того, как машина поведёт себя.
3. Графон, который бы работал на моём компьютере без лагов и не резал глаза. Сложность была в том, что выбранный мной движок был весьма голодным на ресурсы, но об этом позже.
4. Максимальное количество своего контента. Все домашние игроделы грешат тем, что тянут текстурки, модели и звуки с открытых источников. Я же находил романтику в том, что мог собрать всё то, что умею в один проект.

С чего начинать?.
Этот вопрос меня очень долго мучал потому, что я толком не знал о своей игре ничего.
Начать с локации? Я не знаю, какая будет физика. Как будет вести себя машина при прохождении поворотов, как её будет кидать на неровностях?
Взяться за код? Ещё не выбран движок, да и знания у меня только одной книги по C# и gml, который не может нормально в 3D.

Выбор движка.
Игровой движок - база. Основание, на котором делается игра. Он объединяет в себе физический, графический и звуковой движки, предоставляя удобный и быстрый доступ к оным.
Но их как грязи. Один может 3D и 2D, Другой имеет базу первоклассных шейдеров,  третий имеет кучу справок и примеров, который бы помогли начать.
Спасение я нашёл там, где не сильно и ожидал - BGE. Я работал в 3D редакторе Blender уже давно и его интерфейс был мне привычен. Игровой движок в нём ещё трогать не приходилось.

Я решил обосновать как - то свой выбор.
1. bge имеет малую популярность. Сделать на нём игру - благое дело. глядишь, разработчики Blender решат его допилить и, в целом, поднимут известность этого 3D редактора, который был моим единственным выбором. 3G свисток не позволял скачать жирный 3D макс, а блендер при схожих возможностях весил всего 100мб.
2. Blender был моим основным инструментом, которым я вытягивал свою фантазию и успокаивал свою душу. Всё - таки нет ничего более важного для творческой личности, чем возможность как - то передать свои мысли.
3. Я не хотел разбираться в новом. Мне было проще костылить на старом.

Начал я с того, что стал проверять разными способами возможности bge:

Сложные материалы для BGE. Сложные они условно. На деле это текстура с Normal Map и небольшая система нодов для красивого отблеска, но до этого я работал исключительно с Cycles рендером и не сильно интересовался возможностями реалтайма.

Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка

Мрачная ночь мне не сильно понравилась, а потому я немного доработал сцену и переделал освещение:

Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка
Графика меня не устраивала. Как сделать всё легко и красиво? Где та самая кнопка "сделать за**ись", о которой мечтает каждый?
Ответ навязывался сам собой - шейдеры.
Увы, но с написанием шейдеров я ещё не сталкивался, а любые попытки разобраться в Open GL заканчивались сожжённым стулом потому, что я банально не понимал, как с помощью указанных функций мне сделать то, что я хочу.
вот и первый чужой контент - набор шейдеров. Я успокаивал себя тем, что мне придётся их знатно настроить под свою игру прежде, чем использовать, но в душе понимал, что это отклонение от ожидаемого - очень плохое начало.

Первый тест новых шейдеров. Объёмный свет, SSAO (сложное глобальное затенение), DoF (фокусировка) и немного цветкора:
Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка

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

За основу я взял субарку и накидал такую вот модельку:

Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка

Далее на удачу мне в вк группе по блендеру появился пост, где парень спрашивал, как добавить колёс к машинке, написание физики которой демонстрировалось в видео - уроке.
Пришлось покопаться, но я таки нашёл этот файлик и записал видео:

http://vk.com/video112793174_171450885

И начал разбираться в коде:

http://vk.com/video112793174_170948539

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

http://vk.com/video112793174_170967407

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

Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка
Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка
Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка
Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка
Она всё-ещё была сырой и требовала допилки. Без шейдеров, без объектов. Скука, но этого уже было достаточно для того, что бы продолжить работу над физикой.

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

В назначенную дату в группе появился пост с совершенно новым проектом - RallyCross a1p.
"Управление улучшено, графика доработана, добавлена система повреждений!"
Всё это оказалось чистой ложью и пользователи вместо этого...
Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка

Увидели это:

Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка

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

Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка

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

Машина действительно уже могла помяться, игра прекращалась при перевороте на крышу:

Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка

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

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


Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка
Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка
Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка
Новый вид локации не только способствовал нормальной работе физики, но и имел приятный вид. Правда, увы, мой компьютер плохо справлялся с деревьями, а потому пришлось делать лоды ближе. Деревья убирались достаточно близко и это было очень заметно.

Последний рывок - допилка машинки, правка мелких ошибок у локации и ооочень долгая подстройка физики машинки.
Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка
Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка
Увы, но из - за некоторых причин открывающиеся двери и капот пришлось вырезать.

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

Начальная физика машинки.
Набор шейдеров (DoF, SSAO, ColorCorrection, Bloom, Water Shader)
Текстуры гравия, бетона и деревьев, карта окружения.
Модель вышки.

В целом - я рад проделанной работе. Я узнал много нового и интересного о играх и их составляющих. Я немного выучил Python и впервые реализовал до условного конца задуманное.

Посмотреть в динамике можно тут:
http://vk.com/video112793174_171451014

Увы, но скинуть саму игрушку я не смогу. Blender Game Engine, как оказалось, имеет один очень важный изъян - он компилирует игрушку только под ту систему, под которую скомпилирован. Тоесть игра на Windows 7 на 8 \ 8.1 \ 10 не идёт :с
Единственным выходом остаётся скидывание исходника и запуск оного в Blender 3D, но, думаю, мало кому захочется пройти такой длинный путь ради того, что бы погонять очередной доморощенный проект коих тысячи. Думаю, видео и картиночек хватит =)

Что будет дальше?
Честно - не знаю. В потоке этой темы я было начал перепиливать игру с самого начала. Доводить абсолютно всё то идеала. Все кнопки в чистый код, все модели с хорошим полигонажем (благо теперь я имею более мощный компьютер) и лучшую физику, но, думаю, пока ещё рано. Я пока не готов сделать что - то достойное ни по знаниям, ни по времени.
Зато наработки уже есть и в случае чего я всегда смогу вернуться к проекту зная, что в запасе у меня есть ещё варианты =)
Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка
Пост о том, как я игрушку делал Игры, Blender, Blender game Engine, Gamedev, Моё, Длиннопост, Гифка

Спасибо за внимание, ваш drdotmom.

Автор поста оценил этот комментарий
Запили на андроид
раскрыть ветку (1)
Автор поста оценил этот комментарий

Я не знаю как именно портировать игры с bge под андройд (но вроде можно) + у меня телефон на s40, а потому при всём желании не получится. Да и потом - при существовании такой крутой игрушки как Asphalt 8 нужно ли это?