KoboldScript is coming! KoboldScript brings Lua scripting to Cocos2D and Kobold2D, with Objective-C performance for the StateMachine part and faster-than-Wax performance for the runtime Lua functions.
More details and first looks at some early development scripts in this LearnCocosTV episode. I’ll have something more visual to show in 2-4 weeks.
Episode #5 – Pretty State Machine
• KoboldScript: Lua Scripting for Cocos2D & Kobold2D
o Poll: Which scripting language for Cocos2D?
o iDevBlogADay: Text Editors for Lua
• KoboldScript combines:
o Lua StateMachine generator (full ObjC performance)
o Runtime Lua functions (faster than Wax)
Very early KoboldScript sample script
testLuaFunctionParams = {
[1] = "one",
one = 1,
ones = 111,
wahr = true,
falsch = false,
counter = 0,
}
function conditionTestFunction(params)
params.counter = params.counter + 1
if (params.counter >= 166) then
params.counter = 0
return true
end
return false
end
function actionTestFunction(params)
print("AAAAACTION!!!!!!!!!!!!!!!!!!!!")
end
StateMachine
{
Name = "my Machine",
State
{
Name = "first State",
OneTimeEvent
{
Conditions
{
};
Actions
{
-- Objective-C style with named parameters ...
VariableAssign{Name = "my good var", Value = -123},
-- ... and shorter C-style can be used interchangeably!
VariableAssign("my evil var", 678),
TimerStart("ding-dong"),
DebugLogMessage("VERY FIRST STEP"),
StateMachineSetActiveState{Name = "2nd state"},
};
};
NonStopEvent
{
Conditions
{
LuaFunctionReturnsTrue{Function = "conditionTestFunction",
Table = "testLuaFunctionParams"},
};
Actions
{
DebugLogMessage{Message = "testLuaFunction SUCCESS"},
LuaFunctionExecute{Function = "actionTestFunction",
Table = "testLuaFunctionParams"},
};
};
NonStopEvent
{
Conditions
{
TimerIsElapsed{Name = "ding-dong",
Steps = secondsToSteps(10)},
};
Actions
{
DebugLogMessage{Message = "DING DONG DING DONG DING DONG"},
TimerStart("ding-dong"),
};
};
PeriodicEvent
{
IntervalSteps = secondsToSteps(0.5), -- check twice per second
Conditions
{
OR
{
TimerIsElapsed{Name = "ding-dong",
Steps = secondsToSteps(2)},
TimerIsElapsed{Name = "ding-dong",
Steps = secondsToSteps(5)},
};
};
Actions
{
DebugLogMessage("time passed ..."),
};
};
};
-- alternative style (if you prefer K&R style ... me? <shudders>)
State {
Name = "2nd state",
NonStopEvent {
Conditions {
TimerIsElapsed{Name = "ding-dong",
Steps = secondsToSteps(3)},
};
Actions {
StateMachineSetActiveState{Name = "first State"},
DebugLogMessage{Message = "... and back!"},
};
};
};
};
| Follow @gaminghorror | Follow @kobold2d |
|








I am really looking forward to KoboldScript. What a great feature!