About the movie

Categories:
  • As fast as possible
  • Takes damage to save time
  • Dies to save time
  • Best Genesis movie 2011
  • Heavy luck manipulation (boss 1, stage 3, boss 3, stage 4)
  • 108 seconds (6521 frames) faster than the fastest Dream Team contest movie
Ranger-X is a movie where you pilot a giant Mech. There are several weapons and modes of transportation. Each stage contains a number of Targets (stated in the top middle). When all targets have been killed, the level end.

Work, work, work

This movie was recorded by TheRandomPie_IV and Truncated. Earlier in the project, there was a bigger team consisting of mz, Dammit, cpadolf, and Cardboard. All input by these persons is gone due to redos, with the exception of the menus in the beginning, and the playaround on the first boss which was hexedited in, slightly modified, to save time.
All previous team members found important strategies and tricks, but mz deserves special mention for the fantastic scripts he engineered, which gives a HUD of speed, position, energy, jetpack heat, and most importantly, all onscreen enemies' health. He also disassembled the RNG function which saved huge amounts of time, especially on stage 3 (see stage notes).
Truncated: Finally done! My next project will be something simpler. Big thanks to RandomPie for sticking with the project for so long, and thanks to everybody who helped out earlier in the project.
TheRandomPie_IV: This was probably the thoughest project I've worked on to date and my next is also very likely to be something a touch easier. Truncated was great to work with as were all the others who made contributions. Enjoy.

