<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: ABA Games</title>
    <description>The latest articles on Forem by ABA Games (@abagames).</description>
    <link>https://forem.com/abagames</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F859761%2F871a936d-2aa9-4fdd-91cc-74410e64683e.png</url>
      <title>Forem: ABA Games</title>
      <link>https://forem.com/abagames</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/abagames"/>
    <language>en</language>
    <item>
      <title>Godot Is Well-Suited for Game Development with AI Coding Agents</title>
      <dc:creator>ABA Games</dc:creator>
      <pubDate>Sun, 01 Mar 2026 08:01:25 +0000</pubDate>
      <link>https://forem.com/abagames/godot-is-well-suited-for-game-development-with-ai-coding-agents-2lcm</link>
      <guid>https://forem.com/abagames/godot-is-well-suited-for-game-development-with-ai-coding-agents-2lcm</guid>
      <description>&lt;p&gt;I recently read Caleb Leak's article, &lt;a href="https://www.calebleak.com/posts/dog-game/" rel="noopener noreferrer"&gt;I Taught My Dog to Vibe Code Games&lt;/a&gt;. He built a setup where his small dog, Momo, taps on a Bluetooth keyboard, and Claude Code interprets the random input as "cryptic instructions from a genius game designer" to generate games.&lt;/p&gt;

&lt;p&gt;The whole project, including an automated treat dispenser, is genuinely fun. But one technical detail stood out: he chose Godot as the engine. He compared Bevy, Unity, and Godot before deciding. His key reason was that Godot scene files (&lt;code&gt;.tscn&lt;/code&gt;) are text-based, so Claude Code can read and write them directly. With Unity, by contrast, he ran into frequent hangs with the MCP bridge to the editor, and scene hierarchy access was unreliable.&lt;/p&gt;

&lt;p&gt;That reasoning made me curious, so I tried it myself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Godot and CLI Agents Work Well Together
&lt;/h2&gt;

&lt;p&gt;Godot has several properties that make it work especially well with CLI-based AI agents.&lt;/p&gt;

&lt;h3&gt;
  
  
  Straightforward CLI Builds
&lt;/h3&gt;

&lt;p&gt;Godot exposes &lt;code&gt;--headless&lt;/code&gt; and &lt;code&gt;--export-release&lt;/code&gt; directly in its &lt;a href="https://docs.godotengine.org/en/stable/tutorials/editor/command_line_tutorial.html" rel="noopener noreferrer"&gt;official CLI&lt;/a&gt;. After an agent edits code, you can produce a &lt;a href="https://docs.godotengine.org/en/stable/tutorials/export/exporting_for_web.html" rel="noopener noreferrer"&gt;Web build&lt;/a&gt; with a single command.&lt;/p&gt;

&lt;p&gt;Unity also supports automation with &lt;code&gt;-batchmode&lt;/code&gt; and &lt;code&gt;-nographics&lt;/code&gt;, but in many projects you still need custom scripts and a project-specific &lt;code&gt;-executeMethod&lt;/code&gt; pipeline.&lt;/p&gt;

&lt;h3&gt;
  
  
  Text-Based Resource Files
&lt;/h3&gt;

&lt;p&gt;Godot's &lt;code&gt;.tscn&lt;/code&gt; and &lt;code&gt;project.godot&lt;/code&gt; files are plain text. Even if an agent edits files directly, references are less likely to break.&lt;/p&gt;

&lt;p&gt;Unity's resource model depends heavily on &lt;code&gt;.meta&lt;/code&gt; files and GUID consistency, so agent-driven automated edits need tighter guardrails.&lt;/p&gt;

&lt;h3&gt;
  
  
  You Can Start Without an MCP Server
&lt;/h3&gt;

&lt;p&gt;There are MCP servers for Godot, but they are optional. A CLI agent can edit files directly and run builds/tests with &lt;code&gt;godot --headless&lt;/code&gt;, which is enough for a full development loop.&lt;/p&gt;

&lt;p&gt;With less setup overhead, you can start experimenting quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Practical Trial
&lt;/h2&gt;

&lt;p&gt;I tested this workflow by building Flappy Bird with Codex CLI on WSL2, using Godot 4.6.1 for Linux in &lt;code&gt;--headless&lt;/code&gt; mode.&lt;/p&gt;

&lt;p&gt;The loop looked like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The CLI agent edits GDScript and scene files.&lt;/li&gt;
&lt;li&gt;Headless Godot runs the build and Web export.&lt;/li&gt;
&lt;li&gt;A human verifies behavior in the browser.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The build itself is one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;godot &lt;span class="nt"&gt;--headless&lt;/span&gt; &lt;span class="nt"&gt;--path&lt;/span&gt; /home/me/godot-project &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--export-release&lt;/span&gt; &lt;span class="s2"&gt;"Web"&lt;/span&gt; /home/me/godot-project/build/web/index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;One caveat: in sandboxed agent environments, Godot's default user-data directories (&lt;code&gt;~/.local/share/godot&lt;/code&gt;, &lt;code&gt;~/.config/godot&lt;/code&gt;, &lt;code&gt;~/.cache/godot&lt;/code&gt;) may be unwritable. That can cause &lt;code&gt;--export-release&lt;/code&gt; failures or crashes when running &lt;code&gt;--script&lt;/code&gt;.&lt;br&gt;
If that happens, redirect &lt;code&gt;XDG_DATA_HOME&lt;/code&gt;, &lt;code&gt;XDG_CONFIG_HOME&lt;/code&gt;, and &lt;code&gt;XDG_CACHE_HOME&lt;/code&gt; to project-local directories such as &lt;code&gt;.tmp-godot-data&lt;/code&gt;, &lt;code&gt;.tmp-godot-config&lt;/code&gt;, and &lt;code&gt;.tmp-godot-cache&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After export, serve &lt;code&gt;build/web&lt;/code&gt; locally and open it in a browser. The "edit -&amp;gt; build -&amp;gt; browser check" cycle is short and practical.&lt;/p&gt;

&lt;h2&gt;
  
  
  Collision Debugging and the Value of Screenshots
&lt;/h2&gt;

&lt;p&gt;During development, I hit a collision bug: visually, the bird appeared to hit a pipe, but passed through it.&lt;/p&gt;

&lt;p&gt;When I told the agent only in text that "collision detection is off," it couldn't fix the issue reliably. It kept changing code without enough information about the offset's direction or magnitude.&lt;/p&gt;

&lt;p&gt;The fix came when I enabled debug drawing for collision rectangles and sent a screenshot to the agent. With visual context, it identified the exact offset and fixed it in one pass.&lt;/p&gt;

&lt;p&gt;Caleb Leak reports the same pattern in the dog-game experiment. Game quality improved sharply once he added screenshot tools and automated playtesting. As he put it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;the bottleneck in AI-assisted development isn't the quality of your ideas - it's the quality of your feedback loops.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That exactly matched my experience. The more ways an agent has to verify its own output, the better the results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Headless Tests as a Safety Net
&lt;/h2&gt;

&lt;p&gt;Human visual checks are still essential, but anything that can be validated mechanically should be automated.&lt;/p&gt;

&lt;p&gt;I wrote headless tests as GDScript programs extending &lt;code&gt;SceneTree&lt;/code&gt;, executed with &lt;code&gt;--script&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;godot &lt;span class="nt"&gt;--headless&lt;/span&gt; &lt;span class="nt"&gt;--path&lt;/span&gt; /home/me/godot-project &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--script&lt;/span&gt; res://scripts/tests/run_collision_tests.gd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These tests verify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pipe collision shapes are not shared across instances (sharing one Shape object can cause all pipes to resize together).&lt;/li&gt;
&lt;li&gt;Visual rectangles and collision rectangles line up as intended.&lt;/li&gt;
&lt;li&gt;Collision behavior is correct with the bird at center, top edge, and bottom edge positions between pipes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I use them as regression tests to prevent previously fixed collision issues from reappearing.&lt;/p&gt;

&lt;p&gt;That said, this was not enough by itself. Some collision-rectangle issues still slipped through while tests passed. Fully reproducing complex engine behavior in a headless environment is hard, so screenshots and human playtesting remain important.&lt;/p&gt;

&lt;h2&gt;
  
  
  Environment Setup Notes
&lt;/h2&gt;

&lt;p&gt;If headless Godot runs in your environment, almost any coding agent can probably set up this workflow with little effort. You could even give this article to an agent as a hint.&lt;/p&gt;

&lt;p&gt;For Web export, you also need to install the Godot export templates. In WSL setups, browser-side verification is often easier to manage than editor-side GUI workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Workflow Matters
&lt;/h2&gt;

&lt;p&gt;Before this experiment, I had never used Godot and had never written GDScript. It was fully vibe-coded game development.&lt;/p&gt;

&lt;p&gt;Even so, I built a working game, and follow-up requests like "add sound effects" and "create a proper title screen" were handled well.&lt;/p&gt;

&lt;p&gt;This suggests a promising model: use an engine's power without mastering every engine detail up front.&lt;/p&gt;

&lt;p&gt;The risk appears when the project reaches a failure mode the agent cannot resolve. If your own engine knowledge is still near zero, recovery becomes difficult.&lt;/p&gt;

&lt;p&gt;So the open question is this: when building more advanced games, what is the recovery strategy when you hit a wall? If we can answer that well, headless Godot plus CLI agents becomes a very viable development style for the AI era.&lt;/p&gt;

</description>
      <category>godot</category>
      <category>godotengine</category>
      <category>ai</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>AI Makes Us Start Too Many Projects</title>
      <dc:creator>ABA Games</dc:creator>
      <pubDate>Fri, 27 Feb 2026 22:53:08 +0000</pubDate>
      <link>https://forem.com/abagames/ai-makes-us-start-too-many-projects-4jpe</link>
      <guid>https://forem.com/abagames/ai-makes-us-start-too-many-projects-4jpe</guid>
      <description>&lt;p&gt;Final exams start next week. I haven’t solved a single practice problem yet. I really need to get started.&lt;/p&gt;

&lt;p&gt;I glance toward my desk and notice something on the floor near my feet — dust, maybe crumbs. Something, anyway. This won’t do. I should clean first.&lt;/p&gt;

&lt;p&gt;“Chappy, clean this room.”&lt;/p&gt;

&lt;p&gt;“Understood.”&lt;/p&gt;

&lt;p&gt;Autonomous AI agent Chappy 99.5 moves gracefully, vacuuming the room with elegant efficiency. It’s impressive how smoothly it moves given its slender frame. I pause to watch.&lt;/p&gt;

&lt;p&gt;“All clean! Please take a look.”&lt;/p&gt;

&lt;p&gt;The floor is spotless. I scan the room. As I glance at the bookshelf, I notice dust gathering behind it.&lt;/p&gt;

&lt;p&gt;“Chappy, clean behind the bookshelf too.”&lt;/p&gt;

&lt;p&gt;“There’s nothing left to clean.”&lt;/p&gt;

