Слегка подчистил тему
Теперь об оригинальном формате 3DMap (описатель комнат или секторов города) в том виде, как я его описывал более 18 лет назад:
Code: Select all
#############################################
# START.3DM - ФОРМАТ ФАЙЛА 3DM #
# 17.09.2000 - 06.02.2002 #
# Alexander Shabarshin (shaos@mail.ru) #
#############################################
# 3DM (3D MAP) файл является текстовым ASCII
# файлом, т.е. его можно редактировать в любом
# простом текстовом редакторе (не Word!!!),
# например в редакторе FARа или DOS-Naviagatora,
# ну на худой конец в Нортоне или виндовом
# Нотепаде (блокноте). В качестве просмотрщика
# такого файла можно использовать программу
# 3DM_VIEW.EXE которая работает под ДОСом и
# принимает имя файла как аргумент. Управление в
# программе почти такое же как в DOOM. Кроме того
# PgUp и PgDn позволяют поднимать и опускать голову,
# + и - на основной клавиатуре увеличивают и
# уменьшают окно обзора, Q - включает/выключает
# рисование текстур на полу, а S - включает/выключает
# подпрыгивание в процессе ходьбы. Для работы
# программы требуется файл TXRBASE.VDS, если вы
# используете стандартный набор текстур из Виртбурга.
# Можно также воспользоваться моей новой программой
# 3DMap Wanderer (http://vburg.narod.ru, http://shaos.boom.ru)
# которая работает в среде Windows-95 и позволяет
# просматривать 3DM-миры как с вашего диска, так и
# И З И Н Т Е Р Н Е Т А ! ! !
# Имя файла (или адрес в интернете) может задавться
# как аргумент в командной строке.
# Разберем небольшой примерчик START.3DM
# (в-принципе весь этот текст есть 3DM файл :)
# ------------------------------------------------
#3DMAP V1.2
# START 3D-MAP with 2D OBJECTS
# Shaos (shaos@mail.ru)
# с символа # начинается строка комментария
map 11:13
# ключевым словом map задаем размер карты
# в данном случае 11 клеток на 13 клеток
textures 16
# задаем максимальное количество текстур
# причем описано их может быть меньше, чем указано
# (для Виртбурга см."рекомендации")
t0000 gray01
# так мы описываем текстуры по порядку
# нумерация начинается с 0000, числа шестнадцатиричные
# далее в строке идет либо имя стандартной текстуры
# из файла TXRBASE.VDS (см. список стандартных текстур),
# либо имя файла текстуры из этого же подкаталога
# (к имени добавляется расширение *.TXR),
t0001 mypic.gif
# можно подгрузить и свою текстуру, сохраненную в
# формате GIF (можно использовать и GIF87, и GIF89,
# причем последний допускает использовать прозрачность)
t0002 w000
t0003 w000 +2
# тут мы сделали текстурку w000 чуть светлее
t0004 gray02 *A0
# при желании можно трансформировать цвета текстуры
# в любой цветовой диапазон палитры GAME.PAL
# (в данном случае серая текстура трансформируется
# в диапазон цветов 0xA0-0xAF)
t0005 gray01 rama01
# таким способом мы можем наклеить текстуры друг на друга
# (благо некотороые из них имеют "дырки", сквозь которые
# могут просвечивать нижние слои)
t0006 w000 +2 door01
t0007 mypic.gif "VIRTBURG"
# а так можно писать на стенах :)
t0008 @48
# так мы можем просто закрасить текстуру каким-либо цветом
t0009 @48,3
# а так мы можем еще и добавить шум
t000A rama01
back baseback.gif
# без фона не обойтись - это файл BASEBACK.GIF 256-цветная
# картинка в палитре GAME (для Фотошопа нужен файл
# палитры GAME.ACT, или можно о палитрах и не думать,
# но тогда программа сама подберет наиболее близкие
# цвета из палитры GAME, что может выглядеть не совсем
# эстетично ... ). Размер фона 1440 на 100 точек -
# полная панорама в 360 градусов, причем начинается
# панорама на севере (угол 90 градусов от оси Х)
start 5 1 90
# ставим игрока в точку (5,1) и направляем его взгляд
# под углом 90 градусов от оси Х против часовой стрелки
default hh=0 t1=0 t0=a
# за ключевым словом default следует описание
# куба для всех клеток поля, hh=0 означает нулевую
# высоту, а t1=0 означает, что на пол мы наклеиваем
# текстуру t0000
# кроме того можно указать t0, что будет
# означать текстуру на потолке (в случае hall)
border ex=10 hh=1 t1=2 t2=3 t3=2 t4=3 t0=a
# за ключевым словом border мы описываем кубики,
# которыми огораживается поле по периметру
# ex=10 означает, что в клетке стоит столбик из кубиков
# hh=1 означает высоту в один кубик (один этаж)
# t1,t2,t3 и t4 задают номера текстур, котрые
# следует наклеить на восточную, севрную, западную и южную
# стороны кубика соответственно (в будущем
# dd=цвет будет задавать цвет для верхушки столбика,
# t0=номер будет задавать текстуру для верхушки,
# hs=число будет задавать сколько текстур можно наклеить
# на одну сторону - по порядку из списка снизу-вверх)
hall 2
# командой hall мы можем сообщить программе, что
# хотим построить внутренность здания, причем
# высота потолка будет равна 2 (если просто hall, то 1)
# корректно поддерживается с версии 1.5
# fast
# команда fast запрещает наклейку текстур на пол и потолок
# (для медленных компьютеров)
^5,6 http://shaos.ru/vburg/50_51/main.3dm
# а тут мы указали ссылку - в эту дверь можно "выйти"
# и попасть в трехмерный мир в интернете
# (напоминаю, что для того, чтобы ходить
# в интернет нужна программа 3DMap Wanderer).
# Ссылка на карте привязывается
# к координатам - в данном случае (5,6)
^5,12 start.3dm 5 1 90
# кроме того можно в мире, на который ссылаемся,
# поставить игрока в произвольные координаты (здесь - 5,1)
# и направить его под любым углом (здесь 90 градусов)
5,12 ex=10 hh=1 t1=6 t2=6 t3=6 t4=6
# таким вот образом мы описываем все остальные
# кубики в конкретных координатах
4-6,6-8 ex=10 hh=1 t1=5 t2=5 t3=5 t4=5 t0=a
# таким образом задаются ряды из кубиков
# очень удобно для описания зданий с длинными стенами
5,6 ex=10 hh=1 t1=7 t2=7 t3=7 t4=7 t0=a
5,7 ex=10 hh=10 t1=4 t2=4 t3=4 t4=4
# следует отметить, что hh=10 нужно читать как
# шестнадцатиричное число, т.е. это значит 16 этажей
objects 2
# новинка версии 1.2 - возможность ставить объекты
# указываем количество вводимых объектов, а затем
# перечисляем их, начиная от 0
o0000 4.8 5.7 0 1.3 swin2.gif
o0001 6.2 5.7 0 1.3 swin1.gif
# за буковй o и шестнадцатиричным номером объекта
# идут его координаты в карте (могут быть нецелыми),
# высота размещения, видимый размер объекта в
# единицах мира (напомним 1 единица - один этаж)
# и имя файла картинки (GIF или TXR)
# scripts 2
# ну а об этом говорить пока рано ;)
end
# команда, заканчивающая 3DM файл
В опенсорцной версии я планирую убрать GIF (т.к. там декодер с чужим копирайтом) и оставить только формат текстур TXR "изобретённый" мною в 1997 году:
- первый байт задаёт размер по горизонтали в пикселах (максимальная ширина задаётся как 0=256)
- второй байт задаёт размер по вертикали в пикселах (максимальная высота задаётся как 0=256)
- далее идут пикселы слева-направо-сверху-вниз по одному байту на пиксел где байты задают такие цвета:

