ArduRogue: a traditional roguelike for the Arduboy

First version of ArduRogue, a traditional Roguelike. GitHub.

recording

Retrieve the amulet of Yendor from the dungeon’s lowest level and return with it to the surface. Features:

  • Random dungeon generation
  • Save/Load games: save (if it exists) destroyed on load (permadeath is enforced)
  • High score tracking
  • 16 types of enemies, each with their own quirks and abilities
  • Variety of items:
    • 10 potion types
    • 9 scroll types
    • 8 ring types (up to 2 rings can be worn)
    • 8 amulet types (not including the amulet of Yendor)
    • 7 wand types
  • Items can be cursed, identified, enchanted
  • Throw a potion at an enemy to apply its effect to it
  • Hidden doors
  • Afflictions: confusion, invisibility, weaken, slow, etc.

ardurogue.hex (77.6 KB)

I credit CalcRogue and DCSS for inspiration of game mechanics. The game is definitely playable but I am not entirely confident with the balance/fun level and would greatly appreciate feedback/suggestions/bug reports.

14 Likes

Excellent game!!! I can tell a ton of work went into this!

1 Like

I am so happy to see this and can’t thank you enough for this.

1 Like

Do you mind if I add it to the Cart building utility? People are going to want this!

Feel free! Is there a process to update the hex file used by the cart builder, in case there are future updates?

Sure … you can do a PR on this repo.

I need to put together instructions for adding a game for the first time (as you need to register it in the game ‘database’ - actually a CSV file in the same format as the Mr.Blinky utils expect). But updating the HEX file is a simple PR job.

Give me a few hours (I am at work ATM) and I will add this in for you.

I have added it to the cart!

1 Like

An excellent game! As beautiful as Arduchess, and a great job done. Thank you for this gem!
Just ported it for ESPboy, although I couldn’t understand some of the code (concerning the stack, fonts, string handling, rather complicated button handling). But having simplified these parts full functionality is maintained :slight_smile:

2 Likes

I have attempted to compile this game for the 8BitCade XL but it seems to come up with a file size of 101% of capacity.

I see there is a cmake file in the source and these notes in the readme.md:

compiler.c.extra_flags=-mcall-prologues -mstrict-X -fno-inline-small-functions -fno-move-loop-invariants -fno-tree-scev-cprop -fweb -frename-registers -std=c++11 -Wall -Wextra -Wshadow -Wconversion -Wundef -Wunused-parameter -g3
compiler.cpp.extra_flags={compiler.c.extra_flags} 
compiler.c.elf.extra_flags=-Wl,--relax -g3

So … how do I compile this beast?

Yeah, some of those flags were necessary to reduce the size, especially call prologues and linker relaxation.

I’m a bit inexperienced with the Arduino IDE. The only way I could figure out how to add flags for compile/link was to create a file with those lines named platform.local.txt located alongside the platform.txt of the Arduino IDE install (on my machine, in C:\Program Files (x86)\Arduino\hardware\arduino\avr). The unfortunate thing is that this file applies globally within the IDE so I have change the contents of the file for different projects.

If there is a good way to integrate the Arduboy/etc builds with CMake, I’d much prefer that. Or even just a way to specify per-project flags for Arduino. :stuck_out_tongue:

Your knowledge is better than mine. I will try this and see how I go!

I had a go at this but still 101%.

Not sure how you did it!

I’ll try to take a stab at it later today.

There are also some switches that remove features to reduce size: minimap, dungeon scroll, USB stack (last resort… hold DOWN on power up to enter bootloader).

1 Like

Removing the USB stack worked. Its not a big problem when using the FX or the 8ButCade XL as they have a ‘return to bootloader’ function built into the bootloader itself.

4 Likes