My goal here was to study the different gameplay systems involved in an action-adventure game in Unity and learn how these elements work together. There are still a lot of missing elements that I plan to add sometime in the future.

All of the 3d models and animations are from the asset store, most of which are from Synty Studios and Dungeon Mason. They do an excellent job of creating low-poly assets. I intentionally chose a low-poly art-style so that I can dedicate more time to programming than to creating 3D art. Obviously in a real production environment, you would replace all these assets with custom made ones. They are mostly used during the prototyping phase. For UI icons, I got them from the store as well.

Gameplay Systems

Melee Combat

The combat system is basic at the moment. The player can perform melee attacks with a maximum 5-hit combo. The enemy AI pursues the player and does a 1-hit attack when in range.

For character animations, I used RPG Character Mecanim Animation Pack. This pack is extremely useful when prototyping combat systems. It has all you need: character animations for different weapon types, weapon styles, swimming, climbing, etc.

Ranged Combat

I added archery using Archery Motion Pack with a couple of edits. I plan to add ranged magic spells in the future.

Horse Riding

Without a doubt, Horse Animset Pro is the best pack if you’re going to implement horse riding or any animal riding mechanic. It’s a framework that saves you time by giving you a not only animal animations, but also a flexible riding controller that is easy to integrate to your existing character controllers.

Dragon Riding

After horse riding, I wanted to study volumetric clouds in Unity and experimented with gameplay sequences that would showcase these clouds. I used Unka the Dragon which when combined with Horse Animset Pro, allows you to add the dragon riding mechanic.

Inventory System

The inventory system is still undergoing revisions. Will post an update here when it’s presentable. A helpful resource I found is this article by Robert DellaFave where he elaborates how you should design an inventory system best suited for your game.

Dialogue System

Equipment Upgrades

Equipment Upgrade UI

Item Shop

Item Shop UI

Skill Tree

To render characters on top of UI elements, you need to set your Canvas Render Mode to Screen Space – Camera and assign it a corresponding camera as explained in this forum post. For particle effects, you’ll need to adjust the Sorting Layer and Order in Layer as shown in this tutorial.

Skill Tree GIF

Graphics

I started the project using Unity’s built-in render pipeline. Admittedly, this was a mistake on my part. I should’ve used HDRP to take advantage of its features. As an alternative, I used a few assets from the store to complement the built-in renderer.

Lighting

Most of the lighting are real-time with SSAO for added depth. For optimization, it would be wiser to bake the lighting and use as few real-time lights as possible. Furthermore, I added an extra Directional Light, shadows off, that is set to affect only characters such as the player and NPCs. This helps in putting more emphasis and prevent them from blending too much with the environment, especially in dark scenes.

Post-Processing

I used Screen-Space Ambient Occlusion, Bloom, Color Grading, and Vignette. The values I used are purely artistic because the environment is very stylized. On the other hand, you should be more careful with parameters such as Exposure when you’re dealing with realistic art styles . Pierre Yves Donzallaz talked about proper Exposure values in this Unite Now 2020 tutorial.

For tonemapping, I prefer using ACES over Neutral. I like the higher contrasted look. More info on Unity tonemapping here. If you’re like me, you’re more familiar with Shadows, Midtones, and Highlights than Lift, Gamma, and Gain. This tutorial does a great job of explaining what these three parameters do.

Post-Processing Settings
Each scene has different values

Volumetric Clouds

I used Fog Volume by David Miranda. Volumetric clouds can easily tank your frame rate. You need to tweak a lot of values to make it look good at an acceptable performance. I encountered a couple of graphical glitches on this one. Your experience may vary.

Volumetric Clouds

Atmospheric Fog

Because the built-in renderer’s fog system is not very good, I used Atmospheric Height Fog by BOXOPHOBIC. This is a performance-friendly fog solution. It does not have a true volumetric effect and is not intended as a replacement to the volumetric fog provided by HDRP.

Atmospheric Height Fog makes distant objects lighter and desaturated which simulates the real-world atmosphere

Things I Plan to Add in the Future

  • quest system
  • saving & loading
  • melee skills
  • magic spells
  • cutscenes
  • improved combat
  • improved enemy AI
  • revamped inventory system

Send me a message.


Recent Posts: