Fathom's Edge: Progress Report #1
JoeStrout

JoeStrout @joestrout

About: Creator of the MiniScript programming language and Mini Micro retro-styled virtual computer.

Joined:
Oct 25, 2022

Fathom's Edge: Progress Report #1

Publish Date: May 8
1 0

I've been on vacation this week, doing some traveling with my spouse, who's attending a conference in New York City. This has left me with some down time each day while she's doing her thing. So I've had some extra time to work on a fun new project, and today I'd like to share that with you.

The project is called Fathom's Edge, and it's a retro-style RPG.

Screen shot of _Fathom's Edge

Inspiration for Fathom's Edge

This game draws inspiration from several sources:

  • classic Roguelike dungeon crawlers like Nethack
  • EAMON, an RPG game system back in the Apple ][ days
  • Oblivion Remastered, which I've also been playing a bit this week

Each of these have some fun elements I'd like to bring to Fathom's Edge, but EAMON is the one that really sets it apart. EAMON was a unique system where you could take one character through multiple adventures, all written by different people. There was a standard main program where you created or loaded your character, but then you inserted another disk containing some specific adventure, which could have been created by anyone (i.e. not the author of EAMON itself). You'd play through that adventure, fighting monsters, gaining treasure, rescuing the prince or whatever, and then (if you survived) returning back to the main program at the end. Experience, gold, and (most) items obtained in one adventure would stay with your character, and you could take them into the next one.

The result was chaotic, unbalanced, and ridiculously fun. And I think it's a perfect match for the MiniScript community, which is full of talented, enthusiastic devs who would have a lot of fun creating and playing each other's adventures.

But, while EAMON was an entirely text-based game, I also wanted to take advantage of Mini Micro's more advanced support for graphics, sound, and input devices. And I've had these oneBit tiles lounging around in the /sys/pics folder, not pulling their weight for far too long. So, I decided to go with a more Roguelike, top-down, but retro (colorized 1-bit) sort of interface, as you can see in the screenshot above.

Goals

Here's my current vision for the game:

  • Fathom's Edge itself will consist of a town, with shops and NPCs that let you outfit your character and farm some low-level experience.
  • At one side of the town will be the "Fathom" — a shifting magical curtain that the locals stay clear of. On the other side of the Fathom are all manner of untold dangers!
  • This town will be where you create or reload your character, and play between adventures.
  • You will mount a "Fathom's Edge Adventure" disk in Slot 2 of Mini Micro. With that in place, stepping through the Fathom will take you to that adventure.
  • Anyone with Mini Micro, time, and patience will be able to create such an adventure. This will include custom maps, mobs, NPCs, and whatever plot, characters, puzzles, and treasure you can dream up.
  • You play through that adventure, exploring whatever it has to offer, and when you exit, you come back through the curtain to the town of Fathom's Edge. Each adventure will take somewhere between 10 and 60 minutes to play through.
  • You'll be able to save your progress any time you are in town. (Saving while you're out on an adventure is probably out of scope for now.)

The combat and RPG systems are of intermediate complexity: we already support a half-dozen different damage types (physical, fire, cold, shock, necrotic, etc.), with monsters, weapons, and items that have strengths/weaknesses in these. And we'll have a large number of status effects (stunned, slowed, wet, etc.) that impact the game in important ways. So rather than every combat being "I swing my sword again", you'll have interesting choices about what gear and attacks to use depending on what situation you're facing.

Screen shot showing Ring of Protection

We'll also have an experience and skill/leveling system, so your character can grow stronger over time. Each adventure will be rated with a suggested range of player levels, e.g. "for players level 5-10". But we probably won't try to stop you if you want to tackle an adventure outside that range! Alternatively, maybe we could have the adventures try to scale their difficulty to match the player level, like dungeons in Oblivion.

Current Status

So, where are we in the development of Fathom's Edge? I think we've actually got a pretty solid foundation:

  • We have an object model defining a variety of different kinds of "things" that can appear in the world: items and equipment, mobs, NPCs, etc.

  • Melee combat is working, with simple animations showing who's attacking whom. Here's me surrounded by two slimes and a rat. (Fortunately, slimes are slow, and only attack every other turn... unfortunately, rats attack twice per turn!)

Animated screen shot of melee combat

  • We also have basic ranged combat. Below you can see me switch from the sword to a wand, so I can zap that rat before it reaches me.

Animated screen shot of ranged combat

  • As you can also see above, we have an inventory UI that lets you select and equip/unequip items, eat food, drop things, etc. Doing those things has the appropriate effect.

  • Items you wear can provide resistance to various damage types. Mobs and weapons can deal various damage types, too. So already there's a lot of depth there.

We don't yet have an XP (experience) or leveling system, nor do we have a spell system (other than magic items). But the foundations are there. The code is divided into (currently) 15 source files, most of them fairly small, and it's all hosted on GitHub.

Screen shot of 15 source files

Try it!

Clone or download the GitHub repo, mount the fathoms-edge folder in Mini Micro, and then reboot. It should go right into the game.

Controls:

  • WASD or arrows: move (or melee attack)
  • I: open inventory (Esc to close)
    • arrow keys select item; D to drop, U/Return to use
  • T: select target
  • K: attack

You have a small area to wander around in, populated by slimes and rats. You should be able to clear out the mobs, and gear up with at least one Ring of Protection, maybe two (slimes often drop these).

(Just be careful about eating shrooms — they have random effects!)

What's Next?

My vacation is almost over, so development on this will slow down, but hopefully continue. The next top priorities will be:

  • Building the town, complete with shopkeepers and other NPCs
  • Adding the "adventure" system whereby you can leave town and go on some third-party adventure
  • Create a test adventure or two, plus tools to make such creation easier

Once those basics are in place, then we can flesh out the XP/leveling system and other RPG mechanics.

Feedback Needed!

What do you think of this idea? Would you want to play it? Would you want to create your own adventures for it? Should adventures be level-limited, or try to adapt to the player's level? Should we have a system of spells your character learns, or keep magic in items (scrolls, potions, etc.)? How deep do we want to go down the crafting rabbit-hole?

This is meant to be a long-term community project, so I really need to know what you think! Leave your thoughts in the comments below. You can also find me on Discord via the MiniScript home page. Happy hacking!

Comments 0 total

    Add comment