Jared Smith
5 min readMar 18, 2020

I’ve been building an experimental Crypto RPG for the last year, I’m not a battle hardened software engineer, I wanted to improve my programming abilities, and decided this would be a way to do it, boy was I right. And worse yet, what I really learned is just how much I don’t know at all!

My goal was to build a Multiplayer Rogue-like Game, where the enemies dropped real crypto, and had some sort of mechanics to solicit donations from players to build up the “pot”. I wanted it most of all to be FUN, and hopefully to have a somewhat functional game mechanic around winning crypto.

If you want to just jump straight into trying the game it lives here at Enceladusgame.io, when it asks you for a beta key, simply enter hackernews, otherwise read on!

the art of coloring text in 16 colors is delicate, but surprisingly expressive

Turns out, I had no idea what I was getting myself into. One year later, probably close to 2500 hours of work, deciding to use a MUD engine, and 130k lines of code later, and finally I’ve launched the beta.

I really really really had no idea how in over my head I was going to get. And at times I almost gave up, but it did come together…and wow, all the things I have learned. Realtime Multiplayer games are hard! Maybe even harder in a web browser? I’m not sure.

The server is written in nodeJS, on an engine called Ranvier, which has been an enormous help, and has a fantastic community. The web client is written in Polymer 2.0, which I probably would never ever do again, but has been pretty decent. The networking layer is socket.io, over https, and a nginx reverse proxy. And it’s integrated into the Ethereum chain with Web3 / metamask on the client side.

Some things I learned for myself, I’m sure some of this is no duh for many..but I was always a touch the stove kind of kid

Patterns are amazing, refactor everything

In order to actually ship something functional(I told myself), I have made due with sloppy fixes to already messy systems. I’ve done this A LOT, in fact, if you looked at my code, well, I’m sure words would be said. It’s become so obvious to me how important it is to rebuild things after you get them working. There are some systems, like the central combat handler, that I have spent horrifying amounts of time fixing/debugging shit, and sometimes it feels like it’s 1 step forward, 5 steps backwards.

Creative energy is not infinite (timing is essential)

I’ve been working by myself for 50–60 hour weeks for a year. It’s been great to develop my self discipline. But also, there have been nights I’ve been banging away at something until 2 or 3 in the morning, only to get up the next morning with a fresh mind, be like…what the actual fuck was I thinking? Taking care of myself, getting out for bike rides with the dog, going climbing, eating well, and SLEEPING are very important (for me. maybe for you too)

Pick the smallest project you could imagine

Then ruthlessly chop pieces off. I didn’t do this. No. I wanted a realtime open world multiplayer game. That ran on the blockchain. (it doesn’t, that was nixed early on, but totally check out Ethernal, which does, if you haven’t seen it yet. )

Know why you’re doing something

I started off rationalizing this to myself that it could become a business. This is what I needed to say in order to quit my job, and live off savings for a year to build my own project. I’ve long since abandoned the idea that it could be a business, but it IS a very cool experiment! And it was an EPIC learning journey for me. Once I was able to come to terms with this, I was a lot happier, and I actually got more done, AND I was able to make better decisions. When I was trying to make decisions on how this would be successful, it was actually steering me away from doing what I really wanted to do. For me, this was big, if I hadn’t been able to accept that, I think I would have quit without shipping anything.

Style guides and Linters

Don’t even think about starting without them. Also, at this point, with the sheer number of hours I’ve spent debugging, I’m COMPLETELY 100% sold on Typescript (or other typed languages), despite never having used one.

Get it off your hands

I can’t tell you how much time I’ve wasted going down one path or another, and the moment I ran a play test with my very dedicated and helpful group of players, it became obvious to me just how far off I was. I was running play tests about every 1–3 months, in part because I didn’t want people to get bored with how much content there was, I really wanted something to show them! Now, I’m actually seriously thinking to just open source the whole thing, and let everyone help build out the world. (it took a lot of tools being build to even think about that)

Love your process

I’m mostly saying this for me. But maybe it will hit something in you too. Some of the coolest parts of the game came out of me chilling by myself with some anejo, and just digging my music, dancing around, grooving out. So often I was focused on getting to the thing, finishing this, building that, always thinking about where I was GOING TO BE. But being grounded in my body, in my space, loving it in the moment, actually pulled a lot more weight in the project than I realized.

Do you enjoy old school text based games? Would you like to come give it a try and see what I made? I’d love people’s feedback, questions, or thoughts! Thanks HN! You can give it a try at
https://enceladusgame.io/play

When it asks for a beta key, simply enter
hackernews

ps..just to be clear, this is entirely a non commercial project. 100% of in-game donations go straight to the prize pool. I am in the process of cleaning things up so that it may be opensourced. Want to help develop? Or write new stories, quests, and environments? Come by our discord and chat.