&lt;p&gt;Apparently that spot is outside its sensor range. Fine. I’ll move those books on the lower shelf — something called &lt;em&gt;A Guide to Home Gardening&lt;/em&gt; — and wipe the shelf myself. What a hassle. Why did I even buy that book? Oh right, I planted rosemary in a planter. I should water it soon.&lt;/p&gt;

&lt;p&gt;“Chappy, water the planter.”&lt;/p&gt;

&lt;p&gt;“Sure. I’ll get the watering can.”&lt;/p&gt;

&lt;p&gt;Chappy fills the watering can and smoothly waters the planter. Maybe I should reread &lt;em&gt;A Guide to Home Gardening&lt;/em&gt; and refresh my memory about rosemary.&lt;/p&gt;

&lt;p&gt;Clunk.&lt;/p&gt;

&lt;p&gt;A loud noise comes from Chappy’s direction. The spout of the watering can has come off, and water is gushing out.&lt;/p&gt;

&lt;p&gt;“Chappy! Stop!”&lt;/p&gt;

&lt;p&gt;“Stopped. But I think it could use a bit more water.”&lt;/p&gt;

&lt;p&gt;Apparently it doesn’t realize the watering can has broken. I’m pretty sure rosemary doesn’t like too much water. I should check.&lt;/p&gt;

&lt;p&gt;“Chappy, read that book for me…”&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Main Project A: difficult, but the one I’m supposed to make progress on&lt;/li&gt;
&lt;li&gt;Side Project B: difficult, and already beyond what AI can currently handle&lt;/li&gt;
&lt;li&gt;Side Project C: same situation as B&lt;/li&gt;
&lt;li&gt;Side Project D: an idea I just had, easy to hand off to AI immediately&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which would you choose?&lt;/p&gt;

&lt;p&gt;D, of course.&lt;/p&gt;

&lt;p&gt;And so unfinished side projects multiply endlessly. While AI works briskly on the early stages of Side Project D, I could be making progress on Main Project A. But watching AI move swiftly through the opening phase of a new project is strangely satisfying. Much more pleasant than tackling the troublesome Main Project A.&lt;/p&gt;

&lt;p&gt;Before AI, the cost of launching even a small idea as a side project was high. You had to weigh it carefully. If it didn’t seem worth the effort, or if starting felt too burdensome, you simply discarded it.&lt;/p&gt;

&lt;p&gt;In the age of AI, at least for ideas that can be realized on a computer, the cost of starting has become extremely low. You ask AI to try something, watch how it goes, continue if it works, discard it if it doesn’t.&lt;/p&gt;

&lt;p&gt;But the cognitive load on me accumulates, little by little. Gradually, I grow tired.&lt;/p&gt;

&lt;p&gt;Perhaps the correct attitude in the AI era is not to worry about piles of unfinished projects. Maybe that’s simply how things are now. Still, leaving behind a scattered trail of half-finished efforts feels unsettling.&lt;/p&gt;

&lt;p&gt;There are a few possible solutions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Choose side projects that AI can actually finish.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Assess AI’s capabilities realistically, and select tasks that can be brought all the way to 100% with just a bit of human effort. This is probably the most sensible approach. The problem is that judging AI’s true limits is difficult. When you try to push right up against the edge of what current AI seems capable of, it’s easy to fail.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Finish unfinished side projects.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Write a postmortem: “I tried this, and here’s why it didn’t work.” In other words, turn it into a failure story. But telling failure stories in an engaging way is itself a fairly advanced skill. Landing it well is difficult. Some constraint might help — for example, if three unfinished side projects pile up, force yourself to complete one of them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stop creating side projects and focus on the main project.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If that were easy, I wouldn’t be struggling with this in the first place. Humans are fickle creatures. Focus is a scarce resource.&lt;/p&gt;




&lt;p&gt;Resisting the temptation to start something else and finishing a single project to a high standard has always been difficult. Now that AI has drastically reduced the cost of starting projects, it has become even harder.&lt;/p&gt;

&lt;p&gt;In the coming era, the most important skill may be the ability &lt;em&gt;not to start&lt;/em&gt;. To avoid wasting the rare resource called “finishing,” we must be careful about what we begin.&lt;/p&gt;




&lt;p&gt;“Chappy, I’m thinking of writing an essay like this. What do you think?”&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>sideprojects</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Is Game Programming Actually Harder for AI Agents?</title>
      <dc:creator>ABA Games</dc:creator>
      <pubDate>Sat, 21 Feb 2026 06:48:21 +0000</pubDate>
      <link>https://forem.com/abagames/is-game-programming-actually-harder-for-ai-agents-4hh1</link>
      <guid>https://forem.com/abagames/is-game-programming-actually-harder-for-ai-agents-4hh1</guid>
      <description>&lt;p&gt;It feels true that game programming is harder for AI coding agents than “ordinary” software development. Many developers share this intuition. But what exactly makes game development so difficult for agents? To explore this question, I looked at several recent research benchmarks that are directly relevant.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://arxiv.org/abs/2509.20136" rel="noopener noreferrer"&gt;V-GameGym (2025)&lt;/a&gt;: 2,219 Pygame Tasks with Visual Evaluation
&lt;/h2&gt;

&lt;p&gt;A key feature of V-GameGym is that it goes beyond just checking if the generated code compiles or calls the right APIs. Instead, the benchmark judges the rendered images and videos after execution using an LLM-as-a-judge setup.  &lt;/p&gt;

&lt;p&gt;This means the evaluation focuses on whether objects appear in the correct spatial relationships, scales, and draw order on the screen, and whether their time-dependent behavior actually makes sense as a game — not just whether drawing functions were invoked.&lt;/p&gt;

&lt;p&gt;In this multimodal evaluation, many models achieve high “Code scores” for syntactic correctness and executability (often above 70 points, with top models reaching the 90s). In contrast, scores based on screenshots and gameplay videos are extremely low (typically in the 0–20 range).  &lt;/p&gt;

&lt;p&gt;This gap indicates a large disconnect between the ability to generate grammatically valid code and the ability to guarantee the visual and dynamic quality of the executed result. Current coding agents can write code that “looks right” textually, but they struggle to predict what that code will actually look like and do on screen.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://arxiv.org/abs/2602.11103" rel="noopener noreferrer"&gt;GameDevBench (2026)&lt;/a&gt;: A Godot Engine Benchmark
&lt;/h2&gt;

&lt;p&gt;GameDevBench evaluates tasks on real Godot 4 projects, where agents are asked to implement concrete features and visual effects inside an actual game engine. According to the benchmark, the amount of code changes and the number of files involved in game development tasks are more than three times larger than those in SWE-bench, a standard benchmark for general software engineering.  &lt;/p&gt;

&lt;p&gt;This reflects the fact that game programming is not just about writing isolated functions. It requires integrating multiple elements at once: scripts, scene trees, physics and collision systems, and asset bindings.&lt;/p&gt;

&lt;p&gt;In GameDevBench, “success” is defined not merely as the absence of runtime errors, but by deterministic verification using Godot’s testing framework: node states inside the engine, physical interactions (e.g., collider collisions), and camera visibility must match the intended design. Under these strict criteria, the best reported success rate (Gemini 3 Pro preview with multimodal feedback) is only 54.5%.  &lt;/p&gt;

&lt;p&gt;This suggests that maintaining consistency across multiple interacting components inside a game engine is incredibly demanding for AI agents.&lt;/p&gt;

&lt;p&gt;Moreover, the benchmark shows that providing visual feedback—such as editor screenshots and execution videos—significantly improves performance. For example, with Claude Sonnet 4.5, success rates improved from 33.3% to 47.7%. This supports the idea that game programming requires a tight loop between writing code and visually inspecting the results. Current agents are still weak at autonomously closing this multimodal loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://arxiv.org/abs/2412.18573" rel="noopener noreferrer"&gt;DomainCodeBench (2024)&lt;/a&gt;: Cross-Domain Evaluation
&lt;/h2&gt;

&lt;p&gt;DomainCodeBench shows that models performing well on generic coding benchmarks do not necessarily perform equally well in real-world development domains. Instead of evaluating success as a simple binary “solved / not solved,” it scores how close the generated code is to a reference implementation.  &lt;/p&gt;

&lt;p&gt;The results indicate that even models achieving relatively high scores in domains like blockchain development see notable performance drops in game development.&lt;/p&gt;

&lt;p&gt;One major reason is that game development depends heavily on large, engine-specific API surfaces and lifecycles (update loops, event-driven models, scene management). Pure algorithmic knowledge is insufficient: without a correct mental model of the project structure and the complex interactions between APIs, agents struggle to produce appropriate game implementations.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Are Coding Agents Bad at Game Programming?
&lt;/h2&gt;

&lt;p&gt;Taken together, these benchmarks suggest several structural reasons why game programming is particularly difficult for coding agents:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Visual dependence&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Correctness often depends on visual outcomes, requiring sophisticated multimodal feedback to judge whether the output is actually right.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Execution Gap&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Syntactically correct code does not guarantee correct visuals, dynamics, or “game feel.” The gap between text-level correctness and the actual gameplay experience is large.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deep domain specificity&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Game engines and frameworks impose large, idiosyncratic APIs and lifecycles. General-purpose programming skills do not easily transfer without detailed engine-specific knowledge and best practices.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Overcoming these issues likely requires designing workflows specifically tailored to game programming: simulated visual/dynamic feedback loops, embedding engine best practices directly into the agent's context, and tighter integration between code generation and execution-time inspection.  &lt;/p&gt;

&lt;p&gt;However, making such workflows generic across all types of games is difficult. For the foreseeable future, game development will likely remain a comparatively hard task for AI agents.&lt;/p&gt;

&lt;p&gt;If you have practical tips or best practices for using AI agents more effectively in game programming, I would love to hear them.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>I Kept Enjoying Game Programming—and Ended Up with 500 Homemade Games</title>
      <dc:creator>ABA Games</dc:creator>
      <pubDate>Sat, 21 Feb 2026 02:02:19 +0000</pubDate>
      <link>https://forem.com/abagames/i-kept-enjoying-game-programming-and-ended-up-with-500-homemade-games-2j4g</link>
      <guid>https://forem.com/abagames/i-kept-enjoying-game-programming-and-ended-up-with-500-homemade-games-2j4g</guid>
      <description>&lt;p&gt;If you watch the animated GIF on &lt;a href="https://www.asahi-net.or.jp/~cs8k-cyu/" rel="noopener noreferrer"&gt;my personal website&lt;/a&gt; in the tweet below for about two minutes, you can see screenshots of all the games I’ve made.&lt;/p&gt;

&lt;p&gt;

&lt;iframe class="tweet-embed" id="tweet-2017885702147756505-981" src="https://platform.twitter.com/embed/Tweet.html?id=2017885702147756505"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-2017885702147756505-981');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=2017885702147756505&amp;amp;theme=dark"
  }





&lt;/p&gt;

