[TINS 2020] FlowerFlyerTron
Bruce Perry

FlowerFlyerTron

Fly your plane through the mazes, trailing your banners behind you and watering as many flowers as you can. What's your best score? There's a new banner for each level - how many of them can you get to?

Implemented in Rust, which I thoroughly enjoyed learning how to do. Special thanks to SiegeLord for the Allegro bindings.

Made as if for a very old computer. Most of the display updates progress one tile at a time. A smaller entry than usual from me since we have a daughter now. There's no sound and no readme!

If anyone needs help compiling it or otherwise, post here, or ask on IRC if I'm there.

Controls

  • Use the arrow keys to control the plane.

  • Press Enter or Space to proceed whenever you finish a maze or crash.

  • To exit the game, just close the window. There is no key implemented for this.

Implementation of rules

The flowers in the game are evident. I hope the banner trailed by the plane counts as a text scroller. Fun is made of old-fashioned things through the old-computer format, some of the banner text praising its modernity, the use of contemporary styles of showmanship, and even the fashion in which the game is named. The mazes are procedurally generated before your eyes, but not only that, the tile images (including letters and numbers) are all specified using binary numbers in the code (which admittedly would have been much more impressive if, like in my BBC BASIC days, binary literals weren't a thing).

Links

Progress log
Download (including Windows binary)

Screenshots

{"name":"612452","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/6\/d6c753afbf2ee9bd3540a3f80ca6a6fa.png","w":656,"h":518,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/6\/d6c753afbf2ee9bd3540a3f80ca6a6fa"}612452

{"name":"612449","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/4\/a\/4a48e7705bd3d128c18ad7d4b501e2df.png","w":656,"h":518,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/4\/a\/4a48e7705bd3d128c18ad7d4b501e2df"}612449

{"name":"612451","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/0\/9\/095cdf41020fd6f207a54c9a161402df.png","w":656,"h":518,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/0\/9\/095cdf41020fd6f207a54c9a161402df"}612451

GullRaDriel

Well done Bruce !

SiegeLord

Nice! I could almost hear the old hard drive seeking sounds as the maze was being generated. It reminded me of a game I completely forgot the name of, where you shoot a snake type of thing.

Anyway, it's pretty challenging! I didn't get very far, but I enjoyed the levels I tried. It really punishes you if you get greedy and try to enter some nook without a way to escape!

Bruce Perry

Hard drive? What's that? :) We started with floppy disks, and even that was an optional add-on. If you didn't take that, you had cassette tapes. Now, even that computer (BBC Model B) was capable of more than whatever system this game is modelled on (nothing specific).

Thank you for the feedback :)

Elias

Very impressive, especially considering you could only spend some of the time on it and also wrote it in a new programming language. I loved all the old-style effects like the tile update delays and the flood-fill(?) map reveal.

The game was surprisingly hard - I always crashed myself into a wall at first so couldn't beat level 1. Finally learned to avoid keyboard auto-repeat and limit myself to small one-step movements and made it to level 4 before running into impossible small closed chambers. Was about to give up when I realized that I could sometimes run twice before the snake moves. So I had to revert my initial trick and go back to auto-repeat, having to master the fast movement after all. That got me to level 9 or 10 doing some impossible between-the-update jumps :)

amarillion

It should be possible to port this game to a ZX Spectrum. It has exactly the same palette. Except the resolution is off - ZX Spectrum is 256x192, so 32x24 characters.

I still remember drawing sprites on an 8x8 grid, and manually translating the binary to decimal, in order to POKE them into the user-defined graphic memory.

LennyLen

I still remember drawing sprites on an 8x8 grid, and manually translating the binary to decimal, in order to POKE them into the user-defined graphic memory.

I used to do a similar thing with the Atari 800, except I'd POKE the values to override the text character set. Then custom graphics could be PRINTed.

amarillion

The ZX Spectrum had 21 special characters reserved for this purpose. They were somewhere in the upper 127 characters of the extended ASCII table, you could access them on the keyboard with GRAPH + letter from A to U.

Entheh, how many 8x8 sprites did you create for FlowerFlyerTron?

Bruce Perry
Elias said:

running into impossible small closed chambers

Were you under the impression you are obliged to water all the flowers? If so, I like the fact that you got to level 9 or 10 by 'glitching' :) I'm having difficulty imagining how that's humanly possible; any chance of a video?

drawing sprites on an 8x8 grid, and manually translating the binary to decimal

I did the same, because the BBC computer used the same concept for text display in graphics modes (where a 'graphics mode' is everything except Teletext).

In the case of the BBC computer, this was largely an OS ROM construct. The screen memory itself supported any pixel being any colour, so the codes I constructed were fed to the OS ROM for rasterisation into screen memory on demand. The screen memory had a layout which also went 'character' by 'character', except that a 'character' was narrower in modes with more colours, so the OS had to convert. You'd notice that rasterising a character in text mode (aligned with the hardware 'character' grid) was fast and doing it in graphics mode (any position) was slow.

My game is modelled on character rasterisation in hardware, with the game only in control of the choice of icon and colour per 8x8 cell. I can't work out from what you wrote whether the ZX Spectrum was like that or whether it was more like the BBC computer.

Entheh, how many 8x8 sprites did you create for FlowerFlyerTron?

I think I made 48 (including 26 letters and 10 digits). There is a 'num_icons' variable in icons.rs which I think is exact, although for the code to work, it didn't matter if it was greater than the actual number created.

Thread #618125. Printed from Allegro.cc