Hordes.io Journal
Part 1 - Alpha
I did the thing people advise game developers not to do: “Don’t go off and build your own MMORPG. It’s naive. You’ll run out of time, money and energy. It’ll take 10 years.”
All that ended up being true. Despite that, here I am writing a love letter to the process and the people I met along the way. Thank you, to everyone I've met on the path so far. Thank you to the players, thank you to the moderators, the maintainers, the translators, the shitposters; Currently in particular Bau & Pog - It's been an incredible time.
This is going to be a 3-post piece. I originally wanted to make it a single one but realized that there's simply too much, and I want to write each with enough energy and the right mindset.
- Part 1: The Alpha - 2016 to 2019
- Part 2: The Beta - 2020 to 2026
- Part 3: The Now & The Future
Today, for our 10-year anniversary, I'm releasing the first part. It still ended up being nowhere near as detailed as I would've liked. Millions of little arcs and stories happened along the way, but I now think these are better kept for future posts. Depending on how this goes, I may just write even more of them.
Context for the uninitiated
This is probably going to end up being a longer read, and if you don't even know whether this is written for you, read this.
What this is about
Hordes.io is a browser based MMORPG developed primarily by myself over 10 years. It has a small but resilient community with daily activity. Game Design wise, it is a simple 3D MMORPG with classes, PVE and PVP content, items and leveling, player progression, but in every other conceivable way it is incredibly unorthodox - largely due to how it came to exist - and that is what this is about.
Who this was written for
First, it is written for members of the Hordes.io community. It is a 10 year anniversary post, to celebrate the game, to document some of my personal feelings and anecdotes about the development, reveal some things that had not been revealed, and to thank many people helping along the way.
Second, it is written for game developers or just generally curious readers. It's neither meant to be a cautionary tale, nor to pretend that doing something like this is easier than you might think. It won't have too many technical details or actual game development content, but rather talk about the phases of development & the fun / hard parts that come with it.
Third, it's written for myself. I've been putting that off for way too long - I feel like I really should be documenting things more; They say you should journal, so this is me catching up on 10 years worth of journaling. I want to get better at writing, too, and share more personal insights. I wish more people did that; Some of my most favourite books are tales of game development.
The .io games era
In 2012, like many, I got dragged into the allure of indie-game development by a combination of "Indie Game: The Movie" and C418. A fantastical time in retrospect, that slowly turned into disillusionment in the years following as more and more kickstarters and early access projects had to compete for people's attention. I had quit my job as a 3D artist and spent several years building small games, prototyping, getting by on freelance 3D and 2D work. LD48 was quite popular, and I loved those weekends. In general I remember it as the "minecraft gold-rush phase".
I had saved up some money from my previous employment, a small game I had released on steam, and freelancing, but around mid 2016 I seriously ran out of savings. I felt that steam wasn't the right place for me to publish something. Maybe I wanted to build something evergreen without being subject to a launch going right or wrong - building it publicly, playable, from the start and seeing whether anyone likes it. Not every game type makes sense in this format. You cannot build a story based game like this, I think.
Back then, the "just set up any website and put ads on it, then learn SEO all day" trend was peaking, and that was pretty much the first time I learned about web technologies in general (coming from a more traditional background of C++ and native game dev).
That's when I discovered Agar.io and Slither.io. Two games so incredibly popular relative to their technical complexity that I immediately wondered whether this was something to learn about. I'm not entirely sure where the ".io" domain trend originally came from, but my understanding of it lies with Socket.io, which ultimately popularized WebSockets as a real time multiplayer technology in combination with Node.js. That may be entirely coincidental or reverse in order - I know that neither m28 nor the creator of slither use JS backends - Maybe Valadares just chose it because of "i/o"?
It became clear to me that there's a lot of potential in web games, and it felt unorthodox at the same time. Just your own website with a game on it, no big launch processes. This felt a lot more free and exciting in general. It coincided with the popularity spike of NodeJs which made web development with complex back-ends possible for total beginners. Things like Bootstrap were booming, and it all felt like creating a cool website with dynamic content was less friction than it used to be.
Early Alpha
I made the first Hordes.io git commit on August 10, 2016. Having run essentially entirely out of funds back then, the set of constraints was super simple: "Make it small first, put some ads on it, pay rent somehow". In retrospect, impending homelessness was very effective at having me get stuff done.
I was hooked on the quick iteration cycles. Relative to C++ development, on the web, things worked fairly frictionlessly. It's sort of like deferring the troublesome stuff - really fun early on, but gets harder to maintain later.
It was honestly more survival than passion at that very moment, but that changed very quickly. Initially the vision was fairly simple - what if you make an .io game, but 3D and with swords and boxes fighting each other? I loved that agario had tens or even hundreds of players in one room. It made sense - .io games were visually simple due to browser constraints while potentially getting a lot of players into one lobby. I chose Node & ThreeJS which were both great for rapid prototyping.
There really was no time for proper assets or creature designs. That's why I explored procedural animations and walkcycles. Something that I see now popping up all over AI vibecoded games - as it is entirely code based, it is quite convenient. It was my answer to agario's circles; Proportion wise I felt like going for something between Binding of Isaac and Mario 64.
Netcode was fairly straightforward to write - pure JSON via Socket.io made this quite easy, and I was able to test from my local machine with a friend - Tice, who would later go on to build his own .io game called skribbl.io.
Having some background in 3D art, texturing and shader writing, I was still interested in seeing where I can push ThreeJS. I had previously worked as an environment and prop artist, so I was able to come up with a somewhat ethereal 3D landscape of mountains and grass, using a simple splatmat and some procedural grass spawns.
I built the first classes, heavily inspired by standard WoW class archetypes. I went for simple, exaggerated forms to be easily readable.
Putting these simple designs together, I had a working prototype - a few monsters, three classes, and two factions. At this point my hope for the game was to reduce everything about an MMO down to the core fantasy of having a horde of players in a world fighting each other. That's when I landed on Hordes.io as a name. Working title was "battleworld" up until that time.
It was MMO in its purest form, technically functional, and I was excited to try it. At this point, there was no long term ambition, I just wanted to see whether anyone would play it at all. I posted the game on reddit and twitter. Back then, .io games were starting to aggregate on a website called "iogames.space". I sent them an email too, and they swiftly replied. This was relatively early for iogames, the space was not overly saturated and the guys were super responsive back then; Within a few days or so the game was available via iframe.
Once the game went up on iogames.space, players showed up immediately. This felt amazing as a first validation - the web as a platform to get someone into a game immediately without download. And to see players in it after only a few weeks of development.
People were chatting, running around, using basic spells! I remember not even having my own online counter internally at the time, and rather using Google Analytics - I got quite addicted to it quickly.
27 people online. 40. For the first few days, traffic was sitting at < 50, purely from iogames.space. This was an incredible feeling for me at the time. I would've expected a handful of people, but not 30, certainly not 50+.
I also noticed something - new referring websites showed up - Poki, CrazyGames, and similar websites would simply iframe the game as soon as it showed up on iogames.space. This no longer happens nowadays, in fact getting onto these sites is now a challenging application process.
As these websites started to integrate Hordes, things started to pick up a bit. 50, 80, 100. I have many google analytics screenshots from that time because of how amazing that felt. A really addictive feeling for multiplayer game developers, I am sure.
I was absolutely hooked. I had a small MMORPG with tens of players active around the clock. I could ship a change in hours and see it affect their behavior. That's when I started to realize - I actually need to capture monetization on this thing somehow. The way web games do this - back then and today still - is via Ads. But I did not have a Google Adsense account. I had applied for one, but the application process was futile. Google generally requires your website to work a certain way to be accepted, and games weren't exactly part of the agenda. Nowadays they offer specialized solutions for this, but back then that did not exist. Resellers ala AdinPlay did exist, but I did not have access to them either.
This is where my friend ZanzLanz helped me out so much early on by allowing me to use a spare AdSense account. Without him, I am not sure whether I would've been able to capture the early wave of players, and actually stay afloat. Thank you man. Check out his Youtube channel. He's one of the most supportive, talented and smart people I've ever met.
Right around that time, the first community formed. A small discord server with a few people in it. They were slowly trickling in, primarily from reddit, which I think worked a bit better back then than it does now. People nowadays feel a bit more fleeting and doubtful when it comes to fresh hobbyist/passion gaming projects. The very first discord message someone sent on the Hordes server was literally "what do you need help with?". Observing newer web projects nowadays, this does not seem to happen as much. Maybe that is due to players' fatigue with ambitious projects never releasing. I don't know.
Maybe the approach I had back then is one that would still attract a lot of people today. There was no grand vision, no VC/Crypto storytelling (and never has been), no grandiose marketing. It was all done so scrappily that people may have felt like they can interact more. I was there from day one, talking way too much to virtually anyone involved. A process that turned out to be difficult to scale, but also one that formed some super strong bonds driven by internal politics and people's perceived ownership over the entire thing, which I don't really regret aside from the stress it can cause. I think many MMORPGS are simply too large and take too long to create for any community to feel like they exist with its creation.
It felt like building a city or a country as people are moving in. They get excited when they arrive. They want to settle and build. Eventually they notice issues. They get political, clans form. With a few extreme exceptions it's been fun being the cloud in the sky that players yell at.
The Godenotian Wave
The game was sitting at maybe 100-150 players at any given time back then. Every day, there was a little bit of growth, despite me not really seeing additional referrals / iframing. Ad revenue wouldn't have been enough to cover living expenses, but it felt exciting to keep pushing regardless. I was starting to see a bit of a vision; not too concrete, but definitely "this could be a long term thing".
Nights became incredibly long, and I got very sleep deprived, but I was having a ton of fun. Discussions on discord got longer, I could sense that people were invested, which was reaffirming.
Whenever I would not work on it for any reason, I was barely present, probably checking google analytics from my phone every few minutes.
I remember one day very specifically. I believe I was grabbing something from a nearby pharmacy for my partner at the time, standing in the queue, that's when I saw it - 550 players online. That moment is burned into my brain as one of the most adrenaline inducing things I have ever experienced up until that point; a mixture of extreme stress and excitement. It was a 300 CCU jump. But how? Where were they coming from? I rushed home.
I got home to see the full thing in GA. Strangely, no new referral source. I didn't understand. So I opened the game, which barely loaded.
Players were everywhere. The servers were barely holding up, I was panicking. At this point in time it was not obvious to me that they likely all came from one singular source because I have never had that experience before, hence I was not really trying to find a source. But I wasn't thinking straight anyways. I was just standing there, in game, having the most incredible experience surpassing whatever my initial expectations for that tiny MVP were.
Even back then, Hordes already felt like a success to me in the sense that it surpassed whatever I hoped I'd ever get to experience as a developer. That feeling of having a lot of people in your game, standing and running around, "wuseln" as germans might say, is what I wanted the game to achieve. And it did, after mere weeks of development. I believe that on this day my brain got giga-fried into a mindset of "just build the thing and it will become popular", which would end up being both useful and detrimental.
I did notice that the players were primarily speaking non-english - and if they were, then it was a bit broken. Turns out many were speaking brazilian portuguese. Out of those, many of them had a similar name, referring to "Gode" in some form. Some of them were mentioning a "Godenot" frequently. I googled, and that's when I discovered where they were coming from.
Turns out that Godenot, a brazilian youtuber creating videos about free web games had found out about Hordes - I'm assuming either through Poki, CG, or iogames.space, and made a video about it. The video reached tens of thousands of views within hours and was sitting at > 100k a few days in.
I'm not sure whether the game would still exist without this having happened, which is why it is so important for me to mention. I don't think I had any idea of this entire niche of YouTube existing at all; I did not have any other contacts in the .io game scene or really understand the traffic flow - I think people were a bit "secretive" about ways to get a web game promoted (to this day), so I feel lucky that I actually got discovered with my game back then without even trying. He still creates videos today, wearing his knight hat. I don't really understand the origin of that hat, but back then I created a helmet in reference to him.
The game only grew from then on. While the spike of 500 users was probably the peak up until 2019, I think the game sat at 300+ on a good day for years, which is quite decent for how small the map was back then. The growth off of that video continued up until early 2017.
Memory is a bit foggy, but I believe a user called CritScan helped out purchasing the first OVH dedicated box, which was probably around 60€ at the time. He didn't stay around for long but that kind of stuff really helped as I would not receive any Adsense Payouts for quite a while. We were running 4 instances on a box located in Canada at the time. I titled them alphabetically - Alpheos, Balius, etc.
This traffic graph is interesting to me because I don't remember the gradual growth being that noticeable during November. These numbers are quite decent I think, particularly with regards to the returning visitor share ( % new sessions is an interesting one here showing some really solid evidence of retention). Average session duration was fairly unreliable I believe. I think it required GA to look at different page navigations to create a full session measurement. This meant that when a user would join the play page and not do anything else, that user was not really properly counted as having a long session. Only later on they changed this to have recurring polling IIRC.
In any case, I unfortunately don't really have my own session metrics from the Alpha (I was not prepared), but I'd guess the real number was in the 10-20 minute range based on the avg session durations the game would later reach (>1h). Also notice the pt-br traffic at over 40%. Thanks Godenot! <3
Quick Design Chronology
The early core loop of the game at this time was very simple, which I think made it easy for new players to jump in at any time and quickly feel like they have a way to progress. This was not done by design but rather out of necessity. Of course, after a few weeks of development, I did not have an item system, or questing, or anything similar. As such, the game was largely pivoting around a core .io mechanic, which was inspired by the classics (Slither/Agar) - but mixed with some degree of persistence, inspired by old MMORPGs like RYL (I'd be deeply shocked if anyone reading this has seriously played that game!).
Around October, with Alpha 8 I introduced permanent characters, accessed through a perma-session ID rather than a direct login / accounts method. This fundamentally changed the dynamic as sessions would no longer end when a user leaves. That's really where the game gained permanence, and management overhead grew a little. People would get increasingly invested, and as you can imagine, the crude ID system was very naively done. Characters would frequently get shared and become "public", requiring us to deal with them. Dhwty and Julia would do a lot of work here later to keep track of users' IDs.
Leaderboards would show faction total values, and significant player kills would get announced across servers. Players would become more recognizable, rivalries started, players became quite literally "famous" in the mechanical and social sense due to the added crowns and helmets.
Early 2017 - Growing the game with more retention mechanics
In January 2017 with Alpha 17 I added more than 150 items with randomized stats. They could drop onto the ground, be picked up by players, moved into their inventory, equipped, and sold to the "trader". This was quite a leap from simply grinding monsters for player power. The growth in session time was substantial here, as well as retention in general. The amount of time you can sink into an item with randomized stat drops is practically endless, and that's where some players really started settling into the game and treating it like a permanent thing for them.
Later in that month with Alpha 18, clans were added, along with clan tags, a clan chat, and permanent unique character names, further increasing social dynamics. I think that the clan system really was a driving factor for the game's longevity. People would eventually treat the game like a social hangout system where they log on to chat, and these clans were their chatrooms.
Over the years, clans have formed that have their own little ecosystems, discord servers with hundreds of members, their own antics, rules and leaders.
This is where arguably some bad design decisions were made - it's difficult to say. Throughout the year, player power grew across the board as more players reached the endgame. The main complaint I'd hear quite frequently was about PVP harassment. Losing a substantial part of your fame/gold would cause players to stop playing, while some other players would become infinitely dominant. A very typical complaint in PVP games. As such, I changed the way PVP rewards worked from a percentage based steal to a flat steal.
These kinds of changes have a much larger impact on the game's internal politics than you might initially anticipate; While the feedback from players implies that you need to do one thing, actually making that change results in a whole other group saying they are no longer interested in playing. It's easy to get defensive in that position as a developer, but it's also important to understand that many of these kinds of changes (listening to player feedback) genuinely result in positive improvements.
My main takeaway here is simply that these kinds of decisions are not really fully knowable, they are simply deliberate design decisions. There are no true right or wrongs, all you do is optimize for a certain audience. Some players will believe it is good to have perma-death with full loot stealing, and some will think a game should have no PVP at all.
The mindset of "always listen to your players" made it seem reasonable to those that were complaining. Someone dominating other people in PVP does not complain about it. In retrospect, what some people now call the "Carebear" time of the game probably was simply attractive to different types of players. Walking around in the open would be a lower risk operation when you're the Rank 1 player, but at the same time it would allow you to farm more peacefully. In the end, I found a middle ground for the alpha, reverting these changes partially.
Mid / Late 2017 - Redesigns, Accounts and a Visual Lift
Around that time is when the design settled in a bit. I was no longer seeing quick and easy gains to be made by having more mechanics added. This is where I took a first real break while reconsidering some of the design.
The character IDs were a consistent source of pain, so a real login system with multiple characters per account is what I started working on, taking a bit longer than expected.
One unfortunate event at the time was accidental data loss in the item table via MongoDB, wiping a lot of items for players. I believe this would've been completely avoidable and largely the result of a bug due to lack of proper type support in the codebase. I don't remember this as fundamentally changing players' behavior / retention, but it was a terrible experience for them and for myself. Definitely made me avoid using MongoDB in the future.
KidComet / Scarebear, who was an active high-rank player, started sharing some UI design proposals with me. He's a skilled UI artist and had already worked on established AAA MMORPGS before finding Hordes. Out of pure passion and support, he helped create various UI elements that I would implement through the year. My initial feedback for him was often "this is awesome, but there's no way for me to implement all that at your pace" :D He's really proficient and talented.
He also came up with the old UI / icon of the game in late 2016, as well as a nice beautiful backdrop that was used for certain web platforms, and a full in-game UI that I unfortunately never got to because it would've been tough to do with CSS.
I also added the /dance emote here, which would result in players gathering socially quite often. I only recognized later how powerful that was, and admittedly completely dismissed it in the transition to the beta - which is why I am adding it back in for the anniversary :)
I'll never be able to thank everyone enough, it's been incredible so far. Through 2016 - 2017 the old guard of moderators showed up. Some of them are still here, frequently. The earlier mod team, Jul, dhwty, mdl, Clone (who just released a video about the anniversary, 10 years in!), Legus, Andraith, Dino, Reap, Blazing, Scare, Izzy, Erlik, Livi, Crim, Sküll, Cantor, Cheezel & Korv were all active at the time I believe and would be involved with community management at some point.
This is also where many players started showing up that are still frequently part of the community today. I'll step on toes if I start writing a list that isn't at least containing several hundred names. There's no way for me to list them all, though I may comb through some old DB dumps eventually and publish them. The OGs know who they are. Love y'all.
Late 2017 - 2018
In November 2017, I brought back percentage based fame stealing with a fixed cap. I think that design was quite neat at the time; and I combined it with having one of the servers be PVE only. That was essentially "best of both worlds", and in effect allowed both types of players to have their way; of course with the exception of allowing the overly dominant players to hold hostage other players' progression.
Dhwty also worked relentlessly on writing a guide that would cover every aspect of the game as well, which was frequently referred to. Something we no longer have, and while Wikis are available, it allowed for easy linking from the game itself.
Some good work happened in 2018 - the UI got fundamentally reworked for improved UX in many ways, the more serious bugs were fixed and events were added. It's insane how long this took in retrospect, writing an MMORPG ui with CSS/JS was not a thing commonly done - nowadays it would be a lot easier. Still, most people's vibecoded stuff doesn't get close to a well-researched UI, IMO.
In the back of my mind I was really wondering what I could do to take the project further though - moving it to "Beta" and massively improving it - and that's what I started working on from ~October 2019.
The initial growth that came with the Youtube videos, Poki and CG was flattening, and I probably experienced my first proper burnout on the project. Seeing a community slowly shrink after being way too comfortable with existing growth can be as demotivating as the initial push was amazing. This was coupled with rough personal events I went through at the time, causing me to withdraw from the development more often than I would've liked.
During this time, parts of the community really kept things alive. I remember Julia getting some of the more closely involved community members together to collect messages for me, wishing me well. I have these to this day, and rereading them just now is really bittersweet. I think this kind of stuff really helped me feel more at home rather than it just being a game project.
End of the first Era
It became clear to me that, despite all efforts, the game was no longer growing. Small changes like UI improvements, or even the addition of items were moving the needle decently but not to the point of real growth. Nowadays I think that I could've pulled more levers on the distribution side, but that was a lesson I had to learn later.
Given my experience at the time, my beliefs were simple - repeat what I did, but make it better. I did not consider that Alpha was working for the sake of its current design, but rather that it would be possible to scale every possible aspect of it into larger / more / better.
That's when I started a full rewrite, a complete redesign and a massive leap in scale.
I'll tell that story in part 2 :)
Retrospective on Alpha Design
I honestly think that I wrote off a lot of the unintentional alpha design wrongfully when I started working on the beta. There were oldschoolers back then criticizing changes - "Bring back Alpha!" - presumably because the game became much more complex and deep, and my response was largely to get somewhat defensive as I wanted to somehow improve and grow the game. It took me a long time to understand that, because with the release of the beta in 2019/2020, the community legitimately grew in size, players would play for much longer and I think the game was improved overall. Regardless, I think some aspects were lost:
I found myself in a moment of nostalgia in 2025 where I went back and locally set up the Alpha version on my desktop to run around in. Maybe to find out how rose tinted my glasses really got, or to draw some inspiration from it. What I really got from that was:
- The mob pacing was almost like taking a large MMORPG and compressing the entire progression into the size of a large parking lot. This didnt really happen in "real mmorpgs", and the layout was unintentially "brainrotty" (in the Roblox sense) if you want to call it that. Overall, it was just less challenging and more feel good. I really enjoy walking around in it while just listening to music or zoning out while farming some monsters in a semi-afk state. This type of gameplay is very popular with people for a good reason, and I have come to appreciate that more, recently.
- The small size resulted in people inadvertently seeing each other more. You could practically walk "around the corner" to the enemy base. This created a lot of potential for PVP and socializing, while the current much larger design (beta and now the full overworld in particular) feel much more empty as people are spread across orders of magnitude more area.
- It had a long tail end leveling curve that legitimately took a lot longer than the last levels of the beta did. This allowed users to deeply grind out those last levels, which was great for end game progression retention even if it would take days/weeks.
- It had only 4 skills per class. I think that the current beta design is strictly superior in that regard, however the beta design does not pack as much punch per skill as the Alpha did. The Alpha was arguably comparable to LoL (minus the ultimates), which is easier to learn and pick up, uses fewer buttons and has more impact per skill. The Beta does suffer from a bit of an accessibility problem particularly for mobile because of this reason.
- The world in its visual design was very simple, which made it feel a lot less noisy. It was abstract enough to stand on its own feet as a nice backdrop, inoffensive and never too loud. I miss it.
I think if I were to re-design Hordes from the ground, i'd take in a lot of inspiration from the parts that worked well about it.
I will leave you with a song that I was listening to when building the Alpha. The whole album is incredible, but this intro is really what drives home how I feel about the Alpha world, in combination with the cover.
Retrospective on Alpha as a whole
It's been bittersweet writing this and remembering these times. I wish back then I would've managed to honor the depth to which people were supporting me with constructive feedback, ideas or just generally nice messages, but I realized that doing both full time game development as well as community growth is essentially impossible as there is no limit to either. You either put your head down and work for weeks on end efficiently, or constantly hop in and out of conversation and taking on feedback without actually getting larger designs implemented. There are times where this is possible (primarily after large patches, during balancing phases), but there are also times where devs need to take a step back and implement a vision for a couple of months.
I wish I would've been able to connect with the ones that made it their home for a while; There are many with 50k+ sent messages in the discord server.
Frequently I get pings from people and I don't even know who they are, but we've had a brief interaction like 9 years ago. Usernames change, avatars change, and it's been impossible to keep track off them and reply in the way that I'd truly like.
More recently I've been getting messages from people remembering their early Hordes days when they were quite young, and they tell me that they're in university now, or busy with work. I really appreciate the messages and feel honored to have had some impact on some of these kids, often times getting into CS degrees, programming or game dev interests. This is what happened to me in my youth, as I grew up inside of MMORPGS.
A large part of the Hordes playerbase isn't even nostalgic for this phase, because they were not there at the time. Most people around today probably joined after the beta launch in 2019, and they have had their own sub-universe of stories that is arguably even more rich (as it has been a longer phase and way more people). That all happened after 2019. Still it is astonishing how many true 10-year OGs occasionally drop by. Something about it must have been special to them.
I would largely attribute this to the people keeping the place friendly and filling it with love in those first years.
Thank you Alpha!
(Beta post will likely be a bit larger :D)