"Ошибка мертвого" или как я делал игру мечты!

Всем привет! Расскажу о своей игре-мечте, но сначала..

Местное солнце красный карлик

Обо Мне

Меня зовут Сергей. Я геймдизайнер, программист и просто хороший парень. В данный момент мы с командой разрабатываем игру Repair this! Но речь сегодня пойдет не о ней..

Ошибка выжившего

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

Gravity nebula начало..

Разработкой я начал заниматься не так давно, окончив курсы по программированию C# Unity в 2020-2021
В середине обучения, у меня возникло желание сделать Космический симулятор. Я всегда любил космос и как многих из нас меня тянет к изучению вселенной. Вообще считаю, что sci-fi один самых популярных и востребованных сеттингов среди игроков.
В то время я много смотрел космического научпопа и новостей по типу Космос просто или Alpha Centauri. Хотя "Космос просто" мне со временем надоел из-за кликбейтных заголовков и постоянного разжёвывания одних и тех же понятий, но ознакомиться стоит!

О чем игра?

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

Это в общих чертах, не вижу смысла сильно расписывать лор игры, которой ещё и не существует.

Проект я начал, конечно же, с построения звездной системы

О звезде

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

Гравитация

Для начала мне пришлось выключить гравитацию в Unity и написать свою. За основу я взял закон всемирного тяготения Ньютона и его формулу F=G(Mm)/R^2 .

Немного кода, чтобы Вы подумали какой я молодец..

float distance = (transform.position - body.position).sqrMagnitude; //R^2 float strenght = (G * body.mass * componentRigidbody.mass) / distance; // G*Mm/R^2

Вау, теперь мы можем заставить объект(планета) вращаться вокруг другого(звезда), если дать меньшему ускорение.
Конечно, в итоге, планета улетала от звезды, все такие я делал игру, а не симуляцию вселенной и я не хотел чтобы через 30 часов игры все разлетелось в разные стороны. Поэтому планеты я нацепил на статичное вращение по кругу. А данный скрипт использовал для симуляции притяжение мелких тел.
Тут я столкнулся с неприятностью, астероиды носились с огромной скоростью, не давая игроку среагировать, а так же вылетали за край моей системы, так как у меня были очень маленькие расстояния по сравнению с реальностью. И теперь я сел переделывать физику под себя. Добавил всем объектам drag (трение) в космосе его конечно же нет, но считайте это условностью игры. Чтобы объекты вращались вокруг планет/звезд, сделал вектор вращения (условно назвав его центробежной силой)

Vector3 directionToPlanet = (transform.position - body.position).normalized; Vector3 normal = transform.forward.normalized; Vector3 forceCentr = Vector3.Cross(directionToPlanet, normal).normalized; var forceGravity = (-forceCentr*rotate + directionToPlanet) * strenght; body.AddForce(forceGravity);
Оторвите глаза от планеты, чтобы посмотреть как прекрасно летают метеоры

Планеты

Разработка планет, одна из сложнейших задач, с которой я сталкивался. Как они выглядели изначально, я к сожалению, не могу показать, этого просто не сохранилось.
У меня было два пути, первый из них сделать как в Outer Wilds, то есть просто 3д модель(почти уверен что это модельки у них, но я не проверял!), либо надувать кубы превращая их в сферы-планеты прямо в Unity.
Второе мне больше подходило, потому что мне нравилось программировать и я хотел сделать планеты живыми. Они должны реагировать на температуру/атмосферу и со временем там меняются Биомы. То что когда было жизненным сектором превращается в ледяную пустыню и наоборот.

Пока я успел сделать только изменения планеты без атмосферы. Нагревается от звезды, остужается в тени. Видео ускорено х5

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

Где же ошибка?

