Автор Тема: Конструктор 2D игр Game Editor  (Прочитано 18757 раз)

Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #15 : 18 Март 2018, 19:51:30 »
Действия

ChangeAnimation: Заменяет анимацию и устанавливает её начальное (state) состояние (FORWARD - вперёд, BACKWARD - назад, STOPPED - остановлена, NO_CHANGE - без изменений).
Возвращает 1 при успехе, 0 при ошибке.

int ChangeAnimation(char *actorName, char *animationName, int state)

animationName: анимация cуществующая у актёра с именем имяАктёра.
actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
ChangeAnimaton("Event Actor","Animation_1",BACKWARD);

ChangeAnimationDirection: Изменяет состояние (state) текущей анимации (FORWARD - вперёд, BACKWARD - назад, STOPPED - остановлена).
Возвращает 1 при успехе, 0 при ошибке.

int ChangeAnimationDirection(char *actorName, int state)
actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
ChangeAnimatonDirection("Ball", FORWARD);

ChangeCursor: Изменяет курсор мыши над актёром.

int ChangeCursor(char *actorName, char *imgName, int nFramesH, int nFramesV, int hotSpotX, int hotSpotY)

imgName: имя файла изображения, включая полный путь относительно директории игры.
nFramesH: количество горизонтальных кадров в изображении.
nFramesV: количество вертикальных кадров в изображении.
hotSpotX: координата X горячей горячей точки курсора.
hotSpotY: координата Y горячей горячей точки курсора.
Возвращает 1 при успехе, 0 при ошибке.
actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- Любой актёр в игре.

Синтаксис редактора скриптов:
ChangeCursor("Event Actor", "Ball.png", 1, 1, 0, 0);

ChangeParent: Заменяет родителя актёра.

int ChangeParent(char *actorName, char *parentName)

parentName: имя какого либо актёра (включая "Event Actor", "Collide Actor", "Parent Actor", "Creator Actor" и "no parent" (без родителя)).
Возвращает 1 при успехе, 0 при ошибке.
actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
ChangeParent("MyActor", "Event Actor");

ChangePath: Заменяет путь актёра и устанавливает оси (X_AXIS - ось X, Y_AXIS - ось Y, BOTH_AXIS - обе оси).

int ChangePath(char *actorName, char *pathName, int axis)

pathName: имя любого пути (включая "no path" (без пути) и "random path" (случайный путь)).
Возвращает 1 при успехе, 0 при ошибке.
actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
ChangePath("MyActor", "path1", BOTH_AXIS);

ChangeTransparency: Изменяет прозрачность (transp) актёра (0.0 -непрозрачный, до 1.0 - прозрачный).
Возвращает 1 при успехе, 0 при ошибке.

int ChangeTransparency(char *actorName, double transp)

actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
ChangeTransparency("Event Actor", 0.64);

ChangeZDepth: Изменяет Z-глубину актёра.

int ChangeZDepth(char *actorName, double zdepth)

zdepth: Z-глубина от 0.0 до 1.0
Возвращает 1 при успехе, 0 при ошибке.
actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
ChangeZDepth("My Actor", 0.70);

CollisionState: Включение или отключение столкновения.
Возвращает 1 при успехе, 0 при ошибке.

int CollisionState(char *actorName, int state)

actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.
state: ENABLE - включено или DISABLE - отключено

Синтаксис редактора скриптов:
CollisionState("Event Actor", DISABLE);

CreateActor:  Создает нового актёра через скрипт.

Actor* CreateActor(char *creatorName, char *animationName, char *parentName, char *pathName, int xpos, int ypos, int absolutePosition)

creatorName: любое доступное имя для актёра.
animationName: анимация, действительная для имени актера или "no animation" (без анимации).
parentName: имя любого актёра (включая "Event Actor", "Collide Actor", "Parent Actor", "Creator Actor" и "no parent" (без родителя)).
pathName: имя любого пути (включая "no path" (без пути) и "random path" (случайный путь)).
x,y: начальное положение нового актёра.
absolutePosition: абсолютное положение (true - истина или false - ложь).
Возвращает актёра при успехе, недействтельного актёра (с индексом клона cloneindex = -1 и именем name = "") при ошибке.

Синтаксис редактора скриптов:
CreateActor("GamePaddle", "Paddle_Animation", "no parent", "no path", 0, 0, false);

CreateTimer: Создаёт новый таймер.
Возвращает 1 при успехе, 0 при ошибке.

int CreateTimer(char *actorName, char *timerName, int milliseconds)

timerName: имя нового таймера. (Имя нового таймера должно быть перед этим определено в панели Create new timer)
milliseconds: время нового таймера в милисекундах (1/1000 секунды).
actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
CreateTimer("Event Actor", "MyTimer", 2000)

DestroyActor: Уничтожает актёра в игре.

int DestroyActor(char *actorName)
Возвращает 1 при успехе, 0 при ошибке.

actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
DestroyActor("Ball.2"); //Уничтожает актёра с именем Ball.2
DestroyActor("Ball"); //Уничтожает всех актёров c именем Ball

DestroyTimer: Уничтожьте именованный таймер. Должен быть вызван в актёре, у которого есть активный таймер.

int DestroyTimer(char *timerName)
Возвращает 1 при успехе, 0 при ошибке.

timerName: имя таймера

Синтаксис редактора скриптов:
DestroyTimer("MyTimer");

EventDisable: Отключает событие актёра.

int EventDisable(char *actorName, unsigned long event)
Возвращает 1 при успехе, 0 при ошибке.

Следующие события могут быть отключены при помощи EventDisable:
EVENTMOUSEBUTTONDOWN - клавиша мыши нажата 
EVENTMOUSEBUTTONUP - клавиша мыши отпущена
EVENTMOUSEENTER - мышь входит в область
EVENTMOUSELEAVE - мышь покидает область
EVENTANIMATION - анимация
EVENTANIMATIONFINISH - конец анимации
EVENTPATHFINISH - конец пути
EVENTMOVEFINISH - конец движения
EVENTKEYDOWN - клавиша нажата
EVENTKEYUP - клавиша отпущена
EVENTTIMER - таймер
EVENTCOLLISION  - столкновение
EVENTCOLLISIONFINISH - конец столкновения
EVENTCREATE - создание
EVENTDESTROYACTOR - уничтожение
EVENTOUTOFVISION - вне поля видимости
EVENTACTIVATIONEVENT - событие активации
EVENTALL - все события

actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
EventDisable("Event Actor", EVENTMOUSEBUTTONDOWN);

EventEnable: Включает событие актёра.

int EventEnable(char *actorName, unsigned long event)

Следующие события могут быть включены при помощи EventEnable:
EVENTMOUSEBUTTONDOWN - клавиша мыши нажата 
EVENTMOUSEBUTTONUP - клавиша мыши отпущена
EVENTMOUSEENTER - мышь входит в область
EVENTMOUSELEAVE - мышь покидает область
EVENTANIMATION - анимация
EVENTANIMATIONFINISH - конец анимации
EVENTPATHFINISH - конец пути
EVENTMOVEFINISH - конец движения
EVENTKEYDOWN - клавиша нажата
EVENTKEYUP - клавиша отпущена
EVENTTIMER - таймер
EVENTCOLLISION  - столкновение
EVENTCOLLISIONFINISH - конец столкновения
EVENTCREATE - создание
EVENTDESTROYACTOR - уничтожение
EVENTOUTOFVISION - вне поля видимости
EVENTACTIVATIONEVENT - событие активации
EVENTALL - все события
Возвращает 1 при успехе, 0 при ошибке.

actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
EventEnable("Event Actor", EVENTMOUSEBUTTONDOWN);

FollowMouse: Заставляет актёра следовать за мышью по осям (X_AXIS - ось X, Y_AXIS - ось Y, BOTH_AXIS - обе оси X и Y, NONE_AXIS - без осей).

int FollowMouse(char *actorName, int axis)
Возвращает 1 при успехе, 0 при ошибке.

actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
FollowMouse("GamePaddle", X_AXIS);

getAccelerometer: Получение значений акселерометра (получение значений осей джойстика).

Vector getAccelerometer()

Vector - это структура со следующими переменными:

x: -1.0 до 1.0
y: -1.0 до 1.0
z: -1.0 до 1.0

Синтаксис редактора скриптов:
Vector v = getAccelerometer();
x = v.x;

MoveTo: Перемещение актёра в заданное положение с заданной скоростью.

int MoveTo(char *actorName, double x, double y, double velocity, char *relativeActor, char *avoidActor)
Возвращает 1 при успехе, 0 при ошибке.

velocity: Скорость перемещения.
actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

x, y: положение для перемещения относительно relativeActor.

relativeActor: Относительный актёр

The Actor can be moved relative to the game center (absolute coordinate), relative to mouse or any Actor in the game.

Доступные значения:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Если существует, родительский актёр актёра текущего события.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- "Mouse Position": Перемещение актёра относительно текущей позиции мыши.
- "Game Center": Перемещение актёра относительно игровых координат.
- Любой актёр в игре.

avoidActor: Актёр которого надо обходить или избегать
Доступные значения:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Примеры:

1) Перемещение актёра события вправо на 10 позиций (x = x + 10):
MoveTo("Collide Actor", 10, 0, 1000, "Event Actor", "");
(используем высокую скорость для мгновенного перемещения)

2) Перемещаем вид в позицию игрока (view.x = player.x; view.y = player.y;):
MoveTo("view", 0, 0, 1, "player", "");

