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 Used | Description |
---|---|
Cinemachine | Modular AAA Camera System. |
Invector Character System | A quick start to basic combat, but unacceptable for production. |
Combat Extensions | The 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. |
Gaia | I 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. |
AssetBundles | Using addressables I created a assetbundle workflow for Item and Character assets. |
TerrainGridSystem | A Plugin for easy grids, which I then extended to use our own crafted NFT metadata for cells. |
MoralisWeb3SDK | This was our main Web3 Plugin that we used for Web3 interactions, but it was deprecated early 2023. |
ThirdWebSDK | The replacement for Moralis, through we only used it for the wallet connections. |
MongoDB&Azure | Our Backend handed by another Senior Programmer, I was responsible for the Web3 interactions with the WebAPI the other dev made. |
SpeedTree | This and other asset packs were use to make our terrains. |
NFTArtisan | A Plugin I made to generate NFTs from a custom CellManager. |
FinalIK | Humanoid IK system. |
PuppetMaster | Humanoid Ragdoll system. |
UnityGamingServices | We used this for Networking and region servers the lived on the edge. |
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.
Some early testing of the Map system running with the character controller.
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.
Here are some of the bigger prototypes I worked on during the development of Corrupted Realms