As part of a really offbeat experiment, I just hacked together an RPG character in frogatto's engine - thus far, just able to walk around on a map, like zelda/chrono. This did not take a single line of C++. It's not in the latest public builds crimson_penguin just posted, but if you're able to compile from trunk, it's visible on the level named test5.cfg (if you can't compile from trunk, you could still conceivably grab the associated level, image, and object file, and they should run in the previous build.
This is the core control code thus far; if you're interested in any explanation, ask away and I'll explain. Those interested might not that this took, start to finish, maybe 30min of coding/testing. In just 30 minutes, I was able to implement the heart of a completely different game. Frogatto's engine isn't good for anything that's not "2d sprites moving over a tiled, square background", but if that describes your game, it's damn near a glove fit. (We still have a few things that aren't generalized, but if anyone needs them to be, we can quickly get them to that.)
[object_type]
id=rpg_char_test
hitpoints=4
feet_width=1
mass=5
friction=0
solid_area=4,48,23,60
traction_in_water=1000
affected_by_currents=yes
[properties]
set_stand_anim="def() execute(me, if(velocity_x = 0 and velocity_y = 0,[if(animation = 'walk_north', animation('stand_north')),if(animation = 'walk_east', animation('stand_east')),if(animation = 'walk_south', animation('stand_south'))]))"
pressing_north="ctrl_up and (not ctrl_down) and (not ctrl_left) and (not ctrl_right)"
pressing_south="ctrl_down and (not ctrl_up) and (not ctrl_left) and (not ctrl_right)"
pressing_west="ctrl_left and (not ctrl_right) and (not ctrl_up) and (not ctrl_down)"
pressing_east="ctrl_right and (not ctrl_left) and (not ctrl_up) and (not ctrl_down)"
pressing_nw="ctrl_up and (not ctrl_down) and ctrl_left and (not ctrl_right)"
pressing_ne="ctrl_up and (not ctrl_down) and ctrl_right and (not ctrl_left)"
pressing_sw="ctrl_down and (not ctrl_up) and ctrl_left and (not ctrl_right)"
pressing_se="ctrl_down and (not ctrl_up) and ctrl_right and (not ctrl_left)"
moving_north="velocity_x = 0 and velocity_y < 0"
moving_south="velocity_x = 0 and velocity_y > 0"
moving_west="velocity_x < 0 and velocity_y = 0"
moving_east="velocity_x > 0 and velocity_y = 0"
moving_nw="velocity_x < 0 and velocity_y < 0"
moving_ne="velocity_x > 0 and velocity_y < 0"
moving_sw="velocity_x < 0 and velocity_y > 0"
moving_se="velocity_x > 0 and velocity_y > 0"
[/properties]
on_process="[ if(pressing_north and (not moving_north), [animation('walk_north'), facing(1)]),
if(pressing_south and (not moving_south), [animation('walk_south'), facing(1)]),
if(pressing_west and (not moving_west), [set(velocity_x,-400),animation('walk_east'),facing(-1)]),
if(pressing_east and (not moving_east), [set(velocity_x, 400),animation('walk_east'),facing(1)]),
if(pressing_nw and (not moving_nw), [set(velocity_x,-400), animation('walk_north'), facing(1)]),
if(pressing_ne and (not moving_ne), [set(velocity_x, 400), animation('walk_north'), facing(1)]),
if(pressing_sw and (not moving_sw), [set(velocity_x,-400), animation('walk_south'), facing(1)]),
if(pressing_se and (not moving_se), [set(velocity_x, 400), animation('walk_south'), facing(1)]),
if(ctrl_up and ctrl_down, [set(velocity_y,0),set_stand_anim()]),
if(ctrl_up + ctrl_down = 0, [set(velocity_y,0),set_stand_anim()]),
if(ctrl_left and ctrl_right, [set(velocity_x,0),set_stand_anim()]),
if(ctrl_left + ctrl_right = 0, [set(velocity_x,0),set_stand_anim()])
]"
on_end_anim="animation(animation)"
[editor_info]
category=player
[/editor_info]
[base:animation]
image=experimental/claudius.png
accel_x=0
accel_y=0
pad=3
body_area=all
[/animation]
[animation]
id=stand_south
rect=1,1,30,62
frames=1
duration=6
[/animation]
[animation]
id=stand_north
rect=1,66,30,127
frames=1
duration=6
[/animation]
[animation]
id=stand_east
rect=1,131,30,192
frames=1
duration=6
[/animation]
[animation]
id=walk_south
rect=39,1,68,62
frames=8
duration=5
velocity_y=400
[/animation]
[animation]
id=walk_north
rect=39,66,68,127
frames=8
duration=5
velocity_y=-400
[/animation]
[animation]
id=walk_east
rect=39,131,68,192
frames=8
duration=5
[/animation]
[/object_type]