3) Перемещаем игрока в положение мыши:
MoveTo("player", 0, 0, 1, "Mouse Position", "");

4) Перемещаем игрока в позицию мыши, обходя озёра (lakes) на поверхности:
MoveTo("player", 0, 0, 1, "Mouse Position", "lake");

PhysicalResponse: Выполняет физический отскок между участниками столкновения.

int PhysicalResponse(int moveType, int massType, double massEventActor, double massCollideActor, double eventVelocityMultiplier, double collideVelocityMultiplier)
Возвращает 1 при успехе, 0 при ошибке.

-moveType: тип перемещения MOVE_EVENT_ACTOR_ONLY - перемещать только актёра события, MOVE_COLLIDE_ACTOR_ONLY - перемещать только актёра столкновения, MOVE_BOTH_ACTORS - перемащать обоих актёров.
-massType: тип массы USE_CALCULATED_MASS - использовать рассчитанную массу, USE_SPECIFIED_MASS - использовать указанную массу.
-massEventActor, massCollideActor:
Когда massType = USE_CALCULATED_MASS, используйте это значение, чтобы вычислить множитель массы.
Когда massType = USE_SPECIFIED_MASS, используйте это значение, чтобы задать массу.
(Значения должны быть > 0.0)
eventVelocityMultiplier, collideVelocityMultiplier: Конечные множители скорости для актёров события и столкновения.

Синтаксис редактора скриптов:
PhysicalResponse(MOVE_EVENT_ACTOR_ONLY, USE_CALCULATED_MASS, 1.000000,1.000000, 1.000000, 1.000000);

PlayMusic: Проигрывает музыкальный файл.

int PlayMusic(char *soundPath, double volume, int loop)

-soundPath: Путь к звуковому файлу относительно директории игры
-volume: Громкость от 0.0 до 1.0
-loop: Сётчик повторов ( от 1 до 65000 или 0 для бесконечного цикла)
Возвращает 1 при успехе, 0 при ошибке.

Синтаксис редактора скриптов:
PlayMusic("data/MyMusic.wav", 1.0, 1);

PlayMusic2: Воспроизведение музыкального файла с возможностью определения приоритета музыки.

int PlayMusic2(char *soundPath, double volume, int loop, int priority)

-soundPath: Путь к звуковому файлу относительно директории игры
-volume: Громкость от 0.0 до 1.0
-loop: Сётчик повторов ( от 1 до 65000 или 0 для бесконечного цикла)
-priority: Приоритет HIGH_PRIORITY_MUSIC - высокий, MEDIUM_PRIORITY_MUSIC - средний или LOW_PRIORITY_MUSIC - низкий.
Возвращает 1 при успехе, 0 при ошибке.

Синтаксис редактора скриптов:
PlayMusic2("C:\\WINDOWS\\Media\\MyMusic2.wav", 1.000000, 1, HIGH_PRIORITY_MUSIC);

PlaySound: Проигрывает звуковой файл.

int PlaySound(char *soundPath, double volume, int loop)

-soundPath: Путь к звуковому файлу относительно директории игры
-volume: Громкость от 0.0 до 1.0
-loop: Сётчик повторов ( от 1 до 65000 или 0 для бесконечного цикла)
Возвращает номер выделенного канала при успехе, 0 при ошибке.

Синтаксис редактора скриптов:
PlaySound("data/tada.wav", 1.000000, 3);

PlaySound2: Воспроизведение звукового файла с возможностью панорамирования.

int PlaySound2(char *soundPath, double volume, int loop, double pan)

-soundPath: Путь к звуковому файлу относительно директории игры
-volume:  Громкость от 0.0 до 1.0
-pan: Панарамирование от -1.0 (полностью слева) до 1.0 (полностью справа)
-loop: Сётчик повторов ( от 1 до 65000 или 0 для бесконечного цикла)
Возвращает номер выделенного канала при успехе, 0 при ошибке.

Синтаксис редактора скриптов:
PlaySound2("data/tada.wav", 1.000000, 1, 0.000000);

ToAnteriorPosition: Перемещает актёра в положение в котором он был в предыдущем кадре.

int ToAnteriorPosition(char *actorName)
Возвращает 1 при успехе, 0 при ошибке.

actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
ToAnteriorPosition("Event Actor");

VisibilityState: Состояние видимости.

int VisibilityState(char *actorName, int state)

state: ENABLE - включено, DISABLE - отключено и DONT_DRAW_ONLY (Не рисовать, но разрешить события)
Возвращает 1 при успехе, 0 при ошибке.

actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Родительский актёр для актёра текущего события, если существует.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
VisibilityState("GameGhost", ENABLE);


Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #16 : 18 Март 2018, 22:03:07 »
Функции рисования

Функции рисования могут быть использованы в действиях актёра типа холст (Canvas).
Координаты (x, y) относительны левого верхнего угла актёра.

draw_from: Рисует текущее изображение актёра на актёре типа холст (не работает с тайловыми или текстовыми актёрами)

void draw_from(const char *actorname, int x, int y, double scale)

actorname: Имя актёра текущий кадр которого будет нариован на актёре типа холст.
x: Координата по оси x для рисуемого изображения.
y: Координата по оси y для рисуемого изображения.
scale: Масштаб рисуемого изображения (больше чем 0.0)

Синтаксис редактора скриптов:
draw_from("player", 0, 1, 1.0);

setpen: Устанавливает перо для актёра события.

void setpen(int r, int g, int b, double transp, int pensize)

r: компонент красного  (0 - 255)
g: компонент зелёного  (0 - 255)
b: компонент синего  (0 - 255)
transp: прозрачность (0.0 - 1.0)
pensize: размер пера

Синтаксис редактора скриптов:
setpen(0, 255, 0, 0.0, 3); // устанавливаем цвет пера зелёным, без прозрачности, размером 3

moveto: Перемещает перо актёра события в координаты (x, y).

void moveto(int x, int y)

Синтаксис редактора скриптов/пример:
screen_to_actor(&xmouse,&ymouse) //получение координат мыши
moveto(xmouse,ymouse); //перемещение пера по координатам мыши

lineto: Рисует линию на актёре события к координатам (x, y), используя актуальное перо.

void lineto(int x, int y)

Синтаксис редактора скриптов:
setpen(255,255,255,0,3);
lineto (50,50);

Пример:
if (draw == 1)
{
screen_to_actor(&xmouse, &ymouse); //получаем координаты мыши на экране, и преобразуем их в координаты актёра
lineto(xmouse, ymouse); //рисуем линию к координатам мыши
}

putpixel: Рисует одиночный пиксель на актёре события в координатах (x, y), используя актуальное перо.

void putpixel(int x, int y)

Синтаксис редактора скриптов:
putpixel(0, 0);

erase:  Стирает всего актёра указанным цветом.

void erase(int r, int g, int b, double transp)

-r: компонент красного (0 - 255)
-g: компонент зелёного  (0 - 255)
-b: компонент синего  (0 - 255)
-transp: прозрачность (0.0 - 1.0)

Синтаксис редактора скриптов:
erase(0, 0, 0, .5);

screen_to_actor: Конвертирует из координат экрана в координаты актёра. (Используйте screen_to_actor(&xmouse, &ymouse); чтобы конвертировать координаты мыши в координаты текущего актёра. Например, эту функцию можно использовать для рисования в нужном месте на актёре типа холст.)

void screen_to_actor(int *x, int *y)

Синтаксис редактора скриптов:
screen_to_actor(&xmouse, &ymouse); //конвертируем координаты мыши в координаты текущего актёра.

actor_to_screen: Конвертирует координаты из актёра в координаты экрана.

void actor_to_screen(int *x, int *y)

Синтаксис редактора скриптов:
actor_to_screen(&xmouse, &ymouse); //ковертируем координаты из актёра (в данном случае мыши) в координаты экрана.

savecanvas: Сохраняет состояние актёра типа холст в память.

void savecanvas()

Синтаксис редактора скриптов:
savecanvas();

restorecanvas: Восстанавливает состояние актёра типа холст из памяти.

void restorecanvas()

Синтаксис редактора скриптов:
restorecanvas();

Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #17 : 18 Март 2018, 22:27:03 »
Звуковые функции

Звуковые функции используют канал, возвращаемый PlayMusic, PlayMusic2, PlaySound, PlaySound2.

setPan: Устанавливает панораму звуков (не работает с музыкой).

channel: номер канала. Используйте 0 для воздействия на все звуковые каналы, кроме музыки 
pan: панорама от -1.0 (полностью слева) до 1.0 (полностью справа)
void setPan(int channel, double pan)

Синтаксис редактора скриптов:
setPan(channel, -1);

setVolume: Устанавливает громкость звука или музыки.

channel: номер канала. Используйте 0 для воздействия на все звуковые каналы, кроме музыки
volume: громкость от 0.0 до 1.0
void setVolume(int channel, double volume)

Синтаксис редактора скриптов:
setVolume(channel, .5);

stopSound: Остановка звука или музыки, воспроизводимой на указанном канале.

channel: номер канала. Используйте 0 для воздействия на все звуковые каналы, кроме музыки
void stopSound(int channel)

Синтаксис редактора скриптов:
stopSound(channel);

Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #18 : 19 Март 2018, 04:10:30 »
Функции сохранения

Используйте saveVars и loadVars для сохранения и загрузки любых переменных в игре, таких как очки, текущие события и т.д. Чтобы использовать эти функции, вы должны использовать поле "Save group" (сохранить группу) на панели "Add New Variable" (кнопка Variables в редакторе скриптов).

