State of the project: February 2019 (Build 23)

State of the project: February 2019 (Build 23)

Game Systems

  • Four character class templates supported: Brawler, Ranger, Wizard and Cleric. These are really just that: a template prefab defining a basic set of abilities and stats, a fixed character model and a default inventory (Ranger and Cleric only). Even these basic test templates vary a lot in terms of completeness: Brawler and Ranger can be considered “playable” while the other two are largely just rudimentary place holders.
  • Combat abilities: the underlying system is one of the most complete ones so far. Abilities and effects for melee and ranged combat as well as magic abilities can be designed entirely using the Unity editor (no coding required) but assignment to class templates still happens in code.
  • Character stats: The stats system is still somewhat embryonic. The basic code framework exists and works well (including networking) but is still in the basic unflexible form (everything is hard coded) from the very start of the project (this was one of the first systems created)
  • Character movement (and networking thereof): Player character movement is handled using semi realistic physics on the local client and replicated to other clients on the network via the server. The server currently simply relays player movements without any verification. Non player characters move exclusively using Unity’s NAV system. All NPC movement happens on the server and once again is relayed to clients using the network. Network updates happen at fixed intervals, use compressed states and a system of interleaved complete/delta_only states.
  • Character animation system: characters (player and NPC) are animated solely on clients using a custom networked animation action control system
  • Combat: combat maneuvering once again happens on the local client for players and purely on the server for NPC characters. All combat resolution (including validation, i.e distance and positioning checks, power checks, validating available abilities, cool down etc.) are server only.
  • Items, Inventory: Items can be designed and configured inside the Unity editor. This includes complete configuration of 2D icons, 3D models, model mounting information for mountable items (weapons, armor) and possible stats effects. The inventory system includes fully automatic processing (apply&remove) for stats effects when items are equipped (i.e placed in equipment slots in the inventory) or un-equipped and is fully database backed (persistent).
  • Loot configurations: this system allows designers to create predefined sets of loot (what items can “drop” and the chance of them dropping) and assign these to either NPC spawners of world items (“loot boxes”) inside the Unity Editor.
  • NPC AI: implemented via a custom behavior tree system. Arbitrarily complex AI behaviors can be created with this system but the setup of behavior trees, at this point, still happens entirely in code. So far only basic behaviors have been created: Patrol, Guard, Chase, Basic Melee Combat.
  • Spawning: a basic spawning system for spawning NPC characters as well as world items exists. Spawners support configuring most aspects of the underlying AI (aggro and assist ranges, roaming ranges, respawn delay etc.) as well as assignment of loot configurations.
  • Quest System: the quest system is the most recent of the sub systems and still very basic. Designers can create simple Quests using the Unity Editor by configuring scriptable quest objects: creating dialogues, quest nodes, assigning rewards (items and/or experience) all can be done in the Editor but creating additional “Evaluators” (these are specialized code objects used to verify if some condition, required to complete a node, has been met) require C# coding. The quest system is already fully database backed (persistent). Current quest state is stored on a per character basis.

Content

  • One single playable zone with three populated areas (“zombie ruins”, “bandit camp”, “orc cave”) exists for test, demo and mostly load testing purposes. This is also the zone that the permanent test server runs.
  • Several tiny development zones exist for development purposes only.
  • Two character prefabs for player characters have been setup with two different 3D models (from mixamo) and all four class templates have their own specific animation controllers.
  • Three NPC character prefabs exist at varying levels of completeness (“Zombie”, “Bandit” and “Orc”) The bandit is from the Unity Asset store, the other two are from Mixamo.
  • All animations have been sourced from mixamo.com as well
  • All textures, world models, inventory items, 2D icons etc. come from Unity’s asset store.
  • The creator of the wonderful music is Eric Matyas from www.soundimage.org

Infrastructure

  • A single headless unity server instance is available on a rented virtual server 24/7. This is used predominantly for ongoing “friends&family” testing.
  • The web server hosting this site also hosts the download directory for the patching system.
  • A custom client auto patching and launching system exists. Patches are created as efficient and compact bsdiff archives and the launcher is able to automatically determine which build version a client is currently on and apply the correct number of patches in order to bring it up to “current”.