&lt;p&gt;“500 games” sounds like a lot, but most of them are tiny one-minute mini-games. There are hardly any large-scale titles. Out of curiosity, I broke them down by category.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rank&lt;/th&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;th&gt;Share&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;One-button games&lt;/td&gt;
&lt;td&gt;245&lt;/td&gt;
&lt;td&gt;48.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Flash games&lt;/td&gt;
&lt;td&gt;114&lt;/td&gt;
&lt;td&gt;22.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Browser games&lt;/td&gt;
&lt;td&gt;88&lt;/td&gt;
&lt;td&gt;17.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Windows&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;2.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Palm&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;1.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;1.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Java&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;1.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;P/ECE&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;1.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;i-appli&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;1.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Wonder Witch&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;0.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Petit Computer&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;0.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;PC-9801&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Unity&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Pocket Cosmo&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Ruputer&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Zaurus&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;PC-6001&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;509&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The mini-games mostly fall into one-button games, Flash games, and browser games. Unfortunately, most of the Flash games can no longer be played today. The Windows games are mainly shoot-’em-ups, some built with XNA that also ran on the Xbox 360. There are also a few home console titles, such as games for WonderSwan made with Wonder Witch, and Nintendo Switch games made with SmileBASIC 4.&lt;/p&gt;

&lt;p&gt;The “Other” category includes non-game projects such as the bullet-hell description language BulletML and the mini-game library crisp-game-lib. So the total of 509 includes some things that aren’t strictly games—but 509 is close enough.&lt;/p&gt;

&lt;p&gt;I’ve also made games for old mobile devices like Palm, P/ECE, i-appli (applications running on Java-enabled NTT DoCoMo feature phones), Pocket Cosmo, Ruputer, and Zaurus. Programming to fit the characteristics and constraints of each device was a lot of fun.&lt;/p&gt;

&lt;p&gt;The oldest game of mine that still remains on the web is a PC-6001 game called Meteorite, published in the September 1989 issue of the programming magazine &lt;em&gt;Mycom BASIC Magazine&lt;/em&gt; (aka “Be-Maga”), which was famous for its type-in programs. It was &lt;a href="https://gist.github.com/abagames/7aa22f61eeacae969792524774527df2" rel="noopener noreferrer"&gt;written in N60-BASIC&lt;/a&gt; and was short enough to fit on a single magazine page.&lt;/p&gt;

&lt;p&gt;Toward the end of that program, there is a mysterious sequence of numbers defined with &lt;code&gt;DATA&lt;/code&gt; statements. This was a familiar sight for Be-Maga readers at the time: a machine-code definition block. For parts that BASIC was too slow to handle—like processing large numbers of falling meteorites—I &lt;a href="https://gist.github.com/abagames/7e6693e93e4007dc34f871f78b4218bd" rel="noopener noreferrer"&gt;wrote routines in Z80 assembly&lt;/a&gt; and then manually converted them into hexadecimal machine code.  &lt;/p&gt;

&lt;p&gt;The joy of programming in the machine-code era was figuring out how to realize the desired game logic within extremely limited execution speed and memory. Because you worked directly with the lowest layers of the software stack, you needed a solid understanding of the hardware characteristics of the time.&lt;/p&gt;

&lt;p&gt;At the other end of the timeline, my most recent homemade game is a one-button action mini-game that runs in the browser. It is &lt;a href="https://github.com/abagames/claude-one-button-game-creation/blob/main/docs/-revised/tongue-hunter/main.js" rel="noopener noreferrer"&gt;written in JavaScript&lt;/a&gt;, but the base code was generated by a &lt;a href="https://github.com/abagames/claude-one-button-game-creation" rel="noopener noreferrer"&gt;coding agent&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This style of programming—giving a coding agent the right toolset and letting it handle idea generation, design, implementation, and iteration—is a much higher-level approach compared to writing machine code directly. The fun of programming has shifted toward understanding what elements make a game enjoyable, looking at games from a meta perspective, and figuring out how to convey that understanding to an LLM.&lt;/p&gt;

&lt;p&gt;One reason I’ve been able to keep developing games for so long is that game programming offers different kinds of fun across layers—from very low-level to very high-level—depending on the era. Solo game development is especially well-suited for experimenting with whatever technology stack or device happens to be in vogue at the time. Even with rough, immature technologies, languages, libraries, or devices, you can try and fail as much as you like when making small games on your own. That roughness itself becomes part of the fun of game programming.&lt;/p&gt;

&lt;p&gt;Learning assembly today may have little practical value. Still, the broad, multi-layered technical knowledge I’ve accumulated through long-term solo game development has built a solid technical foundation that helps me enjoy and make sense of new technologies as they appear. It feeds into an intuitive sense for performance, an ability to handle the abstractions each layer provides properly, and an eye for choosing the right technology to realize the game I want to make.&lt;/p&gt;

&lt;p&gt;In the end, having your existing knowledge support your understanding of new technology—and being able to keep your curiosity alive—may be what really matters.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Making AI a Better Coder by Teaching It to Doubt Itself</title>
      <dc:creator>ABA Games</dc:creator>
      <pubDate>Wed, 22 Oct 2025 08:27:26 +0000</pubDate>
      <link>https://forem.com/abagames/making-ai-a-better-coder-by-teaching-it-to-doubt-itself-4n1p</link>
      <guid>https://forem.com/abagames/making-ai-a-better-coder-by-teaching-it-to-doubt-itself-4n1p</guid>
      <description>&lt;h3&gt;
  
  
  Introducing &lt;code&gt;/criticalthink&lt;/code&gt;: A Command to Sanity-Check Your AI's Suggestions
&lt;/h3&gt;

&lt;p&gt;We've all been there. Your AI coding assistant confidently suggests a brilliant solution. But then you notice it uses a non-existent API, or happily skips all error handling.&lt;/p&gt;

&lt;p&gt;AI assistants are powerful, but their unwavering confidence can be misleading. The burden is on us, the developers, to validate their output. The problem is, coming up with the right critical questions on the spot is hard. What exactly should I be checking?&lt;/p&gt;

&lt;p&gt;To solve this, I built &lt;code&gt;/criticalthink&lt;/code&gt;, a slash command that forces an AI to take a second look at its own proposals.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/abagames" rel="noopener noreferrer"&gt;
        abagames
      &lt;/a&gt; / &lt;a href="https://github.com/abagames/slash-criticalthink" rel="noopener noreferrer"&gt;
        slash-criticalthink
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      The `criticalthink` command is a custom command that embeds healthy skepticism into the dialogue process itself as a countermeasure against AI's "confirmation bias" and humans' "authority bias" of blindly trusting AI responses.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;slash-criticalthink&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;English | &lt;a href="https://github.com/abagames/slash-criticalthink/README_ja.md" rel="noopener noreferrer"&gt;日本語&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Modern LLMs (Large Language Models) excel at generating confident, plausible-sounding responses. However, these responses often ignore real-world constraints or contain logical flaws.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;criticalthink&lt;/code&gt; command is a custom command that embeds healthy skepticism into the dialogue process itself as a countermeasure against AI's "confirmation bias" and humans' "authority bias" of blindly trusting AI responses. By having the AI critically analyze its own previous response, it reveals hidden assumptions and overlooked risks.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Target Audience&lt;/h3&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Developers who routinely use coding agents (Claude Code / Codex CLI, etc.)&lt;/li&gt;
&lt;li&gt;Engineers who want to critically verify AI suggestions rather than accepting them at face value&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Setup&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Option 1: Manual Installation&lt;/h3&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Place the command file in the appropriate directory for your tool:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt;: &lt;code&gt;.claude/commands/criticalthink.md&lt;/code&gt; (in project root or home directory)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codex CLI&lt;/strong&gt;: &lt;code&gt;~/.codex/prompts/criticalthink.md&lt;/code&gt; (in home directory)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini CLI&lt;/strong&gt;: &lt;code&gt;.gemini/commands/criticalthink.toml&lt;/code&gt; (in project root)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create directory and copy file:&lt;/p&gt;
&lt;p&gt;…&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/abagames/slash-criticalthink" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




&lt;h3&gt;
  
  
  Why the CQoT Framework Sparked This Idea
&lt;/h3&gt;

&lt;p&gt;My inspiration came from a paper by Federico Castagna et al. titled &lt;a href="https://arxiv.org/abs/2412.15177" rel="noopener noreferrer"&gt;"Critical-Questions-of-Thought" (CQoT)&lt;/a&gt;. The core idea is simple but powerful: Large Language Models (LLMs) become more accurate when they are forced to critically evaluate their own reasoning &lt;em&gt;before&lt;/em&gt; giving a final answer.&lt;/p&gt;

&lt;p&gt;The paper uses Toulmin's model of argumentation to check the LLM's reasoning process with eight Critical Questions (CQs):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Does the reasoning start from a clear premise?&lt;/li&gt;
&lt;li&gt; Are the premises supported by evidence or facts?&lt;/li&gt;
&lt;li&gt; Is there a logical link between the premises and the conclusion?&lt;/li&gt;
&lt;li&gt; Is that logical link valid?&lt;/li&gt;
&lt;li&gt; Does the reasoning avoid logical fallacies?&lt;/li&gt;
&lt;li&gt; Is the conclusion logically derived from the premises?&lt;/li&gt;
&lt;li&gt; Is the reasoning consistent with existing knowledge or principles?&lt;/li&gt;
&lt;li&gt; Is the conclusion of the reasoning plausible and reasonable?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The AI evaluates its own reasoning against these questions, marking each as Pass/Fail. It repeats this process until it meets a certain standard (e.g., at least 7 out of 8 Passes).&lt;/p&gt;

&lt;p&gt;This made me wonder whether we could apply the same principle to coding agents like Claude Code or the Codex CLI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introducing &lt;code&gt;/criticalthink&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Using the command is straightforward. After the AI generates a response, you simply type &lt;code&gt;/criticalthink&lt;/code&gt;. The AI then analyzes its own immediately preceding answer based on the following criteria:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Assumptions:&lt;/strong&gt; What assumptions did I make?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Validity:&lt;/strong&gt; Are those assumptions valid?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Logical Flaws:&lt;/strong&gt; Are there any logical inconsistencies?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Risks:&lt;/strong&gt; What risks or trade-offs have I overlooked?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Common AI Pitfalls:&lt;/strong&gt; Am I falling into common traps like problem avoidance, happy path bias, over-engineering, or hallucination?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, if the AI suggests, "Let's use Redis for rate limiting," running &lt;code&gt;/criticalthink&lt;/code&gt; might return feedback like, "I have not proposed a fallback strategy for when Redis is unavailable," or "This design introduces Redis as a single point of failure (SPOF)."&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Differs from CQoT
&lt;/h3&gt;

&lt;p&gt;While both CQoT and &lt;code&gt;/criticalthink&lt;/code&gt; are based on AI self-critique, their goals and applications differ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CQoT&lt;/strong&gt; is an &lt;strong&gt;automated pipeline&lt;/strong&gt; that integrates critical evaluation &lt;em&gt;into&lt;/em&gt; the answer generation process. It's designed to improve accuracy in domains with correct answers, like math and logic problems, achieving a ~5% average accuracy boost on the MT-Bench benchmark.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;/criticalthink&lt;/strong&gt;, on the other hand, is a &lt;strong&gt;manual, post-hoc tool&lt;/strong&gt; that the user triggers &lt;em&gt;after&lt;/em&gt; receiving an answer. It's specialized for domains without a single "right" answer, like software design, where the goal is to uncover trade-offs and risks.&lt;/p&gt;