saveVars: Сохраняет все переменные группы в указанный файл.

Файл будет сохранен в директории игры.

void saveVars(char *file, char *group)

Используйте saveVars для сохранения любых переменных в игре, таких как очки, текущие события и т.д.
Вы должны использовать поле "Save group" (сохранить группу) на панели "Add New Variable" (кнопка Variables в редакторе скриптов).

Синтаксис редактора скриптов:
saveVars("game.sav", "High Score");

loadVars: Загружает все группы переменных из указанного файла.

void loadVars(char *file, char *group)

Синтаксис редактора скриптов:
loadVars("game.sav", "High Score");

Пример:
1. Создайте переменную "score" (очки) и добавьте её в группу "High Score" (рекордные очки).
2. Создайте ещё две переменных: "lives" (количество жизней) и "energy" (энергия). Добавьте эти переменные в группу "Actor State" (состояние актёра).

Когда игрок погибает, используйте saveVars("game.sav", "High Score"), чтобы сохранить текущие очки игрока без сохранения состояния игрока.
Когда пользователь выходит из игры, используйте saveVars("game.sav", "Actor State"), чтобы сохранить текущее состояние игрока (количество жизней и энергию).

Примечание: различные группы переменных могут быть сохранены в одном и том же файле (game.sav).
Потом используйте loadVars("game.sav", "High Score"), и loadVars("game.sav", "Actor State") в нужной вам области в редакторе скриптов игры!

Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #19 : 07 Апрель 2018, 12:04:06 »
Функции контроля игры

LoadGame: Загружает новую игру.

int LoadGame(char *gamePath)

gamePath: полный путь к игре или относительно текущей директории игры.
Возвращает 1 при успехе, 0 при ошибке.

Синтаксис редактора скриптов:
LoadGame("Level1.ged");

В редакторе скриптов будет загружен Level1.ged.
В вашей исполняемом файле игры будет загружен Level1.exe или Level1.dat.

ExitGame: Завершение игры и возвращение в систему.

int ExitGame()
Возвращает 1 при успехе, 0 при ошибке.

Синтаксис редактора скриптов:
ExitGame();

SuspendGame: Приостанавливает игру и прекращает принимать какие-либо события.

void SuspendGame()
Синтаксис редактора скриптов:
SuspendGame();

Показывает панель задач на Pocket PC.
Продолжает игру только в том случае, если игра попадает в фокус (когда пользователь нажимает на окно строки заголовка игры или использует Alt + Tab или если пользователь нажимает кнопку [Continue] ([Продолжить]) на Pocket PC, Handheld PC и Smartphone).

PauseGameOff: Продолжает игру, которая была приостановлена ​​функцией PauseGameOn (). См. Пример ниже в PauseGameOn.

void PauseGameOff()

Пример кода редактора скриптов:
1) Когда пользователь хочет приостановить игру, создайте свой «pauseActor»: "Paused - Click To Resume" ("Приостановлено - нажмите Возобновить").
2) В событии Create Actor (Создать актёра) у актёра «pauseActor» добавьте действие  Script Editor (редактор скриптов) со следующим кодом:
PauseGameOn();
3) В событии  Mouse Button Down (Кнопка мыши нажата) добавьте действие Script Editor (редактор скриптов) со следующим кодом:
PauseGameOff();
DestroyActor("Event Actor");

PauseGameOn: Приостанавливает игру, но продолжает получать события клавиатуры и мыши. Это делается для того, чтобы вы смогли вызвать PauseGameOff () в случае нажатия клавиатуры или действий мыши.

void PauseGameOn()

Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #20 : 12 Апрель 2018, 15:31:44 »
Функции клавиатуры

getKeyText: Возвращает текстовое описание клавиши.

char *getKeyText(int key)

Синтаксис редактора скриптов:
int keyCode = getLastKey(); //получить последнюю нажатую клавишу.
strcpy(myactor.text, getKeyText(keyCode)); //получить текст клавиши (getKeyText) и скопировать его (strcpy) в myactor.

getLastKey: Возвращает последнюю нажатую клавишу.

int getLastKey()

Синтаксис редактора скриптов:
int selectedKey = getLastKey(); //"selectedKey" - это переменная, используемая для хранения последней нажатой клавиши с использованием функции getLastKey (). Можно использовать любое имя переменной.
Примечание. Функция getLastKet () вернет последнюю нажатую клавишу после переназначения.
Таким образом, если пользователь нажимает клавишу "T", и вы предварительно переназначили клавишу "T" на клавишу "вправо", getLastKey () вернет клавишу "вправо".

Чтобы избежать такого поведения, как в этом примере, вам нужно удалить переназначение, используя:
remapKey(KEY_t, KEY_t);

remapKey: Переназначает одну клавишу (fromKey) на другую клавишу (toKey) (Определяемые пользователем клавиши). Используйте эту функцию, чтобы переназначить любые клавиши.

void remapKey(int fromKey, int toKey)

Все переназначения будут удалены после использования LoadGame()

Синтаксис редактора скриптов:

Для примера:
Актёр в игре стреляет после нажатия на KEY_RCTRL.
Если вы хотите, чтобы ваш пользователь мог изменить эту клавишу управления в настройках игры,
То используете событие KeyDown и поместите в редактор скриптов следующее:
remapKey(getLastKey(), KEY_RCTRL); //KEY_RCTRL это клавиша которая будет переназначена.

Теперь клавиша, нажатая пользователем, будет перенаправлена ​​на KEY_CTRL. Функция remapKey () позволяет сохранить исходную игровую клавишу по умолчанию.

GetKeyState: Возвращает массив состояния клавиатуры.

char *GetKeyState()

Синтаксис редактора скриптов:
char *key = GetKeyState(); // "key" - это переменная, используемая для хранения функции GetKeyState (). Можно использовать любое имя переменной.

Пример:
Когда клавиша влево или вправо нажата в событии «Draw Actor», следующий код перемещаёт актёра влево или вправо.
1) Создайте актёра
2) Добавте ему событие "Draw actor"
3) Добавте код в редакторе скриптов

Код:
char *key = GetKeyState(); //Получаем полное состояние клавиатуры

if(key[KEY_RIGHT] == 1) //Проверка, нажата ли клавиша вправо
{
x = x + 5; //Перемещаем актёра вправо
}

if(key[KEY_LEFT] == 1) //Проверка, нажата ли клавиша влево
{
x = x - 5; //Перемещаем актёра влево
}

Доступные записи клавиш:
KEY_BACKSPACE
KEY_TAB
KEY_CLEAR
KEY_RETURN
KEY_PAUSE
KEY_ESCAPE
KEY_SPACE
KEY_EXCLAIM
KEY_QUOTEDBL
KEY_HASH
KEY_DOLLAR
KEY_AMPERSAND
KEY_QUOTE
KEY_LEFTPAREN
KEY_RIGHTPAREN
KEY_ASTERISK
KEY_PLUS
KEY_COMMA
KEY_MINUS
KEY_PERIOD
KEY_SLASH
KEY_0
KEY_1
KEY_2
KEY_3
KEY_4
KEY_5
KEY_6
KEY_7
KEY_8
KEY_9
KEY_COLON
KEY_SEMICOLON
KEY_LESS
KEY_EQUALS
KEY_GREATER
KEY_QUESTION
KEY_AT
KEY_LEFTBRACKET
KEY_BACKSLASH
KEY_RIGHTBRACKET
KEY_CARET
KEY_UNDERSCORE
KEY_BACKQUOTE
KEY_a
KEY_b
KEY_c
KEY_d
KEY_e
KEY_f
KEY_g
KEY_h
KEY_i
KEY_j
KEY_k
KEY_l
KEY_m
KEY_n
KEY_o
KEY_p
KEY_q
KEY_r
KEY_s
KEY_t
KEY_u
KEY_v
KEY_w
KEY_x
KEY_y
KEY_z
KEY_PAD_0
KEY_PAD_1
KEY_PAD_2
KEY_PAD_3
KEY_PAD_4
KEY_PAD_5
KEY_PAD_6
KEY_PAD_7
KEY_PAD_8
KEY_PAD_9
KEY_PAD_PERIOD
KEY_PAD_DIVIDE
KEY_PAD_MULTIPLY
KEY_PAD_MINUS
KEY_PAD_PLUS
KEY_PAD_ENTER
KEY_PAD_EQUALS
KEY_UP
KEY_DOWN
KEY_RIGHT
KEY_LEFT
KEY_INSERT
KEY_HOME
KEY_END
KEY_PAGEUP
KEY_PAGEDOWN
KEY_F1
KEY_F2
KEY_F3
KEY_F4
KEY_F5
KEY_F6
KEY_F7
KEY_F8
KEY_F9
KEY_F10
KEY_F11
KEY_
KEY_F13
KEY_F14
KEY_F15
KEY_NUMLOCK
KEY_CAPSLOCK
KEY_SCROLLOCK
KEY_RSHIFT
KEY_LSHIFT
KEY_RCTRL
KEY_LCTRL
KEY_RALT
KEY_LALT
KEY_RMETA
KEY_LMETA
KEY_LWINDOWS
KEY_RWINDOWS
KEY_ALT_GR
KEY_HELP
KEY_PRINT
KEY_SYSREQ
KEY_BREAK
KEY_MENU
KEY_MAC_POWER
KEY_EURO
KEY_POCKET_UP
KEY_POCKET_DOWN
KEY_POCKET_LEFT
KEY_POCKET_RIGHT
KEY_POCKET_A
KEY_POCKET_B
KEY_POCKET_C
KEY_POCKET_START
KEY_POCKET_AUX1
KEY_POCKET_AUX2
KEY_POCKET_AUX3
KEY_POCKET_AUX4
KEY_POCKET_AUX5
KEY_POCKET_AUX6
KEY_POCKET_AUX7
KEY_POCKET_AUX8
KEY_GP2X_BUTTON_UP
KEY_GP2X_BUTTON_DOWN
KEY_GP2X_BUTTON_LEFT
KEY_GP2X_BUTTON_RIGHT
KEY_GP2X_BUTTON_UPLEFT
KEY_GP2X_BUTTON_UPRIGHT
KEY_GP2X_BUTTON_DOWNLEFT
KEY_GP2X_BUTTON_DOWNRIGHT
KEY_GP2X_BUTTON_CLICK
KEY_GP2X_BUTTON_A
KEY_GP2X_BUTTON_B
KEY_GP2X_BUTTON_X
KEY_GP2X_BUTTON_Y
KEY_GP2X_BUTTON_L
KEY_GP2X_BUTTON_R
KEY_GP2X_BUTTON_START
KEY_GP2X_BUTTON_SELECT
KEY_GP2X_BUTTON_VOLUP
KEY_GP2X_BUTTON_VOLDOWN

Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #21 : 21 Апрель 2018, 19:57:57 »
Вспомогательные функции

