Home | Articles

purplefox Devblog: Part 1 - Introduction & Planning

Welcome to the first development blog for a project I’m giving the working title, purplefox. This is a work-in-progress massively multiplayer online role-playing game (MMORPG) that I’ll be hacking on in my free time. MMORPG’s are notoriously complicated, and something I’ve always wanted to build. Over the past ~5 years I’ve gained a lot of knowledge in the areas of software development, computer networking, and computer security. I feel that I now have the right skillset to embark on this journey. This will likely be my primary side project for the unforeseen future.

I’m going to talk about high-level design, proposed technologies, concerns, and a current roadmap in this first post. I’m going to specifically focus on planning the client & server architecture. Everything I discuss here is subject to change, I’m learning a lot as I go.

Here’s a high-level diagram I drew up to talk about this project:

highlevel

Client-side

Let’s talk about the client-side first. The envisioned client will be 2D, cross-platform, and send & recv JSON over TCP.

Here’s the technology I’m currently planning on using:

SDL2 is cross-platform, fast, powerful, and well documented. The downside is I will have to write my own 2D game engine. However, I believe that writing my own engine will have great long-term benefit.

Resources:

Server-side

The game server architecture is probably the more complicated matter. My goal is for the server-side to be scalable, smartly distributed, authoritative, and secure. A lot to ask for, I know ;D.

Here’s the technology I’m currently planning on using:

Resources:

Concerns

I have a lot of concerns. I think it’s important to write them down.

Roadmap

Here’s the current roadmap. My primary goal right now is to get a decent skeleton for the client and server. I’ll feel satisfied with my progress if I can get the game client and server talking TCP containing JSON data that updates a player location from an authoritative server and renders that information properly in SDL. Whew- that was a mouthful. Here’s what needs to be done:

Commitment to Open-Source

I’d like to close this first development blog by stating that I’m committed to eventually releasing all code for purplefox open-source. It will be easy to release the client-side code when it’s in a stable state. However, the server-side code might be difficult to open-source depending on how it is architected. In an eventual post-mortem state, all code will be open-sourced. My hope is that both the client & server code will be released in the long-term so players can run private servers and make mods.

Thanks for reading!