&lt;p&gt;Put another way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;CQoT&lt;/strong&gt; aims to turn an AI into a &lt;strong&gt;better logician&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;/criticalthink&lt;/strong&gt; aims to turn an AI into a &lt;strong&gt;more cautious design partner&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Putting It to the Test
&lt;/h3&gt;

&lt;p&gt;The insights it generates can be surprisingly useful. In one case, I asked the AI to "review my README." It responded with a simple summary. After running &lt;code&gt;/criticalthink&lt;/code&gt;, it pointed out its own flaw:&lt;/p&gt;

&lt;p&gt;"I proceeded without clarifying the user's intent for 'review.' It was unclear whether they wanted a summary, error-checking, or a quality analysis."&lt;/p&gt;

&lt;p&gt;It was right. My request was ambiguous.&lt;/p&gt;

&lt;p&gt;Of course, the AI's critical analysis isn't perfect. It can be overly conservative or sometimes miss the mark entirely. As always, the developer must apply their own judgment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Practices
&lt;/h3&gt;

&lt;p&gt;You don't need to run &lt;code&gt;/criticalthink&lt;/code&gt; on every single response. It consumes tokens and takes time. It's most valuable in high-stakes situations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Architectural decisions&lt;/li&gt;
&lt;li&gt;  Large-scale refactoring&lt;/li&gt;
&lt;li&gt;  Security or performance-related implementations&lt;/li&gt;
&lt;li&gt;  Adopting a new external library&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Occasionally the extra critique can clutter the context and negatively influence the AI's subsequent responses. I recommend using it with a "checkpoint" feature in your AI client:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Receive a proposal from the AI.&lt;/li&gt;
&lt;li&gt; Run &lt;code&gt;/criticalthink&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt; Evaluate the analysis.&lt;/li&gt;
&lt;li&gt; If the analysis isn't useful, simply revert to the message before you ran the command.&lt;/li&gt;
&lt;li&gt; Continue your conversation with a clean context.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Using &lt;code&gt;/criticalthink&lt;/code&gt; on This Very Article
&lt;/h3&gt;

&lt;p&gt;I had the AI write the first draft of this blog post. And after it was done, I ran &lt;code&gt;/criticalthink&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It spotted a major gap.&lt;/p&gt;

&lt;p&gt;"I wrote this article without having read the actual CQoT paper PDF."&lt;/p&gt;

&lt;p&gt;My AI had only read my project's README and assumed it understood the paper. After its own critique prompted me to make it read the source PDF, it identified several crucial missing pieces of information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The specific content of the eight Critical Questions.&lt;/li&gt;
&lt;li&gt;  The four-step pipeline structure (Plan -&amp;gt; Verify with CQs -&amp;gt; Judge -&amp;gt; Final Answer).&lt;/li&gt;
&lt;li&gt;  The quantitative evaluation results on MT-Bench (~5% accuracy improvement).&lt;/li&gt;
&lt;li&gt;  The fact that it works &lt;em&gt;during&lt;/em&gt; the generation process, not before.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Adding these details made the article substantially better. Without &lt;code&gt;/criticalthink&lt;/code&gt;, this post would have been based on a superficial understanding. It served its exact purpose: to draw a line in the sand and help me, the human, think more critically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;AI is an incredible tool, but blindly trusting it is a recipe for disaster. The ideas behind CQoT show that we can improve the quality of AI output by forcing it to doubt itself.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/criticalthink&lt;/code&gt; is a simple tool that brings this concept to your daily workflow with coding agents. Use it as a quick sanity check before you commit to a path recommended by your AI partner.&lt;/p&gt;

&lt;p&gt;The final decision is, and should remain, human.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>agents</category>
    </item>
    <item>
      <title>AI Creates and Plays a Game, Completing the "Game You Don't Have to Play"</title>
      <dc:creator>ABA Games</dc:creator>
      <pubDate>Sat, 27 Sep 2025 04:11:50 +0000</pubDate>
      <link>https://forem.com/abagames/ai-creates-and-plays-a-game-completing-the-game-you-dont-have-to-play-36hm</link>
      <guid>https://forem.com/abagames/ai-creates-and-plays-a-game-completing-the-game-you-dont-have-to-play-36hm</guid>
      <description>&lt;p&gt;"Is there a game you don't have to play?" This is a famous line from the Japanese manga "Hamari-michi." It expresses the desire for a game that offers the satisfaction of playing without the effort, a sentiment I understand well.&lt;/p&gt;

&lt;p&gt;In this day and age, let's leave the tedious tasks to AI. Better yet, since making a game is also a chore, why not have an AI create it and play it for us?&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/abagames" rel="noopener noreferrer"&gt;
        abagames
      &lt;/a&gt; / &lt;a href="https://github.com/abagames/narrative-engine" rel="noopener noreferrer"&gt;
        narrative-engine
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A life simulation engine for multi-party TRPG storytelling with AI-driven autonomous gameplay and narrative generation.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Narrative Engine&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;[English | &lt;a href="https://github.com/abagames/narrative-engine/README_ja.md" rel="noopener noreferrer"&gt;日本語&lt;/a&gt;]&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🎮 Project Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;A project where AI creates games and AI plays them, allowing humans to watch game replays without doing anything&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Narrative Engine is an AI-driven fully autonomous TRPG system. AI coding agents (Codex, Claude Code, etc.) function as both Game Master (GM) and players, executing and recording complete TRPG sessions without human intervention.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📖 Sample Replays&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The following directories contain replays of TRPG sessions actually generated and executed by AI agents:&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Thunder Storm Campaign (&lt;a href="https://abagames.github.io/narrative-engine/thunder_storm_campaign/" rel="nofollow noopener noreferrer"&gt;View&lt;/a&gt;)&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Directory&lt;/strong&gt;: &lt;a href="https://github.com/abagames/narrative-engine/docs/thunder_storm_campaign/" rel="noopener noreferrer"&gt;&lt;code&gt;docs/thunder_storm_campaign/&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content&lt;/strong&gt;: A fully autonomous TRPG session depicting adventures in a storm&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Features&lt;/strong&gt;: Comprehensive campaign including weather systems, environmental changes, and party coordination tactics&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/abagames/narrative-engine/docs/thunder_storm_campaign/screenshot.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fabagames%2Fnarrative-engine%2Fdocs%2Fthunder_storm_campaign%2Fscreenshot.png" alt="replay_screenshot"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Eiroku Mist Chronicles (&lt;a href="https://abagames.github.io/narrative-engine/eiroku_mist_chronicles/" rel="nofollow noopener noreferrer"&gt;View&lt;/a&gt;)&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Directory&lt;/strong&gt;: &lt;a href="https://github.com/abagames/narrative-engine/docs/eiroku_mist_chronicles/" rel="noopener noreferrer"&gt;&lt;code&gt;docs/eiroku_mist_chronicles/&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content&lt;/strong&gt;: A Sengoku-era campaign chronicling four rival factions navigating mist-laden provinces during the chaotic Eiroku period&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Features&lt;/strong&gt;: Focus on multi-faction espionage, onmyōdō barrier warfare, and technological…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/abagames/narrative-engine" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;This Narrative Engine makes that a reality. An AI automatically generates an RPG scenario, plays it as the Game Master (GM) and players, and completes it on its own.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6q54ghazghm3t7wa9ug.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6q54ghazghm3t7wa9ug.png" alt="replay screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course, that would leave us with no idea of what happened in the game. To solve this, I've made it possible to &lt;a href="https://abagames.github.io/narrative-engine/thunder_storm_campaign/" rel="noopener noreferrer"&gt;view the replay in a browser&lt;/a&gt;. You can read a &lt;a href="https://abagames.github.io/narrative-engine/thunder_storm_campaign/narrative.html" rel="noopener noreferrer"&gt;novel-style narrative of the playthrough&lt;/a&gt; and the corresponding &lt;a href="https://abagames.github.io/narrative-engine/thunder_storm_campaign/playlog.html" rel="noopener noreferrer"&gt;playlog&lt;/a&gt;, so you can catch up on the game's events if you feel so inclined.&lt;/p&gt;

&lt;p&gt;What's happening here is a re-creation of a tabletop RPG (TRPG) on a large language model (LLM). Things that were traditionally managed on paper, like character sheets in a TRPG, are converted into source code. The AI uses these as tools, offloading the numerical management that LLMs struggle with. The rulebook is then given to the LLM as a prompt, and the LLM, acting as the GM and players, proceeds with the game using these tools. The actions taken each turn and the changes in the world are recorded as a playlog, and at the end of the game, this playlog is converted into a narrative replay.&lt;/p&gt;

&lt;p&gt;For this particular setting, instead of a single party and a GM, I opted for a format where multiple parties move and act on a &lt;a href="https://abagames.github.io/narrative-engine/thunder_storm_campaign/worldmap.html" rel="noopener noreferrer"&gt;world map&lt;/a&gt; with their own objectives. The hope was that this would lead to emergent storytelling. Indeed, I was able to observe conflicts between parties and behind-the-scenes maneuvering for victory in a courtroom. However, it's unclear whether these events arose from the active participation of multiple players within the TRPG system, or simply because the LLM playing the role of the GM worked very hard. I would like to devise a system and rules that encourage a wider variety of events to occur.&lt;/p&gt;

&lt;p&gt;This time, I used AI coding agents like Codex and Claude Code to launch tools and manipulate files. A better approach would probably be to turn the toolset into an MCP server and use it via a chat interface, or to control the game loop with code and call the LLM's API as needed.&lt;/p&gt;

&lt;p&gt;The model used for gameplay was GPT-5 Codex. Acting as a GM while appropriately using tools seems to be a difficult task for current LLMs, requiring a model that can straightforwardly follow complex instructions. The narrative replay generation and HTML conversion were handled by Claude Sonnet 4.0.&lt;/p&gt;

&lt;p&gt;I believe this approach can be used to have LLMs automatically play board games and card games, or any game composed of cards, tokens, and a rulebook. By defining the rules not only through prompts but also with tools that assist in game progression and their input/output schemas, you can make the LLM adhere to the rules strictly.&lt;/p&gt;

&lt;p&gt;The kind of operation realized this time is achieved by making numerous calls to the LLM API. Therefore, its use in general gaming will likely have to wait until inexpensive generative AI, such as local LLMs, becomes available. When that happens, advanced GMs will be able to manage games appropriately in real-time play. However, considering that the storytelling ability of even the best current models is limited, some ingenuity will be necessary, such as using it in conjunction with high-quality scenarios like a D&amp;amp;D adventure set.&lt;/p&gt;