ActorCount: Возвращает число актёров с именем actorName.

actorName:
- Любой актёр в игре.

Синтаксис редактора скриптов:
( ActorCount("metalBlock1") == 1)\\общее количество в настоящее время активных актёров ==1.

Загрузите демонстрационный пример breakout  и перейдите в событие DestroyActor (уничтожение актёра) metalBlock1, чтобы видеть эту функцию в действии.

CollisionFree: Проверяет, свободна ли позиция (x, y) для актёра с именем аctorName. Возвращает 1, если нет столкновения, в противном случае возвращает 0.

int CollisionFree(char *actorName, int x, int y)

actorName:
- "Event Actor": Актёр, который получает текущее событие.
- "Parent Actor": Если существует, родительский актёр актёра текущего события.
- "Creator Actor": Создатель актёра текущего события, если актёр текущего события был создан в каком-либо действии «Create Actor».
- "Collide Actor": Актёр, который столкнулся с актёром текущего события.
- Любой актёр в игре.

Синтаксис редактора скриптов:
if (CollisionFree("Event Actor", x, y+5)) y=y+5; //В редакторе скриптов для события нажатия клавиши (KeyDown) проверяем, не возникает столкновения перед перемещением актера на 5 пикселей.

SendActivationEvent: Отправляет событие активации (ActivationEvent) клону актёра.

int SendActivationEvent(char *cloneName)
Возвращает 1 при успехе, 0 при ошибке.

cloneName: имя_актёра.индекс_клона (Например: ship.1, ship.2, ...)

SendActivationEvent("ship.1"); //отправляем ActivationEvent (событие активации) на клон актёра ship с номером индекса 1.

radtodeg:  Преобразует угол (angle) из радиан в градусы.

double radtodeg(double angle)

degtorad: Преобразует угол (angle) из градусов в радианы.

double degtorad(double angle)

Синтаксис редактора скриптов:
myactor.textNumber= degtorad(angle);

direction: Возвращает направление между точками (x1, y1) и (x2, y2) (в градусах от 0 до 360, от положительной оси x, против часовой стрелки).

double direction(double x1, double y1, double x2, double y2)

Синтаксис редактора скриптов:
textNumber= direction(x, y, player.x, player.y);

distance: Возвращает расстояние между точками (x1, y1) и (x2, y2).

double distance(double x1, double y1, double x2, double y2)

Синтаксис редактора скриптов:
textNumber= distance(x, y, player.x, player.y);

getAllActorsInCollision: Возвращает массив из актёров, который включает всех актёров столкнувшихся с актёром cloneName,  или NULL, если нет столкновений.
Количество актёров будет возвращено в  nActors.

Actor *getAllActorsInCollision(char *cloneName, int *nActors)

cloneName: имя_актёра.индекс_клона (Например: ship.1, ship.2, ...), "Event Actor", "Collide Actor", "Parent Actor" или "Creator Actor"
Возвращаемый массив будет действителен до следующего вызова getAllActorsInCollision.
Возвращаемый массив доступен только для чтения.

Синтаксис редактора скриптов:
getAllActorsInCollision("Event Actor",&num);

Например, чтобы сделать "Event Actor" родительским для всех столкнувшихся с ним актёров:

int n;
Actor *actors;
actors = getAllActorsInCollision("Event Actor", &n);
if(actors)
{
int i;
for(i = 0; i < n; i++)
{
ChangeParent(actors.clonename, "Event Actor");
}
}

getAnimIndex: Получает индекс анимации для текущего Event Actor.
Возвращает индекс анимации при успехе, -1 при ошибке.

int getAnimIndex(char *animName)

animName: действительное имя анимации для текущего Event Actor.

Синтаксис редактора скриптов:
getAnimIndex("palette");

Пример:
1. Создайте два актёра: "number" и "myImages".
2. Сделайте актёра с именем "number" текстовым. Используйте "0" в его тексте.
3. Назначьте 3 анимации актёру «myImages».
4. У актёра «myImages» добавте событие: Create Actor -> Script Editor
5. Введите следующий код:
number.textNumber= getAnimIndex("myAnimation2");

getAnimName: Возвращает имя анимации текущего Event Actor.
Возвращает имя анимации при успехе, "" при ошибке.

char *getAnimName(int animIndex)

animIndex: индекс анимации в Event Actor.

Синтаксис редактора скриптов:
strcpy(text, getAnimName(0));

getactor: Возвращает актёра в позиции (x,y) (в координатах игры) при успехе.  При ошибке возвращает недействительного актёра (с индексом клона = -1 и именем = "").

Actor *getactor(int x, int y)

Синтаксис редактора скриптов:
Actor *MyActor;
MyActor=getactor(x,y);

getclone: Возвращает актёра с именем cloneName.

Actor *getclone(char *cloneName)

cloneName: имя_актёра.индекс_клона
(Например: ship.1, ship.2, ...)
Возвращает актёра при успехе. При ошибке возвращает недействительного актёра (с индексом клона = -1 и именем = "").

getTime: Получает системные дату и время.

stTime getTime();

stTime - это структура со следующими полями:
sec: Секунды после минуты (0 - 59)
min: Минуты после часа (0 - 59)
hour: Часы с полуночи (0 - 23)
mday: День месяца (1 - 31)
mon: Месяц (1 - 12; Январь = 1)
year: Год (текущий год)
wday: День недели (0 - 6; Воскресенье = 0)
yday: День года (0 - 365)
sec_utc: Количество секунд, прошедших с полуночи (00:00:00), 1 января 1970 года (согласованное универсальное время)

Синтаксис редактора скриптов:
stTime t = getTime();
textNumber = t.sec; //показать секунды
Скачайте пример здесь.
 
openUrl: Открывает веб-страницу.

Синтаксис редактора скриптов:
openUrl("http://game-editor.com");

round: Возвращает значение аргумента arg, округленное до ближайшего целого. Однако число возвращается как значение с плавающей запятой. Значения точно между двумя значениями, такими как 3.5, округляются к большему.

double round(double arg);

max: Возвращает большее из двух значений.

double max(double a, double b)

min: Возвращает меньшее из двух значений.

double min(double a, double b)

rand: Генерирует последовательность псевдослучайных чисел. Каждый раз, когда вызывается, возвращается число от нуля до max.

double rand (double max);

vectoradd: Добавляет вектор2 (угол2, величина2) в вектор1 (угол1, величина1) и возвращает результат в вектор1 (углы в градусах).

void vectoradd(double *angle1, double *magnitude1, double angle2, double magnitude2).
Скачайте пример здесь.

Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #22 : 21 Апрель 2018, 20:09:22 »
Функции идентификации устройства

getHardwareID: Возвращает строку, которая может однозначно идентифицировать устройство.

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

Возвращает пустую строку для настольных ПК, или при возникновении какой-либо ошибки.

char *getHardwareID();

Синтаксис редактора скриптов:
strcpy(text, getHardwareID());

getOwner: Возвращает имя владельца устройства.

Используйте эту функцию, чтобы получить имя владельца Pocket PC, Handheld PC или смартфона.
Возвращает пустую строку для настольных ПК, или при возникновении какой-либо ошибки.

char *getOwner();

Синтаксис редактора скриптов:
strcpy(text, getOwner());

Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #23 : 23 Апрель 2018, 17:53:05 »
Стандартные функции языка Си

Для получения более подробной информации обратитесь к  Справочнику программиста Си

abs: Возвращает абсолютное (положительное) значение числа.

int abs(int num);

Синтаксис редактора скриптов:
int num =-5;
myactor.textNumber=abs(num);

acos: Возвращает арккосинус аргумента arg.

double acos (double arg);

Примечание. Аргумент acos () должен находиться в диапазоне от -1 до 1: в противном случае произойдет ошибка диапазона.

asin: Возвращает арксинус аргумента arg.
double asin (double arg);

Примечание. Аргумент asin() должен находиться в диапазоне от -1 до 1: в противном случае произойдет ошибка диапазона.

