Script Game — различия между версиями
Abeyn (обсуждение | вклад) (→События из вьювера в скрипт) |
Abeyn (обсуждение | вклад) |
||
| Строка 71: | Строка 71: | ||
===События из вьювера в скрипт=== | ===События из вьювера в скрипт=== | ||
| − | #'''DT''' - Время, после последнего кадра | + | #'''DT''' - Время, после последнего кадра |
| − | + | ##''размер'' - 1 | |
| − | + | ##''dt'' - время, после последнего кадра | |
| − | #''' | + | #'''Mouse/Touch down''' - Нажали левую кнопку мыши/тач по экрану |
| − | + | ##''размер'' - 2 | |
| − | + | ##''x'' - позиция тача по оси X | |
| − | #''' | + | ##''y'' - позиция тача по оси Y |
| − | + | #'''Mouse/Touch move''' - движение нажатой мыши/тача по экрану | |
| − | + | ##''размер'' - 2 | |
| − | + | ##''x'' - позиция тача по оси X | |
| − | + | ##''y'' - позиция тача по оси Y | |
| − | + | #'''Mouse/Touch up''' - отпускание левой кнопки мыши/тача | |
| − | + | ##''размер'' - 2 | |
| − | + | ##''x'' - позиция тача по оси X | |
| − | + | ##''y'' - позиция тача по оси Y | |
| − | + | #'''Mouse over''' - мышь над объектом | |
| − | + | ##''размер'' - 2 | |
| − | + | ##''x'' - позиция мыши по оси X | |
| − | + | ##''y'' - позиция мыши по оси Y | |
| − | + | #'''Mouse whell down''' - скрол мыши вниз | |
| − | + | ##''размер'' - 2 | |
| − | + | ##''x'' - позиция мыши по оси X | |
| − | + | ##''y'' - позиция мыши по оси Y | |
| − | + | #'''Mouse whell up''' - скрол мыши вверх | |
| + | ##''размер'' - 2 | ||
| + | ##''x'' - позиция мыши по оси X | ||
| + | ##''y'' - позиция мыши по оси Y | ||
| + | #'''Multi touch down''' - мультитач нажатие | ||
| + | ##''размер'' - X | ||
| + | ##''touches'' - число тачей | ||
| + | ##''id'' - идентификатор тача | ||
| + | ##''pressed'' - флаг нажатости | ||
| + | ##''x'' - позиция тача по оси X | ||
| + | ##''y'' - позиция тача по оси Y | ||
| + | ## следующий тач | ||
| + | #'''Multi touch move''' - мультитач движение | ||
| + | ##''размер'' - X | ||
| + | ##''touches'' - число тачей | ||
| + | ##''id'' - идентификатор тача | ||
| + | ##''pressed'' - флаг нажатости | ||
| + | ##''x'' - позиция тача по оси X | ||
| + | ##''y'' - позиция тача по оси Y | ||
| + | ## следующий тач | ||
| + | #'''Multi touch up''' - мультитач отпускание | ||
| + | ##''размер'' - X | ||
| + | ##''touches'' - число тачей | ||
| + | ##''id'' - идентификатор тача | ||
| + | ##''pressed'' - флаг нажатости | ||
| + | ##''x'' - позиция тача по оси X | ||
| + | ##''y'' - позиция тача по оси Y | ||
| + | ## следующий тач | ||
===События из скрипта во вьювер=== | ===События из скрипта во вьювер=== | ||
Версия 12:06, 14 декабря 2017
Объект ScriptGame служит для встраивания игр, написанных на различных скриптовых языках, в редактор
Содержание
Свойства
- скрипт - Скрипт игровой механники данного объекта (Type Script, Java Script, LUA ...)
- config - конфиг для игровой механики. Чтобы добавить конфиг нужно нажать правой кнопкой на области свойств и выбрать "config". После чего загрузить заранее подготовленный конфиг для игровой механики. Как подготовить конфиг см. тут
Инициализация
При инициализации создается объект в глобальном пространстве имен с именем <Имя игровой механники (указанное в поле "скрипт")>_<Идентификатор объекта во вьюере>. Затем вызывается функция modules_init в которую передается конфигурацонный файл объекта сдедующей структуры:
{
"id" : 2 //Идентификатор объекта
"width" : 1024, //Ширина объекта
"height" : 768, //Высота объекта
"resourcesInfo" : { //Ресурсы, используемые механникой
"images" : [ //Изображения
{
"w" : 183, //Высота
"h" : 183, //Ширина
"id" : 68, //Идентификатор ресурса
"px" : 92, //Пивот Х
"py" : 92 //Пивот Y
}
]
},
"config" : { //Основной конфигурационный файл указанный в поле "config"
"defaultIcoID" : 68,
"levels" : [
{
"config" : { //Конфигурационный файл соответствующего уровня
"level" : {
"cols" : 5,
"field" : "0,1,4,5,2"
"id" : 1,
"moveSnd" : 70,
"picture" : 69,
"rows" : 5
},
"resources" : {
"images" : "69",
"sounds" : "70"
}
},
"dir" : "levels/1/",
"id" : 73
}
],
"name" : "levels config",
"nameID" : 20,
"resources" : {
"images" : "68",
"sounds" : "",
"texts" : "20"
}
}
}
Обмен событиями
Для оптимизации скорости обмена между вьювером и скриптом в качестве формата сообщения выбран массив вещественных чисел следующего формата:
*число событий *тип события *размер данных события *данные события
...
*тип события *размер данных события *данные события
Данный массив передается параметром в функцию update_handler в каждом кадре (в котором перечислены интервал времени,тачи,системные сообщения), затем скрипт выполняет логику кадра и возвращает аналогичной структуры массив в котором указаны события что и где рисовать.
События из вьювера в скрипт
- DT - Время, после последнего кадра
- размер - 1
- dt - время, после последнего кадра
- Mouse/Touch down - Нажали левую кнопку мыши/тач по экрану
- размер - 2
- x - позиция тача по оси X
- y - позиция тача по оси Y
- Mouse/Touch move - движение нажатой мыши/тача по экрану
- размер - 2
- x - позиция тача по оси X
- y - позиция тача по оси Y
- Mouse/Touch up - отпускание левой кнопки мыши/тача
- размер - 2
- x - позиция тача по оси X
- y - позиция тача по оси Y
- Mouse over - мышь над объектом
- размер - 2
- x - позиция мыши по оси X
- y - позиция мыши по оси Y
- Mouse whell down - скрол мыши вниз
- размер - 2
- x - позиция мыши по оси X
- y - позиция мыши по оси Y
- Mouse whell up - скрол мыши вверх
- размер - 2
- x - позиция мыши по оси X
- y - позиция мыши по оси Y
- Multi touch down - мультитач нажатие
- размер - X
- touches - число тачей
- id - идентификатор тача
- pressed - флаг нажатости
- x - позиция тача по оси X
- y - позиция тача по оси Y
- следующий тач
- Multi touch move - мультитач движение
- размер - X
- touches - число тачей
- id - идентификатор тача
- pressed - флаг нажатости
- x - позиция тача по оси X
- y - позиция тача по оси Y
- следующий тач
- Multi touch up - мультитач отпускание
- размер - X
- touches - число тачей
- id - идентификатор тача
- pressed - флаг нажатости
- x - позиция тача по оси X
- y - позиция тача по оси Y
- следующий тач