Corrupted Realms | Dencho

Hired on as a Senior Programmer, This is one of my earliest projects involving Web3, at the time (2022-2023) there was but a handful of blockchain SDKs that were compatible with Unity and C#. On top of all the Web3 functionality part of my job was to refine the combat and art workflow for maps.

Technologies UsedDescription
CinemachineModular AAA Camera System.
Invector Character SystemA quick start to basic combat, but unacceptable for production.
Combat ExtensionsThe initial state of combat in the game was subpar at best. I performed surgery to the SDKs source code in a attempt at more modern combat.
GaiaI used Gaia to generate different land samples of quality and size to that we could acheive the biggest land possible for the most amount of cells.
AssetBundlesUsing addressables I created a assetbundle workflow for Item and Character assets.
TerrainGridSystemA Plugin for easy grids, which I then extended to use our own crafted NFT metadata for cells.
MoralisWeb3SDKThis was our main Web3 Plugin that we used for Web3 interactions, but it was deprecated early 2023.
ThirdWebSDKThe replacement for Moralis, through we only used it for the wallet connections.
MongoDB&AzureOur Backend handed by another Senior Programmer, I was responsible for the Web3 interactions with the WebAPI the other dev made.
SpeedTreeThis and other asset packs were use to make our terrains.
NFTArtisanA Plugin I made to generate NFTs from a custom CellManager.
FinalIKHumanoid IK system.
PuppetMasterHumanoid Ragdoll system.
UnityGamingServicesWe used this for Networking and region servers the lived on the edge.

Creating a stereoscopic 3D Web3 Map

This was basically my first prototype of a 3D map using such a big terrain (over 200k square meters) and was pretty hard to make as I had to make sure multiple Web3 systems was working with out smart contract thats live on the testnet. This is the initial state of the Map UI before the Web3 integration.

Here is the final prototype state of the Map UI after the Web3 integration.

Runtime Tests

Some early testing of the Map system running with the character controller.

Extending Combat

I'm sure the Invector SDK is usable for a lot of projects. However I have never been more displeased by the code quality in the SDK. It makes me want to throw up and if I could go back to the start of development I would strongly recommend against using it. I ended reverse engineering parts of their character components so that performance would increase by 80%+ during stress testing. This is why it's not recommended to handle null or distance checks every frame. Shame shame.

I started by overriding attack functions to tie into a custom sensor I made that detects other mob sensors. This was then used to input an relative "intent" direction the AI should use for the attack trajectory. I then combined all that with a custom physics PID controller I wrote a while back to make attacks apply forces to the attackers and defenders bodies.

Next I started creating a modular attack system using scriptable objects to eventually create hotswappable skills/attacks that can be used by the AI and Player controllers. Custom Inspectors will be used to allow technical artists to easily create different attack patterns and tie them to animations/vfx/audio/ect.

The benifits of my custom PID controller before knockup animation states were made.