Maruk: Shipwrecked
This was our second game project, a colorful platformer where you play as a drunken pirate Frog stranded out at sea trying to get back home.
A Hat in Time was our gameplay reference and Caravan Sandwitch was our Art Style reference game.
For this project I focused on effects, clouds and Houdini tools.
The whirlpool was a really fun collaborative effort with Markus Norén and Tiger Tjellsen our level designer.
I created the whirpool geometry, UV’s and additional meshes which played nicely with Markus’s water shader.
creating whirlpool mesh and UV’s
testing UV scrolling in houdini
The water shader created foam and depth fade when meshes were close to the surface so I made some noisy tubes and debris which were placed inside the whirlpool to break up the tiling.
The meshes are rotated using the Visual Scripting system developed by Jonas Anders.
debris and additional whirlpool meshes.
The lighting was created by using l-systems to generate a few curves, then I used a carve node to animate them.
I brought the geometry into Karma where I created an emissive material and some volume to scatter the light and create some color bleeding.
Those renders then went into COPs for final processing, to make them look more stylized and cartoony. As well as dilating the thunderbolt at the time of impact. Those were then made into flipbooks.
curves
geometry
Karma renders
COPs output
I created the clouds after being inspired by Simon Verstraete’s video on creating clouds for games.
I drew curves which I then resampled, turned the points into volumes and then meshed and smoothed them to get the final geometry.
I then lit the clouds using red, green and blue lights for highlights, midtones and shadows.
Then I rendered out the final texture in Mantra.
Then I created a HLSL pixel shader with some help from Christian Le.
The shader is controllable inside Unreal Engine and is fed color values from custom value vector parameters.
Since our culling distance was quite short I used our Visual Scripting System to attach the clouds to the player character and slowly rotate them around his position.
There were a few scripts for different speed variations.
For the tornado I scattered bent planes onto a “tornado” shape, and oriented the point normals to avoid the planes being perpendicular to the player line of sight.
I also created new cloud textures for it.
Then in engine I used our Visual Scripting system to rotate them in place.
Rock Generator
This was the most fun and the most challenging tool I worked on.
The generator takes in an input mesh from the world and scatters smaller shapes inside of it in a loop, every iteration in the loop changes the size of the input mesh to create stepping on the rocks. The final tool had a switch for either volume or geometry meshing.
There are controls for size variation, rotational axis blending, final output polycount, UV’s, grass assignment and collision hull counts/accuracy.
As well as some preview modes to speed up the work.
apologies for the bad gif, I did not have time to make a better walkthrough.
Cliff meshes generated with the tool, showing the different smoothing options to fit different needs/environments.
There were a lot of challenges getting this tool to work with our engine:
Our artists exported collisions using Collections in Blender so I had to mimic that process in Houdini.
Getting Houdini Engine up and running on the Level Designers and Graphic Artists workstations, and creating documentation for the tool took some time.
Performance optimizations to make the tool faster on other lower end PC’s, fixing bugs and issues was really satisfying.
Behemoth Studio:
Graphical Artists:
Dante Norling Eklöf
Oliver Andersson
Oliver Lincke
Linus Bergström
Technical Artists:
Markus Norén
Nora Kemphe
Marinó Fannar Bjarnason
Level Designers:
Nom Köhler
Love Lustig
Tiger Tjellesen
Sound:
Kimberly Palsäter