abstract
auto
as
await
base
bool
break
byte
double
case
catch
char
class
constexpr
consteval
const
continue
decimal
decltype
default
delegate
delete
do
dynamic_cast
else
elseif
enum
event
extern
false
final
finally
fixed
float
for
foreach
goto
if
implicit
#include
int
interface
internal
is
inline
lock
long
namespace
new
null
nullptr
object
operator
out
override
params
private
protected
public
readonly
ref
return
reinterpret_cast
sealed
static
short
sizeof
static
string
static_assert
static_cast
struct
switch
this
template
throw
true
try
typedef
typename
typeof
uint
ulong
union
unsigned
unsafe
ushort
using
virtual
void
volatile
while
[]
{}
||
&&
!value
"Hello World"
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<section>
</section>
<main>
</main>
<html lang="en">
</html>
<footer>
</footer>
<header>
</header>
<nav>
</nav>
Liam Robinson

Welcome

I'm Liam Robinson, a developer with a decade of experience working with a variety of different languages, frameworks, and technologies.

This is my web portfolio.

Professional Work

These are projects I have worked on in my time working professionally as a C++ Developer at SoundChalk and as a Unity Developer at West Pier Studio.

Personal Projects

These are projects I have worked on in my own spare time, or as part of my coursework while studying my Games Progamming BSc and MSc at Goldsmiths.

Simpson Strong-Tie - Outdoor Living Solutions

Screenshot of the Simpson Strong-Tie Deck Planner Application

Produced by West Pier Studio for Simpson Strong-Tie, the Outdoor Living Solutions family of applications provide tools for deck, pergola and fence planning.

Try The Apps

All 3 apps are available via WebGL:

Additionally, Deck Planner is available for iPad

Technology

The OLS family of apps are built with the following technologies:

  • Unity Engine
  • .Net Core API with Entity Framework and Blazor
  • MySql Database
  • AWS S3 Cloud Storage

Data Pack System (DPS) – A C++17 Serialization Library

Data Pack System Logo

DPS is a header-only C++17 serialization library with no external dependencies. It is designed to:

  • Be fast (really fast)
  • Be non-invasive
  • Require the user to write as little code as possible
  • Provide full control of how data is formatted

Currently the library provides 3 formats:

  • Binary
  • Portable Binary
  • JSON

Portable Binary and JSON are good for saving to disk or network transfer. Binary isn’t portable between machines, but is lightning fast, making it good for quickly saving/loading states of objects in memory for quickly implementing undo/redo systems for example.

Source Code

Check out the source code here.

Getting Started

To get started using DataPackSystem do the following:

  1. Download the source code and ensure that the DataPackSystem folder is added to your compiler’s include path
  2. Include the header(s) from the Formats folder for the format(s) you want to serialize your data in
  3. Include the appropriate headers from the StandardLibrary folder if you want to serialize any standard library types
  4. Write Translator specializations for any of your own types you want to serialize
  5. Create a DataPack in your code with the format you want your data to be in and pack that data!

License

DPS uses the BSD license.

Documentation

For documentation, check out the examples in the Examples directory. They come with comments that explain the syntax and its usage. These are currently the main form of documentation for the library.

This Website

This portfolio website. Hosted via GitHub pages and built using Jekyll, Liquid, HTML, SCSS, and just a touch of JavaScript.

Source Code

Check out the source code here.

Sacrifices Must Be Made

Sacrifices Must Be Made is a game where you get to:

  • Play a cultist
  • Represent your malevolent deity in an endless tournament of the damned
  • Fight endless hordes of enemies
  • Loot
  • Upgrade your defences
  • Loot some more
  • Survive for as long as you can!
  • Die!
  • Do it all again!

Made with Unity Engine.

Play it!

Grab the latest build here.

See The Source Code

Take a look at the source code here.

Disclaimer

Please note, for legal reasons certain assets are omitted from the source code because they were purchased from the Unity asset store and cannot be redistributed. Because of this the game can not be built from the source code alone as the repo contains only my own work.

Shader Experiments

Shader Experiments is the result of me playing around with writing my own water shaders in Unity. The shader has the following features that are customizable by via a UI in the application:

  • Procedurally generated Gerstner Waves courtesy of Catlike Coding
  • "Shallow" tinting and "Deep" fog using the depth buffer
  • Planar reflections that are achieved using a copy of the main camera flipped across the reflection axis with a custom clipping plane, and then screen-space mapping the render onto the water’s surface with screen space normal distortions
  • Underwater refraction using a grab pass and screen space normals to shift the screen space UVs
  • Caustics using light space texture mapping and world normals grabbed from the depth buffer. Inspired by Alan Zucconi and Flogelz
  • Specular shine using combined surface and texture normals

Have a Poke Around With the Settings

Grab the latest build here.

See The Source Code

Take a look at the source code here.

Go Fetchie!

Go Fetchie! is a puzzle game based around one core mechanic: the player has a robot dog named Fetchie that will chase his ball. The player must use their abilities to control the ball and Fetchie in order to solve puzzles and challenges.

Built in Unreal Engine 4 using a combination of C++ and Blueprints.

Play It!

Grab the latest build here.

Source Code

For legal reasons I cannot share the entire project because it uses some purchased assets which cannot be redistributed.

However, you can download a .zip file of the C++ code behind the game here.

Games Dev Examples

A screenshot of the Games Dev Examples project running A screenshot of the Games Dev Examples project code

Games Dev Unity Examples is a repository full of code snippets, example scenes, and teaching materials for making games in Unity and C#.

Some examples are more code based and have large amounts of code comments accompanying them to explain them. Other examples that are more visual in nature (e.g. the post processing stack example) have slides to accompany them instead. Links to the slides are included in the Lecture Slide Links.txt file in the Assets folder.

Contents

The project includes examples for:

  • C# Collections (Arrays, Lists, HashSets, Dictionaries)
  • XML Code Documentation Comments
  • Code Regions
  • Unity Inspector Attributes
  • Structs, Classes, and Interfaces
  • Physics Ray/Spherecasting
    • Non-Allocating physics callbacks
  • Custom Camera and Rigidbody Character Controls with Character Animation:
    • Enums
    • Update vs FixedUpdate
    • Basic Euler and AngleAxis rotation using Quaternions
    • Vector Lerping
    • Input handling
    • Rigidbody Physics
    • The Unity Mecanim System
      • Blend trees
      • Transitions
    • The Animator Component and animation Scripting
    • Root Motion
  • ScriptableObjects, Audio, and Animation Events
    • Storing groups of assets in a reusable way using ScriptableObjects
    • OnTriggerEnter/Exit physics callbacks
    • The AudioSource component
    • Using animation events to trigger weapon hit and footstep sounds
  • Legacy Animation, Nav Mesh Agents
    • Playing basic animations using the legacy Animation Clip system
    • Basic chase player behaviour using nav mesh agents
    • Fake jumping using off mesh links
  • Graphics In Unity
    • PBR
    • The Standard Shader
    • Reflection Probes
    • Colour Spaces
    • The Post Processing Stack
  • Building Projects In Unity
    • Release vs Development builds
    • Scene Selection
    • Built App Icon
    • Splash Screen
    • IL2CPP vs Mono
    • Platform specific build requirements (e.g. app store size limits)
    • Methods of tweaking build size
    • Debugging and Profiling builds

Source Code

Check out the project here.

3D Assets

These are a series of 3D assets modelled, textured, and animated using Maya, ArmorPaint, and Blender for various coursework projects as part of my masters degree.

Download Them

You can find all the asset files here.

Contact Me

If you would like to contact me you can do so in the following ways: