Разработка игр: я должен программировать свои уровни или интерпретировать их из файла? - PullRequest
6 голосов
/ 19 июня 2010

Игра будет написана на C ++

Программирование:

enemies.puch_back(new DefaultEnemy(200, 300, 3, 5));
enemies.puch_back(new DefaultEnemy(500, 400, 4, 5));
enemies.puch_back(new DefaultEnemy(300, 420, 3, 15));
enemies.at(2).createAward(new Key(4), "pling.wav");

Или интерпретировать их из файла следующим образом:

DefaultEnemy 200 300 3 5
DefaultEnemy 500 400 4 5
DefaultEnemy 300 420 3 15
CreateAward 2 "pling.wav" Key 4

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

Как насчет управления памятью (если я должен пойти на перевод)?

Как удалить (игровые) объекты при выгрузке уровня?

Ответы [ 4 ]

11 голосов
/ 20 июня 2010

Всегда отделяйте приложение от данных.

6 голосов
/ 19 июня 2010

Первый вариант эквивалентен жесткому кодированию игровых ресурсов.Это абсолютно плохо и подходит только для отладки.

Каждая игра хранит свои ресурсы во внешних файлах - xml, заархивированных пакетах, анализирует и загружает их во время выполнения.

Поэтому современныеигровые движки почти каждый раз имеют свой набор инструментов, который в комплекте с ним.

Удаление игровых ресурсов также является серьезным вопросом - это зависит. Зависит от управления временем жизни ваших объектови по этому факту, если вам нужно распаковать ваши данные во временные файлы.

2 голосов
/ 20 июня 2010

Зависит от того, сможете ли вы сэкономить ресурсы для устного перевода и от кого вы собираетесь использовать свою работу.Если вы и только вы сами его создаете, то в жестком коде нет ничего неправильного как такового.

Если, тем не менее, вы когда-либо намереваетесь пользователям или кому-либо еще изменить его, тогда интерпретируйте.

2 голосов
/ 20 июня 2010

Ну, я бы сохранил дизайн уровня в файле.Вот что сценарий для правильного.Это тогда дает мне возможность ПРОСТО изменить уровни ..

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

...