Я просто играл в старую SNES RPG (Secret of Mana, если кто-то заботился), и задавался вопросом о некоторых общих вещах в игровом программировании.
Извините за некоторые из голодных вопросов, я действительно новичок.:)
Эти вопросы довольно общие, но используют RPG в стиле SNES как "шаблон", чтобы понять, что я имею в виду:
-
Как игры отслеживают все объекты, вызванные события и т.д. в своем "мире"? Например, как он отслеживает, какие сундуки с сокровищами уже открыты, какие двери заблокированы, какие сюжетные события уже вызваны?
Создает ли он в основном массив элементов, каждый из которых соответствует сундуку/двери/событию/etc и "отметит" каждый (измените его значение от 0 до 1), когда он был открыт/вызван? Если есть несколько подходов, каковы они?
-
Как обрабатываются "списки переменных"? То есть, если у вас есть игра, когда вы можете иметь огромный инвентарь объектов (например, доспехи, мечи) и иметь X каждого объекта, как это сделать?
Мое предположение: иметь структуру, которая имеет большой массив с пятном для каждого возможного объекта (массив из X ints, где X - количество возможных объектов для собственного), где каждое значение элемента представляет, сколько из этого объекта вы имеете, а затем иметь гигантское перечисление для каждого объекта, чтобы объект соответствовал соответствующему индексу и обращался к нему, например: numberOfSwords = inventory [SWORDS], где SWORDS является частью перечисления и имеет некоторое целочисленное число, связанное с ним. Как близко я?
-
Как насчет случая, когда количество объектов может меняться? То есть, если у меня есть игра, на которой у меня есть некоторое количество врагов на экране, и они могут быть убиты/родить новых врагов в любой момент, мне кажется, что мне понадобится массив "вражеских" объектов для цикла через процесс и процесс, но количество элементов будет меняться в любой момент времени. Каков обычный подход к этому? Связанные списки?
Любая помощь/подсказка/указатели действительно оценены.