Об игре могу рассказывать много, все таки убил на неё уйму времени. Но давайте вернемся к теме, в чем проблема этого проекта и начинающего разработчика?
Слишком амбициозные планы - если это первый твой проект, старайся сделать его максимально простым, пока у тебя мало опыта нет смысла делать аля "убийцу Старфилда" (пусть даже он и мертворождённый). Доведи до релиза что-то простое, но оригинальное - есть уйма проектов, которые покорили своим геймплеем имея 2-3 часа контента
Одиночество - делай проект с кем-то, найдите себе команду из таких же энтузиастов, это не так сложно как кажется. Люди которые выпустили игру в соло или вдвоем безусловно герои, но это занимает слишком много времени и есть вероятность, что вы просто его бросите. Команда не даст Вам сдаться на середине пути и не затянет разработку на 5 лет. Посмотрите на другие инди-игры, ими чаще занимаются десятки человек, чем один
Держите проект в чистоте - структурирование залог успеха, если я когда-нибудь вернусь к этому проекту, то мне легче будет начать его сначала, потому что внутри твориться такой бардак и в коде такие же проблемы. Конечно, мне очень интересно наблюдать, как я вырос за год этого проекта, но решения сделанные вначале не дают мне завершить его
Ставьте сроки - дедлайны двигают проект вперед, сделайте роудмап перед началом проекта, корректируйте во время разработки, восхищайтесь собой в конце проделанного пути
Проводите тесты - мы делаем игру в первую очередь для игрока, тестить нужно начинать, как можно раньше. К примеру: хоть мы и не затронули сегодня перемещение по космосу в моей игре, но оно настолько убогое было без тестов.. Как разработчик, я сидел играл в свою игру часами, мне было сложно представить, какие проблемы будут у игрока
Не молчите - рассказывайте про свою игру на каждом углу, ведь вы хотите чтобы как можно больше людей попробовали сыграть. Скрытность разработки приведет к тому, что твоя игра просто никому не нужна. Если Вы думаете, что твою идею украдут - то ты идиот. Идеи ничего не стоят, ценна только реализация! Чем раньше ты начнешь рассказывать про свою игру - тем лучше для тебя и тем больше шанс того что ты закончишь начатое

Это грабли которые я собрал на этом проекте, но то что нас не убивает делает нас сильнее? Так ведь?

Еще немого коротких видео

Местная заправка на районе
Потеря одного из кораблей
Гравитация звезды беспощадно уносит нас

P.S.

Спасибо, что дочитал до этого момента! Я рад пригласить тебя в свой телеграмм канал, я рассказываю там о разработке игр!

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

Если ты хочешь поддержать меня или просто нравятся юморные игры с выборами и последствиями то добавь в вишлист на Steam Repair this! Кстати, я писал пост про разработку, можно почитать тут на DTF!

Как я выгляжу выпрашивая вишлисты..
Как я выгляжу выпрашивая вишлисты..
72
22 комментария

Хоть у кого-то что-то не получается, а то уже задолбали успешные успехи повсюду

14
Ответить

Спасибо, я не старался

28
Ответить

Всяко молодец, лайк все дела :)

Но Ошибка Выжившего подзаебала уже :) Понимаю, что прикольно звучит, но нет никакой ошибки выжившего в геймдеве. Все выжили и все всё описали. Все ошибки разработки миллион раз разобраны. И это 1000 текст про это, где все тоже самое. То есть суть Ошибка Выжившего в гееймдев это либо долбоебизм, либо искреннее желание пойти своим путем и получить собственный опыт.

5
Ответить

Вообще в ру-геймдеве я вижу две тенденции: посты, заряженные на успех (хотя много разных так-то), и вой в комментах, что в геймдеве денег нет, а также что нет норм геймдизайнеров и игр :D

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

8
Ответить

Да, красиво. И да, слишком оригинальный проект для первой игры. С популярность sci-fi не соглашусь, есть много более популярных сеттингов и жанров. При этом довольно много инди-игр про космические кораблики, большая конкуренция.

3
Ответить

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

2
Ответить

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

1
Ответить