Submission #8897: upelly's Linux SolarWolf in 08:03.40

(Link to video)
Linux
SolarWolf
libTAS v1.4.5 (see comments)
29004
60
1503
PowerOn
N/A (see comments)
Submitted by upelly on 2/18/2024 8:06:15 AM
Submission Comments
(Technical info is at the end)
Presenting my fifth attempt at TASing this game, and my first successful one! This game was originally made by Pete Shinners in 2002 as a homage to SolarFox on Atari. In this game, you control a spaceship that needs to clear out a number of “Power Cubes” in each level because they are... “unsightly and block everyone’s view of space”! Um, ok. Anyway, there are three types of cubes: green cubes, which can be cleared by being hit by the spaceship; yellow cubes, which turn into green cubes upon being hit; and red cubes, which turn into yellow cubes upon being hit. In other words, the spaceship needs to touch each green cube once, each yellow cube twice, and each red cube thrice in order to clear it out. Meanwhile, there are three enemies/obstacles that need to be dodged as they instantly destroy the spaceship upon contact: fireballs that are shot by the four “guardians” patrolling the edges, spike mines that take the place of some of the cubes, and asteroids that just float around the screen randomly.
That’s the basic premise of the game, with 60 levels that have varying cube layouts and enemy aggressiveness. However, there are a few game mechanics that I need to mention:
  • Firstly, the game has a few types of “powerups” that can be collected by the player. Generally the powerups do not save any time except for the “shield” powerup which gives you a speed boost that saves a small amount of time. However, you need to avoid the “slow down” powerup for obvious reasons. The “skip bonus” powerup can also lose time in specific circumstances that I won’t go into. The other powerups don’t really matter for a TAS, though they are useful in RTA speedruns.
  • The second game mechanic I need to mention is level skips. If you complete a level while the red meter timer on the right has not completely emptied, it skips the next level for you. There isn’t really much else to say about it, as the TAS obviously gets every possible level skip with a lot of time to spare on the timer.
  • Thirdly, I want to talk about how the spaceship moves. The spaceship has two possible movement speeds: a normal and a faster “thrust” speed. We use the thrust speed throughout the TAS. More importantly, the spaceship can only move in four directions: up, down, left and right. There is no diagonal movement and the spaceship cannot stop moving once it is in motion. This is important to mention because a lot of the movement that looks “unoptimized” or “redundant” is actually exactly the same speed as any other optimal route. This also made some of the movement in this TAS relatively straightforward to optimize, because sometimes the only thing that matters for a speedrun is reaching the furthest cube from the spaceship quickly, as the remaining cubes can be collected on the way without needing their part of the movement to be optimized.
  • Lastly, a quick word on RNG. This game is very heavy on RNG and the fireballs, spike mines and asteroids all appear at random times and locations and they regularly trip up even the best RTA players. Recently, the developers at libTAS added a hook for RNG in Python, which made it possible to make a usable TAS of this game beyond the first eight levels. The seed we get by default in libTAS actually happens to be pretty lucky, and the result is a TAS I’m fairly happy with.
Next, I want to explain some of the strategies used in this TAS:
  • Firstly, right at the start of the TAS, I went into the setup section on the main menu. This is important as we need to switch the “help” from “full screens” to “quick comments” (the text that appears at the top of the screen whenever a new mechanic, obstacle or powerup is introduced). This saves a few frames after accounting for the time spent in the menu.
  • Secondly, a lot of the TAS ends up being quick back-and-forth movement to clear out yellow and red cubes. In some spots this can be done so quickly that that it’s barely visible and it looks like the red and yellow cubes were cleared with a single hit (note: since the spaceship moves at a fixed number of pixels per frame and the spaceship and cubes spawn in different locations in each level, sometimes it is not perfectly aligned with the hitboxes of the cubes and we need to move the spaceship away from a cube for an extra frame before hitting the cube again, which is why it looks less “clean” in some levels compared to others. This is unavoidable, even with trying to use the slower speed).
  • Beyond what I already mentioned, the basic strategy is obvious: clear out the cubes as quickly as possible while dodging all the enemies.
Finally, I want to thank the makers and developers of this game. As I mentioned, this game was originally made by Pete Shinners in 2002 as a homage to SolarFox on Atari, and updated by a small number of developers until 2006 (excluding the more recent updates on GitHub). I don’t know anything about these developers but their creation led to many hours of enjoyment in my childhood and eventually to me speedrunning and TASing this game.

Technical info:

  • Game: You can get the game on the official website here (this TAS is for version 1.5, which is the latest version released on the official website. Not to be confused with the unreleased version 1.6 which is only on GitHub). The Linux installation was used for making this TAS, though it shouldn't matter.
  • libTAS: You need to use the latest dev build of libTAS (286306 or later – you can get it from the artifacts page). Reason: the functionality to hook RNG in Python was only added in this build, which is necessary for this TAS to work.
  • In libTAS: The “game executable” should be where you have Python installed, e.g. “/usr/bin/python3”. In “command-line options”, you need to enter where the game is installed, e.g. “/usr/games/solarwolf”.

InfoTeddy: Claiming for judging.
InfoTeddy: Delaying due to numerous issues with sync, as documented in CasualPokePlayer's post.
InfoTeddy: Unclaiming.

feos: Claiming for judging.
feos: Delaying again due to sync problems and more importantly needing an interim libTAS, so it'd have to wait for the next official release.
Last Edited by upelly 11 days ago
Page History Latest diff List referrers