Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Искусство быть программистом и создании игры?

Что надо делать, и знать программисту, не важно каким хотя бы базу, и что надо знать и как это изучить прр создании игры? 
Компьютерные игрыСоздание игр+1
Тимофей Шаповалов
  ·   · 5,0 K
Лучший
Веб-разработчик, геймер, специалист по этике  · 17 янв 2023
Сразу скажу, что я разработчик веб-приложений, а не игр, однако, я полагаю, я прочитал достаточно специальной литературы по теме и попробовал достаточно упражнений, чтобы перечислить то, что вам понадобится. С точки зрения, где "игра" — это хотя бы Touhou, Braid и Highfleet, в разработке которых участвовали "студии" размером в одного программиста. Если вы согласны делать мини-игры на флеше или визуальные новеллы, то можно не вдаваться в эти подробности, а уже сразу начинать и всё.
Учтите, что два списка ниже — это не то, что вам нужно для того, чтобы начать. Начать можно откуда угодно. Это просто то, что вы будете использовать в работе каждый день.
Фундаментальные знания:
  1. Линейная алгебра и геометрия (матрицы, вектора, СЛАУ, координатные системы). Можно жалеть об этом сколько угодно, но в геймдеве вы даже прыжок не сможете запрограммировать в платформере, не понимая основы линейной алгебры.
  2. Компьютерные науки (алгоритмы и структуры данных, понятие алгоритмической сложности, языки программирования). Это фундамент для любого разработчика в любой области.
  3. Инженерия ПО (рефакторинг, ООП, автоматическое тестирование, архитектура приложений, паттерны проектирования, вони, принципы) Компьютерные игры это программное обеспечение, и очень сложное при этом. Конечно же, вам понадобится знать общие принципы разработки сложного ПО.
  4. Английский язык (чтение технической литературы, элементарные навыки переписки) Вам, возможно, не понадобится говорить по-английски, но вот читать тонны англоязычной документации вам придётся. Кроме того, подавляющее большинство игр выходит на английском языке, и если вы его не понимаете, то лишаете себя большинства референсов. Вряд ли вы собираетесь работать на китайский рынок, а российский достаточно мал и специализирован.
  5. Аппаратное обеспечение компьютера (конвейер процессора, архитектура компьютеров, организация памяти, суперскалярность, аппаратура мобильных устройств) Вы можете избежать углубления в эти подробности в других областях разработки ПО. Вы не можете избежать этого в разработке компьютерных игр, если вы хотите нормальную производительность вашей игры.
  6. Операционные системы и компьютерные сети (виртуализация, параллельность, управление памятью, файловые системы, драйвера, API, сетевой стек…) То же самое, что с аппаратным обеспечением —  если вы делаете экшен и хотите стабильные 144 кадра в секунду — вам придётся узнать, как работают операционные системы.
  7. Математическая статистика (вероятности событий, распределения, перцентили, закон больших чисел). В серьёзной разработке, когда вы захотите заняться анализом событий, которые у вас происходят в игре, или, скажем, балансом характеристик.
Специальные знания:
  1. Игровой ИИ (принятие решений, компьютерное зрение, организация поведения акторов) Не вся сфера ИИ, а только те области, которые нужны для организации геймплея, если они вообще нужны. Кроме того, у игрового ИИ есть свои уникальные требования к поведению.
  2. Игровая физика (симуляция кинематики, динамика жидкостей, симуляция оптики) Не вся полностью механика, хотя чем больше вы знаете, тем лучше, а только те области, которые нужны для симуляции конкретно вашего геймплея.
  3. Анимация (скелетная анимация, покадровая анимация, интерполяция поз, спрайты, lipsync). Вам не обязательно уметь анимировать самому, но вам нужно понимать, как анимации организовываются в конечной игре, как их запрограммировать.
  4. 3D-моделирование (понятие полигональной графики, low-poly vs high-poly, риггинг, анимирование, текстурирование, настройка коллизий, специальные эффекты типа тканей и шерсти). Вам не обязательно уметь создавать модели. Вам обязательно знать, как эти модели вставляются в игру. А вставляются они по частям.
  5. Игровые движки (понятие движка как такового, организация компонентов, API). Даже если вы не будете использовать готовый, вы в процессе разработки фактически, соберёте свой.
  6. Геймдизайн (игровые механики, сторителлинг, баланс, геймплей). То, что превращает soft-realtime симуляцию, собственно, в игру.
  7. Компьютерная графика (шейдеры, конвейер рендера, raytracing, разбиения пространства). По большому счёту, 90% времени вы будете заниматься компьютерной графикой при разработке игры.
  8. Звуковой дизайн (динамические контекстно-зависимые саундтреки, симуляция акустики, психология звука, lipsync). Без озвучки ваша игра не нужна.
Рекомендую почитать:
По графике, к сожалению, литературу не дам, эта область, во-первых, для меня была всегда самой неинтересной, а во-вторых, пока автор пишет книгу, графика уже ушла далеко вперёд. Ищите материалы в Сети.
Готовые движки:
Ссылки на очевидные движки типа Unity, Unreal Engine и CryEngine я не даю, потому что после 2022 года в России ставить себя в зависимость от фирмы, расположенной в США — опасное безумие, а китайских/корейских движков я не знаю, да и знать там надо отнюдь не английский.
Подытожу ответом на ваш вопрос "как это изучить при создании игры". Изучать разработку любого ПО нужно на практике. Возьмите, например, из документации движка Godot первый туториал про создание простейшей 2D игры и пройдите его от начала до конца. Посмотрите, что вы не поняли, найдите литературу на эту тему и изучите её. В ней будут упражнения — выполните их.
Вообще, если вы вообще в разработке программного обеспечения полный ноль, рекомендую попробовать сервисы, которые обучают программированию в игровой форме, например, WarriorJS или CodeCombat. Это не программирование игр как таковых, но это обучение какому-никакому программированию, в виде собственно игры. Это будет держать вас в атмосфере компьютерных игр и в целом, вы привыкнете к скриптингу искусственного интеллекта в качестве бонуса.
Каждый заголовок, который я выше перечислил — это название области знаний, которую вы просто вводите в строку поиска, получаете список материалов и изучаете их последовательно. Выполняете все упражнения. Постепенно вы освоите достаточное количество инструментов, чтобы у вас в голове "щёлкнуло" и вы сообразили, как из них составить вашу первую по-настоящему свою игру. С этого момента обучение заканчивается и начинается отработка навыков. Удачи.
Вот каког я овтета ждал, спасибо вам!! 
Работа - в сфере IT. Увлечения - книги, финансы...  · 16 янв 2023  ·
id
Тимофей, добрый день! Любому программисту нужно: - Знать основы Computer Science  - Основы структур данных и алгоритмов - Выбрать и изучить один из языков программирования Для создания игр нужно: - изучить программирование... Читать далее
Заходите в Яндекс.ДзенПерейти на bit.ly/3w79GNg
1 эксперт согласен
Коротко и по существу. Отличный ответ.
Научные заметки о жизни: zen.yandex.ru/id/5c434983...  · 17 июн 2023
Инструментами программиста являются языки. При этом  главным является родной, затем английский, а уже потом языки программирования. Ваши вопросы сформулированы очень неряшливо и с точки зрения смысла и с точки зрения правил... Читать далее