Amri, интересно получается. Да и на C#. Хоть кто- то тут пилит не конструкторах =)
только хардкор, только код только ХНА :) . Конечно, темпы разработки невысокие, но и торопиться мне некуда уже. Да и изучаю фреймворк.
Добавлено (30.03.2013, 10:32) --------------------------------------------- Результаты есть в первом посте
Добавлено (30.03.2013, 10:57) --------------------------------------------- Кстати, общественность может спросить, на кой пес мне нужны книги по Xml. Отвечаю - карты (точнее трассы) и сохранения я хочу сделать именно в файлах xml.
Amri, В .Net есть же отдельное пространство имён с классами для работы с xml. XML - это же как html, только все теги придумываешь сам. Работать с ним просто. Вот, первое, что попалось. Вcем зла.
<![CDATA[]]>это из файла xml, какая-то стандартная байда. Но стандартного описания нет, потому и спрашиваю.
Не суть. Я не помню. Создаёшь xmldoucument, добавляешь по желанию заголовок стандартный(есть отдельный метод) в него итемы добавляешь. Пишешь в документ инфу, потом xmlreader,ом читаешь, так же извлекаешь итемы. Проверку на стандарты тебе проходить не нужно же Во многих играх видел xml,ы вобще без заголовка, просто итемы написаны и всё. Пространства имён, ссылки и прочее тебе совершенно не нужно. Семпл xml, ки
Код
<?xml version="1.0" encoding="utf-16"?> <Map> <sprites> <sprite> <texture name ="путь к текстуре"/> <Position X="1" Y = "2"/> <Scale X="1" Y="1"/> </sprite> </sprites> <Cars> <Car ID="0" name="Car1"> <Position X="10" Y = "20"/> </Car> <Car ID="1" name="Car2"> <Position X="10" Y = "20"/> </Car> </Cars> </Map>
Первая строка - стандартный заголовок. Вcем зла.
Сообщение отредактировал Undead - Воскресенье, 31 Марта 2013, 18:48
Undead, да не, не то. Я хочу в xml забить массив, саму карту. Хотя, по такому принципу можно сделать загрузку тайлов, хорошая мысль. Но как там прописать массив?
Только твой формат хранения уровня ужасен очень: Если заменишь его с int на byte, то в 4 раза меньше памяти занимать будет. Вместо прохода циклом по массиву можно просто читать свойства элемента и распологать его в нужном месте. Как пример
Так гораздо удобнее, вместо кучи if,ов поставишь switch и создавать нужный объект указанного типа в указанной позиции.
Код
<?xml version="1.0" encoding="utf-16"?> <GameMap gameMusic = "Sounds\\Music\\Game.ogg" ambientLight = "0.4980392 0.4980392 0.4980392"> <entity type ="Static" name ="RoadPart"> <Texture file_name ="blablabla"/> <CollisionTexture file_name ="blablabla"/> <Position X="0" Y = "0"/> <Scale X="2" Y ="10"/> </entity> <entity type ="Static" name ="RoadPart"> <Texture file_name ="blablabla"/> <CollisionTexture file_name ="blablabla"/> <Position X="0" Y = "0"/> <Scale X="2" Y ="10"/> </entity> <entity type ="Static" name ="RoadPart"> <Texture file_name ="blablabla"/> <CollisionTexture file_name ="blablabla"/> <Position X="0" Y = "1"/> <Scale X="2" Y ="10"/> </entity> <entity type ="Static" name ="RoadPart"> <Texture file_name ="blablabla"/> <CollisionTexture file_name ="blablabla"/> <Position X="1" Y = "0"/> <Scale X="10" Y ="2"/> </entity> <entity type ="Car" ID ="0" name ="Player"> <Position X="0" Y = "10"/> </entity> </GameMap>
Вcем зла.
Сообщение отредактировал Undead - Воскресенье, 31 Марта 2013, 21:40
Кстати, общественность может спросить, на кой пес мне нужны книги по Xml. Отвечаю - карты (точнее трассы) и сохранения я хочу сделать именно в файлах xml.
Еще общественность интересует - почему именно xml? Для создания \ редактирования разного рода объектов при отсуствии редакторов - хороший вариант, но вот хранить саму карту таким образом (много повторяющихся ненужных тегов)... Визуального редактора карт не планируется? Ибо удобно описать в xml сами игровые объекты (их свойста и параметры) и присвоить каждому некоторый Id, а саму карту хранить в бинарном формате, в которой каждая ячейка с координатами x, y хранит список Id этих объектов (например), которые в ней расположены. Таким образом сначала парсится инфа о объектах из xml, быстро загружается информация о карте из бинарника, после чего уже создаются сами объекты в необходимых местах. Но карту неплохо бы делать в редакторе
Всю тему не читал, но если вдруг интересует \ заинтересует неплохая физика для авто, то существует очень неплохая статья про это дело.
P.S. Удачи с игрой C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Ибо удобно описать в xml сами игровые объекты (их свойста и параметры) и присвоить каждому некоторый Id, а саму карту хранить в бинарном формате, в которой каждая ячейка с координатами x, y хранит список Id этих объектов (например), которые в ней расположены. Таким образом сначала парсится инфа о объектах из xml, быстро загружается информация о карте из бинарника, после чего уже создаются сами объекты в необходимых местах. Но карту неплохо бы делать в редакторе
Почему бы не хранить сразу всё в XML? Хотя, если карта так и будет простым двухмерным массивом, то бинарник в тему. Вcем зла.
Так оверхед же ненужный. Карта может быть и простым списком в которой содержатся игровые обьекты и хранить ее можно бинарно как [Id, x, y], сами объекты описаны в xml и им присвоен уникальный Id. Будет быстрее. Но вообще для небольшой 2д игры, конечно, особо заметной разницы то и не будет Можно еще добавить, что плюс Xml'я в том, что его можно легко редактировать ручками (объекты, параметры их, etc), а вот карты в нем делать как-то не очень привлекает , для этого должен быть нормальный редактор... а зачем хранить данные которые нет смысла редактировать как текстовые, если их можно сохранить как бинарные и получить бонус в виде скорости и сэкономить память? C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Понедельник, 01 Апреля 2013, 14:57
Archido, Он хотел редактор вроде писать. По памяти: если из xml,ки только загружать карту, а потом просто создавать объект класса карты, то на памяти не должно ведь сказаться. Вcем зла.
Думаю, вследствие этого буду делать редактор уровней (трасс).
Цитата (Archido)
Еще общественность интересует - почему именно xml?
Не, ну саму карту можно и в текстовом файле хранить. У меня есть такое, только в другом проекте, ныне заброшеном. А почему XML - хочу попробовать, насколько это геморно. woof,
Цитата (woof)
Довай уже демку покататься. Хочу взрывов, кучу машинок на трассе и тому подобного безумства.
в первом посте смотри. Разной степени убогости альфы.
Цитата (Archido)
а зачем хранить данные которые нет смысла редактировать как текстовые, если их можно сохранить как бинарные и получить бонус в виде скорости и сэкономить память?
слушай, покажи, как?
Цитата (Undead)
Хотя, если карта так и будет простым двухмерным массивом
она у мну выглядит вот так хотя ты, наверное видел, но все же
Добавлено (01.04.2013, 18:37) --------------------------------------------- Народ оживился . woof, огорчу - версии с xml еще нет
Добавлено (01.04.2013, 20:37) --------------------------------------------- Маленькая , для некоторых приятная, новость - некоторые люди попадут в титры конечно, игра выйдет неизвестно когда, но все же выйдет. Но все равно приятно иметь свой ник в титрах.
А вот кто: 1. Undead 2. musicfuns 3. MyACT 4. TimKruz
Конретно в данном случае так и есть, я ведь не зря в конце своего поста смайл поставил А вот именно в общем случае большие объемы данных в xml обычно не хранят. Приходилось может с Collada работать? Там при увеличении полигонажа модели размер выходного файла растет как на дрожжах, что в свою очередь увеличивает время, необходимое на обработку данных (парсинг), и в итоге сказывается на общем времени загрузки. Т.е. как универсальный промежуточный формат - это очень неплохая вещь, но для загрузки непосредствено моделей в игру оно не подходит категорически.
Цитата (Amri)
слушай, покажи, как?
А что там показывать то? Вот у тебя сейчас есть массив map и ты его просто берешь и пишешь в бинарник ( ) с помощью BinaryWriter'a, например. Еще перед этим можно сохранять информацию о размерах карты. При загрузке берешь BinaryReader, читаешь размер карты и на основе его создаешь соответствующий массив map, после чего уже читаешь туда свои данные карты. Но без редактора в этом смысла нет. Пока можно просто как текстовый хранить или уж как xml (но лично мне карта в xml не нравится). C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Вторник, 02 Апреля 2013, 06:26
Archido, Я ему семпл с сохранением, загрузкой карты в бинарник набросал. По поводу xml - модели хранить неудобно, использую для импорта, но в движке бинарные OgreMesh. Но для уровней и параметров объектов подходит. У меня не xml, но в общем похоже (link)
Добавлено (07.04.2013, 17:21) --------------------------------------------- Amri, Как успехи?
Вcем зла.
Сообщение отредактировал Undead - Вторник, 02 Апреля 2013, 14:08
Да успехи есть, но пока показывать особо нечего. Лето пришло, потому работа над проектом замедлилась Насчет формата карт. С битовым массивом я не разобрался, точнее сам принцип не понял еще, посему карта будет в XML. Типа этого
Код
<?xml version="1.0" encoding="utf-16"?> <GameMap gameMusic = "Sounds\\Music\\Game.ogg" ambientLight = "0.4980392 0.4980392 0.4980392"> <entity type ="Static" name ="RoadPart"> <Texture file_name ="blablabla"/> <CollisionTexture file_name ="blablabla"/> <Position X="0" Y = "0"/> <Scale X="2" Y ="10"/> </entity> <entity type ="Static" name ="RoadPart"> <Texture file_name ="blablabla"/> <CollisionTexture file_name ="blablabla"/> <Position X="0" Y = "0"/> <Scale X="2" Y ="10"/> </entity> <entity type ="Static" name ="RoadPart"> <Texture file_name ="blablabla"/> <CollisionTexture file_name ="blablabla"/> <Position X="0" Y = "1"/> <Scale X="2" Y ="10"/> </entity> <entity type ="Static" name ="RoadPart"> <Texture file_name ="blablabla"/> <CollisionTexture file_name ="blablabla"/> <Position X="1" Y = "0"/> <Scale X="10" Y ="2"/> </entity> <entity type ="Car" ID ="0" name ="Player"> <Position X="0" Y = "10"/> </entity> </GameMap>
Но тогда же можно забить туда и часть физики, а сами параметры (ну там формулы и некоторые константы) тоже хранить в xml. Только меня интересует один вопрос, пускай и не очень своевременный - а как зашифровать даннные? Ну что бы туда никто не залез и не понакрутил чего.
Но тогда же можно забить туда и часть физики, а сами параметры (ну там формулы и некоторые константы) тоже хранить в xml. Только меня интересует один вопрос, пускай и не очень своевременный - а как зашифровать даннные? Ну что бы туда никто не залез и не понакрутил чего.
1. Не использовать XML и ему подобные текстовые форматы. Простой бинарный файл данных не каждый школьник расшифрует. 2. Использовать алгоритмы шифрования; даже самые простые подойдут.
Цитата (Amri)
С битовым массивом я не разобрался, точнее сам принцип не понял еще
Да что там понимать... Просто придумай свой формат записи и всё... Например:
Цитата
первые 2 байта - ID объекта, по ID определяется тип и текстура объекта, модель коллизий;
три блока по две переменные, каждая по 2 байта - позиция (X и Y), поворот и масштаб (по X и по Y) объекта;
дополнительная информация об объекте, если нужно, 1 байт: нулевой бит - непроходимость, первый и второй - тип опасности для игрока и т.д.
Итого получается блок в 15 байт, описывающий один объект. Повторить в файле N раз для достижения желаемого результата. Если в блоке описания объекта содержатся данные непостоянной длинны - придётся либо перед блоком указывать длину всего блока и каждой из его основных частей, либо придумывать уникальные символы-разделители (1-2 байта).
Сообщение отредактировал TimKruz - Четверг, 11 Апреля 2013, 18:38