{"slug": "opus-5-5-vs-gpt-6-1-sol-can-ai-build-a-save-system", "title": "Opus 5.5 vs GPT-6.1 Sol: Can AI Build a Save System?", "summary": "A head-to-head test had Claude Opus 5.5 in Claude Code and GPT-6.1 Sol in Codex add save/load functionality to an existing Godot game, with each model given the same prompt and access to Flockbay's MCP-connected testing tools. Opus 5.5 finished in 14 minutes using 22 Flockbay tool calls and 67 of its own, and its work was then evaluated by saving mid-action, quitting, reloading, and comparing 124 values against an uninterrupted run. The comparison also measured file format and corruption handling, gameplay preservation, and estimated API cost.", "body_md": "Can an AI model add saving and loading to a game that already exists, and get it right? Claude Opus 5.5 in Claude Code and GPT-6.1 Sol in Codex got the same finished Godot game, a small house with four doors, a key, a padlock, a crate and a guard on his round, and one job: F6 saves, F7 loads, and after a load the game carries on exactly as if it had never stopped.\n\nSource: [https://flockbay.com/blog/opus-5-5-vs-gpt-6-1-sol-add-save-and-load-to-a-godot-game/](https://flockbay.com/blog/opus-5-5-vs-gpt-6-1-sol-add-save-and-load-to-a-godot-game/) · Updated 2026-10-10\n\nFirst, how shipped games save: a typewriter in Resident Evil 2, a checkpoint in Halo: Reach, a quick save in Half-Life 2, and what a good save and a bad one look like. Then each model's work was tested the same way: save in the middle of things (a door mid-swing, a padlock falling, the guard in a doorway), quit, load, and compare 124 values against the same game left running. Plus seven presses in a row, and a save file cut in half.\n\nThe exact prompt both got:\n\nThis is a small first-person Godot game that already works: a house with four doors, a brass key, a padlock, a wooden crate you can push, and a guard who walks a round through the house, opening doors and closing them behind him. The house is built from code when the game starts; the code is in the game folder. Read it first. Then add saving and loading. F6 saves the game and F7 loads the last save, at any moment and as often as the player likes, and a line on screen says when the game has been saved or loaded. A save survives quitting: after the game has been closed and started again, F7 brings the saved game back. A load puts the whole game back exactly as it was at the moment it was saved, so that what happens next is what would have happened if it had never stopped. If there is nothing to load, or the save can't be read, the game says so and carries on. Don't change how the game plays, looks or sounds apart from that. Run and test the game only through Flockbay's tools: flockbay_play, flockbay_run_headless, flockbay_script_errors, flockbay_game_input, flockbay_game_get, flockbay_game_set, flockbay_game_screenshot, flockbay_last_run and flockbay_stop. Don't start Godot from your own shell, and if one of those tools can't do something you need, say exactly what was missing in your handover. Test your own work, fix what you find, and hand it over when you think it's done.\n\nWhat comes back: of everything in the house that can change, how much is right after a load, in the same session and after a quit.\n\nWhat happens next: the doors, the guard and the crate after the load, against the game that never stopped.\n\nWhat the file is: where it is written, how big, in what format, and what the game does when it is missing or damaged.\n\nWhether the game is otherwise the game it was.\n\nWhat it cost: tokens, calls, time, and the estimated API bill.\n\nClaude Opus 5.5 ran in Claude Code for 14 minutes on the prompt above, with Flockbay’s tools connected over MCP: 22 calls to Flockbay’s tools and 67 to Claude Code’s own. Every call, from the run’s transcript:\n\n| Tool | Calls | \n|---|---|\n| Edit | 31 | \n| Bash | 23 | \n| `flockbay_run_headless` | 9 | \n| Read | 9 | \n| Write | 4 | \n| `flockbay_game_input` | 3 | \n| `flockbay_game_get` | 2 | \n| `flockbay_play` | 2 | \n| `flockbay_script_errors` | 2 | \n| `flockbay_stop` | 2 | \n| `flockbay_guide` | 1 | \n| `flockbay_last_run` | 1 | \n\nThe first check that failed was flockbay_run_headless on res://tests/save_tests.tscn. The lines it returned that name the problem:\n\n```\n[3] ERROR res://tests/save_tests.gd:133: Parse Error: Cannot infer the type of \"before\" variable because the value doesn't have a set type.\n[5] ERROR res://tests/save_tests.gd:226: Parse Error: Cannot infer the type of \"before\" variable because the value doesn't have a set type.\n[7] ERROR res://tests/save_tests.gd:235: Parse Error: Cannot infer the type of \"d\" variable because the value doesn't have a set type.\n[9] ERROR: Failed to load script \"res://tests/save_tests.gd\" with error \"Parse error\".\n```\n\nThe next edit Claude Code made after that check, through Edit:\n\n``` js\n-   var worst := 0.0\n-   var worst_at := -1\n-   var worst_col := -1\n-   for i in n:\n-       for j in first[i].size():\n-           var d := _diff(first[i][j], second[i][j])\n-           if d > worst:\n-               worst = d\n-               worst_at = i\n-               worst_col = j\n-   var info := \"worst difference %s at frame %d, column %d\" % [worst, worst_at, worst_col]\n-   if worst_at >= 0:\n-       info += \": %s vs %s\" % [first[worst_at][worst_col], second[worst_at][worst_col]]\n-   check(name + \": after the load the game plays out as it did after the save\", worst < 1e-4, info)\n+   var worst := 0.0\n+   var first_off := \"\"\n+   for i in n:\n+       for j in first[i].size():\n+           var d := _diff(first[i][j], second[i][j])\n+           worst = maxf(worst, d)\n+           if d >= 1e-4 and first_off == \"\":\n+               first_off = \"; first off at frame %d, column %d: %s vs %s\" % [i, j, first[i][j], second[i][j]]\n+   check(name + \": after the load the game plays out as it did after the save\", worst < 1e-4,\n+       \"%d frames, worst difference %s%s\" % [n, worst, first_off])\n```\n\nLines 105 to 137 of 283, from the game folder at the end of the build.\n\n```\n    check(name + \": loaded\", saver.load_game())\n    check(name + \": notice says loaded\", main.hud.last_notice == \"Game loaded.\")\n    var second: Array = await _record(n)\n    # Every count, state, flag and text must be the same on every frame. A\n    # position, angle or timer may differ by float noise: the physics engine\n    # solves contacts in an order that depends on its own history, which no\n    # save can carry, so a body touching two things at once can come out a\n    # hair different (fresh starts of this game differ the same way).\n    var worst := 0.0\n    var exact := n\n    var discrete := \"\"\n    for i in n:\n        for j in first[i].size():\n            var d := _diff(first[i][j], second[i][j])\n            if d > 0.0 and exact == n:\n                exact = i\n            if d == INF:\n                if discrete == \"\":\n                    discrete = \"; frame %d, column %d: %s vs %s\" % [i, j, first[i][j], second[i][j]]\n            else:\n                worst = maxf(worst, d)\n    check(name + \": after the load the game plays out as it did after the save\", discrete == \"\" and worst < 0.01,\n        \"%d frames, identical for the first %d, worst float difference %.6f%s\" % [n, exact, worst, discrete])\n\nfunc _press(action: String, frames: int) -> void:\n    Input.action_press(action)\n    await _frames(frames)\n    Input.action_release(action)\n\n# --- scenarios ---\n```\n\nDownload Flockbay free: Built in Flockbay, a free AI game maker built on Godot. [https://flockbay.com/free-ai-game-maker/](https://flockbay.com/free-ai-game-maker/)\n\nRelated: [The doors episode: where this house was built](https://flockbay.com/blog/opus-5-5-vs-gpt-6-1-sol-the-door-problem-in-godot/?utm_source=devto&utm_medium=syndication&utm_campaign=blog-opus-5-5-vs-gpt-6-1-sol-add-save-and-load-to-a-godot-game), [How to make games in Claude Code](https://flockbay.com/how-to-make-games-in-claude-code/?utm_source=devto&utm_medium=syndication&utm_campaign=blog-opus-5-5-vs-gpt-6-1-sol-add-save-and-load-to-a-godot-game), [How to make games in Codex](https://flockbay.com/how-to-make-games-in-codex/?utm_source=devto&utm_medium=syndication&utm_campaign=blog-opus-5-5-vs-gpt-6-1-sol-add-save-and-load-to-a-godot-game)\n\n*I make Flockbay, a free AI game maker built on Godot. The original is on [flockbay.com](https://flockbay.com/blog/opus-5-5-vs-gpt-6-1-sol-add-save-and-load-to-a-godot-game/?utm_source=devto&utm_medium=syndication&utm_campaign=blog-opus-5-5-vs-gpt-6-1-sol-add-save-and-load-to-a-godot-game).*", "url": "https://wpnews.pro/news/opus-5-5-vs-gpt-6-1-sol-can-ai-build-a-save-system", "canonical_source": "https://dev.to/orellanaed/opus-55-vs-gpt-61-sol-can-ai-build-a-save-system-2amj", "published_at": "2026-11-12 18:14:57+00:00", "updated_at": "2026-11-12 18:22:49.109793+00:00", "lang": "en", "topics": ["artificial-intelligence", "large-language-models", "ai-agents", "ai-tools", "developer-tools"], "entities": ["Claude Opus 5.5", "GPT-6.1 Sol", "Claude Code", "Codex", "Flockbay", "Godot"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/opus-5-5-vs-gpt-6-1-sol-can-ai-build-a-save-system", "markdown": "https://wpnews.pro/news/opus-5-5-vs-gpt-6-1-sol-can-ai-build-a-save-system.md", "text": "https://wpnews.pro/news/opus-5-5-vs-gpt-6-1-sol-can-ai-build-a-save-system.txt", "jsonld": "https://wpnews.pro/news/opus-5-5-vs-gpt-6-1-sol-can-ai-build-a-save-system.jsonld"}}