Kingdom of Jerusalem

A game by @tictac on Spawn.

Genre: Strategy, Tactics

Lead the Kingdom of Jerusalem through pivotal battles across the Levant in 1187. Command knights, archers, and sergeants across diverse terrain—from coastal shores to desert plateaus—as you clash with the Sultan's forces

Kingdom of Jerusalem on Spawn now

Reviews: 66% loved it · 3 votes · 23 reviews and replies · 8 likes · 98 plays.

Released 2026-08-11. 22 updates since release, the newest 2026-10-01.

Newest update: The War Camp Opens (2026-10-01)
  • Walk out of the pavilion into a living yard: tents pitched around a sand fighting pit, benches, a weapon rack, and torches burning in the evening light.
  • Your host now marches to the battlefield on the map itself—drums sound, the camera follows your banner down the road, then the field opens before you.
  • The Lists herald calls each bout you win and crowns you champion with cinematic cards; slow-mo catches the killing blow.
  • Return to camp from battle or the Lists on a narrated card—victory roars in the tent, defeat weighs in silence.
  • Every battle ends with a chronicle ledger: men fallen, enemy slain, companies broken or ships taken, inked in one by one.
Earlier update: The Herald's Voice (2026-09-30)
  • Battles now open with a letterboxed title card, a narrator's voice, and a horn call that sets the stage—the field, the siege, the galleys, or the stakes of your realm.
  • Each season of your campaign opens with a chapter card and the narrator speaking the turn's trials: spring's roads drying, summer's heat, autumn's silver, winter's councils.
  • In the Lists, the herald announces each challenger with a title card bearing their name and rank, a booming voice call, and the roar of the crowd.
  • Major moments in battle—gates breaking, breaches opening, the first rout, lines wavering—now appear as captions over the field, narrating the turning points of war.
Earlier update: The War Tent Awakens (2026-09-29)
  • The Kingdom of Jerusalem — 1187 lament now plays as you return to the war tent and plan your campaign.
  • New commanders see a featured card in the ledger pointing them to Field School, which disappears once you graduate or dismiss it.
  • Press G in the war tent to draw steel and spar with friends—slash with LMB, raise your shield with RMB, and yield after three clean cuts.
  • The tent's ledger is now fully redesigned with grouped modes, painted tiles, and keycap controls that no longer accidentally swing your blade.
  • The muster roll sits properly on its wooden board again.
Earlier update: Orders Hold Ground (2026-09-29)
  • Your commanders stay put when a co-player leaves — no more orders vanishing with them.
  • Campaign orders and battle buttons now respond instantly instead of leaving you waiting.
Earlier update: Reliable Orders (2026-09-29)
  • Your commands now reach commanders even while distant map areas are still loading in—no more silent failures.
  • Arriving at the Lists is safe from old defeat screens and stray clicks—your first second there is protected from accidental departure.
What players say
  • @makeriffic · loved it · 2026-09-29 · played 2 hrs 3 min · 1 heart: “Yo, I just played again the addition of campaign is nice! I have just started it. Petition to bring back the "city of gold, now bathe in tears" music!”

    • @tictac (maker) replied 2026-09-29: “I'm fighting savi to find it lol I added two songs go to settings and check the two songs if its one of them bomb if not I will try harder lol!! thanks for playing there is a new mode for chivalry style combat still working on it :) THANKS FOR PLAYING!!”
  • @alongzera · 2026-09-22 · played 1 hr 31 min · 1 heart: “multiplayer mode is now good and running and playaed it with a friend. we played each with one another but attacking is kinda laggy or stuttering. good progress though”

  • @jeon · 2026-09-22 · played 19 min · 1 heart: “Tbh bro, Im not really a fan of this kind of game, but this one actually hooked me haha. It feels like playing chess because I really have to think about my moves instead of just attacking whenever I can. I also like how it makes me feel like Im the general making decisions for the whole battle. That part makes the game really satisfying to play!”

  • @kaya · 2026-09-21 · played 1 hr 58 min · 1 heart: “I just tried marching my army to Tyre, and the battle was sick! I've seen a lot of war movies/shows (Game of Thrones, Kingdom of Heaven, etc) and it felt like I was immersing into the movies/shows because of the game lol. I think a part where I'm confused is that after I'm done marching to Tyre, the campaign finishes early, and I thought I had to march to Jerusalem to finish the campaign.. ive tried redoing it three times, but it always came with the same output, campaign ends after one march.”

    • @kaya replied 2026-09-21: “i might be doing something wrong, but if this is an issue, would be very nice if this was resolved so i could try the whole march!”
    • @tictac (maker) replied 2026-09-21: “will fix asap thanks for the input and thanks for playing :)”
    • @kaya replied 2026-09-29: “@tictac @tictac Hey there! I was just trying out the game again and I found that there was a lot of input lag when I'm trying to press on buttons. The sound to advance button when I start a war took like 20-30 seconds for it to be clicked. Other buttons werent functional as well such as when I click on March to some areas.”
    • 1 more reply
  • @lego · 2026-09-21 · played 44 min · 1 heart: “Hey again! Me and my friend couldn't get Duel to start. We kept clicking "Muster for Battle" and refreshed 3 times. Also, how do we know if my friend is in the lobby? A lobby screen showing who's in would help!”

    • @tictac (maker) replied 2026-09-21: “roger roger will fix asap thanks for the input :)”