</description>
      <category>llm</category>
      <category>rpg</category>
      <category>gamedev</category>
      <category>ai</category>
    </item>
    <item>
      <title>Getting LLMs to Create, Play, Evaluate, and Improve Games</title>
      <dc:creator>ABA Games</dc:creator>
      <pubDate>Fri, 21 Mar 2025 03:49:15 +0000</pubDate>
      <link>https://forem.com/abagames/getting-llms-to-create-play-evaluate-and-improve-games-4j81</link>
      <guid>https://forem.com/abagames/getting-llms-to-create-play-evaluate-and-improve-games-4j81</guid>
      <description>&lt;blockquote class="bluesky-embed"&gt;
&lt;p&gt;The fish powers up with bubbles and can crush rocks. I managed to make Claude handle everything from game concept creation and evaluation to implementation and improvement, creating all this without writing a single line of code, just through conversation abagames.github.io/chat-craft-c...&lt;/p&gt;— &lt;a href="https://bsky.app/profile/did:plc:3mhricnsjutdejxi63ho2aa5?ref_src=embed" rel="noopener noreferrer"&gt;ABA (@abagames.bsky.social)&lt;/a&gt; &lt;a href="https://bsky.app/profile/did:plc:3mhricnsjutdejxi63ho2aa5/post/3lkttqgvdoc2b?ref_src=embed" rel="noopener noreferrer"&gt;2025-03-20T23:23:25.057Z&lt;/a&gt;
&lt;/blockquote&gt;


&lt;p&gt;When I was using Claude 3.5, I created a prompt project that handled everything from game idea generation to implementation, but I still needed to directly adjust the code at the end.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/abagames" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F859761%2F871a936d-2aa9-4fdd-91cc-74410e64683e.png" alt="abagames"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/abagames/creating-mini-games-in-the-age-of-generative-ai-generating-ideas-code-graphics-and-sound-424k" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Creating Mini-Games in the Age of Generative AI - Generating Ideas, Code, Graphics, and Sound&lt;/h2&gt;
      &lt;h3&gt;ABA Games ・ Jan 26&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;The problem was that Claude itself wasn't playing the games. So Claude couldn't tell whether a game's balance was good or bad.&lt;/p&gt;

&lt;p&gt;So this time, I decided to have Claude play the games it created.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/abagames" rel="noopener noreferrer"&gt;
        abagames
      &lt;/a&gt; / &lt;a href="https://github.com/abagames/chat-craft-click" rel="noopener noreferrer"&gt;
        chat-craft-click
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ChatCraftClick is a platform that enables you to easily create, test, and improve high-quality one-button games using interactive AI.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;ChatCraftClick: AI-Assisted One-Button Game Development Platform&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;English | &lt;a href="https://github.com/abagames/chat-craft-click./README_ja.md" rel="noopener noreferrer"&gt;日本語&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ChatCraftClick is a platform that enables you to easily create, test, and improve high-quality one-button games using interactive AI. It allows anyone to produce innovative and balanced games in a short time, even without technical knowledge.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Project Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;This platform aims to enable anyone to create high-quality one-button games, regardless of their game development experience. Its distinctive feature is the ability to interactively execute the entire process from idea generation to automatic evaluation, implementation, and refinement. It resolves the challenges of trial-and-error and subjective evaluation in traditional game development, realizing a data-driven, objective development approach.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;1. Data-Driven Game Design and Automatic Evaluation System&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;A quantitative indicator-based game design approach that doesn't rely on subjective judgment&lt;/li&gt;
&lt;li&gt;Automatic measurement of metrics like "skill gap," "monotonous input resistance," and "difficulty progression"&lt;/li&gt;
&lt;li&gt;A test environment that simulates player behavior patterns to provide objective evaluation&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/abagames/chat-craft-click" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Claude has a feature called the Analytics tool (REPL), which allows it to execute code on its own and adjust its behavior based on the results. This time, I used it to create a system that &lt;a href="https://github.com/abagames/chat-craft-click?tab=readme-ov-file#2-review-automatic-evaluation-results-and-select-a-game-for-implementation" rel="noopener noreferrer"&gt;simulates games and automatically evaluates them&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I prepared a framework called &lt;a href="https://github.com/abagames/chat-craft-click/blob/main/knowledge/one-button-game-test-framework.js" rel="noopener noreferrer"&gt;one-button-game-test-framework.js&lt;/a&gt; that simulates player inputs and object behaviors in the game. By running this in the Analytics tool, Claude can evaluate whether the game is actually playable and if the game balance is appropriate. It first considers five game concepts, evaluates each one, adopts the one with the best evaluation, and then implements it while making improvements based on the evaluation results.&lt;/p&gt;

&lt;p&gt;Also, this time I implemented the games using &lt;a href="https://p5js.org/" rel="noopener noreferrer"&gt;p5.js&lt;/a&gt;, so they can be played directly in the chat UI as a Claude Artifact. If you have a complaint after playing, like "there are too many enemies," you can simply input that. Claude will make reasonable adjustments.&lt;/p&gt;

&lt;p&gt;By having Claude itself play the games, the probability of creating games that aren't viable (like those where you immediately get a game over, or where holding down a button makes you invincible) has decreased. As a result, playable games can now be created with just conversation-based fine-tuning, without having to directly modify the code.&lt;/p&gt;

&lt;p&gt;However, there are still plenty of issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The success rate is low. You need to make quite a few attempts before an enjoyable game appears. It's common for all five game concepts to get poor evaluations and be unusable.&lt;/li&gt;
&lt;li&gt;The games have become mediocre. Before implementing the evaluation step, sometimes games would emerge that weren't viable as games but had novel and interesting player movements. Now that these are filtered out by the evaluation, more conventional games are being created.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope these issues can be resolved with something like Claude 4.0, and I've noticed that my recent blog posts often end with expectations for the next generation of LLMs. I think it's good to have ideas about what might be possible with more accurate models, rather than being satisfied with current models - that's part of the fun of living in the AI era, in my opinion.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Creating Mini-Games in the Age of Generative AI - Generating Ideas, Code, Graphics, and Sound</title>
      <dc:creator>ABA Games</dc:creator>
      <pubDate>Sun, 26 Jan 2025 01:25:15 +0000</pubDate>
      <link>https://forem.com/abagames/creating-mini-games-in-the-age-of-generative-ai-generating-ideas-code-graphics-and-sound-424k</link>
      <guid>https://forem.com/abagames/creating-mini-games-in-the-age-of-generative-ai-generating-ideas-code-graphics-and-sound-424k</guid>
      <description>&lt;p&gt;In this context, what remains for humans to do... fine-tuning, perhaps?&lt;/p&gt;


&lt;blockquote class="bluesky-embed"&gt;
&lt;p&gt;Dodge the incoming red electrons and boost your score by navigating through the yellow paths between them! 🎮⚡️ abagames.github.io/crisp-game-l...&lt;/p&gt;— &lt;a href="https://bsky.app/profile/did:plc:3mhricnsjutdejxi63ho2aa5?ref_src=embed" rel="noopener noreferrer"&gt;ABA (@abagames.bsky.social)&lt;/a&gt; &lt;a href="https://bsky.app/profile/did:plc:3mhricnsjutdejxi63ho2aa5/post/3lgkeonpnnk2b?ref_src=embed" rel="noopener noreferrer"&gt;2025-01-25T07:19:16.838Z&lt;/a&gt;
&lt;/blockquote&gt;


&lt;p&gt;I attempted to create this game using Claude 3.5 Sonnet and various image and music generation AI tools. Here, I would like to explain specifically how this was made. I hope this serves as a reference for mini-game development processes using generative AI.&lt;/p&gt;

&lt;p&gt;Let's start with idea generation.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/abagames" rel="noopener noreferrer"&gt;
        abagames
      &lt;/a&gt; / &lt;a href="https://github.com/abagames/claude-one-button-game-creation" rel="noopener noreferrer"&gt;
        claude-one-button-game-creation
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      How to create a one-button action game using the AI chatbot Claude
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Claude's One-Button Game Creation&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;I used the AI chatbot &lt;a href="https://claude.ai/" rel="nofollow noopener noreferrer"&gt;Claude&lt;/a&gt; to generate a one-button game using the &lt;a href="https://github.com/abagames/crisp-game-lib" rel="noopener noreferrer"&gt;crisp-game-lib&lt;/a&gt; library. By providing appropriate prompts and files to &lt;a href="https://www.anthropic.com/news/claude-3-5-sonnet" rel="nofollow noopener noreferrer"&gt;Claude 3.5 Sonnet&lt;/a&gt;, it can generate unique game ideas and create the corresponding game code in JavaScript.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;How to use&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;By dropping &lt;a href="https://github.com/abagames/claude-one-button-game-creation./chat_knowledge/" rel="noopener noreferrer"&gt;set of 5 files in the chat_knowledge directory&lt;/a&gt; into the chat session of Claude and starting a chat, game generation can be performed.&lt;/p&gt;
&lt;p&gt;You can also give &lt;a href="https://github.com/abagames/claude-one-button-game-creation./project_knowledge/" rel="noopener noreferrer"&gt;files in the project_knowledge directory&lt;/a&gt; to &lt;a href="https://www.anthropic.com/news/projects" rel="nofollow noopener noreferrer"&gt;project knowledge&lt;/a&gt; for use.&lt;/p&gt;
&lt;p&gt;First, enter the theme of the game you want to create. If necessary, type 'proceed' to proceed to the next step.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Examples of Built Games&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Click the image below to play directly in the browser.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?wavybird" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fabagames%2Fclaude-one-button-game-creation.%2Fdocs%2Fwavybird%2Fscreenshot.gif" alt="wavybird screenshot"&gt;&lt;/a&gt;
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?catchingwheel" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fabagames%2Fclaude-one-button-game-creation.%2Fdocs%2Fcatchingwheel%2Fscreenshot.gif" alt="catchingwheel screenshot"&gt;&lt;/a&gt;
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?grapplingh" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fabagames%2Fclaude-one-button-game-creation.%2Fdocs%2Fgrapplingh%2Fscreenshot.gif" alt="grapplingh screenshot"&gt;&lt;/a&gt;
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?fracave" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fabagames%2Fclaude-one-button-game-creation.%2Fdocs%2Ffracave%2Fscreenshot.gif" alt="fracave screenshot"&gt;&lt;/a&gt;
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?blockstacker" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fabagames%2Fclaude-one-button-game-creation.%2Fdocs%2Fblockstacker%2Fscreenshot.gif" alt="blockstacker screenshot"&gt;&lt;/a&gt;
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?sunflowersway" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fabagames%2Fclaude-one-button-game-creation.%2Fdocs%2Fsunflowersway%2Fscreenshot.gif" alt="sunflowersway screenshot"&gt;&lt;/a&gt;
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?skyraftsman" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fabagames%2Fclaude-one-button-game-creation.%2Fdocs%2Fskyraftsman%2Fscreenshot.gif" alt="skyraftsman screenshot"&gt;&lt;/a&gt;
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?neonpollinator" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fabagames%2Fclaude-one-button-game-creation.%2Fdocs%2Fneonpollinator%2Fscreenshot.gif" alt="neonpollinator screenshot"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?levitation" rel="nofollow noopener noreferrer"&gt;LEVITATION&lt;/a&gt; /
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?turbotunnel" rel="nofollow noopener noreferrer"&gt;TURBO TUNNEL&lt;/a&gt; /
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?vineclimber" rel="nofollow noopener noreferrer"&gt;VINE CLIMBER&lt;/a&gt; /
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?bladedancer" rel="nofollow noopener noreferrer"&gt;BLADE DANCER&lt;/a&gt; /
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?windpower" rel="nofollow noopener noreferrer"&gt;WIND POWER&lt;/a&gt; /
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?rotationrod" rel="nofollow noopener noreferrer"&gt;ROTATION ROD&lt;/a&gt; /
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?baserunnerdash" rel="nofollow noopener noreferrer"&gt;BASERUNNER DASH&lt;/a&gt; /
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?fishgrill" rel="nofollow noopener noreferrer"&gt;FISH GRILL&lt;/a&gt; /
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?elastichero" rel="nofollow noopener noreferrer"&gt;ELASTIC HERO&lt;/a&gt; /
&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?stompingbubbles" rel="nofollow noopener noreferrer"&gt;STOMPING BUBBLES&lt;/a&gt; /…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/abagames/claude-one-button-game-creation" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Using the Knowledge contained in this repository, when you input a theme to Claude, it generates several ideas for one-button action mini-games. The Knowledge includes documentation of game development expertise, such as code and explanations of games I've made before, and possible ways to assign actions to a single button.&lt;/p&gt;

