Создание файлов с информацией о карте или сценарии, например, какие ресурсы загружать, объекты, места, события - PullRequest
0 голосов
/ 20 февраля 2012

Я делаю простой графический движок на C ++, используя Visual C ++ и DirectX, и я тестирую различные макеты карт.
В настоящее время я создаю «карты», просто создав исходный файл C ++ и начинаю писать:

SHADOWENGINE ShadowEngine(&settings);

SPRITE_SETTINGS sset;
MODEL_SETTINGS mset;

sset.Name = "Sprite1";
sset.Pivot = TOPLEFT;
sset.Source = "sprite1.png";
sset.Type = STATIC;
sset.Movable = true;
sset.SoundSet = "sprite1.wav"

ShadowEngine->Sprites->Load(sset);

sset.Name = "Sprite2"
sset.Source = "sprite2.png";
sset.Parent = "Sprite1";
sset.Type = ANIMATED;
sset.Frames = 16;
sset.Interval = 1000;
sset.Position = D3DXVECTOR(0.0f, (ShadowEngine->Resolution->Height/2), 0.0f);

ShadowEngine->Sprites->Load(sset);

mset.Source = "character.sx";
mset.Collision = false;
mset.Type = DYNAMIC;

ShadowEngine->Models->Load(mset);
//Etc..

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

SHADOWENGINE ShadowEngine(&settings);

ShadowEngine->InitializeMap("Map1.sm");

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

Я не так думаю? Что мне делать?

Не против объяснения того, как это делают другие, например, Warcraft III, Starcraft, Age of Empires, Герои Меча и Магии ...

Будет ли действительно признателен за помощь в этом вопросе.

1 Ответ

0 голосов
/ 20 февраля 2012

Вы не думаете, что неправильно, загрузка данных вашей карты определенно желательна. Наиболее распространенными готовыми решениями являются Protocol Buffers и Lua. Если вы еще не знаете Lua, я бы использовал буферы протокола, поскольку это напрямую решает вашу проблему, тогда как Lua - это язык сценариев, который достаточно гибок, чтобы делать то, что вам нужно.

Некоторые люди пишут свои данные в формате XML, но это только частичное решение, поскольку XML - это просто язык разметки. После загрузки XML у вас будет дерево DOM для анализа.

Учебное пособие Google по CPP Protobuf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...