Using a coding agent? Paste this:
Add a Summer Router character to my game (https://docs.summerengine.com/router/quickstart.md): a gate guard called "guard" who opens the gate when the player gives a good reason.1
Publish your game on Summer Games
Summer Router serves games published on Summer Games, and it is on for every game, with caps from the start. If your game is not there yet, see publish on Summer Games. Calls are paid from your paid Summer credits, from your plan or top-ups.
2
Make the character
In Summer Studio, open your game, then Grow > Summer Router, and add a character:
Try the character in the tab’s test conversation right away. Your agent can do this step too: on the Summer MCP it saves the character with the
router.save_character operation, and you approve the change.3
Add the character to your scene
Add a SummerRouterCharacter node, name it Turn Speak on and each answer is also spoken in the guard’s voice.
Guard, and set Character ID to guard, Mode to text and Show UI on. Show UI gives the player a bar with the guard’s words and a text field. Then give the guard its tool and an offline line:level.gd
4
Play it
Upload the build to Summer Games and play it in the Summer app or on summer.games, signed in. The bar shows the guard’s first message; type an answer. When you convince the guard, the gate opens.In the editor, Summer Router calls answer
unavailable and the guard uses its offline line, so your game always runs. Shape the character in Studio’s test conversation, and play the real thing on Summer Games.One call instead of a node
The node runs a whole conversation. For a single line, call the router directly:conversation_id from r.conversation_id on the next call, and the guard remembers what was said.
More you can do
- A voice line:
await Summer.client.router.speak("Welcome, traveller!", {"character": "narrator"})returnsaudioto play. See speech. - An image:
await Summer.client.router.generate("image", {"prompt": "a flower made of glass", "size": "512x512"})returns atexture. See image. - What the character knows:
variablesfill the character’s declared{{variables}}, such as the player’s name, when the character listsvariablesin its overridable fields.contexttells it what just happened in the game.

