     game : {
         startpos : [1, 1]
         targetpos : [3, 5]
+        characters: {
+            protagonist: {
+                dir: 1
+                index: 0
+            }
+            guard: {
+                index: 2
+                x: 3
+                y: 0
+                dir: 2
+                ai: {
+                    move: (gamestate) =>
+                        [newx, newy] = gameState.computeStepInDirection(
+                            @dir, @x, @y)
+                        hitEvent = gamestate.checkEvent(@x, @y)
+                        if !hitEvent
+                            @x = newx
+                            @y = newy
+                            gamestate.gameVisual.gridMove @index, 1
+                        else
+                            @dir = @dir ^ 2
+                        return
+                }
+            }
+        }
     }
     visual : {
         gameType: "grid",

                ySize: 26
            }
            gflag: {
                imgSet: 1,
                x: 5,
                y: 5,
                xOff: 2,
                yOff: 2,
                xSize: 26,

        },
        characters: {
            protagonist: {
                dir: 1,
                imgSet: 0,
                # x: 0,
                # y: 0,
