Заголовок спойлера1. Придумываешь идею. Геймдев разный и нужно примерно представлять что ты хочешь делать и на какой роли.
2. Игра состоит из кода и контента.
Код:
- Можно использовать движок. Придётся изучить 30..50% программирования, просто чтобы мочь эффективно использовать движок, подходит не для всех жанров. Рекомендуется начать с базовых основ программирования без движка - изучить (можно в теории) что такое переменные, функции, циклы и массивы, дополнительно посмотреть что такое объекты и методы в ооп (99% движков используют ооп). После этого садиться за гайды по движку, если не понятно - вернуться к основам программирования.
- Можно не использовать движок. Нужно изучить 90% программирования, и помимо этого изучить многие из нижепредставленных разделов:
- линейная алгебра (матрицы, расстояния от прямых до точки, решение систем уравнений - нужно для всего кроме визуальной новеллы или другой текстовой игры)
- основы компьютерной графики (знание какого-то апи для вывода графики, общие сведения про текстуры и полигоны - нужны чтобы нарисовать хоть что-то)
- пользовательский интерфейс, многие игры годами страдают от невнятного интерфейса, которым неудобно пользоваться. Особенно этим страдают инди-игры вроде майнкрафта или project zomboid, и даже использования движка не всегда спасает от этой беды. Логика работы интерфейса может быть очень сложной и требует отдельного изучения.
- представление игрового мира - может быть довольно нетривиальной задачей разобраться каким образом должны храниться и взаимодействовать игровые объекты. Например, даже простое взаимодействие рельефа, игроков и каких-то боевых способностей можно сделать множеством разных способов. А если это ещё рпг с квестами, которые взаимодейтсвуют друг с другом... Скорее всего это тоже требует отдельного изучения и практики.
- библиотеки для загрузки разнообразных форматов изображений, анимаций, моделей или звуков - представление этого в коде (использования движка очень хорошо тем, что избавляет от всех этих проблем разом - разобраться и сделать то, каким образом загружается и используется трёхмерная моделька с костной анимацией может быть довольно трудоёмкой задачей)
- вычислительные алгоритмы (тонкости работы чисел с плавающей запятой, эффективные алгоритмы и структуры данных - нужны для любой трёхмерной игры с картой больше чем 30х30 метров, или двухмерной игры с множеством объектов)
- сеть и мультиплеер (знание какого-либо апи для передачи данных, p2p и клиент-серверная модель, lock step и компенсация пинга - понимание что и в каких случаях лучше подойдёт)
- подробности компьютерной графики (тени, шейдеры, hdr, DoF, скелетные анимации и прочее - если игра трёхмерная и там нужна более красивая картинка)
- основы физики при использовании физического движка (численные методы интегрирования, минимальные сведения про обнаружение столкновений, вращения в пространстве через кватернионы - нужны просто чтобы эффективно использовать уже имеющийся физический движок) Разработка собственного физического движка задача намного более трудоёмкая, чем создание игры.
- кучи мелких мелочей, вроде воспроизведения звука, которые не такие крупные - но всё ещё могут потребовать нескольких часов изучения.
(плохие новости - из всего этого "степ бай степо" гайды есть только по компьютерной графики и движкам, численным методам - какого-то внятного хотя бы просто сборника статей про физику или ui я никогда не встречал)
Контент:
- модельки
- создание геометрии
- текстурирования моделек
- анимация моделек
- эффекты (взрывы, искры и анимации способностей могут потребуют чего-то большего, тем моделька с текстурой)
- левел-дизайн (придётся создавать собственный редактор карт или использовать процедурную генерацию мира, алгоритмы которой могут быть очень сложны)
- Если есть квесты или другие события изменяющие глобальное состояние мира, то задача усложняется ещё сильнее
- компьютерные противники
- разработка внятного интеллекта даже для отдельных мобов может быть сложна (если уровни имеют сложную форму, укрытия или если есть какие-то сложны способности)
- разработка внятного глобального противника (вроде вражеского игрока в стратегии) контролирующего множество юнитов и с возможностью создавать новых юнитов выходит за возможности соло-разработчика в любой нетривиальной игре.
- музыка и звуки
3. Выписываешь вышепредставленные разделы необходимые для твоей игры, то за какие разделы в ней ты будешь отвечать. Нанять художника для создания модельки просто - он может сделать часть работы и уйти, нанять программиста сложно - скорее всего он должен быть один на протяжении всей разработки, он не может сделать часть работы и уйти, в противном случае следующему будет намного сложнее - возможно настолько, что будет проще начать с начала скопировав лишь отдельные части.
4. Выбираешь языки и инструменты. По очереди исследуешь выписанные разделы, возможно по "степ бай степо" гайдам, которые для отдельных разделов могу существовать.
5. Создаёшь техникал-превью - простейший прототип с демонстрацией основных идей.
6. В этом месте нужно подумать про маркетинг - разобраться для какой ца ты делаешь игру, как много денег и времени ты готов на это потратить, где продавать и чем завлекать игроков.
7. Теперь можно переделывать более чистую альфа-версию, куда внедрять часть контента. Возможно будет смысл начать с начала, а не модернизировать техникал-превью. Есть смысл создать план, что в альфе будет и чего там быть не должно.
8. После завешения альфы нужно тестировать и балансировать, ты её создал - ты знаешь её как пять пальцев, но для стороннего игрока она может оказаться невероятно непонятной и сложной, неудобной в управлении.