Deep Time: Terrain Models

The University of Gloucestershire’s School of Computing and Technology has an annual exhibition of students’ work. For COMX17, the research students had our own stand where we showcased a number of the projects that we had been involved in. With Deep Time, Connor and I produced a short video that showed some of the work that went on behind-the-scenes, and a few final renders of project assets.

Clay Render
Clay and textured renders for Avon Group environment.

Rather than show the Unity scenes, I chose to showcase the Deep Time environments by exporting a couple of the terrains as meshes, and texturing them in Substance Painter 2. These were then rendered out in 3ds Max to be included in the video.

Terrain Render
Clay and textured renders for Martley Quartize environment.

The fully textured meshes look far more natural than what was achieved using the terrain painting tools in Unity. For this reason, I am tempted to do the same for all the briefs, and then use the mesh in-engine rather than a terrain asset, proving that it is efficient enough for a mobile project to handle.

Deep Time: Terrains and Assets

Over the past few months of my research placement, I have continued to work on the Heredfordshire & Worcestershire Earth Heritage Trust’s Deep Time project. I have concentrated the majority of my efforts on reproducing the terrains from reference sketches, and modelling assets to populate the environments.

Terrain 01
Environment for Quartz Conglomerate Time brief. Includes braided river systems, mountains, and sand banks.

A lot of my time has been spent with Unity’s terrain tools. I sculpted each terrain to match the descriptions/visuals presented in the brief’s documentation, and have begun to paint them using textures produced with Substance Painter 2.

Terrain 02

Currently, I plan on working my way through each terrain in quick succession. I will make any adjustments to the terrain sculpt as they are needed, produce the specified textures, and then apply them to the terrain. Using this workflow, I will have all the briefs fully textured and ready for asset population as opposed to only having a couple nearing completion.

Martley Quartz 01
Environment for Martley Quartize brief. Includes land-locked lakes. Seen here with placeholder water. Will be further populated with ice floats.

At this point in time, I fancy that Unity terrain’s tools now hold no surprises for me*. The majority of the time, I can find a work around to the issues that it throws my way. I found a useful script to bypass the inability to sculpt river beds below height ‘0’, which saved me from having to re-sculpt an entire environment, and have successfully troubleshooted issues prospective students had whilst using it on a university open day.

When I haven’t been working within Unity, I’ve been modelling assets in 3ds Max to populate the environments.

Ice Floats
Small ice floats for Martley Quartzite brief. Modeled in 3ds Max and textured in Substance Painter 2. There are two texture variations; one with full snow covering, and the other with patchy snow.

I have learnt a lot about modelling, unwrapping, and texturing whilst on the Deep Time project. Prior to this, I had very little experience with creating organic assets, and was far more familiar with modelling buildings and man-made objects. This has definitely been a step up from that, and has pushed me to learn more in an effort to deliver work I am happy with.

Vegetation
Carboniferous plants for numerous environment briefs. First attempt at low-poly vegetation modelling. Includes several versions of same plants to add variation to the scenes. 

UVW unwrapping in particular has been a challenge, as I hadn’t understood what a large part of the asset production it really was. After attending a talk by Neonplay about developing for mobile, I learnt that the quality of an unwrap can affect the number of vertices a model has when brought into a game engine.

Icebergunwrap
UVW unwrap of two medium ice floats. Furthest was unwrapped with one seam, whilst nearest had four islands to account for 90° angles in model.

So, I began to be very conscious of unwrapping my models with as few seams as possible in an effort to reduce the vertices count. Previously, it had only seemed like an aesthetic issue, with seams potentially being visible in a texture, but I now know that it is very much a technical issue too.

Continuing forward with the project, I wish to have all of the environments fully textured very soon, and aim to export all the Unity terrains out as models for a showcase video.

*Touch wood.

Team Fortress 2 Mapping: Getting Started

I’ve been a massive fan of Valve’s Team Fortress 2 for around five years now. Due to this, I know the layout of the King of the Hill maps better than the back of my own hand, and can reel off the benefits of a whole range of weapons from memory.

I might as well make use of that, right?

So, I decided to design and develop my own map for TF2. I have read into the basics of designing maps for the game, and sketched out rough ideas for a King of the Hill map that plays with different heights in my notebook. However, I soon realised that I had no experience with the engine itself.

I downloaded Hammer Editor, and immediately began working through the “Your First Map” guide from the Valve Developer Community. From this exercise, I learnt a whole lot, such as that every map is essentially a room that should never leak into the Void, the importance of knowing your entity types, and that it was easier than I dared imagine.

At the end of it, I was the proud owner of an orange box that could run within TF2.

TF2 01

I needed to go a little further down the rabbit hole if I was to create something people actually wanted to play, however.

I continued my Hammer education with an extremely informative video tutorial series. At first, it was all the basics that I had learnt from the guide, but then it got to the really exciting stuff.

Like the fact you could take the top off of the box.

TF2 02

It’s safe to say I have never been that excited about a skybox before.

I ploughed through the videos, and made extensive notes as I went to ensure that I had an easy reference for when I undoubtedly returned to mapping in the engine.

TF2 03

It got to a stage where I was confidently manipulating brushes, applying textures, and placing entities. Then, it was time to create team spawn rooms to ensure that RED and BLU would spawn in safe locations where the other team couldn’t get them.

It all looked fine in the editor.

TF2 04

However, in-game RED could not trigger their spawn room doors to open. Stranger still, BLU could open one of RED’s doors using the trigger for one of their own doors.

At this point, I was extremely thankful that I’d been noting everything down, as it was a case of scanning through the process to pinpoint what could have gone wrong. As I discovered, I had mixed up some of the outputs to the door, which meant it believed it was still working for the opposing team’s trigger volume.

After correcting this, I had successfully implemented two fully functional spawn rooms with supply cabinets to replenish health and ammo, and barriers to prevent the enemy team entering.

TF2 05

I was pretty proud of myself for figuring out my first bug in Hammer Engine, but there was still quite a bit to learn before I would have the full skillset required to start whiteboxing my own map.

Continuing on with the tutorials, I successfully implemented the gameplay logic necessary for an Arena map. It was a lot more straightforward than I thought it would be, as most of the core parts of the logic are already set up. It was simply a case of having the control point swap to the appropriate texture when a team captured it, setting up the floating indicator, and having all the spawn room doors open at the beginning of the round.

TF2_v1

I did encounter another small-ish bug.

The capture point would never unlock during testing. Meaning, effectively, there was no way of winning the round. So, there was no game.

After a bit of poking around Hammer, I discovered an easy fix to my detrimental problem. If I set the capture point unlock time in the main Arena logic controller to a shorter time duration, then I would have a point that would unlock after 12 seconds, and could be captured by either team.

Phew, another problem solved!

Now, to move onto the gamemode I wished to work within: King of the Hill.

It was quite a bit more complicated, with a lot more logic to wrap my head around. As well as setting up the point so that it could be captured by either team, I had to include outputs to control each team’s objective timer, and spawn waves to make sure it took the team who were holding the point longer to spawn than those fighting to capture it.

TF2 More

I think it’ll take a bit more practice to really ingrain such a process into my memory, but I have the theory down for it.

The end result was a fully functional KotH map. The two teams can fight for ownership of the control point, and repeatedly win it off one another until one of their timers runs out to declare them the victor.

TF2 Red vs Blu

I now have the knowhow to put together a King of the Hill map for Team Fortress 2 using Hammer Editor, as well as nine A4 pages of notes to boost my confidence further.

The next step will be to whitebox the level that I have sketched out, and begin to playtest it with various classes to see how it holds up to their varied abilities and weapons. I’m predicting that it will be a very extensive tweaking process to account for everything from rocket jumping to sniping!

I also have accumulated quite a bit of reading about designing for the game too, so that’ll be keeping me busy in my free time!

IET Present Around the World

On Thursday, 30th March, I participated in the Present Around the World event hosted by IET at the University of Gloucestershire. The competition saw eight young people conduct ten minute long presentations on a topic of their choosing to an audience of their peers and three judges.

