Basic Gameplay
Play modes
To enable a play mode, select the tab and press RUN. You can stop execution at any time by pressing STOP.
You can only run one mode at a time. Pressing RUN in one mode will stop execution in another mode.
There are two supported play modes (see below):
ApiCall
This mode makes a POST call to the specificed url. It passes in a level_data
object and expects a list of moves returned.
If the previous call has not returned, the API will not be called. The specified API will be called by the game engine at most every frame.
Using this mode allows you to use any language or libraries you want. Your imagination is the limit here (and maybe your programming skills)
Manual
This mode allows you to use keyboard input to control your character.
This mode can get very boring.
Basic Movement
move_to
| script:move_to
manual:arrow keys
Your player will move to a given x,y target.
move_to: {x, y}
e.g.
return [{"move_to": {"x": 10, "y": 20}}]
Your player will navigate to the target using basic astar pathfinding (built into the engine)
Basic Combat
attack
| script:attack
manual:space bar
This will cause the character to attack in the direction it is facing.
e.g.
return ["attack"]
In most game modes, there is a speed penalty when your character is attacking. (i.e. your character slows down while attacking and moving at the same time)
shield
| script:shield
manual:s
Your character can defend itself by raising a shield. While the shield is up, your character will recieve no damage
e.g.
return ["shield"]
Shields have a short lifespan. They break when hit or when they run out of energy.
Shields have a cooldown so use them wisely
dash
| script:dash
, manual:d
Dash will temporarily increase your player's speed in whatever direction they are moving.
Dash is a combat mechanic. It is only enabled if there are enemies within 300 radius of the player.
There is a 1s
cooldown on this ability.
Use this to surprise attack an enemy, or escape an attack.
special
| script:special
manual:f
Use whichever special attack is equipped on the player. See Power Ups section below for details on available special attacks (Bomb, Freeze, Shockwave).
e.g.
return ["special"]
Specials have a cooldown so use them wisely
You won't lose a power up after you're killed. It seems more fun that way (for now?)
Actions
In addition to movement, a character can take actions.
Use Items
| script:{"use": "<item>"}
manual:x(big_potion)/c(speed_zapper)/v(ring)
There are three items availale for use in the game - big_potion
s, ring
s and speed_zapper
s. Once you collect the items, you can use them.
To use them, return a use
action with the specified item.
e.g.
return [{"use": "ring"}]
Big Potions - replenish your health
Speed Zappers - a weapon you can fire that will slow down anything in it's blast radius
Rings - cloaks your player to hide from enemies and other players
Speak
| script:{"speak": "Hello there!}
manual:not supported
Your character can speak. Returning the speak action will display the message next to your character for all to see.
e.g. return [{"speak": "Hello there"}]
Redeeming Skill Points
| script:{"redeem_skill_point": "<skill_type>"}
manual:e(attack)/w(speed)/q(health)
As you gain xp
, your character levels up. Each level (up to level 20) will come with skill points
you can redeem to boost your characters abilities.
You can apply skill points to health
, speed
, or attack
.
e.g.
return [{"redeem_skill_point": "attack"}]
Come up with a strategy to build up your characters skill. Speed allows you to collect items and escape attacks while health and attack may give you the upper hand in battle.
Skill points are rewarded for levelling up until you reach Level 20. Beyond that you no longer receive additional skill points.
Debugging
| script:debug_info
manual:not supported
You can send some information to the debug panel in game. Return a "debug_info" object in your api response array
"debug_info": {
"target_id": <id of the target object>,
"message": <150 char limit>,
}