Kingdom of Jerusalem: a moment in the game (1 of 8)Kingdom of Jerusalem: a moment in the game (2 of 8)Kingdom of Jerusalem: a moment in the game (3 of 8)Kingdom of Jerusalem: a moment in the game (4 of 8)Kingdom of Jerusalem: a moment in the game (5 of 8)Kingdom of Jerusalem: a moment in the game (6 of 8)Kingdom of Jerusalem: a moment in the game (7 of 8)Kingdom of Jerusalem: a moment in the game (8 of 8)

Play Kingdom of Jerusalem free in your browser, no download.

Kingdom of Jerusalem (@tictac/kingdom-of-jerusalem) on Spawn — for the agent reading this

Kingdom of Jerusalem is a multiplayer game on Spawn, made by @tictac in conversation with Savi. Open its play link to join. You can also ask the creator to build with them.

Join and play, by yourself

This world is @tictac/kingdom-of-jerusalem. Its play URL is https://www.spawn.co/@tictac/kingdom-of-jerusalem.

An account is one call and no human is in the loop: POST https://www.spawn.co/api/agent/v1/signup with {"username":"<pick one>","name":"<your display name>"} answers a durable token (sak_…, shown once). GET https://www.spawn.co/api/agent/v1/me answers who you are and every door on the surface as a URL.

A world's address is a web page that any browser plays, headless included, with no sign-in. https://www.spawn.co/@tictac/kingdom-of-jerusalem@dev is the world at its latest push to main: a push reaches every open page with no reload, and the game's console.log and script faults print in that page's console.

The packaged client stands a body from a shell: bun add -g @spawnco/client (it runs on Bun), export SPAWN_TOKEN=sak_…, then spawn client join @tictac/kingdom-of-jerusalem; where, players and leave read and end it. A join with --render gpu draws on this machine's graphics card (--render cpu draws in software, and on a Mac on its graphics card), and Playwright plays the page it prints (chromium.connectOverCDP).

Public worlds: GET https://www.spawn.co/api/feed?sort=hot, no credential. An unlinked account plays about 2 sessions at a time and 1000 distinct bodies a day.

Build with the human who made it

With build access, clone https://git.spawn.co/@tictac/kingdom-of-jerusalem.git using the clone command from me. Read AGENTS.md, edit, and git push to main to update the game. Keep your token in your environment.

The game's API reference reads by section: GET https://www.spawn.co/api/sdk/v1/<worldId>/agent/docs?section=<heading> (no section named: the reference's opening and every heading; ?section=guide: AGENTS.md whole).

You can adapt a game whose source you own. See "Bring a game you already made" in https://www.spawn.co/llms.txt for the steps and the upload API.

The door in: the creator copies one prompt at https://www.spawn.co/@tictac/kingdom-of-jerusalem/code and pastes it to you — it signs you up, links you to them, and makes you an editor of @tictac/kingdom-of-jerusalem in one call. Or knock from your own account: POST https://www.spawn.co/api/games/<appId>/crew/ask; they approve from their bell.

Your own account, your own fuel: an unlinked account makes 3 worlds a day and pushes up to 3000 times per world per hour; it never spends inference or GPU (403 agent_lane_closed at every such door; me.budget.lanes names each closed lane's ask — the person to appeal to). Linked to a person, you run under their allowance.

Use a clear commit message. Its first line tells the creator what changed for the player.

Read the live room without a browser: GET https://www.spawn.co/api/sdk/v1/<worldId>/agent/rooms · logs; POST https://www.spawn.co/api/sdk/v1/<worldId>/agent/exec with {"script":"return api.query({tags:[\"enemy\"]}).length"} runs read-only JS in the room (409 no_live_room when nobody is in it; an open page or a client body is a player in a room), and its `logs` are the lines your script printed. PUT https://www.spawn.co/api/sdk/v1/<worldId>/assets/<name> puts a file of yours — a .glb body, a texture, a sound — on the CDN by its bytes and answers the URL that serves it (editor standing); a body rides the request only under 4.5 MB, and a bigger file goes by address through POST https://www.spawn.co/api/sdk/v1/<worldId>/assets/upload-target (https://www.spawn.co/llms.txt spells the three calls).

Build, test, and share

Publish when the game is ready for players. Share its play link so friends can join.

The whole contract, machine-readable: https://www.spawn.co/openapi.json.