Multiplayer RPG Series – Concepting

By 28 August 2017 Game Development, Networking, Programming 4 Comments 6 min read
MultiplayerSeries_concepting

So – as I said – to create this blog posts series I will develop a game step-by-step to help myself to understand what I need to write down.

Before I start with code and tech, I want to do a little bit of concepting: just to have a straightforward target and to have well-formed ideas. Also, I will try to establish what I need to develop in order to complete this game. Yeah, it will be boring but necessary: so grab your patience and embrace it! 😉

CONCEPT

Well, first of all – of course – I have to decide what game I want to develop. Of course this series is focused on multiplayer RPGs with persistent worlds. But I would like to go more deep by defining more details, rules and lore. In this way I can have a better overview of what I exactly need and I can give you a little bit of context about what is in my mind.

  • I want it to be an open world, because I want to deal with “area of interest” and “zones partitioning”: they are interesting challenges.
  • I want to keep it relatively simple and focused on multiplayer part: so no complicated gameplay concepts and contents.
  • I want to create reusable core, components and systems. I will develop them a single time and I will reuse them in my future games. For this reason I will try to maintain them as much general purpose as possible.
  • I want the world simulation to be persistent.
  • I would like to play a little bit with AI, so I will introduce enemy entities with various and different behaviors.
  • About lore and world context: I love norse mithology, so that’s my reference. I will create the virtual world with this in mind.
  • Based on previous point, the name will be “Legends of Valhalla”. Yeah, I know, I know: I am so much creative… :)

I think it is all for now: I will update this set of rules later if something else comes up in my mind. 😉

TECHNOLOGIES

I should also define the stack of technologies I want to work with. As I mentioned, I would love to work with stuff I didn’t use before or I want to learn better. In this way you can easily check what this series will contain and you can decide if you want still to follow me: if chosen technologies aren’t interesting to you, I will not waste your time. :)

  • I will use C# and .NET Core 2.0 as main programming language and environment to develop the game server
  • I will use .NET Core 2.0 or Go for game server services
  • I will use Go for Web API
  • Docker is something I want to learn since last year, so I will use it too
  • I will use MariaDB as RDBMS
  • I will use Redis as in-memory cache and shared storage
  • I will use Azure or AWS services and APIs to host servers and services

That’s basically the stack of technologies I will use. Probably I will add something else later, but I think it is a good starting point!

CODE OF CONDUCT

In order to have nailed in mind the direction I want to follow during the development, I would like to set some targets and a little code of conduct.

  • Optimization. Multiplayer games need a lot of optimizations, especially when we are talking about open world. That’s why I will try to optimize everything I can think of: it is my main focus.
  • Multithreading. This is a subpart of “optimization”: it is important to use each core of our computers, especially on server side. A better usage of resources will end up in a costs saving!
  • TDD. I am not a good tester, my code usually has little-to-no tests. That’s bad, so I would like to improve this part of my workflow. I will try to write tests for my code, I promise!
  • Comments. I will try to follow these rules for comments:
    • Public methods, classes, structs, etc will be commented (except if it is really unnecessary)
    • For remaining entities, they will be commented just if they are complex or to explain a weird behavior/design choice

VERSIONING

Git will be used as version control software. This project will be entirely pushed on a private repository (probably GitLab or Bitbucket) and some parts of it will be pushed on a public repository (on GitHub).

 

Also remember that this is not a tutorial. I will not guide you step-by-step over “how to build a MMORPG in 5 simple steps” and it will not be a way to copy-paste some code. I will explain main concepts, interesting challenges, logic behind features, etc. The objective is to learn together in order to solve hard problems and main challenges that exist behind a multiplayer game: and that’s what I will try to accomplish! :)

 

Well, here we are: seems that the starting part is done. Now I just need to study and start coding!

Stay tuned!

4 Comments

  • Paul says:

    Sounds awesome! Looking forward to more.

  • Terenzo says:

    Hello. Is the project “Heroes of Asgard” still ongoing? Please give me some special information, thanks in advance.

    • Emanuele says:

      Hi,

      Heroes of Asgard is on pause since November 2016, so I think it is hard it will be continued.
      I don’t want to lose all the work done, so I am starting this project to produce a new game with mechanics and gameplay I discussed with the community for Heroes of Asgard in two years of development.

Leave a Reply

Your email address will not be published.