I chose to do my presentation on virtual reality heads-up-displays, and some of the issues encountered by developers surrounding their implementation and design. Within it, I discussed how a number of games have begun integrating HUD elements into the game environment rather than a “traditional” 2D HUD.  I also expressed my interest in exploring the field myself with a game that would swap between “traditional” 2D HUDs and an integrated HUD depending on context.

Although I ultimately did not place in the competition, I am immensely proud that I presented at all. I have struggled with public speaking in the past, to the point where I found it incredibly nerve-wracking to participate in team presentations for module evaluations, but decided that I would never overcome that by ignoring the issue entirely. I threw myself in at the deep end with this presentation, but it was definitely a very valuable experience.

From it, I have learnt that I need to work on my stage presence further. I did avoid hiding behind the computer screen, and placed myself at the center of the stage where the entire audience could see me. However, I need to use more of the space available – as the first and second place speakers did – and make direct eye contact with the audience rather than rely on looking at the screen quite so much.

There were also significant improvements from my experience with team presentations. I projected my voice so that the audience could hear me, I did not have to take any lengthy pauses to gather myself when my nerves got the better of me, and I did not stutter. Instead, I concentrated on expanding on the information presented on my slides, as I had consciously avoided writing out absolutely everything I had planned on saying.

I will definitely be seeking further opportunities to present on such a scale, though I am just as nervous about it! However, I really want to improve with this skill, and it is unlikely to get any better if I don’t embrace every chance that I get.

Deep Time: Progress Video

I produced a short video showcasing notable examples of the work that has gone into the Deep Time project so far for an event hosted by the University.

This includes:

  • progress shots of the Malverns Complex scene we created in Unity to highlight the use of in-engine particle effects
  • clay and textured renders of two animations for the orthocone
  • example of ocean flora swaying animation working on custom rig and then skinned mesh
  • a prehistoric creature and joint constrains created by fellow game research student Connor Smith

Deep Time: Custom Rigs

With the completion of the Malverns Complex scene, my attention has been turned to the flora and fauna that inhabit some of the less barren scenes involved in the Heredfordshire & Worcestershire Earth Heritage Trust’s brief.

For this, I have been required to work on my organic modelling to achieve accurate 3D representations of the required creatures. It has been something of a challenge, as I am far more comfortable with environmental modelling, and have had some disastrous attempts with modelling animals in the past. However, I would never improve if I didn’t challenge myself to work in a skill areas that are weaker.

Firstly, I modeled a crinoid (a sort of underwater creature) to populate the sea beds of the Avon Group scene. It was a relatively simple model, as the majority of detail will be included in the texture – such as the fern-like leaves.

crionoid-01The next step was create a bone system to allow the model to be animated. As 3ds Max does not contain any default rigs similar to that that was required, I created a custom one using the bone tools. It took a bit of tweaking, as the bone tools are quite tricky to work with, and it was my first time undertaking such a task. In the past, I have simply used the default biped rigs, and did not have to alter them all that much, so this was a significant learning curve to tackle.

crionoid-02

Each bone corresponds to the bend joints in the model, as it means – when weighted – it can be moved without seriously deforming the overall shape of the mesh itself. It will only affect the smaller polys either side of the bend joint instead.

I then skinned the model, and weighted the polys to particular bones in order to allow the model to move with them in a way that would not cause the mesh to deform peculiarly, or in a way that would create sharp corners.

crionoid-weighting

The final step in this process was to animate the crionoid to ensure that the custom rig was able to perform the sort of movement that is required of it. For this, I hand-keyed a gentle swaying motion in 3ds Max to make it appear as if the model was being battered around by a sea current.

crinoidOverall, I am very happy with the final product, as it is the first instance of me creating a custom rig for a model that I have produced, and – on top of that – I have successfully animated it as well. The next step for this asset will be texturing, and then importing it into Unity.

In addition to the crinoid, I have also been working on an orthocone for the Wenlock Aymestry scene. This was a considerably more difficult task, as the orthocone is an inherently more complex creature to both model and rig.