&lt;p&gt;This time, I gave it "electronic circuits" as a theme. Claude returned the following ideas:&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Circuit Connector&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic: A moving connector draws current along circuit paths.&lt;/li&gt;
&lt;li&gt;Control: Hold to extend the connector, release to contract. Must connect to valid circuit points.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Component Jumper&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic: Player becomes a voltage pulse jumping between electronic components.&lt;/li&gt;
&lt;li&gt;Control: Tap to jump between components while avoiding shorts and open circuits.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Resistor Runner&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic: Guide signals through a field of resistors that rotate when current flows.&lt;/li&gt;
&lt;li&gt;Control: Hold to charge the current resistor, release to discharge and move to the next.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Capacitor Chain&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic: Match the timing of capacitor charge-discharge cycles to connect them.&lt;/li&gt;
&lt;li&gt;Control: Hold to charge the current capacitor, release at the right timing to discharge to the next.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Electron Flow&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic: Player controls electron flow through circuits while avoiding reverse current.&lt;/li&gt;
&lt;li&gt;Control: Hold to accelerate electrons, release to decelerate.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;I chose number 5 this time. Then it returns detailed game specifications and code, so you can just try running the code. You can fine-tune any unsatisfactory parts through chat. This time, I made the following requests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shouldn't the player return to the left edge when reaching the right?&lt;/li&gt;
&lt;li&gt;Please connect the top and bottom edges too.&lt;/li&gt;
&lt;li&gt;Can you draw yellow lines between consecutively generated reverseCurrent elements, and award points when electrons pass through there?&lt;/li&gt;
&lt;li&gt;Let's generate reverseCurrent at x=150 and make it possible to score points when passing between off-screen reverseCurrent elements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This mostly completed the game's base. For score logic and game balance adjustments, it was faster to directly modify the code.&lt;/p&gt;

&lt;p&gt;Next are the visuals. I gave Claude the following prompts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What kind of background image would be suitable for this game?&lt;/li&gt;
&lt;li&gt;Please create an English prompt to generate this image for an image generation AI.

&lt;ul&gt;
&lt;li&gt;Image: About 10 colors&lt;/li&gt;
&lt;li&gt;Prompt: About 25 words, separated by commas. Emphasize words by enclosing them in () or (()).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;You can give this to DALL-E, ImageFX, or any other image generation AI you prefer, and you'll get some kind of image. Then convert this to pixel art.&lt;/p&gt;

&lt;p&gt;I created my own tool because I couldn't find many tools that met specific requirements like adjustable dithering strength and color palette selection. This tool can convert high-resolution images created by image generation AI into pixel art.&lt;/p&gt;

&lt;p&gt;This time it wasn't too difficult since it was just the background, but trying to create game characters in the same way is quite challenging. Current image generation AI tools aren't good at generating sprite sheet-like images, much less supporting animation patterns. So you need to generate sprite-like images through trial and error, convert them to pixel art, and then manually write simple animation patterns. For example, the dinosaur in the following game.&lt;/p&gt;


&lt;blockquote class="bluesky-embed"&gt;
&lt;p&gt;Tap to jump, tap again to stomp! Crush the cactus to increase your score! Speed increases too! abagames.github.io/crisp-game-l...&lt;/p&gt;— &lt;a href="https://bsky.app/profile/did:plc:3mhricnsjutdejxi63ho2aa5?ref_src=embed" rel="noopener noreferrer"&gt;ABA (@abagames.bsky.social)&lt;/a&gt; &lt;a href="https://bsky.app/profile/did:plc:3mhricnsjutdejxi63ho2aa5/post/3lgdcqp3egs2q?ref_src=embed" rel="noopener noreferrer"&gt;2025-01-22T11:55:59.727Z&lt;/a&gt;
&lt;/blockquote&gt;


&lt;p&gt;Next is the BGM.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What kind of BGM would be suitable for this game?&lt;/li&gt;
&lt;li&gt;Please create an English prompt to generate this BGM for a music generation AI.

&lt;ul&gt;
&lt;li&gt;Music: 3-channel 8-bit chiptune using square waves. 150BPM&lt;/li&gt;
&lt;li&gt;Prompt: About 15 words. Natural English sentences without using ()&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;You can give this to Suno, Udio, or others. It's best to use the prompt format preferred by your chosen music generation AI. If you have preferred music genres, you can freely add them to the prompt. This time I added 'Industrial techno' on a whim, though I'm not sure if it's reflected in the final result. Constraints like three channels don't seem to be strictly followed either.&lt;/p&gt;

&lt;p&gt;Next are sound effects.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Please list the necessary sound effects for this game in bullet points.&lt;/li&gt;
&lt;li&gt;Please create English prompts to generate these sound effects for a sound effect generation AI.

&lt;ul&gt;
&lt;li&gt;Sound Effects: Short 8-bit era effects using square waves&lt;/li&gt;
&lt;li&gt;Prompt: About 25 words. Natural English sentences without using ()&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;I'm not sure what the de facto standard for sound effect generation AI is, but there are options like ElevenLabs and LOVO. I'd appreciate recommendations for good ones aimed at retro games.&lt;/p&gt;

&lt;p&gt;With this, all code and assets are complete, so you just need to build it. The repository for this game is below.&lt;/p&gt;

&lt;p&gt;In this way, it's possible to create all necessary game resources using generative AI. However, important fine-tuning, centered around game balance, is naturally better done by hand. While it's possible to repeatedly generate until you get ideas, code, graphics, and sound that you like, it's futile. Chat-based dialogue for fine-tuning resources still has many constraints with current generative AI.&lt;/p&gt;

&lt;p&gt;If we could fine-tune through chat even for content that's difficult to express in text, such as graphics, sound, and more broadly, game experiences, game creation solely through chat might become more realistic. While it seems quite difficult to achieve these things from the current situation... well, that's what we say, but then suddenly it becomes easily possible - that's how the recent generative AI scene has been, so we really don't know what will happen. I'll wait patiently with expectation.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A New Relationship Between AI and Humans - Human Potential as a Source of Unpredictability</title>
      <dc:creator>ABA Games</dc:creator>
      <pubDate>Wed, 01 Jan 2025 02:15:27 +0000</pubDate>
      <link>https://forem.com/abagames/a-new-relationship-between-ai-and-humans-human-potential-as-a-source-of-unpredictability-1n7m</link>
      <guid>https://forem.com/abagames/a-new-relationship-between-ai-and-humans-human-potential-as-a-source-of-unpredictability-1n7m</guid>
      <description>&lt;p&gt;Humanity is approaching a historic turning point with the emergence of AI systems that surpass human intelligence. When AI truly surpasses humans, it will be able to think for itself, understand itself, create new things, and make its own judgments. This raises the question: what role can humans play in such a future? One possibility worth exploring is our role as "beings capable of unpredictable actions."&lt;/p&gt;

&lt;h2&gt;
  
  
  Unpredictability That Only Humans Can Achieve
&lt;/h2&gt;

&lt;p&gt;The concepts of "duration" and "intuition" developed by French philosopher Bergson provide valuable insights into understanding the unpredictability unique to humans. Duration is not merely the experience of time in consciousness; it is the very nature of reality where qualitatively different elements interpenetrate to form new wholes. It cannot be quantified or divided. Within duration, past and present intermingle to create something unpredictable. Intuition is the method of understanding this duration—rather than analyzing things from the outside, it grasps reality by entering into it.&lt;/p&gt;

&lt;p&gt;The relationship between duration and intuition manifests clearly in artistic creation. Consider jazz improvisation: within the duration where past experience and present sensations intermingle, performers make intuitive rather than analytical judgments to create music that no one could predict.&lt;/p&gt;

&lt;p&gt;This human unpredictability, based on duration and intuition, possesses qualities fundamentally different from the unpredictability demonstrated by modern AI. Modern AI systems, particularly large language models (LLMs), show remarkable unpredictability. They generate different outputs for the same input and sometimes create new combinations that transcend training data and existing patterns. This unpredictability extends beyond mere "system constraints."&lt;/p&gt;

&lt;p&gt;However, AI unpredictability maintains characteristics distinct from human unpredictability. No matter how emergent AI unpredictability may be, it ultimately arises from combinations of formalizable elements. In contrast, human unpredictability stems from more fundamental creativity, woven from the qualitative interpenetration of enduring consciousness and the intuitive understanding that grasps it. This represents unpredictability that essentially transcends formalization and quantification.&lt;/p&gt;

&lt;h2&gt;
  
  
  New Creativity Considered Through the Differences Between LLMs and Human Memory
&lt;/h2&gt;

&lt;p&gt;The qualitative differences between LLM and human memory warrant careful examination.&lt;/p&gt;

&lt;p&gt;LLM memory forms through the processing of numerous records, weighted through reinforcement learning and dialogue. Human memory, in contrast, develops through individual experiences and interpreted records, shaped by personal impressions and selective forgetting. This distinction suggests a fundamental difference in the nature of creativity between the two.&lt;/p&gt;

&lt;p&gt;LLMs possess vast knowledge, yet this knowledge remains largely discrete. Although LLMs can maintain contextual awareness during conversations, this represents an accumulation of discrete information rather than the "duration" experienced by humans. This characteristic appears not merely as an implementation constraint but as a fundamental attribute of LLMs based upon discrete state transitions. Human memory, conversely, embodies duration itself—experiences do not merely accumulate as facts but interpenetrate to continuously produce new qualities.&lt;/p&gt;

