{"id":8437,"date":"2026-10-27T04:50:59","date_gmt":"2026-10-27T04:50:59","guid":{"rendered":"https:\/\/robertjwallace.com\/?p=8437"},"modified":"2026-10-27T04:51:01","modified_gmt":"2026-10-27T04:51:01","slug":"from-rogue-on-unix-to-an-ai-built-dungeon-on-my-wrist","status":"publish","type":"post","link":"https:\/\/robertjwallace.com\/es\/from-rogue-on-unix-to-an-ai-built-dungeon-on-my-wrist\/","title":{"rendered":"From Rogue on Unix to an AI-Built Dungeon on My Wrist"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Around 1980, some of the first computer games I played were terminal games on a Unix system. One of them was <strong>Rogue<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There were no elaborate graphics. The dungeon appeared as text characters: rooms, corridors, treasure, and monsters represented by symbols and letters. Your character was an <code>@<\/code>. It took surprisingly little to turn a terminal screen into a place you wanted to explore.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full foobox\" data-foobox-trigger=\"image\"><a href=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/Screenshot-from-2026-10-26-21-21-18.webp\"><img decoding=\"async\" width=\"825\" height=\"476\" data-src=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/Screenshot-from-2026-10-26-21-21-18.webp\" alt=\"\" class=\"wp-image-8439 lazyload\" data-srcset=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/Screenshot-from-2026-10-26-21-21-18.webp 825w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/Screenshot-from-2026-10-26-21-21-18-300x173.webp 300w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/Screenshot-from-2026-10-26-21-21-18-768x443.webp 768w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/Screenshot-from-2026-10-26-21-21-18-18x10.webp 18w\" data-sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 825px; --smush-placeholder-aspect-ratio: 825\/476;\"><\/a><figcaption class=\"wp-element-caption\">Rogue, one of the first computer games I played<\/figcaption><\/figure>\n\n\n<a class=\"wp-block-read-more\" href=\"https:\/\/robertjwallace.com\/es\/from-rogue-on-unix-to-an-ai-built-dungeon-on-my-wrist\/\" target=\"_self\">Leer Mas<span class=\"screen-reader-text\">: From Rogue on Unix to an AI-Built Dungeon on My Wrist<\/span><\/a>\n\n\n<p class=\"wp-block-paragraph\">What I remember is the uncertainty. What was around the next corner? Would I find something useful, or something that would kill me? Should I keep exploring or head down to the next level?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recently, while working with OpenAI\u2019s Codex on a game for my Amazfit Balance 2 watch, I found myself thinking about Rogue again.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Starting With a Conversation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I didn\u2019t begin by writing code. I described an idea to Codex: could the watch detect its tilt and use that to roll a ball through a scrolling maze?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Initially, I specifically asked it not to implement anything. I wanted to know whether the idea was possible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After checking the watch\u2019s sensor support, Codex said it was feasible. I then asked it to build the game, including a maze generator so each game would be different, and physics so the ball would bounce off walls.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That became our working process: I described what I wanted, Codex wrote and revised the code, and I tested the results on the watch.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">First, Get the Ball Rolling<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The first version needed work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Getting an app to compile doesn\u2019t mean it will install, and getting it installed doesn\u2019t mean it will be enjoyable. We encountered installation failures, including an \u201cUnable to unzip\u201d message. Replacing the sample application ID resolved that problem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once the game was on my watch, I found it slow, and the ball didn\u2019t seem to roll in the right directions. I explained the behavior I expected: tilting the watch toward myself should make the ball roll down the screen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Codex changed the sensor mapping and optimized the rendering and collision calculations. I tried another version.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This was an important part of using AI for the project. Codex could generate code and run tests, but I still had to wear the watch and judge the result. A test can check whether a ball bounces off a wall. It can\u2019t tell me whether moving my wrist feels natural.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized foobox\" data-foobox-trigger=\"image\"><a href=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793074020419.webp\"><img decoding=\"async\" width=\"480\" height=\"480\" data-src=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793074020419.webp\" alt=\"\" class=\"wp-image-8433 lazyload\" style=\"--smush-placeholder-width: 480px; --smush-placeholder-aspect-ratio: 480\/480;width:297px;height:auto\" data-srcset=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793074020419-480x400.webp 480w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793074020419-300x300.webp 300w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793074020419-150x150.webp 150w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793074020419-12x12.webp 12w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793074020419-100x100.webp 100w\" data-sizes=\"auto, (max-width: 480px) 100vw, 480px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\"><\/a><figcaption class=\"wp-element-caption\"><em>[Screenshot: the scrolling maze on the watch]<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Remembering Rogue<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once the basic maze worked, I asked what might make it more exciting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Codex suggested collectibles, hazards, different surfaces, and timed challenges. Those ideas prompted a memory: the old Unix game with mazes and monsters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I asked whether it knew the game. It suggested Rogue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That shifted the project. I proposed adding monsters to battle, holes that dropped the player to another level, and chests containing useful items. Before asking for code, I asked Codex what it thought.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We discussed how those ideas could work on a watch. Automatic combat seemed more practical than a collection of tiny battle controls. A short dungeon seemed better suited to the device than an enormous adventure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then I said, \u201cLet\u2019s try it.\u201d<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A Little Dungeon Exploration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The ball now explores five randomly generated dungeon floors.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rolling into a monster starts an automatic battle. The ball stops while the player and monster exchange attacks. Chests contain weapons, armor, or healing potions. Stairs lead down to the next floor, while holes can drop you there before you\u2019ve finished exploring. A guardian waits at the end.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It isn\u2019t a recreation of Rogue. It borrows some of the elements I remember enjoying: exploring an unfamiliar layout, finding useful equipment, and deciding whether I\u2019m ready for what comes next.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Those decisions give the maze a different feel. A chest might be worth a detour. A monster might be worth avoiding. Descending with low health might be a poor idea\u2014but perhaps I\u2019ll do it anyway.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized foobox\" data-foobox-trigger=\"image\"><a href=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075071738.webp\"><img decoding=\"async\" width=\"480\" height=\"480\" data-src=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075071738.webp\" alt=\"\" class=\"wp-image-8441 lazyload\" style=\"--smush-placeholder-width: 480px; --smush-placeholder-aspect-ratio: 480\/480;width:306px;height:auto\" data-srcset=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075071738-480x400.webp 480w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075071738-300x300.webp 300w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075071738-150x150.webp 150w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075071738-12x12.webp 12w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075071738-100x100.webp 100w\" data-sizes=\"auto, (max-width: 480px) 100vw, 480px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\"><\/a><figcaption class=\"wp-element-caption\"><em>[Screenshot: a monster encounter or battle]<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Designing for My Wrist<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Adding equipment raised another question: how should I manage an inventory on a small, round screen?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I suggested using the watch\u2019s crown, which both rotates and presses. Turning it could browse items; pressing it could select a weapon or drink a potion.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Codex implemented that, but my first report back was straightforward: turning the crown or pressing the button didn\u2019t do anything.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We revised the input handling and added touch controls as another way to use the inventory.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Testing revealed another annoyance. Tapping the screen closed the bag, but the inventory buttons were small enough that a missed tap could close it accidentally. I asked for color feedback when buttons were pressed and a separate Close button above the inventory.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Codex made those changes and enlarged the buttons.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These were small adjustments, but they mattered more to playing the game than adding another feature. They also came directly from using the watch, rather than looking at code or a desktop preview.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized foobox\" data-foobox-trigger=\"image\"><a href=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075186991.webp\"><img decoding=\"async\" width=\"480\" height=\"480\" data-src=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075186991.webp\" alt=\"\" class=\"wp-image-8444 lazyload\" style=\"--smush-placeholder-width: 480px; --smush-placeholder-aspect-ratio: 480\/480;width:303px;height:auto\" data-srcset=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075186991-480x400.webp 480w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075186991-300x300.webp 300w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075186991-150x150.webp 150w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075186991-12x12.webp 12w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/10\/1793075186991-100x100.webp 100w\" data-sizes=\"auto, (max-width: 480px) 100vw, 480px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\"><\/a><figcaption class=\"wp-element-caption\"><em>[Screenshot: the inventory and its controls]<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What the AI Contributed<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Codex handled much of the implementation: generating mazes, connecting motion readings to the ball, writing collision physics, adding dungeon encounters, building the inventory, and creating save and resume behavior.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It also wrote automated tests and built the watch packages. When something failed, I could paste the error into the conversation and ask it to investigate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The results weren\u2019t always right on the first attempt. Some proposed fixes didn\u2019t solve the problem, and passing tests didn\u2019t guarantee the hardware controls would work. The useful part was being able to keep working through those problems conversationally.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I supplied the idea, the memories, the preferences, and the reports from my wrist. Codex supplied code, technical investigation, and revisions. Suggestions went both ways.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That made the project feel less like submitting a specification and more like developing an idea through a series of playable experiments.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Back to the Dungeon<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s something pleasing about using AI to revisit a game I remember from around 1980.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Back then, a handful of terminal characters suggested a dungeon. Now, a small display and a motion sensor let me roll through one by moving my wrist. And instead of doing all the programming myself, I can describe a behavior, test an implementation, and discuss what needs to change.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The app is still a work in progress. But the attraction is familiar: explore a little farther, find something useful, survive the next encounter, and see what\u2019s downstairs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I started by asking an AI whether I could roll a ball through a maze on my watch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I ended up revisiting one of my earliest computer gaming memories\u2014and building something new from it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Around 1980, some of the first computer games I played were terminal games on a Unix system. One of them was Rogue. There were no elaborate graphics. The dungeon appeared as text characters: rooms, corridors, treasure, and monsters represented by symbols and letters. Your character was an @. It took surprisingly little to turn a &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/robertjwallace.com\/es\/from-rogue-on-unix-to-an-ai-built-dungeon-on-my-wrist\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> &#8220;From Rogue on Unix to an AI-Built Dungeon on My Wrist&#8221;<\/span><\/a><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_eb_attr":"","footnotes":""},"categories":[171,143],"tags":[],"class_list":["post-8437","post","type-post","status-publish","format-standard","hentry","category-ai","category-computer-stuff"],"featured_image_src":null,"featured_image_src_square":null,"author_info":{"display_name":"Bob","author_link":"https:\/\/robertjwallace.com\/es\/author\/admin\/"},"_links":{"self":[{"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/posts\/8437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/comments?post=8437"}],"version-history":[{"count":1,"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/posts\/8437\/revisions"}],"predecessor-version":[{"id":8446,"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/posts\/8437\/revisions\/8446"}],"wp:attachment":[{"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/media?parent=8437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/categories?post=8437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/tags?post=8437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}