{"id":40,"date":"2026-08-30T13:27:20","date_gmt":"2026-08-30T13:27:20","guid":{"rendered":"https:\/\/robinclapworthy.com\/?page_id=40"},"modified":"2026-09-15T20:51:01","modified_gmt":"2026-09-15T20:51:01","slug":"galactic-gladiators","status":"publish","type":"page","link":"https:\/\/robinclapworthy.com\/?page_id=40","title":{"rendered":"Galactic Gladiators"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/robinclapworthy.com\/wp-content\/uploads\/2026\/08\/image_2026-08-30_143835818.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"832\" src=\"https:\/\/robinclapworthy.com\/wp-content\/uploads\/2026\/08\/image_2026-08-30_143835818-1024x832.png\" alt=\"\" class=\"wp-image-47\" srcset=\"https:\/\/robinclapworthy.com\/wp-content\/uploads\/2026\/08\/image_2026-08-30_143835818-1024x832.png 1024w, https:\/\/robinclapworthy.com\/wp-content\/uploads\/2026\/08\/image_2026-08-30_143835818-300x244.png 300w, https:\/\/robinclapworthy.com\/wp-content\/uploads\/2026\/08\/image_2026-08-30_143835818-768x624.png 768w, https:\/\/robinclapworthy.com\/wp-content\/uploads\/2026\/08\/image_2026-08-30_143835818.png 1169w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><br>An arcade game built entirely in Visual FoxPro 9. Yes, really.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What started as an experiment to see whether I could make a simple arcade game in VFP has turned into something rather more ambitious \u2014 complete with animation, sound, gamepad control, explosions, enemies and an ever-growing list of things Visual FoxPro was never really designed to do.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/robinclapworthy.com\/wp-content\/uploads\/2026\/08\/image_2026-08-30_145225870.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"517\" src=\"https:\/\/robinclapworthy.com\/wp-content\/uploads\/2026\/08\/image_2026-08-30_145225870-1024x517.png\" alt=\"\" class=\"wp-image-50\" srcset=\"https:\/\/robinclapworthy.com\/wp-content\/uploads\/2026\/08\/image_2026-08-30_145225870-1024x517.png 1024w, https:\/\/robinclapworthy.com\/wp-content\/uploads\/2026\/08\/image_2026-08-30_145225870-300x151.png 300w, https:\/\/robinclapworthy.com\/wp-content\/uploads\/2026\/08\/image_2026-08-30_145225870-767x387.png 767w, https:\/\/robinclapworthy.com\/wp-content\/uploads\/2026\/08\/image_2026-08-30_145225870-1536x775.png 1536w, https:\/\/robinclapworthy.com\/wp-content\/uploads\/2026\/08\/image_2026-08-30_145225870-2048x1034.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why Visual FoxPro?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;ve spent much of my career building business software in Visual FoxPro, including LawnPro, which has been developed and used commercially for more than 20 years.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Galactic Gladiators started with a much less sensible question: <strong>could I actually make an arcade game with it?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The answer keeps turning out to be yes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What began with a spaceship moving across a starfield has gradually grown to include animation, collisions, sound effects, music, explosions, keyboard and gamepad control \u2014 and I&#8217;m still finding new things that VFP can be persuaded to do.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What works so far<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Scrolling animated starfield <\/li>\n\n\n\n<li>Keyboard and PS4 controller support<\/li>\n\n\n\n<li>Player movement and firing <\/li>\n\n\n\n<li>Enemy movement and behaviour <\/li>\n\n\n\n<li>Bullet, enemy and player collisions <\/li>\n\n\n\n<li>Explosions and sound effects <\/li>\n\n\n\n<li>Score and lives<\/li>\n\n\n\n<li>Game over and restart sequence <\/li>\n\n\n\n<li>Animated title sequence and music<\/li>\n\n\n\n<li>Basic Controller Rumble<\/li>\n\n\n\n<li><strong>BARF can talk<\/strong> \u2013 Visual FoxPro connects to the Microsoft speech engine, allowing BARF to speak during the game. <\/li>\n\n\n\n<li><strong>Screen shake<\/strong> \u2013 When the player\u2019s ship is hit, Visual FoxPro rapidly moves the game window by a few pixels to make the collision feel more powerful.<\/li>\n\n\n\n<li><strong>GitHub version control<\/strong> \u2013 The complete Visual FoxPro project is stored in a private GitHub repository, giving me a full history of the changes and somewhere safe to return to when one of my experiments goes horribly wrong. Not bad for a development product last updated in 2004. <\/li>\n\n\n\n<li><strong>Particle effects<\/strong> \u2013 Visual FoxPro creates and controls 80 individual particles in real time. They currently make the player\u2019s ship disintegrate when it explodes and spiral inward to form a portal when an alien appears. <\/li>\n\n\n\n<li><strong>Asteroid Field Survival Section<\/strong> &#8211; Eight simultaneous asteroids with different sizes, speeds and depth. They drift sideways, steer towards the player and use collision detection. Crashes trigger particle explosions, screen shake and controller vibration. The 35-second challenge restarts after losing a life and awards 1,000 points when completed. BARF provides deeply unhelpful advice before and after the field.  \u2014 <mark style=\"background-color:#f0a133\" class=\"has-inline-color\">NEW<\/mark><\/li>\n\n\n\n<li>Screen shake, Game Over and restart, BARF speech, background music and dynamic music volume,  sound effects.  \u2014 <mark style=\"background-color:#f0a133\" class=\"has-inline-color\">NEW<\/mark><\/li>\n\n\n\n<li>Pause Menu &#8211; You can now set the music volume, and select from several paused music tracks  \u2014 <mark style=\"background-color:#f0a133\" class=\"has-inline-color\">NEW<\/mark><\/li>\n\n\n\n<li>Developers Menu &#8211; The framework allows a developer to turn on unlimited lives, unlimited fuel, ghost mode and jump to different levels to aid testing \u2014 <mark style=\"background-color:#f0a133\" class=\"has-inline-color\">NEW<\/mark><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>And it\u2019s still growing.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/robinclapworthy.com\/?page_id=64\" data-type=\"page\" data-id=\"64\">The Dev Blog is here<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>An arcade game built entirely in Visual FoxPro 9. Yes, really. What started as an experiment to see whether I could make a simple arcade game in VFP has turned into something rather more ambitious \u2014 complete with animation, sound, gamepad control, explosions, enemies and an ever-growing list of things Visual FoxPro was never really &#8230; <a title=\"Galactic Gladiators\" class=\"read-more\" href=\"https:\/\/robinclapworthy.com\/?page_id=40\" aria-label=\"Read more about Galactic Gladiators\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-40","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/robinclapworthy.com\/index.php?rest_route=\/wp\/v2\/pages\/40","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/robinclapworthy.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/robinclapworthy.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/robinclapworthy.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/robinclapworthy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=40"}],"version-history":[{"count":17,"href":"https:\/\/robinclapworthy.com\/index.php?rest_route=\/wp\/v2\/pages\/40\/revisions"}],"predecessor-version":[{"id":181,"href":"https:\/\/robinclapworthy.com\/index.php?rest_route=\/wp\/v2\/pages\/40\/revisions\/181"}],"wp:attachment":[{"href":"https:\/\/robinclapworthy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}