Angotia - Solo MMORPG, try one and two
- Authors
Oh... where should I start? At first I thought it might be a huge failure and a lot of wasted time. It was, but not quite...
Intro
Setting out on a journey to fulfill a childhood dream, I wanted to create my own game - a realm where imagination knows no bounds. Realism became my guiding star during this odyssey, constantly reminding me that the road to creating Angotia could be full of challenges and potential pitfalls. However, instead of seeing these obstacles as roadblocks, I treated them as integral parts of a vast learning playground, where each setback brought with it the potential for growth and discovery.
First try. Years 2014-2015
At this point, armed with a basic knowledge of Ruby, Ruby on Rails and JavaScript, I found myself at the intersection of ambition and nostalgia. After dabbling in game development with RPG Maker, the tool that first ignited my passion, I felt it was time to resurrect my childhood dream. I spent much of my initial journey unraveling the intricate threads of game development - pondering what elements make up a compelling game and imagining the tapestry of features I wanted to weave into Angotia. Drawing inspiration from Erich von Däniken's books, I decided on a heavy and dark theme.
The RPG Maker Chronicles
Starting off with RPG Maker seemed like a fantastic idea. It's known for being user-friendly, and the fact that I could use Ruby to sprinkle some custom magic into my game made it even more enticing. Creating a single-player RPG was a breeze, but as I started dreaming bigger—wanting to add the "massively multiplayer" part to the RPG—I hit a bit of a snag.
Tangoing with Ready-Made MMO Engines
Cue the search for a solution that wouldn't have me reinventing the wheel. Ready-made MMO engines promised to make my life easier by handling the nitty-gritty networking stuff. Seemed like the perfect shortcut, right? Well, let's just say it was a bit like having training wheels that I couldn't take off. Sure, they got me rolling, but they also limited my moves and cramped my style.
Let it go
As the months rolled by and the challenges of solo game development continued to mount, the realization hit me like a ton of pixels – crafting Angotia as a 2D MMORPG was a beast of a task. Despite the initial enthusiasm and countless lines of code, the obstacles proved too high for this one-man show. After about a year of battling with complex networking, server management woes, and a growing realization of the sheer magnitude of the task, I made the tough call to let Angotia gracefully retire. It wasn't an easy decision, and perhaps it was a case of biting off more than I could code. Yet, in waving goodbye to Angotia, I also embraced a valuable lesson in humility, the importance of realistic project scopes, and the fact that sometimes, even the grandest dreams require a team to bring them to life.
Second try. Years 2018-2021
After a hiatus of four years, armed with newfound professional experience and a senior developer title under my belt, I found myself circling back to the dream that once seemed too elusive: creating Angotia
, my very own 2D MMORPG. The landscape had shifted during my absence; my journey through the realms of programming had transformed me into a seasoned developer with a focus on the JavaScript environment.
I kicked off my grand return by creating a powerhouse tool for game creation – the Angotia World Creator. This robust tool, written in React, TypeScript, Redux, Sass, and good ol' HTML + Canvas, became a project of monumental proportions, boasting a staggering 60 thousand lines of code. With this tool at my disposal, I could seamlessly conjure characters, maps, and items. Dialogs flowed effortlessly, and I could bring the world of Angotia to life with a few deft clicks.
The synergy between Angotia Resources
and Angotia World Creator
was the key to unlocking the brilliance of player-generated content. Players could craft their own maps, NPCs, and items using the powerful World Creator tool. The genius lay in the process – players would submit their creations, and I, as the admin, would validate and approve. This streamlined approach ensured that only polished and ready-to-go maps made it into the game.
With the power of Elixir's hot reloading, these approved maps seamlessly transitioned into the production game resources without any interruption. Real-time development had become a reality, and each map, NPC, or item became a unique creation exclusive to its dedicated game server. The community was not just playing the game; they were actively shaping the world of Angotia.
As I reflect on this journey, it's clear that the stars have aligned for Angotia. The tools are in place, the community is engaged, and the dream that once seemed distant is now within reach. The adventure continues, and with each line of code, Angotia
inches closer to becoming a living, breathing MMORPG crafted by the collective creativity of its dedicated players. The saga of Angotia resumes, and this time, it's a story of resilience, growth, and the magic that happens when dreams meet expertise.
As I reflect on this journey, it's clear that the stars have aligned for Angotia. The tools are in place and the dream that once seemed distant is now within reach. The adventure continues, and with each line of code, Angotia
inches closer to becoming a living, breathing MMORPG crafted by the collective creativity of its dedicated players. The saga of Angotia resumes, and this time, it's a story of resilience, growth, and the magic that happens when dreams meet expertise.
But...
The Next Battle
With my arsenal now fortified by the essential tools for Angotia - the Angotia Resources (AC), Angotia World Creator (AWC), and a robust PostgreSQL database - the next frontier beckoned: user accounts. Diving into the realm of Keycloak
, a self-hosted solution, became the next conquest. It helped me learn more about Java, security, authorization, authentication, cloud deployment (AWS) and more.
The third act in this grand circus was the birth of the "Poyters Account," seamlessly integrated with my company's website, Poyters. Now users could create a unified Poyters Account
(similar to a Google account), granting them access to Angotia, Angotia World Creator, and a future tool named Angotia Quest Maker
.
Enter the last piece of the puzzle - quests. Summarizing quests as JSON combined with a switching mechanism, I introduced the Angotia Quest Maker. This SPA application, crafted with Angular, Ngrx, and RxJS, allowed users to create quests, undergo admin approval, and seamlessly integrate them into the game. A crucial tool, though still in alpha, able to create basic tasks in the Angotia universe.
Yet, the missing link remained - a true game engine with a client. The decision was made to craft my MMO game engine using NestJS, fastify, clustering, worker threads, TypeORM, Keycloak for authorization, and TypeScript for safety sake. The client, a pure TypeScript creation with Pixi.js, allowed users to log in, register characters, and load map and move.
Final Battle
Unfortunately, the grand vision faced its final battle and this time it failed. Despite devoting more than 1,500 hours
to my second attempt at building Angotia, the weight of the player-driven game concept and the monumental task of creating a community-shaped world proved overwhelming.
Three years of dedication, university education and full-time work, and the relentless pursuit of a dream took their toll. The vision that once fueled my passion now seemed like an insurmountable mountain.
I stand here, having poured my heart and soul into making Angotia a reality, yet acknowledging the undeniable truth - it was too much for a solitary soul. The decision to halt this project, take a much-needed break for a year or two, and return with fresh eyes is not a surrender; it's a strategic retreat. Sometimes, the most courageous act is knowing when to step back and regroup.
Ending
The dream of Angotia is not extinguished; it merely waits for the moment when the stars align, and the journey can resume with renewed vigor and wisdom. Until then, the curtain falls on this chapter, and I step into the shadows to recharge and ready myself for the battles that lie ahead.
Summary
I am writing this post three years later. Now I have proven myself as a technology leader, a solution architect. I've gained a lot of experience with both the JavaScript frontend and the backend in Node.js, Elixir, Go and Java. Maybe I'm ready for a third try?