Tricks

  • The Ranger and the bike can be moved separately, or merged. Changing weapons or jumping with the bike is only possible while merged. The bike moves at 7 pixels per input frame.
  • Left and right movement is not identical.
  • The speed when flying straight ahead switches between two values, 8 and 6. However, it is also possible to have a subpixel speed of 0.5. (If you are careless, the speed can also switch between 7 and 5.) This is only possible when going to the right.
  • When you duck on the ground and then press up-forward, you take off. This gives you max upwards speed instantaneously and slightly higher than max sideways speed. The sideways speed quickly goes down to its standard value. Because there is also 1 frame of zero movement, the gain is not very big (4.5 pixels going right, 5 pixels going left).
  • In upslopes, you can use two take off-boosts in a row because of a bug in the collision handling.
  • The game does not properly clear ducking status between levels. This can be used to use a take-off boost even if you start a level in the air.
  • The game does not properly clear subpixel position between levels.
  • Most projectiles give damage boosts. Some big projectiles give big damage boosts. Obviously big projectiles also take lots of health.
  • The ranger likes to kick enemies to temporarily disarm them. This also gives the ranger a small backwards boost.
  • Flying into some objects and enemies pushes you away from them. Examples are the targets and saucers in level 1-1.
  • Turning around is controlled by the player. The ranger will only kick enemies in front of it. Also, the game only calculates collisions which are actually onscreen. (It's a bit like a tree falling in the forest. If there is no Ranger there to witness it, did it actually happen?) By looking away, you can slip the blue explosions traveling along the ground past enemies.

Lag

The lag in this game is a bad joke. Every other frame is lag. Input-Lag-Input-Lag-Input-Lag...
Sometimes the input frames are switched: Input-Lag-Lag-Input-Input-Lag.
This makes it difficult to hexedit and to keep track of how laggy a section really is. We (mz, Truncated, Pie) wrote a script which takes care of the counting.

Weapons

There are 8 weapons you can wield. Your unicycle and airship fire separately, only the unicycle can be controlled.
Weapon Damage per shotEnergy per shotRate of fire Damage per input frame
Pulse rifle 1 N/A every 5 frames 0.2
Flame 1 16 every 2 frames 0.5
Bomb 12+1[1] 256 every 32 frames0.406
Blue laser 1+1 32 or 64 [2] every 4 frames 0.5
Falcon [3] [3] [3] erratic
Green laser 200 3968 (all of it)energy limitation2 or 0.88[4]
Plasma (spread shot) 10 256 every 24 frames0.417
Shield 4[5] [5] every 4 frames 1
Indra (unicycle) 1 N/A every 5 frames 0.2
Indra while joined 1 N/A every 3 frames 0.333
Eos (airship) 4 N/A erratic erratic

Pulse rifle

This is your standard peashooter. It is always available and can be combined with all other weapons. The shots get the same vertical speed as you had when you fired them, so you can "angle" shots.

Flame

Flame shoots a rapid stream of fireballs, which is supposed to look like a flamethrower. The flames receive both your vertical speed and horizontal speed added to them, and then a random addition in vertical speed (which is the reason that using the Flame advances the RNG).

Bomb

Fires a bomb in an arc forward. Vertical and horizontal speed is not added. The bomb bounces on walls but detonates on ground, and on enemies. A blue flame starts to travel along the ground, for 128 input frames. Max traveling bombs on screen is 4.
The blue flame can go up slopes and down walls. It turns at walls and at the end of the screen.
[1]: The bomb does 1 damage, the blue cream does 12. So only a direct hit scores 13.

Blue laser

[2]: The blue laser autoaims if you hold the button. The energy usage is then 32/4 input frames. If you tap the button it doesn't autoaim. The energy usage is then 32/8 frames.

Falcon

A homing bird. It travels slower than the ranger sideways and is therefore hard to use during horizontal stages.
[3]: The falcon is weird in many aspects. Energy usage is 64 to release the bird, 2 per input frame after that, 64 every time it does damage. Every other frame the bird creates a shadow which has the damage of the latest projectile fired (so you can fire the rifle to set this value to 1, best is if the airship fires so it turns to 4). There are max 3 shadows. The damage is 2 every other input frame, plus the value of all shadows, which are then removed.

Green laser

A huge laser.
[4]: The green laser (also called Proton Cannon) takes 64 input frames to start up, and then fires for 100 input frames, with 2 damage every frame. If the start-up is included, it is 0.88 damage per frame.

Shield

The shield makes you invincible and dishes out damage like nothing else, but it also eats energy extremely rapidly.
[5]: The shield does damage in this pattern: 2, 2, 0, 0. The pattern is on a global timer. The shield takes 144 energy to start and 16 energy every input frame after that.

Lua scripts

I have gotten requests for the Lua scripts used for this movie, here they are:
  • OneScript - Combination of the most important functions: HUD, lagcounter, enemy HP, RNG precognition, etc. Mainly written by mz, with additions by Dammit, Truncated and TheRandomPie_IV.
  • enemy HP - The targets in level 6 have a different memory structure, this script takes care of those and also shows the number of kicks/cooldown for the robot that holds the Shield weapon. Written by mz.
  • getframes - Extracts measuring points (target deaths and stage changes) formatted for pasting into spreadsheet. Works well for stage changes, less reliable for targets, since the position of the Ranger also matters a lot. Written by Dammit (I think?)

Stage notes

1-1

The targets in this level are big buildings shooting fireballs.
We tested the level both with flame thrower and bombs. In the competition the team that used flame thrower was the fastest, but optimizing both weapons it was clear that bombs was the winner. In this level it is actually advantageous to have a high difficulty level, because the targets shoot more often, making it easier to get damage boosts.

1-2

Boss time! Flame is the obvious choice because of higher damage over a long time. Doppler effect used to damage the legs faster. After mz's discovery of the RNG seed, we figured out that moving the bike makes it change, and manipulated the homing missiles to fly in advantageous directions. That is, hitting us in the back instead of getting in the way of our flamethrower.

2-1

The targets in this level return fire after a few hits, generate energy balls that fly in your direction, and lag. It's important to deliver all the damage over a short period of time to avoid the lag.
We pick up the blue twin lasers. They will come in handy later.
Target 4 (behind the huge wall of eggs that release pesky fish) goes down to the combined force of a bomb and two boulders that the bike shoves in. We are pretty happy with that trick.

2-2

The fighter planes are airborne, but can be manipulated to move down into the explosions traveling along the ground. This was suggested by Cardboard. We stack multiple explosions on top of each other to kill them in one hit.
Twin lasers works great on this boss, because of the range and damage output. They also make the tactic of moving away from the boss possible. The boss appears immediately when the last target is destroyed, so it's important to switch weapons just before that.
If you wonder why we stood here eating lasers for a while, read on...

3-1

In this level, the targets drop down from the sky. The time when the targets appear are random, but they are decided when the level starts. mz did some fantastic work by disassembling the randomness subroutine and the code which calls it before the level starts. From this he also made a nice lua script which essentially grants us precognition, showing at what heights all targets would end up with the current RNG seed.
The x-position (drop location) of the pods are always the same.
This is obviously a huge factor in completing this level quickly. mz's team gained about 1400 frames on this level in the dream team competition.
After an idea by Dammit, Truncated researched and wrote a script to estimate a level completion time for any combination of drop times. Pie then had the idea to calculate a lot of combinations (thousands), so we could pick the best.
The RNG is called for a lot of different reasons, but the ones we can influence directly are moving the bike, firing the flame thrower or flying upwards (one step each). Indirectly, we can make the boss fire its laser. This advances the RNG about 500 steps! Because of this we can reach a better RNG without losing too much time.
Eating the lasers takes about 180 frames, but the order of targets we get means we can complete the level 1700 frames faster than the best dream team competition movie, because almost all of the waiting for targets to drop is gone.
About the level: when going trough the treetops at too high speed, a bunch of small leaves come off. These create lag if there is other stuff on the screen, and also block shots and bombs, so we avoid it when possible. The targets release small fighter jets, which shoot lasers that are great for boosting your speed. The jets are also great at getting in the way when trying to destroy a target.
We also pick up the homing bird for the next level. It's crazy fast at killing targets, but has problems catching up to the ranger after that. It would also have meant an extra weapon switch at the boss, which is why it isn't used in this level.

3-2

The boss has two forms, each has 64 HP.
First form, the boss only takes damage when the eye is open. When the boss takes damage, it closes the eye. The fastest way around this is to buffer up 4 bombs (which is the max number on-screen) for 4*12=48 HP, and as soon as they hit, release another bomb and fire four rifle shots, 4+12=16 HP, for a total of 48+16=64 HP. The boss dies almost instantly.
The second form has spheres floating around it in a predefined pattern, the spheres block all shots. The pattern is decided when the boss spawns. It starts under the ground and moves up, towards your position. This gives us some time to both get a favourable pattern (one with a sphere opening in ground level just as the boss appears) and stack up a welcoming present of 4 bombs. As before, one more bomb and 4 rifle shots just after that kills it.

4-1

This is a vertical level. The targets here release tracking bombs, which really hurt. However, the explosion from the bombs also hurt enemies. If you set off the bomb while it is still inside the target, the target goes down!
Unfortunately, the targets release their bombs not when you get close, but on a timer which is initialized when the level starts. So we went through the process for stage 3 again, wrote a program so calculate a comparison value for different timer values, and found a very good one just a few RNG numbers away. So good actually, that all the targets release their bombs without any delay. This results in what you see, we fly upward at max speed the whole time, targets suiciding along the way, we never fire a shot. :)
The bird is used to kill the enemy rangers to decrease the lag we would otherwise have later. We pick up the giant green laser.

4-2

This boss works something like this: There are turrets shooting ballistic lasers at you. The part of the boss which you have to kill to end the level is housed under the middle turret. You have to destroy that turret to remove the walls and be able to shoot the boss. The boss consists of a small module and a ball rotating around each other. The module must be damaged to kill the boss. If the ball is damaged, it attacks the player and the module goes invulnerable for a while.
Since the green laser shoots through walls, we do not have to kill the middle turret at all. We must however make sure not to damage the ball. This is the reason that we starts firing in the "wrong" direction and turn around twice during firing: the module needs to be in the correct phase of the rotation, and we only want to scroll the module into view, not the ball.
The position of the ball and module is fixed (non-random) at the start of the stage.

5-1

This stage has three main features:
  1. It is in the dark, which means very slow energy refill for the ranger, and it has searchlights, which quickly refills energy but alerts enemies to your position. All nearby missile ships and one trailing robot start to attack you. The trailing robots switch sides so they are always behind you.
  2. The targets are on rails and move back and forth. It is possible to destroy the targets (32 HP), but you can also destroy the small modules on the rails (16 HP) instead. This makes the targets fall to their doom. This works on all targets except two last ones.
  3. The enemy rangers that are walking on the ground react differently to kicking than most enemies:
    • They receive 1 HP damage from kicks.
    • It doesn't matter which direction you face, you will always collide with them. It is not possible to pass them by turning around.
    • The kick recoil is huge, which is good for traveling faster.