- game_pal_big.gif (64.8 KiB) Viewed 11565 times
|
Последние четыре цвета скушались при конверсии в GIF, но на самом деле цвета от 0xc0 до 0xff задают 64 градации серого от чёрного до белого, а вот нулевой цвет означает прозрачность (если всё-таки в текстуре нужен чистый чёрный цвет, то надо использовать 0xc0 вместо 0x00)
P.S. В 2011 году я планировал убрать 3DMap формат совсем и заменить каждый сектор роботом, который будет его описывать программно на языке Robby:
Shaos wrote:Подумалось, что если байткод может модифицировать уровень, то байткод может и генерировать уровень - т.е. язык описания уровней не нужен (во всяком случае пока) - просто всё пишем на языке RW1

P.P.S. А ещё в 2000 году я планировал сделать программу под винды, которая бы позволила строить сектора Виртбурга мышкой:
VIRTBUILDER - программа, работающая под управлением ОС Microsoft Windows, которая поможет тебе создать свой собственный сектор для Виртбурга. Программа поддерживает 3 типа проектов:
- .vbs (VirtBurg Sector) - проект стандартного сектора 64x64;
- .vbb (VirtBurg Building) - проект здания, которое может быть вставлено в сектор;
- .vbr (VirtBurg Room) - проект комнаты для здания, которую можно связать со зданием.
Эти проекты ты можешь создать через [File/New], загузить через [File/Open], или сохранить через [File/Save] или [File/Save as], а вот сектор в виде .3dm файла ты сможешь лишь экспортировать, а загружать не сможешь. Я запретил возможность открытия проекта на базе .3dm файла, чтобы у тебя не было соблазна стартовать свой проект с чужих разработок
Прототип выглядел вот так:

- vbuilder.png (39.64 KiB) Viewed 11558 times
|
Сейчас вот думаю, что надо подобный редактор в онлайне делать...
P.P.P.S. А ведь был ещё сторонний редактор уровней Виртбурга о котором я совсем забыл!