ESKEES script language
The full reference is available in Japanese for now. This page is an overview. Alpha: details may change without notice.
ESKEES script describes everything from "change the expression when clicked" to small games like Tetris and Patapata. It has a Lua-like syntax with blocks closed by end, and can be edited as blocks, text or a diagram in ESKEES Studio. The same script runs in test play, the Player, showcase and ESKEES Screen.
What a script looks like
Only five kinds of things can appear at the top level: var, save, function, class and on (triggers).
var score = 0 to 999999 save -- a number shown on screen and saved
save 記録 = { best = 0 } -- the save-data layout
function add(a, b) -- a function (top level only)
return a + b
end
class 鳥 -- an actor class
vy = 0
function update(dt)
self.y += self.vy * dt
end
end
on press 顔 -- a trigger
score = add(score, 1)
end
Triggers
on start(once when opened),on frame(every frame,dtseconds),on every 1.5on press/click/down/upfor click areas and UI buttons (anyfor anywhere),on drag A to B,on tap Classon key Space/on keyup(keyboard and gamepad names such asPadA)on change var,on scene name
Statements
- Control —
if,switch,loop,while,repeat n … end,repeat … until,for i = 1, n do,for k, v in pairs(t) do,for each in Class,break,wait - Parts and animation —
frame face = "smile",toggle,play,tween … to { … } in 0.25 ease "back-out" - Actors —
spawn Class at x, y,destroy,self.x,touching Class,self:overlapping("Class") - Scenes, UI, sound —
scene,ui Panel show,say Text = "…",sound,music - Camera and stages —
camera follow self,camera shake,stage "name",tile.at,self:moveBy(dx, dy) - Scores —
score total as Time lowersends a value to the leaderboard (see ESKEES Studio)
Differences from Lua
- 0 and the empty string are falsy; undefined variables are 0.
+=and-=exist;!=works as well as~=.- Functions only at the top level — no closures, no varargs, one return value.
- Objects are
class(actors) only; no metatables and no standard library such asosorio. waitis a statement that pauses the script — no coroutines needed.