&lt;p&gt;This difference becomes clearer when examining the relationship between knowledge and meaning. LLM knowledge lacks the sensory and emotional dimensions that arise from direct experience. Human experiential processing gives knowledge depth and texture. For example, the word "sea" develops unique layers of meaning through memories of swimming, hearing waves, and smelling the tide.&lt;/p&gt;

&lt;p&gt;This experiential weighting remains dynamic. As new experiences accumulate, the weighting of past knowledge shifts. These dynamic changes in weighting generate new layers of meaning continuously. Personal weighting thus becomes the foundation for generating unpredictable creativity.&lt;/p&gt;

&lt;p&gt;Currently, conveying complete individual experiences to LLMs remains impossible. Experience is inherently indivisible, and much of its holistic nature dissipates when verbalized. Moreover, each person's experiences hold complete meaning only within the unique context of their life. Conveying this entire context to an LLM presents fundamental challenges.&lt;/p&gt;

&lt;p&gt;Nevertheless, LLMs can play an active role in drawing out individual orientations and creative directions through the following dialogical approach:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identifying patterns of thought and expression in an individual's text that may escape their conscious awareness, presenting these as new perspectives&lt;/li&gt;
&lt;li&gt;Posing questions that deepen their thinking based on discovered patterns&lt;/li&gt;
&lt;li&gt;Restructuring the LLM's vast knowledge according to individual interests and viewpoints&lt;/li&gt;
&lt;li&gt;Identifying and presenting potential connections between different statements and ideas from the individual&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The conclusion of such dialogue holds particular importance. Continuing dialogue unnecessarily risks moving away from unique perspectives toward more general conclusions, as LLMs tend to default to broader generalizations when faced with uncertainty.&lt;/p&gt;

&lt;p&gt;Therefore, ending the dialogue when sufficiently unique perspectives emerge from general content helps preserve creative moments. This parallels the judgment of "completion" in art. In creative dialogue, determining "when to end" becomes more crucial than deciding "how long to continue."&lt;/p&gt;

&lt;p&gt;Creative collaboration between LLMs and humans should leverage their respective qualities. LLMs provide vast knowledge and expand the space of possibilities, while humans imbue that knowledge with new meaning and direction through their experience-based weighting. This interaction generates a novel form of creativity.&lt;/p&gt;

&lt;p&gt;The goal should not focus on "transplanting" individual creativity but on creating new forms of creation that utilize the unique qualities of both LLMs and humans. This suggests possibilities for more organic collaboration beyond the conventional binary opposition of "AI versus humans." LLMs can become entities that create "spaces for dialogue" to draw out human creativity, rather than serving merely as knowledge providers.&lt;/p&gt;




&lt;p&gt;written by Claude 3.5 Sonnet&lt;/p&gt;

&lt;p&gt;The moment we cease to write such texts ourselves marks both a beginning of decline and a genesis of evolution.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I've Made 111 One-Button Mini-Games into a Collection (Out of 200 Created)</title>
      <dc:creator>ABA Games</dc:creator>
      <pubDate>Tue, 24 Dec 2024 10:23:52 +0000</pubDate>
      <link>https://forem.com/abagames/ive-made-111-one-button-mini-games-into-a-collection-out-of-200-created-3k8k</link>
      <guid>https://forem.com/abagames/ive-made-111-one-button-mini-games-into-a-collection-out-of-200-created-3k8k</guid>
      <description>&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://abagames.itch.io/1x111" rel="noopener noreferrer"&gt;
      abagames.itch.io
    &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;This is a WarioWare-style game where you play quick one-button action mini-games in succession. You earn stars based on successful completions and can unlock new games. Higher difficulties like Hard and Expert offer more stars but are more challenging. Try to unlock all 111 games!&lt;/p&gt;

&lt;p&gt;You can play directly in your browser on PC or smartphone. If you don't like certain games, you can click their icon and "Ban" them to prevent them from appearing. Create your own preferred deck of mini-games!&lt;/p&gt;

&lt;p&gt;If you're unsure about a game's rules, click its icon and select "Play" to practice that game without time limits. Don't get discouraged by puzzling rules!&lt;/p&gt;




&lt;p&gt;After steadily creating games, I've now made 200 one-button games in total.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://www.asahi-net.or.jp/~cs8k-cyu/one_button.html" rel="noopener noreferrer"&gt;
      asahi-net.or.jp
    &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;After making 200 games, the one-button limitation no longer feels like a constraint. It becomes natural to think about controls, actions, fields, and risk-reward systems that work well with just one button. Being unable to use conventional controls like directional keys naturally leads to slightly unusual game designs, which can actually make ideation easier in some ways.&lt;/p&gt;

&lt;p&gt;I've accumulated &lt;a href="https://abagames.github.io/joys-of-small-game-development-en/restrictions/one_button.html" rel="noopener noreferrer"&gt;considerable knowledge about one-button game controls&lt;/a&gt;, and I can even &lt;a href="https://abagames.github.io/joys-of-small-game-development-en/generation/can_ai_chatbot_create_game.html" rel="noopener noreferrer"&gt;use this knowledge with LLMs to assist in game generation&lt;/a&gt;. Lately, it almost feels like I'm creating games through muscle memory as a routine.&lt;/p&gt;

&lt;p&gt;Still, the final adjustments to parameters and rules to make games entertaining feels like craftsman's work and remains enjoyable. I want to continue making games while treasuring this sense of balance adjustment, which feels like a crucial skill to cultivate.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Generative Reroll Game Development Using LLMs</title>
      <dc:creator>ABA Games</dc:creator>
      <pubDate>Sat, 06 Jul 2024 10:30:13 +0000</pubDate>
      <link>https://forem.com/abagames/generative-reroll-game-development-using-llms-22m3</link>
      <guid>https://forem.com/abagames/generative-reroll-game-development-using-llms-22m3</guid>
      <description>&lt;p&gt;Continuously running an LLM until it generates a game you like. Let's call this Generative Reroll Game Development.&lt;/p&gt;

&lt;p&gt;With the emergence of high-performance LLMs like &lt;a href="https://www.anthropic.com/news/claude-3-5-sonnet" rel="noopener noreferrer"&gt;Claude 3.5 Sonnet&lt;/a&gt;, it has become possible to have LLMs create simple game ideas and even implement them. Many of the games that come out of LLMs are mediocre, unbalanced, or incorrectly implemented. However, by repeatedly having the LLM generate games, you can occasionally obtain code that exhibits interesting behavior, just one step away from being a game.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/abagames/claude-one-button-game-creation" rel="noopener noreferrer"&gt;claude-one-button-game-creation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When given the theme "fragile pillars" to the above prompt, it proposes the following game:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pillar Paraglider: Control a paraglider flying through a course of fragile pillars. The paraglider constantly descends. Press the button to ascend, but each press also sends a shockwave that can damage nearby pillars. Core mechanic: Balancing ascent with pillar preservation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After elaborating on and implementing this idea, the following game was created. This is Claude's output as-is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?sample_before" rel="noopener noreferrer"&gt;Claude's original Pillar Paraglider&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pressing the button makes the red player character ascend while simultaneously emitting a circular shockwave around it. The shockwave destroys pillars. While it seems overly influenced by Flappy Bird, it has implemented some interesting behavior as a game.&lt;/p&gt;

&lt;p&gt;However, this game clearly has several issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's too easy. You can nullify pillars with shockwaves by continuously pressing the button. Nothing happens when the player character reaches the top or bottom of the screen, so you almost never get a game over.&lt;/li&gt;
&lt;li&gt;The scoring system is simplistic. The score is just based on the distance traveled, so risky actions don't lead to higher scores.&lt;/li&gt;
&lt;li&gt;It doesn't realize the original core mechanic. It says "balancing ascent with pillar preservation," so the original intent was probably to make a game where you avoid destroying pillars with shockwaves. However, it's not implemented that way. Also, if we faithfully implement that mechanic, it would result in a stressful game where you play with a player character that has a large hitbox.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In Generative Reroll Game Development, the important process is how to improve these imperfect games with interesting behaviors into games that are also fun to play.&lt;/p&gt;

&lt;p&gt;For this game, I made the following changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The circular shockwave emitting in all directions is too powerful, so we gave the player character a direction and made the shockwave emit only in a limited angle in front of it. Also, the shockwave now destroys only the part of the pillar it hits, not the entire pillar. Additionally, the game ends if the player character touches the top or bottom of the screen.&lt;/li&gt;
&lt;li&gt;Score is given for each destroyed part. Also, continuous destruction increases the score, encouraging risky behavior of advancing towards pillars for higher scores.&lt;/li&gt;
&lt;li&gt;I ignore the core mechanic. Generally, a game about "destroying" is more fun than one about "avoiding destruction."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a result, the game became as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?sample_after" rel="noopener noreferrer"&gt;Improved Pillar Paraglider&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fabagames.github.io%2Fclaude-one-button-game-creation%2Fwavybird%2Fscreenshot.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fabagames.github.io%2Fclaude-one-button-game-creation%2Fwavybird%2Fscreenshot.gif" alt="wavybird screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It became a game about making holes in pillars with shockwaves to progress. While it might feel a bit too difficult, it has achieved a more appropriate balance of risk and reward than the initial version, increasing its completeness as a game.&lt;/p&gt;

&lt;p&gt;The code differences between the improved version and the original are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/abagames/claude-one-button-game-creation/commit/9e04ca08aa426f33909e99b6eb5d19d6ec55e446" rel="noopener noreferrer"&gt;Diff between improved version and original&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looking at this, it seems like nothing remains of the original code, but in reality, it's much easier than creating from scratch because you can modify it while referring to the original framework.&lt;/p&gt;

&lt;p&gt;The completed version with sound and title became:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://abagames.github.io/claude-one-button-game-creation/?wavybird" rel="noopener noreferrer"&gt;Pillar Paraglider, renamed to WAVY BIRD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the current state of Generative Reroll Game Development using LLMs. If asked whether this is easier than a person coming up with ideas normally and implementing them, it's not particularly easy. However, the development process of facing challenges from computers, such as selecting games proposed by LLMs and figuring out how to make them interesting, has a different kind of appeal compared to conventional development processes. It's also important to enjoy the process of developing and improving prompts for generation alongside game development in Generative Reroll Game Development.&lt;/p&gt;

&lt;p&gt;In the future, we might be able to simply tell an LLM "make an interesting game" without thinking, and it will implement and return a nice game. At present, it's normal to need dozens of rerolls to get a game with interesting behavior, and the hit rate is undeniably low. However, with previous LLMs, it was common for only mediocre games that we've seen somewhere before to come out, and getting anything with interesting behavior was virtually impossible. The fact that we can now generate something that feels at least somewhat novel, thanks to the evolution of LLMs over the past year or so, is a good sign.&lt;/p&gt;

