Gness (WIP)
Overview
Gness is a sweet multiplayer online role playing game I am making with the Unity game engine. I have been having a ton of fun with this project and have been learning a lot so far. I am really glad to have finally gotten a decent networking system going and it is really fun being able to test and play with my friends. Much of my early work was getting the networking systems up and running and now I have shifted my focus to gameplay / ui stuff, using mainly World of Warcraft as inspiration. Once I get more systems setup and fleshed out my designer friend will begin filling out the world and adding units and spells!
Current Game Features
- Networking
- Authoritative server / client model
- Client sends inputs, server simulates and updates all clients
- Server runs headless simulation, all gameplay code is compiled out for clients
- Using Unity's low level networking API (deprecated I know but their replacement isn't 100% ready yet)
- unreliable channel for movement syncing / cooldown / casting updates
- reliable ordered for spawn / despawn events
- Multiple different sync types, transform, rigidbody, static
- Visibility system so each client only sees other network objects that are nearby
- Modular Ability System
- Can quickly build new abilities directly from the editor
- Cool 3D Sprite Style
For the game's Ability system I wrote a base Ability class that simply acts as a collection of modules (using ScriptableObjects in Unity). There are various modules for triggering when the ability happens, finding ability targets, specifying costs required, and effects to perform once triggered. This custom editor script I made helps to create and draw each of these modules nicely on a single ability object for great ease of use, and also has some pretty cool multiedit functionality to boot. The server uses these modules to perform the ability calculations and also send error messages to clients if the conditions aren't met. Here is an example of the CheckTargets function in the SingleTargeter module.
The good thing about this system is that each module is decoupled from the rest so it is easier to add new effects and functionality while maintaining a pretty clean code structure. I still have many modules I want to add like targeted AOEs not centered on caster, different AOE shapes, stat modifiers, spawning more visual effects, etc.. But I am very happy with what I have so far!
This is a test scene for the sprite shader I wrote. I wanted to use this free sprite pack I found, but also wanted to make the game in 3D, so I went for this weird kind of style. I was able to get the shadows and lighting to look pretty good actually even though each sprite is just a billboarded quad. Eventually we will probably make/acquire some actual models but for now this looks pretty cool!
Lastly this is a screenshot of the spellbook and actionbar system. You can drag spells onto your bar and cast them by clicking them (eww) or by using the keybindings on your bars (ignore my weird bindings). There are also auto generated tooltips for each ability and cooldown overlays to show you how long before you can use the ability again.