Since the targets fall off their rails and die when they hit the ground, it's important to kill the last two targets when their falling distance is short.

5-2

The boss consists of two parts. Neither has any attacks on their own, they only attack once they are connected. The left one starts next to you and travels at medium speed to the right. We kill the left part with the bombs since that's what we come into the stage with. This makes it fly right quickly and attach to the right part.
During the long travel to the right part we switch to the green laser and start it so it will fire exactly as we reach the boss. The idea is to get off as many rifle shots as possible during the green laser, which as before means some turning around. It is only possible to fire the rifle when you are in view.
To finish off the boss, we get in the bike just as the laser stops, switch to the bombs while jumping with the bike, and deliver a final bike/rifle/bomb salvo.

6-1

The second enemy robot carries the arguably best weapon of the game, the shield. It makes you invincible and damages anything you touch at double the rate of the flame. The robot does not give you this weapon if you just shoot it though - you have to kick it to death. Both the ranger and the bike can kick it. If the robot goes too high and touches the ceiling, it stops moving, so this needs to be avoided most of the time.
Before the end, we switch to the green laser to kill the boss quicker. The green laser is a bit strange in that it requires full energy to activate, but the energy isn't depleted at once, only when it fires 2 seconds later. Meanwhile, you can pick up a health refill, which converts energy to health.
We take our only death here, to pass a health refill just before the boss, which would otherwise sap our energy for the green laser.
The boss has two weak points: a gun on the top and a gun on the bottom which retracts and goes invincible. With the damage output of the green laser, the bottom gun can be killed before it retracts the first time, even if it means a slower kill of the top gun.

Final boss:

During the long fall we get 14 frames ahead with the use of slightly faster velocity cycle. Always something!
As for the boss, we just shield him in the face while shooting the rifle. Even though he has a phase where he blocks your shots and you have to reflect his projectiles against him, it is still possible to damage him normally if you are behind his shield.

Possible improvements

Better lag management. The lag management in this game is hell. Theoretically better strategies in the last level weren't used because they caused more lag.
Not picking up the blue laser. Getting the blue laser was based on how much time it would save against the second boss. It does save time there, but since we were forced to wait in the third phase, perhaps a slower weapon would work out too.
Better randomness management. Perhaps it is possible to grind enough RNG steps during the first two levels that a laser shot from the second boss could be skipped, but it's doubtful.
See you next mission!

feos: HD encode.

