|
Результаты опроса: Нужна ли подобная система
|
Да, хочу!
|
|
0 |
0% |
Да, если будет плагин для макса
|
|
3 |
60.00% |
Неа, уже есть юнити и прочие
|
|
1 |
20.00% |
Ты ошибся годом
|
|
1 |
20.00% |
11.11.2012, 21:59
|
#1
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
ProLevel
Есть у меня такая самописная система обработки уровней. Позволяет в любом редакторе( макс, милка ) настраивать игровые объекты( пока совместим только с Xors3D ). Триггеры тоже поддерживаются. В общем мысли свои понятно излагать не умею поэтому приведу выдержку из справки к этой "супер" системе.
Параметры записываются в имени объекта
Как правильно записывать параметры объектов.
Параметр имеет имя и значение. Значение - либо число, либо строка.
Пример:
· name=cube;
· mass=1;
Параметры отделяются друг от друга точкой с запятой. Пробелов может быть сколь угодно много - при разборе строки лишние пробелы удаляются. Чтобы сохранить пробелы строку нужно окружить кавычками.
Пример:
· objective="Receive data";
Если значение не поместить в кавычки, в качестве значения, параметру objective присвоится только Receive.
Общие параметры - эти параметры могут иметь все объекты в игре
· class - класс объекта. Возможны два значения:
1. classObject - объект
2. classLogic - логика( триггеры и т.п. )
· type - тип объекта
1. object - описывает обычный объект
2. light - источник света
3. trigger - триггер
4. sound - звук
· name - имя объекта, используется для обращения к объекту из триггера
· body - тип физического тела
1. sphere - сфера - радиус вычисляется автоматически и равен радиусу описанной вокруг объекта сферы
2. box - коробка, содержащая объект полностью
3. convex - выпуклое тело - строится из вершин объекта, тело не содержит вогнутых частей.
4. concave - вогнутое тело - может содержать вогнутые части( углубления и т.п.)
5. static - статическое тело( масса = 0 ), используется для описания геометрии уровня.
· constraint *- тип ограничителя
1. hinge - петля
· frict - трение ( 0 - нет трения )
· alpha - полупрозрачность ( от 0 до 1 )
· iskill - если 1, то убивает игрока при контакте. Используется для ловушек
Параметры объектов - частные параметры - ими владеют только определенные объекты
Пример:
class = classObject; type = light; subtype=1; red=120;green=200;blue=255;range=1000;
1. red - красный цвет - от 0 до 255
2. green - зеленый цвет - от 0 до 255
3. blue - синий цвет - от 0 до 255
4. range - максимальная дальность освещения
5. subtype - всегда 1
Триггер - объект выполняющий определенные действия. Выключаются при выполнении условия, совершая указанные действия. Каждый триггер выполняет какие-то указанные действия. Чтобы указать действие, нужно написать action№=actionName(actionParameters);
Здесь:
· № - номер действия( нумерация может начинаться с любого числа, но последующее действие должно иметь номер на единицу больше чем номер предыдущего действия )
· actionName и actionParameters - любое действие из нижеперечисленных( в скобках параметры )
1. Animate( имя_анимируемого_объекта, 3, скорость_анимации, 0); -анимирует объект
2. Enable( имя_включаемого_триггера ); - включает триггер
3. Disable(имя_выключаемого_триггера); - выключает триггер
4. AddForce(имя_объекта,силаПо_X, силаПо_Y, силаПо_Z ); прикладывает силу к объекту
5. AddTorque(имя_объекта,врМ_X,врМ_Y, врМ_Z); прикладывает вращающий момент
6. Hide(имя_объекта); - скрывает объект
7. Show(имя_объекта); - показывает объект
8. Win( ); -выиграть текущую карту
Пример: class=classLogic;type=trigger;subtype=distanceTrigger;target=Player;distance=20;action0=Animate( pt1, 3,1,0);
Каждый триггер после выполнения действий выключается. Чтобы триггер не выключался нужно добавить параметр nodisable = 1;
Изначально триггер считается включенным - чтобы его отключить нужно добавить isenabled=0;
Конкретный тип триггера указывается параметромsubtype, который может принимать следующие значения:
Типы.
distanceTrigger - триггер срабатывающий при приближении target объекта на расстояние меньшее distance.
· Параметры:
1. target - имя объекта, на приближение которого реагирует триггер
2. distance - расстояние до объекта при котором срабатывает триггер
nullTrigger - триггер без условий выполнения - т.е. делает указанные действия без какого либо условия.
· Параметры:
1. только список действий
timeTrigger- триггер выполняет указанные действия спустя time времени
· Параметры:
1. time - время в миллисекундах( 1 секунда = 1000 миллисекунд )
zoneTrigger - триггер срабатывает при попадании target объекта в триггер( в редакторе триггером становится обычная коробка ( Box ) необходимых размеров )
· Параметры:
1. target - имя объекта, на который срабатывает триггер
keyTrigger - триггер сочетает в себе distanceTrigger, но накладывается дополнительное условие срабатывания - нажатие на определенную кнопку.
Причем справка еще не закончена, есть еще куча триггеров и параметров.
Нужно ли такое кому-нибудь?( за примерами использования можно обратиться к моим недавним "проектам" )
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо mr.DIMAS за это полезное сообщение:
|
|
11.11.2012, 22:07
|
#2
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: ProLevel
ты написал парсер строк с возможностями, которые именно тебе были нужны. такое по-мойму делает каждый новичок с ксорсом/блицем (да, я тоже практически то же самое делал).
нет варианта ответа - "Нет, самому проще написать чем разбираться в твоём" (забывая о годе и других движках).
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
|
|
11.11.2012, 22:21
|
#3
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: ProLevel
конечно "проще" написать самому, при условии что будешь потом долго и упорно отлаживать, потеряешь время - а тут уже проверенная несколькими людьми система.
|
(Offline)
|
|
11.11.2012, 22:26
|
#4
|
Разработчик
Регистрация: 20.02.2010
Сообщений: 397
Написано 173 полезных сообщений (для 565 пользователей)
|
Ответ: ProLevel
mr.Dimas лучше б ты написал редактор для Xors3d - толку больше было бы...
Да и людям он бы пригодился кто юзает движок.
|
(Offline)
|
|
11.11.2012, 22:30
|
#5
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: ProLevel
писать редактор в одиночку - никогда! я уже пробовал. Проще будет написать плагин для макса.
|
(Offline)
|
|
11.11.2012, 22:56
|
#7
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: ProLevel
Честно говоря я об этом не задумывался. Если не трудно, объясни подробнее. Из твоей темы я многое не понял. Где в максе можно разместить эти данные?
|
(Offline)
|
|
11.11.2012, 23:38
|
#8
|
|
Ответ: ProLevel
Сообщение от mr.DIMAS
Честно говоря я об этом не задумывался. Если не трудно, объясни подробнее. Из твоей темы я многое не понял. Где в максе можно разместить эти данные?
|
скажем есть абстрактный объект, в фотошопе это слой, в максе это любой объект на сцене, у такого объекта есть какие-то параметры, скажем позиция или поворот или имя, зачастую у объекта есть еще параметр user data (или metadata, или еще как-то), вот в нём можно хранить любую нужную информацию
в максе есть метаданные для всего файла :
http://docs.autodesk.com/3DSMAX/15/E...ber=d30e694761
а вот для объекта надо еще поискать
|
|
|
11.11.2012, 23:57
|
#9
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: ProLevel
есть user defined properties у каждого объекта. токо b3dpipeline их вряд ли экспортит.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.11.2012, 00:34
|
#10
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: ProLevel
Ну именно поэтому и использую имя объекта в качестве хранилища инфы.
|
(Offline)
|
|
13.11.2012, 02:21
|
#11
|
Бывалый
Регистрация: 17.12.2011
Сообщений: 862
Написано 443 полезных сообщений (для 1,133 пользователей)
|
Ответ: ProLevel
Сообщение от jimon
|
Не проще, проще скрипты написать в блокноте и успокоиться, но прятать от читеров скрипты в картинках тоже идея неплохая
|
(Offline)
|
|
13.11.2012, 10:54
|
#12
|
Бывалый
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений (для 546 пользователей)
|
Ответ: ProLevel
В синем канале цвета ?
|
(Offline)
|
|
14.11.2012, 10:49
|
#13
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: ProLevel
Имхо проще использовать дочерние объекты как контейнеры параметров, а не само имя объекта. Обозначить такие потомки например с символа # и это будет означать что это контейнер параметров для парента. Контейнеров может быть несколько для упрощения редактирования. После загрузки удалять эти чайлды.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
15.11.2012, 18:06
|
#14
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: ProLevel
Сообщение от pax
Имхо проще использовать дочерние объекты как контейнеры параметров, а не само имя объекта. Обозначить такие потомки например с символа # и это будет означать что это контейнер параметров для парента. Контейнеров может быть несколько для упрощения редактирования. После загрузки удалять эти чайлды.
|
да
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:13.
|