atan: Возвращает арктангенс аргумента arg.

double atan (double arg);

atan2: Возвращает арктангенс из a/b. Таким образом можно определить квадрант, в котором находится угол.

double atan2(double a, double b);

atof: Преобразует строку, на которую указывает str, в значение double.

double atof (const char *str);

Строка должна содержать допустимое число с плавающей точкой. В противном случае возвращаемое значение не определено. После числа может следовать любой символ, который не может быть частью допустимого числа с плавающей точкой. Имеются в виду пробелы, символы табуляции и пустой строки, знаки препинания (но не точки) и символы, отличные от буквы "Е" или "е". Это значит, что, если функция atof() вызывается с аргументом "100.00HELLO", будет возвращено значение 100.00.

atoi: Преобразует строку, на которую указывает str, в значение int.

int atoi (const char * str);

Cтрока должна содержать допустимое целое число. В противном случае возвращаемое значение не определено. После числа может следовать любой символ, который не может быть частью целого числа. Имеются в виду пробелы, символы табуляции и пустой строки, знаки препинания и буквы. Это значит, что, если функция atoi() вызывается с аргументом "123.23", будет возвращено целое значение 123, а подстрока ".23" будет проигнорирована.

atol: Преобразует строку, на которую указывает str, в значение long int.

long atol (const char * str);

Строка должна содержать допустимое целое число. В противном случае возвращаемое значение не определено. После числа может следовать любой символ, который не может быть частью целого числа. Имеются в виду пробелы, символы табуляции и пустой строки, знаки препинания и буквы. Это значит, что, если функция atol() вызывается с аргументом "123.23", будет возвращено длинное целое значение 123L, а подстрока ".23" будет проигнорирована.

calloc: Выделяет память, размер которой равен значению выражения num * size. (Для получения более подробной информации обратитесь к Справочнику программиста Си.)

void * calloc(size_t num, size_t size);

calloc() выделяет память, размер которой равен значению выражения num * size, т.е. память, достаточную для размещения массива, содержащего num объектов размером size. Все биты распределенной памяти инициализируются нулями. Функция calloc() возвращает указатель на первый байт выделенной области памяти. Если для удовлетворения запроса нет достаточного объема памяти, возвращается нулевой указатель. Перед попыткой использовать распределенную память важно проверить, что возвращаемое значение не равно нулю.

ceil: Возвращает наименьшее целое (представленное в виде значения с плавающей точкой), которое больше значения аргумента num или равно ему.

double ceil (double num);

Например, если num равно 3.02, функция ceil() вернет значение 4.0, а при num, равном -3.02, - значение -3.
Синтаксис редактора скриптов:
myactor.textNumber= ceil(3.02);

cos: Возвращает косинус аргумента arg. Значение аргумента arg должно быть в радианах.

double cos (double arg);

cosh: Возвращает гиперболический косинус аргумента arg.

double cosh (double arg);

fclose: Закрывает файл, связанный с потоком stream.

fclose(FILE * stream);

В случае успеха возвращается ноль; в противном случае возвращается EOF. Попытка закрыть файлы, который был закрыт ранее, вызовет ошибку. Удаление носителя памяти перед закрытием файла также приведет к ошибке, как и отсутствие свободного пространства на диске.

feof: Проверяет, достигнут ли конец файла, связанного с потоком  stream.

int feof(FILE * stream);

Если указатель текущей позиции файла установлен на конец файла, возвращается ненулевое значение; в противном случае возвращается нуль. При достижении конца файла последующие операции чтения будут возвращать значение EOF до тех пор, пока не будет вызвана функция rewind() или пока указатель текущей позиции файла не будет установлен на новую позицию с помощью функции fseek(). Функция feof() особенно полезна при работе с двоичными файлами, поскольку маркер конца файла также является полноценным двоичным целым.

fgetc: Возвращает символ, взятый из входного потока stream и находящийся сразу после текущей позиции, а также увеличивает указатель текущей позиции файла.

int fgetc(FILE *stream);

Этот символ читается как значение типа unsigned char, преобразованное в целое. При достижении конца файла функция fgetc() возвращает значение EOF. Ho поскольку значение EOF является действительным целым значением, при работе с двоичными файлами для обнаружения конца файла необходимо использовать функцию feof(). Если функция fgetc() обнаруживает ошибку, она возвращает значение EOF.

fgets: Читает из входного потока stream не более num-1 символов и помещает их в массив символов, адресуемый указателем str.

char *fgets(char *str, int num, FILE *stream);

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

floor:  Возвращает наибольшее целое (представленное в виде значения с плавающей точкой), которое меньше значения аргумента num или равно ему.

double floor(double num);

Например, при num, равном 3.02, функция floor() вернет значение 3.0, а при num, равном -3.02, - значение -3.0.
Синтаксис редактора скриптов:
myactor.textNumber= floor(3.02);

fmod: Возвращает остаток от деления аргументов a/b.

double fmod(double a, double b);

fopen:  Открывает файл, имя которого задается параметром fname, и возвращает указатель на поток, связанный с этим файлом. Типы операций, которые разрешено выполнять с файлом, определяются параметром mode. Путь к файлу должен быть указан относительно директории игры.

FILE *fopen(const char *fname, const char *mode)

Строка символов, которая будет играть роль имени реального файла, должна определять его имя, допустимое в данной операционной системе. Эта строка может включать спецификацию пути, если среда поддерживает такую возможность.
Синтаксис редактора скриптов:

Скрипт для чтения текста из файла:
char textArray[10][256]; //Max 10 text of 255 characters
int nText = 0; //Number of texts read
void readText(char * fileName)
{
char line[256];
FILE *arq = fopen(fileName, "r"); if(arq)
{
while(fgets(line, 255, arq) && nText < 10)
{
if(strlen(line) > 0) //Dont put empty lines
{
strcpy(textArray[nText], line);
nText++;
}
}
}
}

fprintf: Выводит в поток, адресуемый параметром fp, значения аргументов, составляющих список аргументов, в соответствии с заданной строкой формата fmt.

int fprintf(FILE * fp,const char *fmt, ...);

fputc: Записывает символ ch в текущую позицию потока stream, a затем увеличивает указатель текущей позиции файла.

fputc( int ch, FILE *stream);

Хотя на практике при объявлении символа ch он всегда имеет тип int, функцией fputc() тип символа преобразуется в unsigned char. Поскольку в момент вызова символьный аргумент преобразуется к целому типу, в качестве аргументов обычно можно использовать и символьные переменные. При использовании целого значения, старший байт попросту отбрасывается. Значением, возвращаемым функцией fputc(), является значение записанного символа. При возникновении ошибки возвращается значение EOF. Если файл открыт для выполнения операций в двоичном режиме, значение EOF тоже может оказаться символом. Поэтому, чтобы определить, возникла ли ошибка на самом деле, в таких случаях придется использовать функцию ferror().

fputs: Записывает в заданный поток stream содержимое строки, адресуемой указателем str. При этом завершающий нулевой символ (т.е. символ конца строки ('0')) не записывается. При успешном выполнении функция fputs() возвращает неотрицательное значение, а при неудачном - значение EOF.

fputs(const char * str, FILE *stream);

fread: Читает из потока, адресуемого указателем stream, count объектов длиной size байт и размещает их в массиве buf. Затем указатель текущей позиции файла увеличивается на число, равное прочитанному количеству символов. Функция fread() возвращает число реально прочитанных элементов. Если оказалось, что прочитано меньше элементов, чем требовалось при вызове, значит, либо произошла ошибка при выполнении операции, либо был достигнут конец файла. Определить, что именно произошло, можно с помощью функции feof() или ferror().

size_t fread(void *buf, size_t size, size_t count, FILE * stream);

free: Возвращает в динамически распределяемую область памяти блок памяти, адресуемый указателем ptr, после чего эта память становится доступной для выделения в будущем. Обязательно следите, чтобы free() вызывалась только с указателем, который был ранее получен в результате вызова одной из системных функций динамического распределения. Использование недопустимого указателя при вызове, скорее всего, приведет к разрушению механизма управления памятью и, возможно, вызовет крах системы.

void free(void *ptr);

fscanf: Читает информацию из потока, заданного указателем stream. Функция fscanf() возвращает количество аргументов, которым действительно присвоены значения. Это число не включает опущенные поля. Если возвращаемое функцией значение равно EOF, то это свидетельствует о том, что до выполнения первого присваивания произошел сбой.

int fscanf(FILE *stream, const char *format, ...);

fseek: Устанавливает указатель текущей позиции файла, связанного с потоком stream, в соответствии со значениями начала отсчета origin и смещения offset. Назначение этой функции - поддерживать операции ввода/вывода с произвольным доступом. Параметр offset равен количеству байтов, на которые будет смещен внутренний указатель файла относительно начала отсчета, заданного параметром origin. Возвращаемое значение нуля означает, что fseek () преуспел. Значение, отличное от нуля, указывает на сбой. В общем случае fseek () следует использовать только с двоичными файлами.

int fseek(FILE *stream, long int offset, int origin);

ftell: Возвращает текущее значение указателя позиции файла для заданного потока. В случае двоичных потоков это значение равно количеству байтов, которые отделяют указатель от начала файла. Для текстовых потоков возвращаемое значение может не иметь определенной интерпретации за исключением случая, когда оно является аргументом функции fseek().

long int ftell (FILE *stream);

При возникновении ошибки функция ftell() возвращает значение -1.

