{"slug": "a-risk-style-take-on-the-turkish-war-of-independence", "title": "A Risk-Style Take on the Turkish War of Independence", "summary": "A new historical strategy game, Kurtuluş 1919, lets players relive the Turkish War of Independence from Mustafa Kemal's landing at Samsun in May 1919 to the last foreign soldier leaving, with the goal of securing the Misak-ı Millî borders. The game features seven neural network-controlled factions, each trained via self-play, and 28 dated events that respond to player actions. It is available in English and Turkish at kurtulus1919.com.", "body_md": "A historical strategy game about the Turkish War of Independence, from Mustafa\nKemal's landing at Samsun in May 1919 to the last foreign soldier leaving. Play\nit at ** kurtulus1919.com**, in English or Turkish.\n\nYou start where the movement started: sixteen provinces, most of them inland, a coastline in other people's hands, and six factions on the map — Greece in İzmir, Britain on the Straits, France in Cilicia, Italy in the southwest, Armenia in the east, Bulgaria across the Thracian border.\n\nThe war aim is not the map. It is the **Misak-ı Millî**, the National Pact:\nthirty provinces from Edirne to Kars and down to Mosul, the borders the last\nOttoman parliament voted for in January 1920 and the Ankara government spent\nfour years making real.\n\n```\nnpm install\nnpm start      # http://localhost:1234\nnpm test\n```\n\n**Reinforce**— deploy the levy across your provinces.** Attack**— pick a province, then an adjacent enemy. Dice resolve it, with blitz resolution and exact odds behind the AI's decisions.**Fortify**— move troops along your own lines, then end the turn and watch six AI factions play theirs.- Conquering draws a supply card; escalating sets trade for troops.\n- Pinch to zoom, two-finger scroll to pan. The whole thing runs on a phone.\n\nNothing here is flavour text bolted onto a generic conquest game. The rules are arguments\nabout what actually happened, and the historical constraints *are* the\nconstraints you play against.\n\n**You cannot conquer your way out.** Ankara's war aim was a defined border, and\nit renounced everything beyond it — so the game does too. Turkey may not attack\noutside the National Pact while the Pact is unmet. Sofia is right there,\nundefended, and the order is refused. You are not building an empire; you are\nrecovering a country and stopping. (There are ways to earn an exception. They\nhave to be earned.)\n\n**Twenty-eight dated events run through the campaign**, from the congresses of\n1919 to the treaties of the mid-twenties. Each one arrives on the turn its real\ndate falls in, and each one changes something material — what you can recruit,\nhow your army fights, who is still willing to fight you, who quietly goes home.\nA few of them stop and ask you a question instead.\n\nMost of them are **conditional**. An event checks whether the situation that\nmade it possible actually came about in *your* war, and if it didn't, it waits,\nor it never happens at all. A congress needs the city it was held in. A\ngovernment needs a capital to sit in, and everything that government did\npresupposes that it existed. A power does not collapse, sue for peace or lose\nan election while it is winning. Play the war differently and history comes out\ndifferently — later, or not at all.\n\n**The army changes character as the movement does.** It begins as scattered\nKuvâ-yi Milliye irregulars who cannot mount a proper offensive, and it does not\nstay that way. Invaders pushing into the homeland fight harassed supply lines\nrather than a fair battle — until the war moves into the open field.\n\nSmaller things that are also true: Bulgaria is not in the Entente and its army is capped by the Treaty of Neuilly; Kars and Iğdır begin under Armenian administration, as they did in 1919; post-war demobilization means London will not raise fresh divisions for Anatolia; an occupier left unchallenged digs in, so passivity costs you exactly where it matters; and a power that has made peace will fight again if you break it.\n\nTurning points arrive as cards.\n\nHow it ends depends on what you hold when the time comes — and holding it is not the same as reaching it. That part you can find out for yourself.\n\nEvery faction is played by its own neural network, learned from self-play rather than from rules somebody typed out. Seven networks, one per faction — and they are seven different players, because each is paid for a different thing.\n\nA hand-written AI would have to be told that Britain garrisons the Straits and will not spend divisions inland, that Italy fought nobody, that Bulgaria's quarrel is with Greece and not with Ankara. Here that comes out of the reward functions: each faction's war aim is a handful of provinces and a stance on casualties, and what it does with them is its own business. Turkey is scored on the National Pact, and on nothing outside it.\n\nThe network scores (position, move) pairs rather than choosing from a fixed list of actions — a single turn offers hundreds of from→to pairs, and one output per pair would be mostly dead weights. Stopping is always one of the moves, which is how a faction learns that doing nothing beats everything else on offer.\n\n```\nnpm run train-ai -- --games 50000     # or --resume to carry on\n```\n\nSelf-play, epsilon-greedy over the value net, a prioritised replay buffer, and a\nreward that is the turn's own shaping plus the end of the war discounted back\nover the decisions that led there. Models land in `src/ai/models/`\n\nand ship with\nthe game, so what you play against is exactly what was trained. Every move the\nmodels produce goes through the engine's own legality checks first, so a trained\nfaction can no more break the rules than a hand-written one.\n\nThe full pipeline — architecture, reward design, how to train and evaluate, the\nexperiments we ran and why, and how to push results further — is written up in\n[docs/ai-training.md](/dashersw/independence/blob/main/docs/ai-training.md).\n\nEnglish and Turkish, switchable mid-game — the cards, the log, the map, all of it.\n\n| English | Türkçe |\n|---|---|\n\nThe territories are real geography. `scripts/generate-map-data.mjs`\n\nturns\n`src/assets/map-whiteborder.svg`\n\n— 91 anonymous paths, identified by hand — into\n`src/game/map-data.json`\n\n: 45 territories with baked bounding boxes, label anchors\nand measured geometric adjacency.\n\nRendering is a stack of SVG filter layers in `MapView.tsx`\n\n: vectorized faction\nflags cover-scaled over contiguous blobs, solid national border lines with inner\nshadows, per-region multiply shading, coastal glow, and paper grain, wash and\nvignette. Region names are laid out by a small type engine (`labelLayout.ts`\n\n)\nthat fits arced text inside arbitrary shapes via PCA and a curved-midline fit.\n\nThe engine in `src/game/game.ts`\n\nhas no browser dependencies, so Node imports it\nas-is and the tests run against the real thing — no mocks, no test double of the\nrules.\n\n```\nnpm test\n```\n\nTests across two dozen files: dice odds by exhaustive enumeration, the event table and its conditions, combat, economy, saves, Turkish morphology, the camera, the trained AI's rewards and the shipped models, and long scenario tests that play whole campaigns turn by turn and assert which event fired on which round under which circumstances.", "url": "https://wpnews.pro/news/a-risk-style-take-on-the-turkish-war-of-independence", "canonical_source": "https://github.com/dashersw/independence", "published_at": "2026-08-17 10:19:21+00:00", "updated_at": "2026-08-17 10:41:31.168652+00:00", "lang": "en", "topics": ["artificial-intelligence", "machine-learning", "neural-networks"], "entities": ["Mustafa Kemal", "Kurtuluş 1919", "kurtulus1919.com", "Misak-ı Millî", "National Pact", "Ankara government", "Ottoman parliament"], "alternates": {"html": "https://wpnews.pro/news/a-risk-style-take-on-the-turkish-war-of-independence", "markdown": "https://wpnews.pro/news/a-risk-style-take-on-the-turkish-war-of-independence.md", "text": "https://wpnews.pro/news/a-risk-style-take-on-the-turkish-war-of-independence.txt", "jsonld": "https://wpnews.pro/news/a-risk-style-take-on-the-turkish-war-of-independence.jsonld"}}