Post-Mortem: Everyday Knight Fight
Everyday Knight Fight is a game inspired by the puppet-style combat of the game Toribash in which the players control a humanoid puppet by manipulating joints through simple state changes. This, coupled with the pausing of the physics simulation in a turn based fashion with a “We Go” active physics section between player turns, allows for an intuitive ability to manipulate torque and velocity resulting in somewhat elegant yet chaotic turn based action game.
How Everyday Knight Fight is different from Toribash is the addition of native (not modded) weapons and armour. The players must overcome, break, or circumvent the armour of the opposing puppet in order to be able to damage their opponent, and gain points.
What went right
The biggest problem with asset integration is a lack of understanding of the differences in unit size, export orientation, and file type, Fortunately I have developed a solid understanding of these areas in programs including Unreal 4, Unity 5, 3DsMax, and Blender. The best way to manage asset integration is a combination of avoidance and preparation. To do this:
- Avoid using unfamiliar file types wherever possible,
- when working in groups include file type rules in the documentation so that all parties are aware of the file types to be used,
- when using file types that are unfamiliar do your research,
- and test the files on an external project or branch to avoid causing unforeseen issues, before adding them to the approved file types.
Turn based system.
This took a lot of rewrites to get right, but once I had come up with a tested system I feel it was quite functional. A lot of the issues I that I found myself running into where from poor planning on my part coupled with a lack of knowledge. This changed quickly once I had made a list of what needs to be activated/deactivated at the start and end of each turn and what functions needed to be part of Update vs PhysicsUpdate. For future management of such issues, my suggested fix would be listing the active/non active parts of the project in a game loop diagram to allow for a visual representation of turn functionality ahead of time.
Joint state system.
Replication the functionality of the Toribash joint state system went very quickly. I had changeable joint states within the first hour of production by utilizing the Unity Physics joints, This allowed for flexibility as I could rapidly create joints, add my script, link up the game objects, and the joint would function. Management of this kind of system simply comes down to having a good list of the hierarchy that you plan to implement.
What went wrong
The problem area that took up the most time (one that I had not expected to be such an issue) was physics. Because of the naturally spaghetti-like nature of hierarchies, I rapidly begun to have issues of Physics joints simultaneously being too strong and too weak. This caused an unwanted behavior of joints moving too fast or not being strong enough to move at all. After many attempts to limit the max speed at which the joints could move I found that I just did not succeed at making the system as robust and as functional as I had wanted to within the time frame of the project. The cause of this issue is simply a lack of understanding of the limitations of the Unity physics system. While there is no direct problem with the physics system itself, some of the ways in which you can interface with the system are unintuitive, and in the case of the physics joint motors (used to drive the joints in a particular direction dictated by joint state) it is inherently problematic. To manage this problem in the future, where possible, I would avoid large hierarchies of joints (to minimise the problem) or write your own joint solver to give yourself greater control over the system without the pitfalls of the default joints.
Autodesk,. “3Ds Max | 3D Modelling & Rendering Software | Autodesk”. Autodesk.com.au. N.p., 2016. Web. 16 Dec. 2016.
Blender,. “Blender.Org”. blender.org. N.p., 2016. Web. 16 Dec. 2016.
Toribash,. “Toribash – Violence Perfected – A Physics Based Fighting Game.”. Toribash.com. N.p., 2016. Web. 15 Dec. 2016.
Unity Technologies,. “Unity – Manual: Unity User Manual (5.5)”. Docs.unity3d.com. N.p., 2016. Web. 16 Dec. 2016.
Unity,. “Unity – Unity – Overview”. Unity. N.p., 2016. Web. 16 Dec. 2016.
Unreal,. “What Is Unreal Engine 4”. Unrealengine.com. N.p., 2016. Web. 16 Dec. 2016.