Не делайте так! Постмортем игры "Кубы и Рыцари"

Доброго дня.

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

Так что налетай, торопись, пока всё не раскупили: "Кубы и Рыцари" в Стиме

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

Не делайте так! Постмортем игры "Кубы и Рыцари"

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

Создавался проект в 2021 году, и немножко в начале 2022 года. Для разработки были использованы code::blocks, gimp, blender, audacity, very sleepy, bfrx, visual studio.

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

Часть 1. Не делайте софтварный растеризатор.
Для разработки этого а также и других проектов, я написал свой "3д софтварный растеризатор".

Если кратко, это алгоритмы отрисовки 3д моделей силами только процессора, без использования сил видеокарты. А на видеокарту потом, в итоге, подаётся уже полностью сформированное, готовое изображение. В игровой индустрии этот подход массово не применяется примерно как лет 25+. С момента появления видеоускорителей, что логично. И последними крупными играми на софтрендере были Дум, Квейк, Дюк3д и вся та легендарная компания прошлого.

Впрочем, изредка и сегодня можно найти игры на софтрендере, но по большей части это редкость уровня 1 на 10000. Минусы софтрендера очевидны. Первый минус его в том, что у него плохое быстродействие. Только великий гений разработчика может заставить работать софтрендер в 4к+60фпс. Хитроумнейшие алгоритмы, многомесячная их полировка, только так получается достигнуть того, что разработчик рендера на гпу сделает за пять минут, просто написав несколько вызовов open-gl или подобных апи. Если же вы пишете софтварный рендер что называется "в лоб", то даже 1080п может стать для вас проблемой на современном железе.

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

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

Не делайте так! Постмортем игры "Кубы и Рыцари"

Часть 2. Не пишите свой игровой движок.
Одного софтварного растеризатора хватит, чтобы рисовать на экране куб или что-то подобное, несложное.

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

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

Каждая мелочь будет занимать тонну вашего времени!

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

Не делайте так! Постмортем игры "Кубы и Рыцари"

Часть 3. Не делайте всё сами.
Знаете, есть такой момент: специализация побеждает.

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

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

Не делайте игры в одиночку, нанимайте успешных специалистов. Впрочем, да. Я то конечно сделал эту игру в одиночку.

Не делайте так! Постмортем игры "Кубы и Рыцари"

Часть 4. Не пытайтесь придумать формулы и алгоритмы.
Поверьте, в интернете сегодня есть всё, что вам надо для разработки игры.
Все алгоритмы, все руководства, все инструкции, формулы, примеры кода и так далее.

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

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

Отвратительно, если вместо готовых матриц вы пытаетесь сами написать формулу преобразования 3д координат в экранные 2д.

Глупо пробовать написать 3д физику самому с нуля, не узнав ни одного известного алгоритма подобной физики. Вы просто потратите титанические усилия на это, и скорее всего у вас вообще ничего не получится.

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

Не делайте так! Постмортем игры "Кубы и Рыцари"

Знаете, игрок не увидит всего, только что описанного.

Игрок не узнает какой был тип растеризатора, не поймёт ничего о движке и ему пофиг на то, кто именно создавал детали игры.

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

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

Поверьте, так реально делать нельзя. Не-не-не, даже не думайте об этом.

6666
68 комментариев

Зато ты получил опыт который не имеют большинство программистов сегодня)
Думаю уже одно то что ты не поленился делать велосипеды - дает тебе +1 к квалификации.

И да - Дюк/Дум/Еретик - это игры 2.5 - там очень МНОГО ресурсов экономится за счет того что отрисовывают 2х точечную перспективу привязанную к линии горизонта
Сегодня такое повторили в ION FURRY .

Собственно оптимизируй и убирай лишнее.
А еще тебе нужен в команду художник - дизайн врагов, Разнообразие наполнения уровней, без него единственный способ вытянуть игру - это усложнить ее до предела по типу "Дварф Фортресс".
Игра выглядит реально однообразно из за одинаковых кубиков - хотя ты явно пытался сделать разнообразные уровни и поработать со светом - за счет тебе большой плюс и уважуха.

- замахнувшись на условный убийцу ... что у нас самое сложное из 2.5 д игр? ага... на Даггерфол - надо увеличивать сложность игры по геймплейным возможностям

Разрушение кубиков - это мило - но это ... если честно... развлечение на 10 минут. Игра должна увлекать Кор-геймлеем - а у тебя в выбранном жанре - это сражения. Удары/Парирования/ Использование окружения/Создание окруженяи из кубиков. Головоломки , поиск пути и все такое

В общем я бы на твоем месте - на основе полученного движка бы ...сел и подумал как можно усложнить геймплей и почти с нуля начал бы заново - привлекая художников для отрисовки спрайтов. Сделай условный клон Арены/Даггерфола -хотя бы на минималках - и у тебя отбоя от клиентов не будет - ибо игр такого жанра сейчас от инди нет) просто нет.

8
Ответить
Автор

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

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

1
Ответить

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

5
Ответить
Автор

Да, этот самый Хексен вдохновлял.

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

Спасибо за добрые слова.

4
Ответить

Вы интересный человек.
Спасибо за статью.

Посмотрел трейлер в Стиме - понравились звуки. Да и визуал достойный.

4
Ответить
Автор

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

2
Ответить

Вроде постмортен, а нет ни строчки про доход/затраты и успех продвижения

Типо, "не создавать велосипед" и так все знают, а вот пощупать хвост рынка - это нигде не получится, только на таких проектах

4
Ответить