fwrite: Записывает в поток, адресуемый указателем stream, count объектов длиной size байтов каждый из массива символов, адресуемого указателем buf. Затем указатель текущей позиции файла перемещается вперед на записанное количество символов.

size_t fwrite(const void *buf, size_t size, size_t count, FILE *stream);

Возвращает число реально записанных элементов, которое при успешном выполнении функции будет равно числу затребованных элементов. Если же элементов записано меньше, чем указано при вызове, произошла ошибка.

log: Возвращает значение натурального логарифма аргумента a. Если значение аргумента a отрицательно, возникает ошибка из-за выхода за пределы области допустимых значений (ошибка из-за нарушения области определения). Если же значение a равно нулю, возможна ошибка из-за выхода за пределы диапазона представляемых значений.

double log(double a);

log10: Возвращает значение логарифма по основанию 10  аргумента a. Если значение аргумента a отрицательно, возникает ошибка из-за выхода за пределы области допустимых значений (ошибка из-за нарушения области определения). Если же значение a равно нулю, возможна ошибка из-за выхода за пределы диапазона представляемых значений.

double log10(double a);

malloc: Возвращает указатель на первый байт области памяти размером size, которая была выделена из динамически распределяемой области памяти. Если для удовлетворения запроса в динамически распределяемой области памяти нет достаточного объема памяти, возвращается нулевой указатель. Перед попыткой использовать выделенную память всегда проверяйте, что возвращаемое значение не является нулевым указателем. Попытка использовать нулевой указатель обычно приводит к полному отказу системы.

void *malloc(size_t size);

memcmp: Сравнивает первые count символов массивов, адресуемых параметрами buf1 и buf2. Возвращает целое значение.

int memcmp(const void *buf1, const void *buf2, size_t count);

memcpy: Копирует count символов из массива, адресуемого параметром from, в массив, адресуемый параметром to. Если заданные массивы перекрываются, поведение функции memcopy() не определено. Возвращает значение указателя  на to.

void *memcpy(void *to, const void *from, size_t count);

memmove: Копирует count символов из массива, адресуемого параметром  from, в массив, адресуемый параметром to. Если заданные массивы перекрываются, процесс копирования проходит корректно, т.е. соответствующее содержимое будет помещено в массив to, но содержимое массива  from при этом изменится. Возвращает значение указателя на to.

void *memmove(void *to, const void * from, size_t count);

memset: Копирует младший байт параметра ch в первые count символов массива, адресуемого параметром dest. Функция возвращает значение указателя dest. Чаще всего функция memset() используется для инициализации области памяти некоторым известным значением.

void *memset( void *dest, int ch, size_t count );

pow: Возвращает значение аргумента base, возведенное в степень ехр. Если значение аргумента base равно нулю, а ехр меньше или равно нулю, возможна ошибка из-за выхода за пределы области допустимых значений (ошибка из-за нарушения области определения). Она произойдет также в том случае, если base отрицательно, а ехр не является целым числом. При этом также может возникнуть ошибка из-за выхода за пределы диапазона представимых значений.

double pow(double base, double exp);

realloc: Изменяет размер блока ранее выделенной памяти, адресуемой указателем ptr в соответствии с заданным размером size. Значение параметра size может быть больше или меньше, чем перераспределяемая область. Функция realloc() возвращает указатель на блок памяти, по скольку не исключена необходимость перемещения этого блока (например при увеличении размера блока памяти). В этом случае содержимое старого блока (до size байтов) копируется в новый блок.

void *realloc(void *ptr, size_t size);

sign: Возвращает значение аргумента arg, округленное до ближайшего целого. Однако возвращаемое число представлено в формате с плавающей точкой.

double sign(double arg);

sin: Возвращает синус аргумента arg. Значение аргумента arg должно быть указано в радианах.

double sin(double arg);

sinh: Возвращает гиперболический синус аргумента arg.

double sinh (double arg);

sprintf: Используйте sprintf для смешивания фиксированного текста (например, «Hello ...») с текстом в переменных (например, имя актера, число, ...).

sprintf(youractor.text, "Hello %s", stringvar);

sqrt: Возвращает значение квадратного корня от аргумента num. Если значение аргумента отрицательно, возникает ошибка из-за выхода за пределы области допустимых значений (ошибка из-за нарушения области определения).

double sqrt (double num);

sscanf: Читает данные из массива, на который указывает buf.

int sscanf(const char *buf, const char *format,...);
strcat: Присоединяет к строке str1 копию строки str2 и завершает строку str1 нулевым символом. Конечный нуль-символ, первоначально завершающий строку str1, перезаписывается первым символом строки str2. Строка str2 при этом не изменяется. Если заданные массивы перекрываются, поведение функции strcat() не определено.

char *strcat(char *str1, const char *str2);

strchr: Возвращает указатель на первое вхождение младшего байта параметра ch в строку str. Если указанный символ не найден, возвращается нулевой указатель.

char *strchr(const char *str, int ch);

strcmp: Сравнивает в лексикографическом порядке две строки и возвращает целое значение, зависящее от результата сравнения.

int strcmp(const char *str1, const char *str2);

strcpy: Копирует содержимое строки str2 в строку str1. Параметр str2 должен указывать на строку с завершающим нулевым символом. Функция strcpy() возвращает значение указателя str1. 

char *strcpy(char *str1, const char *str2);

strlen: Возвращает длину строки с нулевым завершением, на которую указывает str. Нулевой символ не засчитывается.

size_t strlen(const char *str);

strncat: Добавляет исходную строку s2 в строку назначения s1, но не более n символов.

char *strncat(char * s1, const char *s2, size_t n)

strncmp: Сравнивает в лексикографическом порядке не более count символов из двух строк, заканчивающихся символом конца строки, и возвращает целое значение, зависящее от результата сравнения.

char *strncmp(char *str1, const char *str2, size_t count);

strncpy: Копирует не более count символов из строки, адресуемой параметром str2, в массив, адресуемый параметром str1. Параметр str2 должен указывать на строку, заканчивающуюся символом конца строки.

char * strncpy(char *str1, const char *str2, size_t count);

tan: Возвращает тангенс аргумента arg. Значение arg должно быть указано в радианах.

double tan (double arg);

tanh: Возвращает гиперболический тангенс аргумента arg.

double tanh(double arg);

Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #24 : 23 Апрель 2018, 18:09:14 »
Так это выглядит в Game Editor.

Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #25 : 23 Апрель 2018, 20:39:11 »
Скрипты в Game Editor

Программирование реализовано с использованием скриптового языка, совместимого с языком Си, и обеспечивает высокий уровень разработки и гибкости.
Скрипты создаются с помощью действия Script Editor.
Редактор скриптов поддерживает подcветку синтаксиса и автоматический отступ для увеличения производительности. Для тех, кто знаком с другими языками программирования, редактор скриптов является эквивалентом интегрированной среды разработки или IDE.
Все действия актёра можно вызывать из скриптов.



Заголовок редактора скриптов:

Строка заголовка редактора скриптов показывает имя актера, чей текущий скрипт в данный момент создаётся. Она также отображает событие, которое вызывает действия скрипта. Функция " L " справа в строке заголовка скрипта, указывает на строку, которая в данный момент редактируется в окне ввода скрипта.



Окно ввода редактора скриптов:

Серая прямоугольная зона - это окно ввода скрипта. Пишите скрипт здесь.



Меню редактора скриптов:

Строка меню редактора скриптов расположена в нижней части области ввода редактора скриптов. Строка меню редактора скриптов предлагает ряд опций для доступа к функциям, доступным для использования в редакторе скриптов. Объяснение каждого пункта меню выглядит следующим образом:

actors (актёры):



Отображает список всех актёров, созданных в игре. Щелчок левой кнопкой мыши на имени актёра вставит имя актёра в окно ввода редактора скриптов.

variables/functions (переменные/функции):



Отображает список всех переменных и функций, доступных для использования в окне ввода редактора скриптов. Для удобства использования щелчок левой кнопкой мыши автоматически вставляет функцию или переменную в окно ввода редактора скриптов.
При выборе действия или функции из списка "variables/functions" в строке меню редактора скриптов появляется соответствующая панель.

Variables (Переменные):



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



Add (Добавить):



- Name (Имя): Имя переменной. Имена переменных должны начинаться с символов и включать в себя символы, цифры или "_". Имена втроенных функций и имена встроенных переменных использовать нельзя. (Пример: MyNewActor можно, но CreateActor нельзя).
- Variable type (Тип переменной): Integer (целая), real (вещественная) (с плавающей точкой) или string (строковая) (макимум 255 символов).
- Variable visibility (Видимость переменной): Глобальная переменная или переменная актёра. Переменные актёра расширяют структуру актёра. Таким образом, доступ к переменной актёра можно получить так же, как и к встроенным переменным актёра. Например, используйте локальную переменнуе актёра, чтобы задать нечто вроде " силы игрока".
- Array (Массив): С помощью этого параметра можно создать глобальный массив переменных. Индексы переменных массива будут между нулем и размером Size.
- Save group (Сохранить в группу): Если вы хотите сохранять или загружать эту переменную с помощью функций saveVars и loadVars, задайте группу, в которой эта переменная будет сохранена.

Global Code (Глобальный код):



Используйте редактор глобального кода, чтобы свободно добавлять любой код на языке Си (массивы, структуры и функции). Для того, чтобы эффективно использовать редактор глобального кода, вашие познания в языке Си сослужат вам хорошую службу.
Глобальный код может быть доступен из любого скрипта.