orthoconeWith the use of extensive references, I produced a model suitable for use in a Unity scene, and proceeded to create a bespoke rig that would allow every tentacle to move separately, along with rotating eyes, and a beak that can open and shut. In addition to this, certain elements will partially affect certain areas of the face to give the impression of muscles moving beneath skin to achieve particular movements.

The orthocone has yet to be animated. I have been gathering reference material on how squids propel themselves through the water in order to begin work on a number of planned movements for it, such as idly floating, swimming, and potentially changing direction if needs be.

I look forward to discovering if this rig will perform as well as that created for the crinoid, and hope to continue improving upon this more technical aspect of asset creation throughout the duration of the project.

Deep Time: Malverns Complex Scene

The Deep Time project involves creating a series of scenes that demonstrate what certain landscapes would have looked like millions of years ago. The Heredfordshire & Worcestershire Earth Heritage Trust intend to use them to educate users of the geological history of the areas involved.

The first brief that we tackled was the Malverns Complex scene. Around 680 million years ago, the landscape would have been a snow covered volcano chain, with no fauna or flora to speak of. The only respite from this desolate wasteland was an ice sea to the north.

Our clients provided us with an extensive document outlining what they wished to see included in the scene. For ease of reference, I assembled the images included in the document into a handy moodboard for the rest of the team to use. This allowed for ease of access to the information necessary to create the desired end product.

malverns-complex-project-overview-01

Following this, I proceeded to research further into the desired aesthetic. I gathered videos and photographs of erupting volcanoes to use as reference for the required particle systems, lighting, and so forth. I also read into the dynamics of such events to pinpoint what additional elements were required beyond the typical billowing cloud of smoke. This further extended to study the appearance of frozen seas and snow fields, as they as important to the finished product as the volcanoes were.

board

As my colleague set about modelling the environment, I began work on the particle systems. Through my research, I had discovered that volcanoes throw out debris at high velocities, and so I began by modelling three variations of rocks for Unity’s Shuriken system to spit out. I then textured the models in Substance Painter 2 to appear as if they had just emerged from the fiery depths of the Earth with the use of emission maps to make specific parts of the texture glow.

nice

In Unity 5.5 beta, I had three particle systems throw out each of the different meshes with their respective textures. To have the debris create an arc, I tweaked the initial velocity and gravitational strength. As well as this, I made use of the beta’s particle tail feature to create a hot trail that follows each bomb through the air to emphasis its path.

particles-in-action

The next step was to create the smoke that billows from the volcano’s mouth. Again, it was achieved through three separate particle systems; two smaller ones were used to create the orange-y smoke that would sit inside the volcano, whilst a single larger column made up the main body of the smoke. This latter system is affected by a windzone to create the mushrooming effect.

smoke-in-action

The third type of particle system was created to mimic pryoclastic flow. This is when hot lava escaping the volcano causes the surrounding snow to melt so fast that it evaporates. This was achieved using an edited version of the smoke system, with a different shader, and then set it to collide with the terrain to allow it to flow down the side of the volcano.

pyroclastic-flow

The fourth particle system is the snow flurry. My colleague suggested that we have snow being blown around to make the scene a little more dynamic, so I created a system that could be positioned on the top of peaks to create this effect. It is made up of very small, default particles followed by a white bolt shaped trail to create the appearance of streaming snow.

snow-flurry

And, in context…

snow-flurry-v2

In addition to the particle systems, I also created lava pools to further populate the scene. They’re a moving texture – programmed by my colleague – with a particle system to create the impression of steam gently rising from the surface.

lava-pool

Once the particle systems were completed, I set about modelling inactive volcanoes to further populate the chain using Unity’s terrain tools, and placing particles in the appropriate places. In addition to the smoke systems, the volcanoes also contain orange point lights to emulate the glow of lava.

top-down

Whilst the scene still requires some tweaking, it is very close to completion. I am going to optimize it by culling particle systems when they are a certain distance from the camera, and further adjusting the volcanoes lights. I have learnt a lot about Unity’s particle system, the way the engine handles textures, and using Substance Painter 2 to create highly detailed textures.

untitled-4