My Job at Criterion Games

A short reel showing some of the projects I worked on at Criterion.

I loved my 4 years here. There was a huge amount of freedom to develop the tools and workflows that interested me. I got to constantly work with amazing artists, brilliant engineers, and smart TAs. It really deserved the best place to work award it received – zero crunch, many hackathons/ game jams, and an atmosphere prioritising fun and innovation.

The Frostbite engine was a bit of a roller coaster ride, and the editor was terrible and brilliant in its own ways. I loved the power it gave me to reshape how people worked within a couple of minutes of having the idea. It was a dream when we got to work with other engines though!

Star Wars was a huge passion for me as a kid – I spent my school summers rotoscoping lightsabers and reading fan-film forums. To get to work on some of the games was so exciting, in particular the PlayStation VR X-Wing experience – I watched gamers moved and exhilarated beyond words by the experience we had crafted in a few months.

tileable_resurgent_particles_mask.png

I felt like my powers in Houdini leveled up many times, from making simple models to approximate shadows, to creating entire new pipelines for real-time VFX, and distant mesh generation for Battlefield 5’s Battle Royale mode. I got to mess with evolutionary algorithms, shader code generation and real-time inter-software painting tech. Still, not a patch on the DICE guys’ robust building destruction work!

Here is a longer video showing some of the weird tools I made during my time there. Feel free to skip around as it’s a bit boring!

I hope to come back to Criterion at some point!

Advertisement
Privacy Settings

Procedural Fantasy Castle

from_unity1

I wanted to create a Hogwarts style castle in Houdini, with halls, walls, towers, bridges on a mountain top, to make any wizards inhabiting the place look more impressive.
I have not yet modelled the doors because I wanted the interiors to be walkable in a game engine so decided to simplify things. I have also not yet modelled interior stairs and rooms.
I had an idea of placing towers around what had already been placed. Put down a hall, and a houdini tool places towers around it. So I used a font sop based on the frame number to generate an initial shape to put towers around:
2019-09-06 18_05_23-D__hou_castle_castle_gen_02.hipnc - Houdini Apprentice Non-Commercial 17.5.243.png
These towers are then analysed to place smaller towers around them. Here is the geo around the towers to scatter new towers on:

2019-09-06 18_07_05-D__hou_castle_castle_gen_02.hipnc - Houdini Apprentice Non-Commercial 17.5.243.png

I created the towers based on a tube at the origin, then used CopyToPoints to put them in their places. The variations are done in a straightforward way – each tower is created in a foreach loop and randomly seeded on the iteration number. Towers can have 4 or 18 faces, which changes the look somewhat, as well as 2 types of roof. The door points are output with the tower for, e.g. placing doors in a game engine.

2019-09-06 18_14_54-D__hou_castle_castle_gen_02.hipnc - Houdini Apprentice Non-Commercial 17.5.243.png

Each tower has solid floors, at various heights for different effects if you walk around. Window and door “subtraction” geometry was instanced on rings around the tower, aligned to a face’s centre and booleaned out. The tower is made bottom-heavy using a bend modifier:

2019-09-06 18_21_56-D__hou_castle_castle_gen_02.hipnc - Houdini Apprentice Non-Commercial 17.5.243.png

I broke apart the basic tower to make a hall for the centre of the castle. And what hall is complete without a grand entrance staircase?

2019-09-06 18_02_22-D__hou_castle_castle_gen_02.hipnc - Houdini Apprentice Non-Commercial 17.5.243.png

The bases of the towers feed into the terrain generation – the terrain around them is flattened out. I also generate paths between each tower, using their doorways. The paths are used to colour the terrain as if hundreds of students tramped along them every day. 2019-09-06 17_54_12-D__hou_castle_castle_gen_02.hipnc - Houdini Apprentice Non-Commercial 17.5.243.png

Any doorways on upper levels have the chance to be connected with bridges. Bridges are limited in their slope to allow easy walking (not sheer rock climbing), so I clamp the bridge’s verticality to 3 metres and generate a spiral staircase on the bridge to the high door.2019-09-06 17_59_27-D__hou_castle_castle_gen_02.hipnc - Houdini Apprentice Non-Commercial 17.5.243.png

