Unity3D


Mastering Unity 2019

Mastering Unity 2019 is a survey course of the various features of included in the 2019 and early 2020 features of Unity3d. It was published by packt publishing. To the right are some excerpts from the material.

A level being built. Placeholder objects and terrain mesh to test setups.

Levels Start as and Idea on paper

Level Planning

Level planning is a fundamental part of game design. The precise way in which a level is planned varies a lot depending on the end product. The major split in level design philosophies is the split between:

  • One-off art created in the 3D DCC, and

  • The reusable components which may be placed in the game editor.

Usually some amount of single use geometer is needed to fill out the emptiness of a level, then reusable components are layered on top so the entire level does not need to be made from scratch. Visual effects and triggers are created in the game editor, but placeholder hints may come from the art files.

Some game types such as arcade games (often these days mobile) make use of only or mostly reusable components, and thereby economize on art costs.

A level being built. Placeholder objects and terrain mesh to test setups.

Levels Start as and Idea on paper

Shader Programming

Shader programs execute on the graphics card. Although commonly referred to as a "shader" modern GPU programs also involve geometry transformation, instancing and general purpose linear algebra programs(GP-GPU). Judicious use of GPU programming alleviates load on the CPU and even allows for effects that would be impossible (in real time) using the available processing power of the CPU alone.

Examples of my work in shaders can be found on the following pages: (under construction)

  • Caustics: Light lensed through moving water is simulated by overlaying pre rendered textures on to a surface.

  • Fog Box: Fog is localized to a particular space by clever use of the depth and stencil buffers.

Visual Effects

Though many game engines have a wide variety of tools for designing visual effects, many can be enhanced by a little bit of clever programming. If you aren't sure whether you need a visual effects/ system programmer take a look at some demos below.

Often it is necessary to change from one mood to another as the player progresses through the game world, this cannot be achieved without programming as it requires careful manipulation of the global illumination settings. The mood of an area must be coordinated with the player's position and may also need to interact with a time of day system.

The transition shown is achieved by registering when the player enters a volumes, and then interpolating the GI between two presents according to the relative distance of the player from two points. The script must also intelligently determine from which end of the transition zone the player entered, so that the correct transition direction can be set.

On their own particle effects can only be emitted from simple solids, but with some clever code you can create realistic blobs. These fireflies have been achieved by setting the emitters to simulate in worldspace and randomly translating the emitters within a set volume over time.

Editor Tooling

Did you know that the Unity editor itself can be scripted? If you have repetitive tasks you need to automate, or procedural modifications such as randomly transformed geometry to create realistic natural formations, a programmer can add features to unity for doing those sorts of things.

Shaders and Technical Art

Unity has a variety of tools for creating visual effects, and not all of them are necessarily well documented. Having toyed with the engine for the better part of a decade I've learned some of the ins and outs of the more esoteric features and tuning options.

Workflow

Having managed quite a few programming programming courses often with several members I have a fair amount of familiarity with source control tools, chiefly git. I can not only use the basic functionality but can also perform administrative tasks such as undoing bad merges, tracing regressions and resolving conflicts.

Following specific workflows with Unity can also reduce iteration times and storage requirements, by appropriately dividing in engine editing tasks into non conflicting subunits.