{"id":2106,"date":"2026-04-08T01:11:57","date_gmt":"2026-04-08T01:11:57","guid":{"rendered":"https:\/\/portfolio.arnoldbiffna.com\/?p=2106"},"modified":"2026-05-20T17:30:09","modified_gmt":"2026-05-20T17:30:09","slug":"alien-barrage-building-an-ios-game-with-ai","status":"publish","type":"post","link":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2026\/04\/08\/alien-barrage-building-an-ios-game-with-ai\/","title":{"rendered":"Alien Barrage \u2014 Building an iOS Game with AI"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Built with Swift, SpriteKit, and an AI-assisted workflow (Claude + Codex)<\/em><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-video\"><video controls muted poster=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/alienbarrage\/assets\/live-hero-videos\/normal-first-frame.jpg\" src=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/alienbarrage\/assets\/normal.webm\" playsinline><\/video><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-video\"><video controls muted poster=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/alienbarrage\/assets\/live-hero-videos\/boss-first-frame.jpg\" src=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/alienbarrage\/assets\/boss.webm\" playsinline><\/video><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<p class=\"wp-block-paragraph\">This week I released a new game on the <a href=\"https:\/\/apps.apple.com\/us\/app\/alien-barrage\/id6759081405\" target=\"_blank\" rel=\"noreferrer noopener\">App Store<\/a>: <em>Alien Barrage<\/em>. The project took about three months to build and ultimately grew into a roughly 20,000-line Swift\/SpriteKit game.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While AI tools played a major role in accelerating development, the project still required significant engineering work: planning systems, designing gameplay, testing, debugging, integrating platform services, managing the AI workflow, and continuously refining the experience based on iteration and feedback.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The game itself was inspired by the classic arcade shooters I grew up playing. I combined elements I enjoyed from several games, added my own mechanics and pacing ideas, and let the gameplay evolve naturally throughout development. In many ways, Alien Barrage became both a technical experiment and a throwback to the arcade era.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Why I Chose Native iOS Development<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I considered building the game in Unity, but ultimately decided to use Apple\u2019s SpriteKit framework and develop the project natively in Swift.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Part of that decision was practical: I wanted to build more directly against modern Apple-native frameworks and services, including:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Swift and Xcode workflows<\/li>\n\n\n\n<li>SpriteKit<\/li>\n\n\n\n<li>Game Center leaderboards and achievements<\/li>\n\n\n\n<li>In-App Purchases<\/li>\n\n\n\n<li>Native App Store deployment<\/li>\n\n\n\n<li>Localization pipelines<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The game and App Store content were ultimately translated into 14 languages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Coming from years of cross-platform development using Xamarin, .NET MAUI, React Native, and Adobe AIR, I wanted to push further into modern native Apple development and build more directly against platform-native frameworks and tooling.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Development with AI<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The project was developed using a custom AI-assisted workflow built primarily around Claude and Codex.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rather than treating AI as a \u201cone click app generator,\u201d I approached it more like structured pair programming. I directed architecture, gameplay systems, feature planning, debugging, testing, iteration, and project organization, while AI accelerated implementation and repetitive development tasks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One of the biggest lessons I learned was that workflow design matters just as much as prompting.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Phase-Based Development<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Before writing production code, I used AI to help generate a full phase-based development outline for the game.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/blogimages\/planning_ripped_half.png\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Each phase had:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>a clearly defined goal<\/li>\n\n\n\n<li>implementation scope<\/li>\n\n\n\n<li>testing criteria<\/li>\n\n\n\n<li>isolated Git branches<\/li>\n\n\n\n<li>completion checkpoints<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The workflow looked something like this:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Plan a phase<\/li>\n\n\n\n<li>Scope prompts tightly<\/li>\n\n\n\n<li>Let AI implement the feature<\/li>\n\n\n\n<li>Review and test manually<\/li>\n\n\n\n<li>Refine edge cases<\/li>\n\n\n\n<li>Merge the branch<\/li>\n\n\n\n<li>Move to the next phase<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">This created a surprisingly clean development history with structured progression and meaningful commit messages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No production code was generated until the overall structure of the game had been planned first.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What Actually Worked<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Model Switching (Claude \u2194 Codex)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">I frequently switched between Claude and Codex depending on context limits, reasoning quality, or implementation drift.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This ended up having several unexpected advantages:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>reduced long-context degradation<\/li>\n\n\n\n<li>lower overall cost<\/li>\n\n\n\n<li>forced re-grounding between phases<\/li>\n\n\n\n<li>improved planning discipline<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Different models also had different strengths depending on the task.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Human Validation Loops<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">AI would implement a feature and then stop, often providing testing instructions or validation steps.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I reviewed, tested, and refined features continuously rather than allowing large unverified code changes to accumulate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That tight feedback loop helped keep the project stable even as the scope grew.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Git Discipline<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Each phase was isolated into its own Git branch before being merged back into the main project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That structure made experimentation safer and kept development organized as the game evolved.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">AI Beyond Coding<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">AI was used for more than gameplay implementation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The workflow also included:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>asset generation<\/li>\n\n\n\n<li>image processing<\/li>\n\n\n\n<li>sound integration<\/li>\n\n\n\n<li>video generation<\/li>\n\n\n\n<li>documentation generation<\/li>\n\n\n\n<li>command-line automation<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Tools like ImageMagick and ffmpeg were integrated into the workflow with AI assistance, alongside ChatGPT for image generation and other production tasks.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<ul class=\"wp-block-list\"><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Me vs. Me + AI<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Realistically, I probably would not have had the time to build a project of this size entirely on my own within a few months while balancing everything else.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What AI changed for me was not the need for engineering judgment\u2014it changed the speed of execution.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The combination of:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>real-world software engineering experience<\/li>\n\n\n\n<li>mobile development background<\/li>\n\n\n\n<li>architecture planning<\/li>\n\n\n\n<li>debugging ability<\/li>\n\n\n\n<li>product direction<\/li>\n\n\n\n<li>and AI-assisted implementation<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">turned out to be extremely effective.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To me, the process felt less like \u201cAI replacing programming\u201d and more like advanced pair programming with a very fast collaborator.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Cross-Platform vs. Native Development<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For years I leaned heavily into cross-platform development.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My background includes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Xamarin<\/li>\n\n\n\n<li>.NET MAUI<\/li>\n\n\n\n<li>React Native<\/li>\n\n\n\n<li>Adobe AIR<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The biggest advantage was always efficiency: one codebase and one primary skill set for multiple platforms.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But AI-assisted development changes that equation somewhat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recently I\u2019ve been focusing heavily on native apps in Swift and Kotlin while using AI-assisted workflows to accelerate implementation, experimentation, and iteration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That has made native development significantly more appealing than it once was.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>My AI Coding Journey<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I started experimenting seriously with AI coding tools in 2025 using Codex and later Claude.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Since then, I\u2019ve:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>rebuilt my Xamarin-based iOS app <strong>TimesX<\/strong> in native Swift<\/li>\n\n\n\n<li>integrated Apple Intelligence-powered content generation into TimesX<\/li>\n\n\n\n<li>replaced the original Xamarin version on the App Store<\/li>\n\n\n\n<li>created a native Android version in Kotlin optimized for Chromebooks<\/li>\n\n\n\n<li>built supporting websites and tooling<\/li>\n\n\n\n<li>developed Alien Barrage using Swift and SpriteKit<\/li>\n\n\n\n<li>experimented with Apple TV and Mac OS native applications for personal use<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In just a few months, I\u2019ve been able to build and ship substantially more software than I could previously as a solo developer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I\u2019ll admit it: I\u2019m hooked on AI-accelerated development.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not because it removes the need for engineering\u2014but because it amplifies what experienced developers can accomplish.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Final Thoughts<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">One thing this project reinforced for me is that AI is most powerful when paired with real development experience.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Architecture decisions, debugging, testing, workflow design, platform knowledge, and product direction still matter enormously.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AI simply compresses the distance between idea and execution.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For experienced developers willing to adapt, that combination feels less like a threat and more like a significant advantage.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-8f761849 wp-block-group-is-layout-flex\"><\/div>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/arnoldbiffna.com\/alienbarrage\/\">web site<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/apps.apple.com\/us\/app\/alien-barrage\/id6759081405\" target=\"_blank\" rel=\"noopener\">app store page<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Built with Swift, SpriteKit, and an AI-assisted workflow (Claude + Codex) This week I released a new game on the App Store: Alien Barrage. The project took about three months to build and ultimately grew into a roughly 20,000-line Swift\/SpriteKit game. While AI tools played a major role in accelerating development, the project still required &hellip; <a href=\"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2026\/04\/08\/alien-barrage-building-an-ios-game-with-ai\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Alien Barrage \u2014 Building an iOS Game with AI&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":2131,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[50,48],"tags":[52],"class_list":["post-2106","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-swift","category-artificial-intelligence","tag-swift"],"_links":{"self":[{"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/posts\/2106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/comments?post=2106"}],"version-history":[{"count":30,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/posts\/2106\/revisions"}],"predecessor-version":[{"id":2155,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/posts\/2106\/revisions\/2155"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/media\/2131"}],"wp:attachment":[{"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/media?parent=2106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/categories?post=2106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/tags?post=2106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}