Ignite MMORPG — Devlog #1
Here lies the first devlog about this MMORPG I’m developing by my own (hopefully on the future I could say that we are working …) .
The structure of this devlog will be a little different. Instead of only write a development log, as for the logging of how the development process is going, I will write a developer log, as per how is my state of mind and motivation about the project.
I don’t know if this will be useful for me, nor interesting for any other person who will read this log, but life is full of testings and failures, right?
First of all. What are the technologies I’m using?
- Nodejs for Backend stuff
- Redis as a message queue system (more on that later)
- Game Maker Studio 2 for the client
So, here is what I have now:
Client: Networking and Animation
The client of the game already has connection to the World, Rest and Auth servers. This enables the features shown on the video above:
- Login and Connecting screen (OK with some bugs)
- Positioning update via socket connection to world server
- Return of User and Character informations via REST and socket connection
- Animation for Running and Walking cycles
What do I plan to make until this next log:
- Addition of animation for spawning player
- Stamina and HP Frames + sync with the server
- Fix some network corner cases errors.
The sprites used for the game was not made for me, as I’m not a good pixel artist. Instead, I’m using some assets made by some talented artist on itch.io:
- Seliel is a great pixel artist who posted some really interesting assets of base characters and animations. I’m using them :D
- Untied Games has a very unique pixel effects animation in 60fps that I’ll use in the future.
Servers: Performance and connectivity
As I’ve mentioned, the game has three separate servers:
- One handles the REST requests about static data (like user and character info)
- One authenticates and authorizes various user inputs
- One handles the world state and socket connections
The actual state of those servers are:
The server handles the authentication and generation of session tokens for logged users. The idea is that on the future this server could be used to run some smart contracts for the blockchain aspect of the game.
This server handles the retrieval of the user and character information. In the future, it will handle the creation of characters and user accounts.
This server is the core of the game. It will run a message queue system using Redis to queue up the socket commands being emitted by the clients connected. The idea is to tick the processing of this commands and update the world state based on what the players have done. Now, the server handles the positioning of the players on the map, and updates the database on the moment the job (command of the player) is processed.
As probably you have guesses: the world-server is the one that will be the most harder to optimize.
In its actual state, this server crashes within 5 minutes of gameplay of one client connected (I know, miserable …) due to Garbage Collector issues, that I hopefully can fix until the next devlog by adding some schedulers, rate limitters and, maybe, splitting this server in half to isolate the consumption of the messages and the emittence of them.
State of Mind
I’m a little tired about my triple journey (job, freelancing and game dev). Aside that I’m really pumped about making this game. It was always my dream to know how MMORPGs works, and making one (even if its clunky and by my own) is the first step into honing my developer hard skills.
It revolves around 8/10. Its not 100% because of how tired I’m becoming in the end of the day (freelancing is my major enemy). I’m looking foward to every day, allocate at least 2 or 3 hours of the day to touch the game. In the present state, I’m feeling excited when I got out of the job to code the game, and I hope it stays that way.