Bridges have scaffolding, to hold them up (generated with connect adjacent points), and railings – only on one side though: these magical castles lack some of the health and safety standards of modern buildings!
I generated walls by taking some of the points generated by the buildings, and using Triangulate2D to make them into a polygon. I clean it up using divide and polydoctor, and converting it into lines. I use pathfinding on the terrain to find the best paths from point to point, playing with the cost of changing angle to make it more grid-like. Then smooth it out and sweep some geo along it.
Here is a small bug caused by the paths between building doors being created before the walls, so goes through the wall. I could add another entrance to allow the path, or change the way the paths are generated.2019-09-06 19_11_45-D__hou_castle_castle_gen_02.hipnc - Houdini Apprentice Non-Commercial 17.5.243.png

The lights are generated from the door points, as well as just lazily scattered on a peaked version of the tower geometry. I used an object level Instance to copy point lights (was about to write some messy python but the docs came to the rescue). I added some fog by rasterising the door points into a low res volume. I had hoped these would work better in the viewport but ah well!2019-09-06 18_59_11-D__hou_castle_castle_gen_02.hipnc - Houdini Apprentice Non-Commercial 17.5.243.pngI hope you enjoyed this little breakdown!

The top image is from Unity, the lower one was rendered with Houdini before I textured the towers. I think I prefer the top one!

render3_edit.png

Vampire in the Village (Ludum Dare 33)

Wow, it’s been over a year since I posted anything. I can’t believe I haven’t done a game jam outside EA for that long!

Here’s my entry for the current LD 48 hour competition, the theme being “You are the monster”. No sleep lost which is always nice!

Ludum Dare link

Web build

All other platforms and source code

thumb

Vampire in the Village – as a stranger to the community, you must avoid causing suspicion while maintaining your health with a drop or two of blood. Gossip is your enemy, but a tactical bite can shut up the worst blabbermouth.

Controls are:
– Right-click to move and turn
– Left-click to pan camera
– Q to Bite a victim
– W to Charm the nearby villagers
– E to Glide faster than usual
– Space to re-centre camera

Townspeople have health and suspicion, which contributes to the collective town’s suspicion level. Reach the limit and the game will end. Charm can be used to remove some suspicion. When you get too hungry, your health will drop and you may die. Bite people to remain alive and satiate the hunger. Don’t move while biting or you won’t get the benefits! Biting causes quite a commotion, and should not be attempted in a crowd!

I’d love to know how you find the game, and how long you could last! Maybe someone will even kill the whole village! Comments welcome 🙂

screen1

screen2

screen3

screen4

Impermanence Major Project Breakdown

Screen1

I finished my Final Major Project yesterday, after a few months of hard work! It’s a first-person puzzle platformer game called Impermanence, where you lead a character through a purgatory world full of souls. You have lights you can shine on normally invisible objects to make them solid. We intended to create complex story arcs for the game, depending on who you were leading and if it was past or future.Screen2

Screen3

I worked with a great team of three artists from the Bournemouth Computer Animation course (Zack Goodrich, Jamie Bell, Kodie Williams), and a fantastic sound designer/ composer Billy Ross. Thalia was voiced by Kristyn Mass. I implemented their work and did all the programming in Unity, made FX, prop assets, lit the level, helped design the game, helped write dialogue and made some sound effects.

Currently I’d like to fix lots of things and add a trailer, but you can see my contribution breakdown for the game as it was handed in:

Continue reading

Group Programming Project – Fire/ Crowd Sim

One of our projects in 3rd year is a C++ group programming project. This forces us to get better at working together with Agile software development methods and merging code using source control.
fireSimScreen01

Our group chose to do a crowd simulation running out of a burning building. You create the building at the start, add walls, doors, agents, an exit and place for the fire to start burning, then the simulation starts. The fire spreads and gets higher, producing smoke, and agents run from it towards the exit. They die if they get too hot. Fire can be put out using the fire engine’s hose, controlled by clicking and holding where you want to aim, but it moves very slowly, providing some challenge to put out the fire where it is most needed. Points are scored for agents that successfully get out.
Continue reading

Realtime Procedural Soundscape – Innovations Project

This project allowed me to research how to go about programming audio and DSP techniques, a field that I have not really looked into before but is so complicated I don’t think I’ll revisit it lightly!

Here’s the final video making of and software artifact:

I used OnAudioFilterRead, a Unity function that allows access to the audio buffer, to generate procedural audio. I explored three primary methods of synthesis: additive, subtractive and granular, although I feel I haven’t scratched the surface of any of them! The hardest thing was organising all the numbers that affect a complex sound; I can see why visual languages such as Pd are useful.

Here’s a detailed report on the process if you’re interested, including some of the code I wrote:

https://www.dropbox.com/s/j3sfbimcfbr5qql/Exploring%20Procedural%20Sound.pdf