Bot DESTROYS Astrosmash for Intellivision
This gameplay is 100% script-generated, with the goal being to make an unstoppable Astrosmash AI. Not only does this bot beat all human speedrun and high score records, it is literally unstoppable, able to max out the scoreboard with nearly 20,000 lives to spare! Here's how the bot stacks up against the best human players:
*20,000 pts surpassed at 3:06 beats world record (WR) by 1m 32s
*100,000 pts surpassed at 8:39 - beats WR by 7m 12s
*1,000,000 pts (last difficulty increase) surpassed at 39:51 - beats WR by 1h 42m 03s
*5,002,635 pts (WR high score) surpassed at 3h 08m 59s - beats WR by 10h 09m 07s
*9,999,995 pts (max nominal score) surpassed at 6h 08m 19s - never achieved by a human
*32,767,995 pts (maximum score) surpassed at 19h 50m 21s - never achieved by a human
==The commented Lua script (the bot's code) can be downloaded below==
https://drive.google.com/file/d/1mogAEcghnG5gGlLDpur4VKqFOFwY6vFQ/view?usp=sharing
The code was made to run in BizHawk 2.8 through its built-in Lua Console. I will likely be suspending work on this project indefinitely. So please, feel free to improve upon what I've made so far and it might even beat the game with 0 deaths!
==Basic game info for those unfamiliar with Astrosmash==
*You will gain 10-100 points for hitting the six different targets—the UFO is worth the most
*You will lose 5-10 points if you let asteroids hit the ground, and lose 100 points if you die
*Each score gain or loss is multiplied by the number in the lower-right corner
*An extra life is awarded every 1,000 points
*Large rocks will sometimes split into two small rocks when shot
*If a spinner hits the ground, you instantly die
*The teleport button will move you to a new random position - useful for sticky situations
==Rough summary of how the bot works==
*If there are no targets spawned, move to the screen center
*If there are targets spawned, move the gun left/right until it can target something
*Shoot a laser if it is anticipated to intercept a target's current trajectory
*Move on to the next target if a laser is already on its way to intercepting the current one
*Shoot two lasers simultaneously at a big rock to also get the small rocks it may split into
*Target spinners with highest priority, then UFOs, missiles, big rocks, small rocks
*If a spinner is uninterceptable before hitting the ground, teleport until it can be shot at
*If a hazard comes within a certain rectangle of the player position, press the teleport key
==Summary of potential improvements==
*The bot is completely reactionary. It cannot predict when, where, or what hazards will spawn or where it will teleport to when it decides to teleport.
*The bot does not weight objects a shorter distance away as more viable targets.
*Targeting is handled by holding the fire button for 4 frames, followed by letting go for 2 frames. It is like this to avoid lag dropping fire inputs, but it could be more efficient.
*Despite my best efforts, the bot still frequently dies to hazards before it can teleport away.
*The script only dodges hazards by teleporting, which sometimes results in a death.
*The script is particularly bad at dealing with missiles as they change trajectory every 36 frames. The targeting and teleportation routines assume constant trajectories.
-- Join the Intellivision Discord: https://discord.gg/GYBDgvK
Other Videos By Winslinator
Other Statistics
Astrosmash Statistics For Winslinator
At this time, Winslinator has 769 views for Astrosmash spread across 3 videos. There's close to an hours worth of content for Astrosmash published on his channel, roughly 1.20% of the content that Winslinator has uploaded to YouTube.