2016-04-24 1 views
0

Я разрабатываю игру с C++ и Unreal Engine.Улучшите загрузку данных с C++ в Unreal Engine

Каждый раз, когда я начинаю игру, мне приходится читать данные из текстового файла. В этом текстовом файле на данный момент было 117 955 строк, разделенных на 24 регистра. Первый символ в каждой строке - это индекс для их идентификации.

Я буду загружать 12 или 13 регистров, поэтому сначала мне нужно их найти. Все регистры будут следующими: от 0 до 12 или от 5 до 17.

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

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

Другой вариант - использовать небольшой движок базы данных, такой как mySQL или, возможно, mongoDB.

Вы более опытные программисты, потому что я только начал изучать C++, и я всегда программировал C# и использовал SQL Server.

Что вы рекомендуете?

+0

Открытие файла происходит быстро. Скорее всего, намного быстрее, чем через огромный файл, ищущий правильные строки. –

ответ

2

Я не верю, что mysql или mongo - правильный выбор (фоновый серверный процесс - это перебор для игры), я предлагаю вам взглянуть на sqlite.

Если вы относительно хорошо с базами данных, с использованием базы данных может чрезвычайно улучшить вашу скорость развития (вместо того, чтобы думать о пользовательском формате файла, который вы просто использовать старый SQL)

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

Что касается дизайна: инкапсулировать доступ к базе данных в любом случае , Это поможет вам позже. То есть если вы обнаружите, что даже sqlite слишком медленный для вас, может записывать ваши данные в двоичные файлы

2

SQLite - хорошее решение. Вы можете использовать этот плагин SQLiteUE4 для взаимодействия с БД или, по крайней мере, для просмотра кода на C++. Здесь ссылка на guide.

MongoDB будет проблематичным из-за того, что C++ API не имеет стабильной версии и требует много настроек.