#dearMe: полторы неочевидные начинающему геймдевелоперу истины

Привет, Эш. Тебе сейчас лет 12, ты недавно начал учиться кодить и вообще решил, что будешь делать игры. Одна загвоздка – сейчас ты не очень представляешь, как игры вообще работают, и у тебя даже близко нет идеи, что со всем этим творить.

Будучи тобой через 10 с лишним лет, я знаю немного больше, и было бы нечестно с моей стороны этим с тобой не поделиться.


Игра – не абстрактный зверь в вакууме

Ты ведь уже знаешь, что такое лупы (циклы)? Такие куски кода, которые повторяются, пока какое-то условие не будет выполнено (или наоборот, когда как)?

Игры, практически все игры, – лупы.

Очень сильно упрощая – часть игрового кода ходит по кругу, смотрит на условия и стучится к другим частям когда нужно. Меняются свойства объектов, проигрывается анимация, новые объекты рождаются, а старые, уже не нужные, умирают. При этом, длина одного прогона цикла исчисляется в милисекундах, и кажется, что всё происходит в реальном времени.

“Т.е. получается чем сильнее железо – тем быстрее будет игра?” – спрашиваешь ты. Не-а. Как правило, замеряется время между фреймами, и полученное значение используется в качестве дополнительного множителя на всех передвижениях\анимациях\etc. Грубо говоря, если персонаж должен пробежать 5 метров за 2 секунды – в каждом фрейме (на каждом прогоне кода) он будет двигаться на 5/2*deltaTime, где deltaTime – время между фреймами. Собственно, так работает фреймрейт.

jpg1

Divide & Command & Conquer

Никогда (слышишь, никогда!) не пиши код всей игры в одном файле.

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

По-хорошему, все отдельные объекты в твоей игре – именно объекты. Часто они сделаны из префаба (это примерно как чертеж, по которому строится объект-небоскрёб). Они, объекты, нескольких типов, делают какие-то штуки. У каждого из них есть свой управляющий им скрипт, в скрипте описан их класс.

Класс должен делать ровно одну вещь.

Или несколько вещей, но все специфичные\связанные и в рамках одного объекта\типа объектов. Скажем, глобальный класс управления врагами и отдельно класс с паттернами управления светом (включить, выключить, помигать, сменить цвет на X и т.п.). Это позволит тебе свести повторения кода к минимуму и сильно упростить жизнь себе и всем кто будет это дело править. А править придётся и часто, это не программа про вывести на экран строку, и написать что-то идеально и сразу практически невозможно, особенно когда в голове у тебя постоянно рождаются новые идеи, ты хочешь что-то изменить, что-то сделать лучше. Поэтому повторяй за мной. Вслух. Сейчас.

Я буду продумывать архитектуру приложения.

Вот. Молодец. И ещё раз.

Я буду продумывать архитектуру приложения.

Отлично. Есть правда и другая грань – чрезмерная полировка архитектуры. Почему чрезмерная? Ну, вместо того, чтобы делать игру, ты тратишь время на превращение кода в произведение искусства, и всё бы хорошо. Но люди играют не в код. Им вообще всё равно, что там внутри. Время не бесконечно.


head_b97cf0b8-047e-4087-aa0d-ca39abeb5c8f

Эти ваши картинки

Достаточно очевидный момент, но ты над ним ещё не задумывался.

Контент – штука дорогая.

И речь не только о деньгах, но и о времени. Придумать что-то – дело относительно (по крайней мере для тебя) простое и быстрое, придумать и написать игровую логику – тоже, плюс это то, за что отвечаешь или по крайней мере планируешь отвечать конкретно ты, и если тебя тащит – тебе ничто не мешает потратить на это несколько суток без сна. Но рисовать ты не можешь. Не можешь моделить. А всё это дело достаточно медленное. И поэтому дорогое.

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

Тебе это нужно?

creative_mind_by_zackmawal-d5mxork

Ideas from the deep

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

Идеи не стоят ничего. Бог в имплементации.

У всех есть идеи, не только у тебя. У твоих друзей есть идеи. У твоих родителей есть идеи. Даже у твоей кошки. Но люди не играют в идеи, они играют в игры. И самый действенный способ заинтересовать кого-то в своей идее – сделать её прототип. Опустить графику, опустить детали и граничные кейсы и сосредоточиться на геймплее. Заодно ты сможешь проверить, работает твоя идея или нет.

Но тут тоже нельзя останавливаться, прототип увидишь ты, твои полтора друга и два с половиной фолловера. В чём мораль?

Прототипы стоят почти ничего. Бог в продукте.

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

Проблема в том, что даже в готовый продукт поиграют десятки, может быть (если повезёт) – сотни. Кто-то, кто на него случайно наткнётся, и те бедолаги, которым его попытаются впарить твои друзья. Даже если игра будет стоить $70 (т.е. максимум, который принято брать за большую полноправную игру с кучей контента, сюжетом, музыкой, ну вот этим всем) – ты смотришь на выручку в несколько тысяч. Но брать ты будешь $1, может быть $2, и твоё детище, что-то, на что ты убил сколько-то месяцев и бесчисленное количество сигарет, оценят несколько сотен в лучшем случае. Поэтому слушай и запоминай.

Готовые игры стоят немного. Бог в маркетинге.

Звучит неприятно, да? Как будто ты жадный, “ты делаешь это только ради денег”, “какой из тебя творец”. Нет. Даже если опустить естественное желание показать своё творение миру, быть замеченым и признаным, тебе всё ещё нужно питаться, платить за квартиру и как-то жить, при этом тратя максимум своего времени на собственно разработку, а не развлекаясь этим по ночам как тот Бэтмэн, днём умирая на скучной офисной работе. Ау, да, ты будешь взрослым и всё перечисленное выше (как и куча неперечисленного) основательно поимеет твой мозг и втиснется в и без того немаленький список твоих забот!

Поэтому игры надо не только придумывать и делать, но и продавать, и здесь упор на две вещи – твой собственный креатив и собственно люди, занимающиеся этим и только этим: пиарщики и маркетологи.

Но… Но. Это тоже стоит денег, а результата может особого и не принести, кто его знает, что за ужас ты там сделал. Поэтому последнее.

Удача бесценна. Бога нет.

И на этом я закончу, а тебе пора за уроки. Кстати, советую периодически гуглить биткоины, и, как только они появятся в продаже, – купить столько, сколько позволит общая стоимость всего твоего имущества. Поверь, ты не пожалеешь.

 


About

Ryan D Ash

Chaotic