RPGFS: Crossing an RPG with a Unix Filesystem (code.google.com)

52 points by mtimjones ↗ HN
As my January personal code project, I created an experimental game that considered what would happen if you crossed an RPG with a UNIX filesystem. The result is RPGFS.

You have some simple commands available (ls, cd, pwd, rm) and you fight "bugs" in the filsystem using the rm command (everything is a file). You also consume "items" with rm. The goal is to descend the filesystem to find a special file to unlock another command to destroy the filesystem.

This was written as part of a monthly project I'm undertaking in 2014, and represented a small amount of work (hack). It's written in C for Linux, and you can grab it at the URL if interested.

22 comments

[ 2.6 ms ] story [ 28.7 ms ] thread
As my January personal code project, I created an experimental game that considered what would happen if you crossed an RPG with a UNIX filesystem. The result is RPGFS.

You have some simple commands available (ls, cd, pwd, rm) and you fight "bugs" in the filsystem using the rm command (everything is a file). You also consume "items" with rm. The goal is to descend the filesystem to find a special file to unlock another command to destroy the filesystem.

This was written as part of a monthly project I'm undertaking in 2014, and represented a small amount of work (hack). It's written in C for Linux, and you can grab it at the URL if interested.

    "A wild /dev/null appeared!"
    ATTACK
    "No effect"
    CAST FLAME
    "No effect"
    CURL UP IN BALL AND CURSE THE GODS
curl: (6) Couldn't resolve host 'up'

curl: (6) Couldn't resolve host 'in'

curl: (6) Couldn't resolve host 'a'

curl: (6) Couldn't resolve host 'ball'

curl: (6) Couldn't resolve host 'and'

curl: (6) Couldn't resolve host 'curse'

curl: (6) Couldn't resolve host 'the'

curl: (6) Couldn't resolve host 'gods'

I want to see the other way around. An RPG interface to my normal filesystem ;)

Seriously though, this is a really cool project! I'm looking forward to trying it out when I get some time.

Yeah, I kind of wanted to see "You are lost in a dark and scary folder. There is a stream of bytes to your left. What do you do?"
If you are using screen, use the command "nethack on".

- Welcome to the hacker's treasure zoo. - You drop a magic marker. - You destroy poor window 3.

Indeed, .nethackrc is one of the first files I create on a new machine :)
I love this idea! But this seems to be more like crossing an RPG with a shell than with the filesystem. There doesn't seem to be any mounted filesystem. It's more like Zork with Unix commands.

Anyway, kudos, this is a really neat project.

Thanks -- and good point. From an RPG perspective, the (virtual) filesystem was the environment to explore, with non-directory files being the objects and enemies that you'll encounter. Shell commands are the actions over those directories and objects. I had fun with it, but it may not be fun for everyone...
What I think was wonderful about looking at the source was that it looked very very similar to the old school MUD/MOO/MUSH engines out there. It'd probably be doable to port this idea onto one of them pretty easily if you wanted to have a multiplayer version where you have to go edit other users files.
Reminds me of Urbit[1], which is in many ways also a filesystem as an RPG or RPG as a filesystem (though they call it an operating system).

[1]: http://www.urbit.org/

Having just built rpgfs and played around with it a bit, I have to say your comment amounts to something of an insult against Urbit.
The Stripe (and other) CTFs should eventually converge with the future developments of this concept. Along that possible future, all system administration and network operations work will be like playing some sort of MUD/RTS hybrid. Security as tower defense should be fun...
See also: Doom as an Interface for Process Management[0]

[0] http://www.cs.unm.edu/~dlchao/flake/doom/chi/chi.html

There were a bunch of 3D interfaces - file mangers and desktops. None of them took off, which is a shame because the computing power to do them is trivial now.

http://nooface.net/3dui.shtml

There are some obvious flaws to these - sometimes they're really inefficient. But then a lot of the time I don't care about efficiency I just want a nice interface. (See, for example, mobile platforms which have pretty interfaces and restricted functionality).

It would be very interesting to implement something like this atop FUSE[0].

For free you get the ability for the player to use any existing command line tool you want. You could easily make strange and artificial directory structures. And you can dynamically change and detect changes in the filesystem.

[0] http://fuse.sourceforge.net/

I should have thought of that. Much of the work to build this (which honestly was a few days spread over a month) was building the list management for subdirectories and files...
As someone who has briefly worked with FUSE for my own toy projects, that seems like it would run into a lot of unexpected difficulties. Programs seem to behave very oddly if their assumptions about a file-system are incorrect.
But aren't the unexpected difficulties half the fun?

Yes. I expect many programs would have trouble, but you probably wouldn't have too much trouble making it work for typical non-interactive command line programs.

But the possibility game mechanics like making files appear after moving a file (an item in the game) into the directory (room) are really interesting.

This reminds me of a game from the early 90's, called "Virus!" iirc, where you had to dig around your filesystem chasing the bad guy.