Baxter: Complex game TASed very well, accepting.
sgrunt: To be published as soon as I grab a screenshot.


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15619
Location: 127.0.0.1
This topic is for the purpose of discussing #3127: Truncated & TheRandomPie_IV's Genesis Ranger X in 09:32.50
Editor, Expert player (2480)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
Wow, this TAS is difficult to follow at first, because it has so much content: all the different weapons, weapon power, jetpack heat, constant damage boosts, health management, suicide, two "characters" moving simultaneously, insane RNG manipulations, strange boss fights and fast-changing levels (each looking completely different from the previous one). It took me a while to understand the game and then it took me another while to understand some of the TAS stuff that just happened here. I can say that this is a very well done GMV.
TASVideoAgent wrote:
Best Genesis movie 2011
Challenge accepted. Also, voting yes.
upthorn
He/Him
Emulator Coder, Active player (392)
Joined: 3/24/2006
Posts: 1802
TASVideoAgent wrote:
Best Genesis movie 2011
Although I have nothing but respect for Fuzzerd and Sonikkustar's work, it would be nice to have a year where this award didn't go to Sonic.
How fleeting are all human passions compared with the massive continuity of ducks.
Player (150)
Joined: 11/27/2004
Posts: 688
Location: WA State, USA
TASVideoAgent wrote:
Best Genesis movie 2011
Nach wrote:
I also used to wake up every morning, open my curtains, and see the twin towers. And then one day, wasn't able to anymore, I'll never forget that.
Joined: 8/11/2010
Posts: 45
Location: Virginia
RT-55J wrote:
upthorn wrote:
TASVideoAgent wrote:
Truncated and TheRandomPie_IV wrote:
Best Genesis movie 2011
Could someone please encode this supposed masterpiece?
Joined: 7/2/2007
Posts: 3960
Awesome, you finished! I'm very much looking forward to seeing an encode. Having read the description, I now understand why this took so long to make. :)
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Site Admin, Skilled player (1255)
Joined: 4/17/2010
Posts: 11492
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Encoding in HD.
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.
Jungon
He/Him
Player (50)
Joined: 4/2/2009
Posts: 376
Location: Porto Alegre - Brazil
Isn't that '16 HP modules instead of 32 HP bosses on 5-1' from me? I said something like that on the WIP topic ... but anyway.. =P
Jungon wrote:
Apathos wrote:
RT-55J wrote:
upthorn wrote:
TASVideoAgent wrote:
Truncated and TheRandomPie_IV wrote:
Best Genesis movie 2011
It's still april, we're already awarding? +D Actually I'm kind of divided between this and Chakan, but.. it's still april, I hope to see much more Mega Drive videos on this year \o
*Jungon*/*Johnnyz* smilie weirdo =P ^^ o.o @__@ +D
Editor, Reviewer, Experienced player (980)
Joined: 4/17/2004
Posts: 3109
Location: Sweden
Jungon wrote:
Isn't that '16 HP modules instead of 32 HP bosses on 5-1' from me? I said something like that on the WIP topic ... but anyway.. =P
You did point that out in the Ranger-X topic, but it was already used in the dream team competition movies then, so it wasn't news. Thanks for the support in any case! On request from Aqfaq, I have added the three main scripts used in the making of this movie.
Editor
Joined: 3/10/2010
Posts: 899
Location: Sweden
I have no idea what is going on and I a still entertained. It's a yes vote.
Joined: 7/2/2007
Posts: 3960
Thanks for the encode, feos! That was everything I could have hoped for. Great work guys! And geeze, does the shield weapon completely neuter stage 6 or what?
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
BigBoct
He/Him
Editor, Former player
Joined: 8/9/2007
Posts: 1692
Location: Tiffin/Republic, OH
That was amazing. Yes vote for sure. Also:
upthorn wrote:
TASVideoAgent wrote:
Best Genesis movie 2011
Although I have nothing but respect for Fuzzerd and Sonikkustar's work, it would be nice to have a year where this award didn't go to Sonic.
Agree with this 100%.
Previous Name: boct1584
mklip2001
He/Him
Editor
Joined: 6/23/2009
Posts: 2227
Location: Georgia, USA
henke37 wrote:
I have no idea what is going on and I a still entertained. It's a yes vote.
This is how I feel too. Upon reading the submission comments, it's incredible how much manipulation went into making this run. Yes vote. Also, Truncated, you've done some really awesome team runs over the last couple years or so. There was Castlevania Bloodlines with VANDAL, Alien Soldier with Dammit, and now there's this run. It's been greatly appreciated!
Used to be a frequent submissions commenter. My new computer has had some issues running emulators, so I've been here more sporadically. Still haven't gotten around to actually TASing yet... I was going to improve Kid Dracula for GB. It seems I was beaten to it, though, with a recent awesome run by Hetfield90 and StarvinStruthers. (http://tasvideos.org/2928M.html.) Thanks to goofydylan8 for running Gargoyle's Quest 2 because I mentioned the game! (http://tasvideos.org/2001M.html) Thanks to feos and MESHUGGAH for taking up runs of Duck Tales 2 because of my old signature! Thanks also to Samsara for finishing a Treasure Master run. From the submission comments:
Shoutouts and thanks to mklip2001 for arguably being the nicest and most supportive person on the forums.
Skilled player (1652)
Joined: 11/15/2004
Posts: 2202
Location: Killjoy
henke37 wrote:
I have no idea what is going on and I a still entertained. It's a yes vote.
Came here to post this. Was beat to the punch.
Sage advice from a friend of Jim: So put your tinfoil hat back in the closet, open your eyes to the truth, and realize that the government is in fact causing austismal cancer with it's 9/11 fluoride vaccinations of your water supply.
Skilled player (1327)
Joined: 9/7/2007
Posts: 1354
Location: U.S.
Ive been looking foward to this run for a long time and it didnt dissapoint. Amazingly nice job from you two. Super Yes Vote.
Joined: 11/26/2010
Posts: 34
Location: Brazil
Unbelievable! I was making a movie of this game. I gave up because of the difficulty is very high. I liked the glitch in the phase of the skyscraper, how it happened?
Editor, Reviewer, Experienced player (980)
Joined: 4/17/2004
Posts: 3109
Location: Sweden
Master of Pigs: Thanks! There are more than one glitch at work in the skyscraper level, but I guess you mean either the infinite flying or that the targets explode as we pass them? The infinite flying is possible because the game sets your jetpack to overheat if you press up on the frame it is already at max heat. By releasing up on this frame, we get a small sliver of jetpack heat back, which we use on the next frame to get to max heat again, and so on. The mean upspeed is slightly lower, 7.875 instead of 8.0, but the difference is small enough that it doesn't pay off to land and cool down the jetpack. The targets exploding if get damage from a bomb of theirs while inside them is probably not a glitch, but intended by the designer. Getting all of them to release a bomb just as we pass though, requires a very specific setup. The timer for all targets is initialized when the level starts. Hope it was this you were wondering about.
Joined: 11/26/2010
Posts: 34
Location: Brazil
Truncated wrote:
Master of Pigs: Thanks! There are more than one glitch at work in the skyscraper level, but I guess you mean either the infinite flying or that the targets explode as we pass them? The infinite flying is possible because the game sets your jetpack to overheat if you press up on the frame it is already at max heat. By releasing up on this frame, we get a small sliver of jetpack heat back, which we use on the next frame to get to max heat again, and so on. The mean upspeed is slightly lower, 7.875 instead of 8.0, but the difference is small enough that it doesn't pay off to land and cool down the jetpack. The targets exploding if get damage from a bomb of theirs while inside them is probably not a glitch, but intended by the designer. Getting all of them to release a bomb just as we pass though, requires a very specific setup. The timer for all targets is initialized when the level starts. Hope it was this you were wondering about.
Yes, yes! Very interesting to use the jetpack infinitely. :) This is one of my favorite game. Thanks!
NitroGenesis
He/Him
Editor, Experienced player (556)
Joined: 12/24/2009
Posts: 1873
MAkingSD
YoungJ1997lol wrote:
Normally i would say Yes, but thennI thought "its not the same hack" so ill stick with meh.
Skilled player (1327)
Joined: 9/7/2007
Posts: 1354
Location: U.S.
The suggested screenshot should be of when you completely obliterate the Stage 4 Boss with the green lazer.
NitroGenesis
He/Him
Editor, Experienced player (556)
Joined: 12/24/2009
Posts: 1873
YoungJ1997lol wrote:
Normally i would say Yes, but thennI thought "its not the same hack" so ill stick with meh.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3575)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Glad to see this finally done. It was worth the wait, easy yes vote.
It's hard to look this good. My TAS projects
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15619
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [1792] Genesis Ranger X by Truncated & TheRandomPie_IV in 09:32.50
Joined: 4/1/2010
Posts: 96
Been waiting for this game to get a good TAS treatment for a very long time. I am not disappointed. I owned the cart as a kid. What a frustrating game! Anyways, as a display of appreciation, I just donated $20 to TASvideos. Thanks for your hard work!
Joined: 7/2/2007
Posts: 3960
Curious, what do you find frustrating about it? Aside from the seeming impossibility of the tower level on Hard (you have to know about duck-launching to get extra altitude, otherwise you can't scale the tower) I generally found it to be a reasonable challenge. You just have to be methodical. Then again, that's me these days. Twenty years ago I might well have had a different opinion.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.