We'll see if performance is an issue, but the space I'm most interested in is turn based strategy / board games, where it doesn't seem to be a big deal if things are as fast as possible.
It feels like a pretty natural fit, e.g.:
can_move_to(unit_id, tile) :-
Unit(unit_id), Tile(tile),
reachable_to(unit_id, tile, move_cost),
unit_move_points_remaining(unit_id, mv),
move_cost <= mv.
You can define a lot of rules from basic unit movement to "what happens when you activate Super Special Rule-Bending Ability" this way, and it's pretty easy to change the definitions if you want to experiment with different game rules / logic. In practice, you want various syntactic sugar.Haven't got a chance to take this very far yet, just casual experimentation, but it seems like there's potential.