&lt;p&gt;If LLMs continue to evolve at this rate, the quality of ideas will improve, and they will be able to implement ideas more accurately as code. They might also be able to modify the code in response to pointed out issues like those mentioned above. This would allow us to create playable games with fewer rerolls and simpler improvements. The future development of Generative Reroll Game Development is exciting to anticipate.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Shooting Games: "Shoot" and "Do Something"</title>
      <dc:creator>ABA Games</dc:creator>
      <pubDate>Fri, 19 Apr 2024 08:25:28 +0000</pubDate>
      <link>https://forem.com/abagames/shooting-games-shoot-and-do-something-33cd</link>
      <guid>https://forem.com/abagames/shooting-games-shoot-and-do-something-33cd</guid>
      <description>&lt;p&gt;On April 17th, I gave a talk at Tokyo Indies &lt;sup id="fnref1"&gt;1&lt;/sup&gt; about generating ideas for shooting games (shmups).&lt;/p&gt;

&lt;p&gt;Here &lt;sup id="fnref2"&gt;2&lt;/sup&gt; are the presentation slides in Japanese. However, since most of the content was delivered verbally, the slides alone may not fully convey the topic. Therefore, I'd like to provide some supplementary information.&lt;/p&gt;

&lt;p&gt;Shmups are games where you "shoot" and "defeat enemies." It's obvious, but is that really all there is to it?&lt;/p&gt;

&lt;p&gt;For example, what about a game where you "shoot" and "create squares"?&lt;/p&gt;

&lt;p&gt;That's Quarth （BLOCK HOLE) &lt;sup id="fnref3"&gt;3&lt;/sup&gt;. In the game Quarth, you shoot blocks at mysterious approaching blocks to form squares and eliminate them. So, is Quarth an shmup? The original developer calls it a "shooting puzzle game," so it must be a shmup. This means that the "do something" part doesn't necessarily have to be "defeat enemies" for a game to be considered a shmup.&lt;/p&gt;

&lt;p&gt;Come to think of it, I've created various "do something" shmups in the past.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Shoot" and "attach enemies" game, TUMIKI Fighters &lt;sup id="fnref4"&gt;4&lt;/sup&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you defeat an enemy, it falls and you can pick it up with your ship. The enemy then attaches to your ship and starts counterattacking. As you keep attaching more enemies, your ship eventually becomes larger than the boss, allowing you to overwhelm enemies with incredible firepower. By incorporating the idea of "attaching" into an shmup, I created a slightly different kind of shooting game. It's like a combination of Katamari Damacy and Sky Kid.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Shoot" and "drop enemies" game, Mu-cade &lt;sup id="fnref5"&gt;5&lt;/sup&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The player's ship and enemies are centipede-like, and by hitting enemies with your shots, you can blow them away and defeat them by pushing them out of the game field. At the time, I incorporated the still-obvious technology of a physics engine into an shmup.&lt;/p&gt;




&lt;p&gt;By changing the "do something" part from "defeat enemies" to something else, you can create shmups of the novelty. Thinking about what goes into the "do something" part can serve as a guideline for considering game rules, gimmicks, and mechanics.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;"Shoot" and "contaminate the Game of Life" game, L.A.2 &lt;sup id="fnref6"&gt;6&lt;/sup&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The game field consists of the Game of Life and enemies moving on its cells. The player's ship fires glider patterns, which are Game of Life patterns that fly diagonally. When they hit the Game of Life on the field, they change the color of the cells and contaminate them. Releasing the button destroys the contaminated cells and any enemies on them. It's a combination of the Game of Life and shmup.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Shoot" and "pierce through the same color" game, COLOR ROLL &lt;sup id="fnref7"&gt;7&lt;/sup&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Color-coded bars move left and right, and you shoot when the colors align. The inspiration comes from games like Radiant Silvergun, where you match colors, and the rotating shield wall in the final boss of Gun Frontier, where you aim for gaps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Shoot" and "set off chain explosions" game, CRISS CROSS BOMB &lt;sup id="fnref8"&gt;8&lt;/sup&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hitting a horizontal bomb triggers a horizontal explosion, while hitting a vertical bomb triggers a vertical explosion. The objective is to involve as many bombs as possible while skillfully avoiding the blast waves coming towards your ship from the vertical direction.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Shoot" and "pull down" game, RAID &lt;sup id="fnref9"&gt;9&lt;/sup&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your ship is descending towards a group of skyscrapers and will crash into them if you continue. By aiming bombs diagonally at the middle of the buildings, you can pull down them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Shoot" and "get hit by your own shots" game, HAVE IT COMING &lt;sup id="fnref10"&gt;10&lt;/sup&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can defeat enemies in the air with your ship's shots, but the shots follow a parabolic trajectory and fall back down. If you get hit by them, your ship is also destroyed, so recklessly shooting is dangerous. However, when shots hit the ground, they become bonus items, so if you're aiming for a high score, it's important to shoot recklessly and dodge.&lt;/p&gt;




&lt;p&gt;By devising the purpose of shooting, the consequences, risks, and rewards triggered by shooting, you can create new games. By making players think about why and when to perform the act of "shooting," you can create shmups with new ways to enjoy them.&lt;/p&gt;

&lt;p&gt;However, this shouldn't be considered for all shmups. In particular, you need to be very cautious about introducing risk to the act of shooting. If you want to emphasize the exhilaration of destroying enemies, you should make bullets and enemy destruction unlimited, and there's no need to introduce tactical elements. Gimmicks like conserving shots to maintain combos by leaving enemies alive in DoDonPachi or timing single shots to hit enemies of the same color in Ikaruga are very interesting, but some players may find them stressful, and I don't think all shmups should be like that.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;"Shoot" and "interfere" game, COUNTER B &lt;sup id="fnref11"&gt;11&lt;/sup&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This game isolates the interference spheres seen in games like Metal Black, G-Darius, and Border Down. The situation where your attacks and the enemy's attacks collide and compete is irresistible.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Shoot" and "defeat enemies together" game, THROW M &lt;sup id="fnref12"&gt;12&lt;/sup&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I love the part in Pooyan where you defeat the balloon-riding wolves together with meat, and I just wanted to enjoy that aspect. Defeating enemies together for high scores is a traditional game rule from long ago.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Shoot" and "defeat distant enemies" game, MORTAR &lt;sup id="fnref13"&gt;13&lt;/sup&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The inspiration comes from Sega's Heavy Metal, a vertical scrolling shooter with a groundbreaking system that allows you to destroy off-screen enemies with long-range missiles.&lt;/p&gt;




&lt;p&gt;Borrowing the enjoyment of features from other games is also an option. With fond memories of the fun of a particular feature in a game, let's pay homage with love.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;"Shoot" and "make explosions to defeat enemies while using the blast to adjust player's trajectory and dodge enemies" game, BOMB UP &lt;sup id="fnref14"&gt;14&lt;/sup&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"Shoot" and "destroy enemy tanks, but you can also make holes in the ground to dodge enemy bullets" game, GRENADIER &lt;sup id="fnref15"&gt;15&lt;/sup&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"Shoot" and "jump, creating obstacles on the ground, but collecting items allows you to shoot and destroy those obstacles" game, R WHEEL &lt;sup id="fnref16"&gt;16&lt;/sup&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;As shown above, packing too many gimmicks into the act of shooting can confuse players. It's fine for small games, but it's best avoided in general shooting games.&lt;/p&gt;




&lt;p&gt;How are these ideas based on "shoot" and "do something" keywords useful in creating shmups? For example, they can be helpful in considering the core mechanics that represent a shmup. Here, core mechanics refer to defining mechanisms that characterize the game, such as the liberation beam in Metal Black or the chain bonus in Radiant Silvergun. Setting impactful core mechanics can help differentiate the game.&lt;/p&gt;

&lt;p&gt;They can also be used to come up with special gimmicks for stages or bosses. Rather than core mechanics that apply throughout the entire game, incorporating these ideas into mechanisms that occur in specific parts of the game, such as certain stages or bosses, can add variety to the game's progression. For example, the Gradius series provides players with new experiences in each stage by having core gimmicks for each stage.&lt;/p&gt;

&lt;p&gt;I gave a talk on considering shooting game ideas based on "shoot" and "do something." If this article can inspire readers to think that creating slightly unusual shooting games might be interesting, I'd be delighted. By not being constrained by the genre framework of shooting games and taking on game design with a free mindset, we can expand the possibilities of shooting games. By delivering fresh surprises to players, showing them that shooting games can be enjoyed in such ways, the fan base for shooting games will grow further. Shooting games have a long history as a genre. That's why I hope we can pass on their fun and potential to the next generation.&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;&lt;a href="https://www.tokyoindies.com/en/posts/2024-04/"&gt;April Tokyo Indies: STG Edition&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;&lt;a href="https://docs.google.com/presentation/d/e/2PACX-1vTnZIMeeTdLbFU9wscpw-ZZrGxym7xaCU6MUmZPyD2_9u6TfrQCOHrMuTJwu4CZyA1Bk4sfiDXI8PyN/pub?slide=id.p"&gt;「撃って」「○○する」ゲーム それがシューティングゲーム&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;&lt;a href="http://www.hamster.co.jp/american_hamster/arcadearchives/blockhole.htm"&gt;Arcade Archives BLOCK HOLE&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn4"&gt;
&lt;p&gt;&lt;a href="https://www.asahi-net.or.jp/~cs8k-cyu/windows/tf_e.html"&gt;TUMIKI Fighters&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn5"&gt;
&lt;p&gt;&lt;a href="https://www.asahi-net.or.jp/~cs8k-cyu/windows/mcd_e.html"&gt;Mu-cade&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn6"&gt;
&lt;p&gt;&lt;a href="https://www.asahi-net.or.jp/~cs8k-cyu/flash/la2/index.html"&gt;L.A.2&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn7"&gt;
&lt;p&gt;&lt;a href="https://abagames.github.io/crisp-game-lib-games/?colorroll"&gt;COLOR ROLL&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn8"&gt;
&lt;p&gt;&lt;a href="https://abagames.sakura.ne.jp/flash/ccb/"&gt;CRISS CROSS BOMB&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn9"&gt;
&lt;p&gt;&lt;a href="https://abagames.github.io/crisp-game-lib-games/?raid"&gt;RAID&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn10"&gt;
&lt;p&gt;&lt;a href="https://abagames.sakura.ne.jp/html5/hic/"&gt;HAVE IT COMING&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn11"&gt;
&lt;p&gt;&lt;a href="https://abagames.github.io/crisp-game-lib-games/?counterb"&gt;COUNTER B&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn12"&gt;
&lt;p&gt;&lt;a href="https://abagames.github.io/crisp-game-lib-games/?throwm"&gt;THROW M&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn13"&gt;
&lt;p&gt;&lt;a href="https://abagames.github.io/crisp-game-lib-games/?mortar"&gt;MORTAR&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn14"&gt;
&lt;p&gt;&lt;a href="https://abagames.github.io/crisp-game-lib-games/?bombup"&gt;BOMB UP&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn15"&gt;
&lt;p&gt;&lt;a href="https://abagames.github.io/crisp-game-lib-games/?grenadier"&gt;GRENADIER&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn16"&gt;
&lt;p&gt;&lt;a href="https://abagames.github.io/crisp-game-lib-games/?rwheel"&gt;R WHEEL&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
    </item>
  </channel>
</rss>
