forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Как лучше хранить карты для игр (http://forum.boolean.name/showthread.php?t=8058)

tormoz 26.03.2009 03:19

Ответ: Как лучше хранить карты для игр
 
сть пяток парсеров хмл для блитца, ищи на оффоруме

ИМХО очень неудобный способ записи - не вижу никаких преимуществ перед обычной записью из редактора в свой формат.

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

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

ABTOMAT 26.03.2009 03:45

Ответ: Как лучше хранить карты для игр
 
Полгода назад по булке было вообще хоть шаром покати... Так шо уж лучше так

Aceton 26.03.2009 10:30

Ответ: Как лучше хранить карты для игр
 
Цитата:

Сообщение от tormoz (Сообщение 101822)
И ваще, последнее время наблюдается повышенная активность нубов.
Им лень читать фак и справку, по каждой мелочи создают тему.

неспорю, но я себя к их категории не отношу уже как года 4.
поэтому поиском трудно чето найти, ибо нубских тем полно - название и кейворд нужные, а содержимое нето:crazy:

Цитата:

Сообщение от tormoz (Сообщение 101822)
как сохранять уровни - гоу в фак там все написано

линк в студию, если не сложно

H@NON 26.03.2009 12:03

Ответ: Как лучше хранить карты для игр
 
А чего тут думать? Бинарная запись самая практичная. Составляешь структуру, затем записываешь побайтого и радуешься результату. Ну вот такая структура например :
1)Тип объекта
2)Название
3)Свойства
4)Дополнительные параметры

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

tormoz 26.03.2009 12:52

Ответ: Как лучше хранить карты для игр
 
Цитата:

Сообщение от Aceton (Сообщение 101830)

линк в студию, если не сложно

http://forum.boolean.name/showthread.php?t=1014

ffinder 26.03.2009 14:40

Ответ: Как лучше хранить карты для игр
 
Цитата:

Сообщение от tormoz (Сообщение 101822)
И ваще, последнее время наблюдается повышенная активность нубов.
Им лень читать фак и справку, по каждой мелочи создают тему.
с одной стороны форум оживляют, с другой - разврат и непотребство. Принимать дисциплинарные меры ? Или пусть копошацца ?

человек задал вменяемый вопрос. то, что написано impersonalis'ом в "факе" хм... тянет на детский сад, ну может первый класс начальной школы:)
Aceton же не писал "памажите делать ММО суть такова". А вопросы интересные есть: сериализация, линки, кросслинки, предварительные объявления - сложностей полно. Вот это и хотелось бы пообсуждать, а не ответы "каг песадь байты в файл и вапще ты нуб".

SBJoker 26.03.2009 15:35

Ответ: Как лучше хранить карты для игр
 
Если по теме то самые практичные файлы бинарные но для них нужен редактор.
XML рулит только тем что редактировать можно любым текстовым редактором (правда сомнительное преимущество, т.к. гемор это ещё тот).

Минусы XML:
-любой может легко модифицировать изменяя тем самым игру.
-довольно ненаглядная правка в текстовых редакторах
-большой размер
-большое время загрузки
-проблемы с хранением двоичной информации

Плюсы XML:
+есть множество парсеров, выдающих в ответ на запрос данные.
+ненужен редактор, подойдёт даже "блокнот".
+легко читаем человеком

Минусы Бинарного формата:
-абсолютно не читаем человеком
-нужен спец. редактор
-нужен контроль версий формата файла
-загрузку нужно писать самому

Плюсы:
+компактный размер
+защита данных от правки (нужен опр. скилл для правки)
+быстрая загрузка
+возможно хранение любой информации вплоть до ресурсных файлов


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

Т.е. вначале файла идёт заголовок со списком идущих ниже секций и их смещений от начала и размерами.

Секция представляет собой блок бинарных данных с именем.

Чтение такого формата происходит примерно так:
*загружаем заголовок со списком секций.
*перебирая список секций загружаем их в соответствии с именем/типом секции, если алгоритму секция неизвесна он её просто пропускает.

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

например b3d формат примерно так и устроен.

tormoz 26.03.2009 15:42

Ответ: Как лучше хранить карты для игр
 
Цитата:

Сообщение от ffinder (Сообщение 101842)
человек задал вменяемый вопрос. то, что написано impersonalis'ом в "факе" хм... тянет на детский сад, ну может первый класс начальной школы:)
Aceton же не писал "памажите делать ММО суть такова". А вопросы интересные есть: сериализация, линки, кросслинки, предварительные объявления - сложностей полно. Вот это и хотелось бы пообсуждать, а не ответы "каг песадь байты в файл и вапще ты нуб".

Никаких сложностей.
В редакторе расставил, присвоил, прицепил, прописал - записал данные с помощью детского сада в файл и готово
Быстро просто удобно.

А блокноте удобно править только уровни примитивных 2д игр.
И то дело вкуса.
Мне проще за час написать свой редактор, чем в этих тегах ковырятся

ffinder 26.03.2009 16:03

Ответ: Как лучше хранить карты для игр
 
SBJoker хорошо написал. Но остается вопрос про линки(ссылки) из одних узлов/чанков/тегов на другие. Где применяется, ну например в вейпоинтах (ссылки на следующий, предыдущий). Да, можно конечно выкрутится и сделать каждому номер и ссылатся на номер, но интересно решение именно со ссылками. Кто-нибудь вобще такое делал? И как обходится с чанками, которые ссылаются на те, которые впереди в файле (еще не прочитаны/загружены)?

HolyDel 26.03.2009 16:15

Ответ: Как лучше хранить карты для игр
 
я решал эту проблему вводом некого уникального id каждому юниту, дереву, руднику и т.д.
при свзяывании ссылок после загрузки использовался именно этот id.

Mr_F_ 26.03.2009 17:01

Ответ: Как лучше хранить карты для игр
 
есть один знакомый, он делал редактор файлов check.bin в Мафии. этот файлик как раз все вейпоинты содержал. я думаю у него можно структуру формата узнать, если нужно.

ffinder 26.03.2009 17:57

Ответ: Как лучше хранить карты для игр
 
Цитата:

Сообщение от HolyDel (Сообщение 101850)
я решал эту проблему вводом некого уникального id каждому юниту, дереву, руднику и т.д.
при свзяывании ссылок после загрузки использовался именно этот id.

т.е. все равно номерами, только глобальными. ну ладно, вполне себе решение.

SBJoker 26.03.2009 18:01

Ответ: Как лучше хранить карты для игр
 
Номерами и только ими..просто связывание осуществлять после загрузки всех объектов, и все дела ;) .

tormoz 26.03.2009 18:22

Ответ: Как лучше хранить карты для игр
 
номерами настолько удобно, что о других способах просто смешно вспоминать (я на номера переделал )
порядок загрузки не имеет значения - просто сортирую загруженные вейпойнты по номеру и индексу (буквочку в название для выделения)
и нумерую не всегда по порядку, на сложных участках через десяток перескочить могу, чтобы потом можно было безболезненно добавить.
а уже в движке при загрузке сортировать и переименовывать.


Часовой пояс GMT +4, время: 13:37.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot