Our choice to use Unreal Engine 4 to develop Shiryo was driven by a variety of reasons. With UE4 the use of the visual scripting language and general resources available within the engine would allow us a rapid development cycle as opposed to programming solely in C++ or C# (why waste time remaking the wheel?). While we can still use C++ when we need a unique or specific function that isn’t already exposed via Blueprint.
Ensuring an efficient development time is imperative to achieving the roadmap goals of the dev team. As well as this UE4 has relatively straight forward porting to other devices (We have developed the Shiryo’s code base with porting in mind for this exact reason).
Our team having the most experience utilising UE4, it made sense to benefit from the easy workflow integration between the additional software that our team uses to develop Shiryo. For example our devs use Adobe After Effects for graphics and animations with Blender being used for modelling, UV unwrapping and basic texturing. The plugins and integration between these software and Unreal allow us to develop, refine and implement quickly and easily.
Additionally we use a dedicated perforce system which has seamless integration with Unreal to manage our Shiryo’s source control, as well as to have safe redundant storage of all Shiryo assets and the code base.
We created Shiryo’s code base from scratch to ensure the packaged build would be lightweight, easy to grow in scale and complexity and to ensure the integrity of the multiplayer system, by rigorously building the system from the ground up with multiplayer server authority in mind.
Using a “measure twice cut once” approach, we have developed systems within the game to verify any and all Client RPC (Remote Procedure Calls – Ie when a user requests to do something).
The authoritative game server (aws server) – running the master version of the game, with game clients (users) – running a replicated version of the authoritative master version.
For example – A nefarious, modified game client attempts to spawn a card into their hand and place it on the board. Or lets say decrease the number of energy that card uses, or even how much damage a card can do. Well their client would still need to perform an RPC as they need to change the master version. The game server, running a master version of the game, knows all and every piece of information for the game, and therefore can scrutinise each and every RPC received.
Now due to the required latency of a game like Shiryo being magnitudes lower than other genres such as FPS. We are leveraging this additional time to do a series of multiple checks and verifications for each and every single RPC that is requested, as well as additional supporting verification checks to systems during game setup, matchmaking and end game conditions.
Like me you might be a fan of Steam’s online game platform and it would have been epic for us to release Shiryo on steam but we are unable to, the reason being Steam unfortunately have declared that “Applications built on blockchain technology that issue or allow exchange of cryptocurrencies or NFTs.” are unable to publish with Steam. Now this also includes the use of Steamworks, their multiplayer service.
Now in light of this we have chosen to use Amazon’s – AWS Gamelift service instead. Used by most of the top AAA studios, titles such as Valorant, League Of Legends, PUBG and Fortnite to name just a few. This gives us confidence that as Shiryo grows, and the ShiryoVerse scales up to the ambitious capabilities and offerings that we are working towards, that AWS will be able to scale with us easily, creating a safe and reliable foundation for Shiryo’s multiplayer experience.
(“Applications built on blockchain technology that issue or allow exchange of cryptocurrencies or NFTs.”https://partner.steamgames.com/doc/gettingstarted/onboarding)