Weekly Dev Diary #3 - early prototype and multiplayer
My Name is Vaclav (discord name Æbone) and I am the coder at Hardwired. I would like to give you some insight in to coding for Deicides.
After doing lots of research and comparison of top engines in the market right now, we decided to use UNREAL ENGINE as our weapon of choice and we have no regrets yet. I love C++ so Unreal Engine 4 was a pretty straightforward option.
I am huge fan of the Action RPG genre and have spent countless hours playing Diablo 3 , Path of exile or most recent games in development like Wolcen (Umbra) or Last Epoch. Working on Deicides is fulfilling my dream to create an ARPG which i sorely missed on the market.
We started with the prototype, with simple mechanics and adding tools and features along the way. My goal was to get to know unreal engine workflow and tools. I've started with single player mode and the progress was quite smooth.
All was ok until i found out that for multiplayer most of the mechanics and code will have to be structured differently. I had to stop progressing and focus on reconstructing what we already had, to work in multiplayer (dedicated server) mode.
Once we had become a semi-full dev team we had to switch to proper project settings and support multiplayer straight from the beginning. Having multiplayer required more than just adding a few more characters, we have to create a secure system of client/server communication and checks. No one wants to have a spoiled game experience by cheaters. Most of the team members were impacted by this decision, but it will give us heads up and stress free development time if we will try to implement it at later stage.
Our main goal is to have a responsive game as best as we can but still have closed doors for cheating. You will end up creating lots of compromises, but server must be fully in charge (especially in competetive enviroment of this genre). The client simulates predictions with a little bit of a head start(not waiting for server update) and the server will correct it in case of some inconsistencies. This way the player experience should feel responsive and under control with double checks for potential miss aligments.
Conversion from prototype to multiplayer was difficult but I learned a lot about the Unreal engine and knowing that if we do the transition later it will be a much harder task to tackle.
Thanks for your attention. I will be happy to share any of my progress with you in another Dev Diary post.
If you have any questions don't hesitate and ask! You can find me at our Discord channel.