После ввода кода, введите его название и нажмите на кнопку "Add" ("Добавить").
Редактируйте код, выбрав его в списке "Choose" ("Выбрать"). После внесения необходимых изменений нажмите на кнопку "Add" ("Добавить").
Используйте кнопку "Remove" ("Удалить") для удаления скрипта глобального кода.
Используйте всплывающую панель "File" ("Файл") для сохранения или загрузки скриптов глобального кода.

Примечание: изменение любых локальных переменных актёра (x, y, xscreen, yscreen,...) не влияет на глобальный код.
Чтобы использовать специальных актёров - создателя или родителя, поместите в редактор скриптов вызов (как комментарий: // creator)
 
File (Файл):



Опция File дает возможность загрузить ранее сохраненный скрипт, или сохранить текущий скрипт во внешнем файле.

Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #26 : 23 Апрель 2018, 21:19:36 »
Как работает Game Editor

Основная концепция:

Game Editor основан на событиях и действиях. Это позволяет довольно интуитивно создавать игры. Представьте, что в вашем распоряжении имеется большой стол. Теперь разместите на столе объекты, которые наполняют вашу игру. На этом столе вы можете увидеть всю свою игру в целом, и иметь четкое представление о размещении объектов. Это Game Editor; это ваш большой стол, ваша рабочая область, где вы управляете объектами визуально.

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

Актёры:

Актёры - это ваши объекты, персонажи вашей игры. Каждый актёр может иметь связанную с ним группу анимаций, может быть отслежен другими актёрами, следовать по пути, быть прозрачным, быть текстом, и прочим.

Анимации:

Анимация - это статическое изображение или группа последовательности изображений, которая представляет актёра на экране. Из концепции, можно заметить, что не все анимации на самом деле "анимированы".

События и Действия:

Событие (Event) - это то, что происходит во время игры, например, когда пользователь нажимает клавишу или щелкает мышью, или когда актёр сталкивается с другим.

Действие (Action) - это то, что должно произойти в ответ на событие. Например, когда актёр сталкивается с ракетой, должен быть создан взрыв. Game Editor имеет набор определенных действий, и любые события могут запускать одно или несколько действий.

Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #27 : 23 Апрель 2018, 22:15:15 »

Интерфейс Game Editor

Основной экран редактора

После того как вы закроете панель приветствия, вы увидите экран редактора Game Editor.



Это область, где вы будете создавать свою игру. Представлена как бумага в клеточку.
Размеры и цвет сетки можно изменить, выбрав в меню "Config - > Preferences".

Белый прямоугольник - это особый актёр, называемый "view actor".
Vew actor - это на самом деле камера, отображающая часть вашей игры, которая должна быть показана в данный момент.
Он имеет те же атрибуты, как и у созданного пользователем актёра, за исключением того, что не может иметь анимаций, связанных с ним.

Размер vew actor - это разрешение экрана вашей игры: 1024X768, 240 X 320 и т.д.
Разрешение экрана можно изменить с помощью меню "Config -> Game Properties".

Панель управления актёром

С помощью панели управления актёром вы можете контролировать поведение актёра. Рассмотрим эту панель позже.


Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #28 : 11 Май 2018, 15:55:52 »

Главное меню редактора

File (Файл)




New Game (Новая игра): Очищает текущую игру и начинает разработку новой игры.

Load (Загрузить): Очищает текущую игру и загружает ранее сохраненную игру.

Merge (Объединить): Объединяет текущую игру с загружаемой игрой. (Если загружаемая игра имеет актёра с таким же имением как у актёра в текущей игре, то результат объединения будет непредсказуем.)

Save (Сохранить): Сохраняет изменения, внесённые в текущий файл.

Save As (Сохранить как): Сохраняет текущую игру в иное местоположение или с другим именем файла.

При сохранении игры, все анимации, шрифты и звуки перемещаются в папку, которая автоматически создаётся с именем "data" ("данные"). Эта папка находится в каталоге игры.

Export (Экспорт): Создаёт исполняемую игру и упаковывает данные.


Game Editor экспортирует игру в виде одного исполняемого файла или одного файла данных (iPhone/iPad).
Этот файл включает в себя все данные игры (анимации, звуки,...).



Доступные типы экспорта (Export Types):

Windows Executable: Исполняемый файл Windows (совместимый).
Поддерживаемые версии Windows:
- Windows 95, 98, Me, NT, 2000, 2003, XP, Vista, 7

Минимальные системные требования:
- Windows 95
- 32 Мб ОЗУ
- x86 совместимый процецссор (Pentium, AMD, ...)
- 200 МГц
Pocket PC / Handheld PC Executable: Исполняемый файл, совместимый с Pocket PC, Handheld PC, Windows Mobile (2003, 2005, 6, 6.5).

Windows Mobile-based Smartphone Executable: Исполняемый файл для смартфонов.

Поддерживаемые версии Pocket PC, Handheld PC и смартфонов:
- Windows Mobile (2003, 2005, 6, 6.5)
- ARM процессоры (ARM, StrongARM, XScale, OMAP, PXA, ...)
- Только полноэкранный режим
- Ogg Vorbis, wav, mod, s3m, it и xm музыкальные файлы

Минимальные системные требования:
- Pocket PC 2002
- Менее 10 Мб оперативной памяти (нужно тестировать игру)
- ARM процессоры (ARM, StrongARM, XScale, OMAP, PXA, ...)
- 200 МГц

Рекомендуется карта расширения MMC / SD

Linux Executable: Исполняемый файл Linux. 

GP2X Executable: Исполняемый файл GP2X.

Поддерживаемые версии GP2X:
- Firmware 2.0.0 и поздние
- Только полноэкранный режим
- Ogg Vorbis, wav, mod, s3m, it и xm музыкальные файлы

Game Data Only (iPhone, iPad или уровень игры без исполняемого движка): Экспортирует только файл данных без игрового движка. Этот формат используется, если ваша игра состоит из нескольких игровых файлов или для игр на iPhone и iPad.

Чтобы создавать игры для iPhone или iPad, сначала нужно экспортировать игру (или игровые уровни) как "только игровые данные". Первый уровень должен иметь такое же название продукта (название Вашей игры). Например, если имя продукта "TheGame", файл первого уровня должен быть " TheGame.dat". После создания и экспорта файлов .dat, добавьте файлы в проект xcode (как новый ресурс), обновите пользовательскую информацию, которую вы хотите (значок игры, ваше имя, название игры,...) и постройте проект..

Game Data Only for Pocket PC, Handheld PC, Smartphone or GP2X: Экспортирует только файл данных с оптимизацией для карманных ПК, наладнонников, смартфонов и устройств GP2X.

Пользовательские расширения:

Если вы не хотите использовать расширение .dat, просто переименуйте его как угодно.

Файловые ассоциации:

Если вы распространяете несколько игр, вы можете сэкономить место, экспортировав только один с исполняемым движком. Переименуйте файлы .dat в расширение .gedx и используйте инструмент установки, чтобы связать расширение .gedx с расположением движка.
Таким образом, другие игры будут выполняться системой, когда пользователь нажимает файлы .gedx

Exit (Выход): Закрывает Game Editor и выходит в систему.

Add Actor (Добавить актёра)






В Game Editor все игровые объекты называются актёрами (это фон, ракета, корабль ...).
Актёры наполняют игру и могут иметь скрипты поведения с помощью событий и действий Game Editor.

Добавление актёров в игру

Чтобы узнать как шаг за шагом создать обычного актёра, смотрите раздел Уроки .

Name (Имя):Используйте это поле, чтобы назвать актёра. Имена актёров должны начинаться с символов и должны сопровождаться символами, цифрами или "_". Имена функции скрипта и переменных не допускаются.
Разрешено: MyActor, ball, dog_catcher
Не разрешено: / right, CreateActor, fgets

Type (Тип):Выберите тип нового актёра из раскрывающегося списка: Normal (Обычный), Canvas (Холст), Wire Frame Region (Область ограниченная рамкой) или Filled Region (Заполненная область).

Normal (Обычный):Актёр, который может иметь анимацию (файлы изображений, связанные с актёром). Этот актёр может использоваться для создания самого широкого разнообразия форм поведения в программе.

Canvas (Холст):Подумайте о себе как о начинающем Пикассо, когда вы используете актёр Canvas (Холст). Рисуйте на этом актёре используя Функции рисования. Этот актёр позволяет рисовать линии, круги и т.д.



Актёр  Canvas (Холст) изображён в Game Editor в виде голубого прямоугольника. Актёр Canvas (Холст) может быть свободно перемещён или изменён. Прямоугольник невидим, когда игра запущена в игровом режиме. Пошаговое руководство по созданию актёра Canvas смотрите в разделе Уроки .

Wire Frame Region (Область ограниченная рамкой):Актёр Wire Frame Region (Область ограниченная рамкой) используется в качестве датчика для выполнения таких действий, как "Открыть дверь", когда, например, обычный актёр входит в область ограниченную рамкой. Его также можно использовать для создания барьера, который отталкивает игровые объекты, такие как шары. Например, в игре в пинбол шар может отскакивать от стенок области ограниченной рамкой. Область Wire Frame Region не регистрирует события и клики мыши.



Актёр Wire Frame Region (Область ограниченная рамкой) изображён в Game Editor как зелёный прямоугольник. Его можно свободно перемещать или изменять. Прямоугольник невидим, когда игра запущена в игровом режиме.

Filled Region (Заполненная область):В отличии от Wire Frame Region (Область ограниченная рамкой), актёр Filled Region (Заполненная область) регистрирует клики мышью, как и обычные актёры. Это позволяет создавать сенсорные точки или датчики, которые реагируют на клики мышью без использования обычных актёров.



Актёр Filled Region (Заполненная область) изображён в Game Editor как синий прямоугольник.  Его можно свободно перемещать или изменять. Прямоугольник невидим, когда игра запущена в игровом режиме.


Path (Путь)



Добавляет новый путь или выбирает существующий путь для просмотра и редактирования.



Add Path (Добавить путь):



- Введите имя пути (Name) и продолжительность пути в кадрах (Frames).
- Нажмите кнопку "Draw" ("Рисовать"), чтобы начать рисовать путь.
- Нажмите кнопку "Close" ("Закрыть"), когда новый путь будет завершен.



Клик правой кнопкой мыши по точке пути:
- Linear (Линейный): Делает текущий узел линейным.
- Curved (Кривой): Делает текущий узел кривым.
- Delete (Удалить): Удаляет текущий узел.

Примечание: Перетаскивание первой точки пути (оранжевая) с помощью мыши перемещает весь путь.

Оффлайн Samovar

  • Житель
Re: Конструктор 2D игр Game Editor
« Ответ #29 : 20 Июнь 2018, 12:14:48 »
Главное меню редактора (продолжение)


Regions (Регионы)




Add Activation Region (Добавить регион активации):

Регионы активации - это области экрана, которые определяются ограничительной рамкой и включают в себя актёров игры.
Регион и ваши актёры загружаются только тогда, когда актёр View (Вид) пересекает его.
Регион и все актёры в регионе удаляются, когда View актёр больше не пересекает его.

Регионы активации позволяют вашей игре иметь много уровней, каждый уровень игры может быть определен в новом регионе активации.
Вся игра, со всеми ее уровнями, сохраняется в одном игровом файле.
Регионы активации делают лёгким просмотр всей игры.



Регион активации отображается в Game Editor как жёлтый прямоугольник. Его можно свободно перемещать или изменять. Прямоугольник невидим, когда игра запущена в игровом режиме.

Клик правой кнопкой мыши по краю региона активации открывает вплывающее меню, которое позволяет удалить регион активации из игры.
Если актёр перемещается за пределы региона активации, он будет уничтожен только тогда, когда регион активации больше не будет пересекаться с актером  "View" ("Вид").
Актёр будет уничтожен регионом активации, когда он находится за пределами актёра "View"("Вид").
Можно создавать множество регионов активации с перекрывающимися областями.
Все актёры региона активации загружаются внутри его области. Также загружаются родители актера и ссылки на актёра через скрипт.
Актёры, созданные с помощью "Create Actor", будут назначены видимому региону активации.
Если актёр "View"("Вид") покидает регион, а затем возвращается, все актёры будут перезагружены, за исключением тех, которые были уничтожены явно  действием "Destroy Actor" ("Уничтожить актера").
Любой актёр может быть загружен с помощью "Create Actor" ("Создать актёра"), даже если он был уничтожен явно.
Если игра не содержит ни одного региона активации, то при запуске игры будут загружены все актёры.

Ниже представлена многоуровневая игра с 3-мя регионами активации:




Show/Hide Regions (Показать/Скрыть регионы):

Показывает и скрывает регионы активации


Script (Скрипты)



                                                                     
Это меню дает быстрый доступ к глобальному коду и всем скриптам актёров (сначала будут показаны последние пять использованных скриптов).
Используйте Global Code (Глобальный код), чтобы свободно добавлять код на языке Си (массивы, структуры и функции).

Программисты Си оценят возможность использовать всю мощь языка Си.
Более подробная информация о скриптах здесь.
 

Game Mode (Игровой режим)



Переключает Game Editor в игровой режим, чтобы проверить игру.
Нажатие клавиши <ESC> выходит из "Игрового режима" и возвращает вас в редактор.


Configuration (Конфигурация)



                                                                                                         

Game Properties (Свойств игры):



- Game resolution (Разрешение игры): Выбор разрешения из обнаруженных машиной, или ввод пользовательского разрешения. На Pocket PC вы можете изменить ориентацию экрана.
- Safe margin (Границы безопасности): Этот параметр увеличивает область, используемую в событии Out of Vision (Вне области видимости).
- Mode (Режим): Указывает режим отображения игры "Window" ("В окне") или "Full Screen" ("На весь экран").
- Frame rate (Частота кадров): Указывает скорость анимации (кадров в секунду).
- Show mouse (Отображать курсор мыши): Указывает, должен ли отображаться курсор мыши.
- Suspend game if lost focus (Пауза в игре, если вне фокуса): Установите "Yes", чтобы приостанавливать игру когда потерян фокус  или получать системные сообщения на Pocket PC, Handheld PC и смартфонах.
На Pocket PC и смартфонах будет показан игровой экран и меню для продолжения или выхода из игры.
На смартфонах эта опция всегда активна для приема телефонных звонков.

- Use ESC key to exit game (Использовать ESC для выхода из игры): Выберите "Yes", чтобы выйти из игры при нажатии на клавишу ESC.
Если вы не хотите использовать клавишу ESC для выхода, выберите "No" и используйте функцию ExitGame () в любом действии для выхода из игры. Этот параметр будет работать только после экспорта игры в исполняемый файл.

- Motion Compensation (Компенсация движения): Выберите "Yes", чтобы скорректировать скорость актера, если реальная частота обновления экрана медленнее, чем частота кадров игры.
- Audio format (Формат аудио): Установите частоту звука. Формат моно или стерео, и максимальные количество одновременно проигрываемых звуков в игре.
- Icon file (Файл значка): Укажите файл значка, который будет использоваться при экспорте игры в исполняемый файл. Чтобы показать значок в Windows или Pocket PC, укажите файл значка .ico.
- Game title (Название игры): Название игры, которое будет использоваться при экспорте игры.
- Game background color (Цвет фона игры): Укажите цвет фона игры.
- Pocket PC and GP2X Keys (Клавиши  Pocket PC и GP2X): Используйте для переназначения клавиш Pocket PC или GP2X на клавиши настольных приложений используемые в игре. Клавиши могут отличаться на разных машинах.


Preferences (Настройки):




- Show Grid (Отображать сетку): Отображает и скрывает сетку.
- Grid Snap (Прилипание к сетке): Устанавливает режим прилипания к сетке.
- Main color (Основной цвет): Устанавливает цвет линий сетки.
- Resolution (Разрешение): Устанавливает цвет линий сетки, которые соответствуют параметрам разрешения игры.
- Grid Size (Размер сетки): Устанавливает размер клеток сетки.
- Enable tool tips (Включить подсказки): "Yes" включает отображение подсказок. "No" отключает отображение подсказок.
- Persistent undo (Сохраняемая отмена): Если вы выберете "Yes", Game Editor будет искать соответствующий файл .undo, и восстановит историю редактирования игры при её следующей загрузке.
- Maximum undo levels (Максимальное количество уровней отмены): Количество уровней отмены для записи. Этот параметр будет иметь место только в том случае, если для поля "Persistent undo" установлено значение "Yes". Уменьшите параметр "Maximum undo levels", чтобы уменьшить размер файла отмены.
- Image Editor (Редактор изображений): Выберите редактор изображений, чтобы редактировать кадры анимации. Редактор изображений должен обрабатывать файлы изображений PNG с прозрачным фоном. Если у вас нет редактора изображений, используйте поисковую систему и введите запрос "Редакторы изображений с поддержкой PNG", чтобы найти хороший редактор изображений.


Help (Справка)



                                                                                                       

Documentation (Документация):
Переход к файлам документации Game Editor.

Tutorials (Уроки):
Выберите тему урока, чтобы увидеть анимированный фильм об одном или нескольких аспектах игрового дизайна в редакторе.

Get New Tutorials (Получить новые уроки):
Выберите этот параметр, чтобы получить новейшие мультимедийные уроки. У вас должно быть активным подключение к интернету.

Check for Updates (Проверить обновление):
Выберите этот параметр, чтобы получить новейшие обновление Game Editor.

Game Demos (Демо игры):
Загрузите демонстрационные игры из множества файлов примеров, созданных сообществом пользователей и программистов Game Editor.

User Forums (Форум пользователей):
Переход на форум Game Editor, чтобы узнать о программе больше.

About (О программе Game Editor):
Информация о разработке Game Editor и программистах.


Info (Информация):




- Координаты мыши относительно игрового центра.
- Отображает координаты актёра относительно родителя, при нажатии на актёра.
- Статус привязки актера.

Управление клавиатурой и мышью в редакторе:
Увеличение/уменьшение: +/- или >/<
Отмена: Ctrl+Z
Возврат: Ctrl+Y или Ctrl+T
Выбор перекрывающихся актёров: клик мышью + левый Ctrl
Перемещение по рабочему пространству редактора: клик мышью + правый Ctrl
Переключение примагничивания актёра: левый Shift  (магнитный эффект между актёрами и тайлами для их более точного позиционирования)

 


Яметрика

* По форуму

* Рекламный блок

* Последние вложения

1 (1).png
Скачано: 50
Автор: LEXA ANЭGROWND
blender.png
Скачано: 66
Автор: ipv2007
4.png
Скачано: 86
Автор: hiroyukiss
2.png
Скачано: 107
Автор: hiroyukiss

Скачано: 103
Автор: Dilifa12