Tribal Wars

Tags

  • Unreal Engine 4
  • Blueprint
  • Landscaping
  • Level Design
  • Animal AI
  • Spear Projectile System
  • Modular Character
  • Day-Night Cycle
  • Procedural Foliage system
  • Auto Landscape Material

Responsibilities

  1. Downloaded real world terrain height maps using L3DT to create the island.
  2. Used a free modular character asset and replaced the mesh for the Unreal mannequin with it
  3. Created the blueprint system for spear throw and animal damage system
  4. Used the volumetric clouds system and new sky to give better lighting
  5. Created a day night system by updating the rotation vector of the primary and secondary lights in the atmosphere
  6. Navigation Invokers were used to optimize the game’s AI
  7. World Machine was used to create the level map

Project Description and Explanation

This was the second part of my course called Advanced Game Design where I previously had made the map for Dunkirk.

Again as usual I wanted to improve my ability in Unreal Engine, hence I used my previous learning and crafted a much better and detailed map, this time opting for creating a custom map using World Machine.

The node based system for World Machine was relatively intuitive however the program was very dependent on CPU instead of GPU which was a limiting factor for my hardware at the time.

The map was imported into the world partitioning system of Unreal Engine however, due to lack of knowledge regarding the foliage system which was not working properly at the time on the world partition system I opted to use distance culling in order to decrease the performance hit.

After the landscape was imported I set out to learn how to improve on my previous learnings on landscape materials and came across a helpful playlist of videos by Ben Cloward which detailed how artists like Joe Garth achieve their texturing in their landscape packs; Brushify.

Playlist link:
https://youtube.com/playlist?list=PL78XDi0TS4lHwqv_PmXAdedT2SH1qeRqK

After learning from his videos I implemented an auto texture landscape material which would change the material and blend in according to angle and height difference which created a very organic world. However, a drawback regarding this was the material tiling which required more work inside of Substance painter and due to the limitations of time (1 Semester) I could not work towards the tiling issue. However a possible solve would be to implement tri-planar mapping for hills.

Another thing implemented in the landscape material were the use of Virtual textures which while taking more space would decrease the consumption of memory resources. This led to my first attempt at optimization for game development by looking at the engine stats available from the view menu. 

This project also utilized the new water system from Unreal engine however it had a lot of problems. The spline based setup meant that there were a lot of nifty details that you had to take into account. The system would not work after or under a certain z value and would bug out by not showing the water most of the times. The falloff from the land to the water was very basic and ruined the immersion. Furthermore, the system required advanced knowledge in Gerstner waves and creating foam materials which should be present at a basic level out of the box, however it was an alpha release and could not be condemned in any manner.

After the creation of the map, I started implementing the foliage system, this led me to create procedural foliage volumes and then using available tree assets from free projects to create foliage meshes which I put in the foliage Volumes. After experimenting with the density and the culling distance I began to move towards the player character.

While I started out with the third person template I wanted to learn for my own understanding how to replace the existing mesh of the TP mannequin. I used a free pack from the unreal engine marketplace (Free because of Free for the month) where I used the modular assets to replace the skeletal rig of the character. After which I began working on the AI for the animals.

I utilized another free asset pack to get the skeleton and animations for the animals after which I started spending numerous hours learning how AI worked in Unreal Engine. I did not want to delve into blackboards and Behaviour trees due to the large learning curve and limited time hence I opted to do the movement based in blueprint.

I created 3 different AI’s; Bird, Pig and Stag

All of the 3 had different characteristics. The pig Ai was the most basic with a simple random roam, eat, sleep and run away routine if hurt or in danger. This was the base of my AI, the next was the Stag which I wanted to be the herd leader and spawn doe’s around him which roam a certain area him only. They followed the same pattern as the pig.

The last AI was the crow which would fly away if the player collided with them. They were the most difficult as I had to learn about enumarator which dictated the movement characteristic and then make the Crow take into account the fact that the sky was open for their navigation. 

After implementing the AI in blueprints and making their behaviour start and be retriggered from an event binding which would trigger after every 1 second, I added AI perception which would see the player and cause a trigger bool to be turned on.

The next thing to do was to create a projectile which would spawn and hit the AI after which they would take damage and die. The projectile implementation was very basic as I spawned it from the angle the player was facing and as the player’s rotation was not locked to the camera, there was no proper aiming mechanism and a coin flip on how the projectile was shot. 

The last part of the project was the creation of the day and night system which called for me to use the second lighting slot in the new sky system for the moon. I implemented a moon texture into the skybox and with a basic rotation by second math formula implemented the change of the skylight and the moon coming out. the system was very basic and while it did showcase the lighting, the implementation required a lot more work such as the improvement in the indirect lighting at night time and the exposure dynamically being adjusted at certain hours. 

However the project was successful in gaining and improving from all of my previous works

 

No GDD was created for this Project