(Link to video)
Submission Text Full Submission Page
(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.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14884
Location: 127.0.0.1
This topic is for the purpose of discussing #8897: upelly's Linux SolarWolf in 08:03.40
Joined: 7/7/2017
Posts: 27
A silly question: you mention getting every possible level skip which means you play all the odd numbered levels. Did you consider investigating whether missing a level skip & doing even numbered levels could save time? It seems unlikely, because you'd not only have to wait for a skip timer to expire but you'd also end up doing 31 levels instead of 30, so if you didn't give it much (any) consideration I don't blame you.
GJTASer2018
He/Him
Joined: 1/24/2018
Posts: 251
Location: Stafford, NY
I don't think the A2600 game that inspired this, or even the arcade game that the A2600 game itself was based on, has been done yet on this site. Perhaps some of the RNG manip tactics can work for those games as well?
c-square wrote:
Yes, standard runs are needed and very appreciated here too
Dylon Stejakoski wrote:
Me and the boys starting over our games of choice for the infinityieth time in a row because of just-found optimizations
^ Why I don't have any submissions despite being on the forums for years now...
Joined: 2/17/2024
Posts: 3
jeff_town: Thanks for the suggestion! You are correct about why it would be slower. Even the slowest level skips are on par with the fastest level playthroughs for speed, so there is no situation where missing a skip would save time. GJTASer2018: I don't actually know anything about the original games that this is based on. I assume if they can be played on an Atari emulator, then the RNG should be deterministic anyway.
CoolHandMike
He/Him
Editor, Reviewer, Experienced player (636)
Joined: 3/9/2019
Posts: 582
The pathing for the levels looks good. Looks a fun game although having huge sections filled with red boxes might get tedious to play. Yes vote.
discord: CoolHandMike#0352
Emulator Coder, Judge, Experienced player (608)
Joined: 2/26/2020
Posts: 698
Location: California
I've attempted to play back this TAS (after InfoTeddy asked for someone else to try syncing it, since it didn't sync for them), although I've ran into several issues:
  1. Solarwolf 1.5 is just too old, the installer is garbage, with the graphical installer relying on gtk 1.2 (so not available in any kind of supported distro) and the no gui installer is broken, relying on a different kind of directory structure than what is actually present in the installer files, and even worse it quite literally botches the install and makes the game files owned by root, requiring manual chown'ing to fix it. And even if that's resolved, python2 pygame is just unavailable in package repos unless you use an older Ubuntu version (EDIT: although, pip would provide it, but that ends up not working as the game fails to import pygame regardless). The python2.3 built into the installer does in fact work, but only outside of libTAS, and it seems to be broken anyways as it will just have the black background be transparent / showing what's behind the window for some reason.
  2. The submission implies python3 should work, but Solarwolf 1.5 is not compatible with python3, only python2. Solarwolf 1.6 on the other hand does work on python3, and the executable hash in the movie indicates python3 was in fact used, thereby showing Solarwolf 1.5 was not used, Solarwolf 1.6 was the version used (most likely the Solarwolf obtained via pip, which is 1.6). Alternatively, in theory 1.5 could be used but only after being manually fixed for python3 usage (although this probably would just be the same result as using 1.6 anyways), but the submission not mentioning any kind of manual fixes seems a bit odd considering it again implies python3 would work.
  3. The submission desyncs with python3 and Solarwolf 1.6 (consistently on the Beware of Spike Mines level).
Also the wrong FPS seems to be used, the game seems to run at 40 FPS rather than 60 FPS, so a ton of no-draw frames are present (and this is probably not helping with sync)
Joined: 2/17/2024
Posts: 3
Hi, thanks for your message. I'm gonna copy/paste some info from the discussion we had on Discord, so that the info is publicly available: 1. I used v1.5 (not v1.6), as can be seen on bottom left of the title screen 2. I downloaded from the website to run the game. I don't think I made any modifications that would have changed the python version, it works in python3 for me. I am however quite new to Linux so you never know 3. I messed up the framerate, so once we figure out the other stuff I'll be re-doing this TAS
Emulator Coder, Judge, Experienced player (608)
Joined: 2/26/2020
Posts: 698
Location: California
Got this to sync. The issue was that the author flubbed the installing process, and ended up just installing the game off of apt repos, so it had Debian made patches which allowed python3 to work. The Solarwolf on Debian/Ubuntu repos syncs fine with this movie. This leads into a more interesting question of what version should be preferred, given the rules on game choice preferring an official release.
  1. The official site's 1.5 release (which is a PITA to get running since python2 and ancient installer)
  2. The pip 1.6 release (pip is the official package manager for python so I guess it's semi-official? This is also what's on the Solarwolf github repo which seems to be something maintained by pip people?)
  3. The Debian (and by extension Ubuntu) apt repos 1.5-patched release that works on python3
With all 3 versions noted as not being sync compatible with each other.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
While those are not official releases by the original author, I feel it's acceptable as long as we can know which exact versions of everything we need, and how to install them. People who maintain Debian packages sound reliable enough to me to count them as official porters at this point, when the original game is dead and hard to setup.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Desyncs for me with SolarWolf 1.5+dfsg1-3, 1.5+dfsg1-5, and 1.5+dfsg1-6, and libTAS 286306e and latest interim. Also it needs to sync on an official libTAS release so it'd have to wait for it even if it syncs. And if it only syncs on interim and not on official release, we could make a custom release from that old commit... if it synced.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
fsvgm777
She/Her
Senior Publisher, Player (221)
Joined: 5/28/2009
Posts: 1185
Location: Luxembourg
I should note that I have gotten this TAS to sync on Kubuntu 22.04 with its provided python3 and solarwolf packages from apt and the latest interim release of libTAS.
Steam Community page - Cohost profile Oh, I'm just a concerned observer.
Joined: 2/17/2024
Posts: 3
Hi everyone, I just want to clarify, I made several mistakes in my original submission, including with the framerate (I had not realized the game has an unusual framerate). I will be re-making the TAS in the future with a latest version (v1.6 on pip) and the correct framerate, once there is an official LibTAS release with the required functionality. As for this submission, I'm not sure what the procedure is but please feel free to discard this TAS
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
upelly wrote:
Hi everyone, I just want to clarify, I made several mistakes in my original submission, including with the framerate (I had not realized the game has an unusual framerate). I will be re-making the TAS in the future with a latest version (v1.6 on pip) and the correct framerate, once there is an official LibTAS release with the required functionality. As for this submission, I'm not sure what the procedure is but please feel free to discard this TAS
If you hit the Edit button on the submission, you can then change the Status to Canceled.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
TASVideosGrue
They/Them
Joined: 10/1/2008
Posts: 2738
Location: The dark corners of the TASVideos server
om, nom, nom... crunchy!

1714322177