p1xelcoder's profile picture. I'm making colored pixels for Double Fine Productions. Lead Programmer of Broken Age. Also worked on the remastered versions of Grim, DotT, FT and Monkey Island

Oliver Franzke

@p1xelcoder

I'm making colored pixels for Double Fine Productions. Lead Programmer of Broken Age. Also worked on the remastered versions of Grim, DotT, FT and Monkey Island

Pinned

If you want to know more about how Monkey Island, Grim Fandango or Broken Age were made then this is for you! Pls RT youtube.com/watch?v=38kpv_…

p1xelcoder's tweet card. From Monkey Island to Broken Age - A (very) short history of advent...

youtube.com

YouTube

From Monkey Island to Broken Age - A (very) short history of advent...


Normal polygonal meshes have a fixed topology. Roughly speaking this means the number of holes in an object can't change. Also the (explicit) surface of two meshes can't be blended smoothly into one. This is no problem for distance field morphs with implicit surfaces.


The morphs in Keeper use distance fields as an (implicit) surface representation, which makes it possible to control the distance at which the surface should lie. In other words, it’s easy to deflate or inflate objects, and meshes become easily ‘moldable’.


So what is a "distance-field"? It refers to a function that tells you, for every point in space, how far away the closest surface is and—by extension—in which direction it lies.


The experiments with surflets and voxels yielded some cool results, but it became quite obvious that distance fields were the way to go to represent the surface of morph objects. This allowed us to implement some visually neat effects like this twist transition.


This illustrates the full process of capturing the "Essence" of a mesh to be used in a morph. The distance field is retrieved and then the mesh is projected onto the cube-shaped "screen" in order to pack its surface properties into two cubemaps.


In order to use a mesh in a morph it has to be converted first, which is done by projecting its properties onto a cube. The results are then packed into two cubemaps. These maps in combination with the associated distance-field comprise the "Essence" of the mesh.


I'll talk more about morphs next week, but here is a prototype called "fractal guts" which didn't make it into the game. It's perfect for Halloween though!


Ha! I totally forgot that we did one more morph experiment using space filling spheres (thanks OpenVDB!). I was planning to compute a correspondence set, so that the spheres of the different shapes can move from one to another, but we moved on to another approach.


Between surflet and voxel morphs the former was more promising. A look behind the curtain... Each object is represented by a cube-quad to obj-surface mapping, which then makes it straight forward to move the associated surflet between the surface locations and blend properties.


Another experiment we tried was to use (axis and surface aligned) voxels rather than surflets. The obvious benefit is that there are no holes the surface, but the voxelized look didn't fit Keeper and it was expensive to render due to the voxel density needed to make this work.


In order to get to the morphs we have in Keeper now I first experimented with different approaches. Here is one of the early tests in which "surflets" are used to transform from one to another mesh. I still love the "wiggly paths" during the transition.


Another visual effect Lee, Jeremy Mitchell and I talked about a lot for Keeper was the Mandelbulb fractal. It didn't make it into the game in it's "pure" form, but the experiments I did were fun. :)


Oliver Franzke reposted

A perfect 100 from the @nytimes! Thank you so much! :) nytimes.com/2025/10/23/art…

DoubleFine's tweet image. A perfect 100 from the @nytimes! 
Thank you so much! :)

nytimes.com/2025/10/23/art…

I wrote a neat morph system for Keeper and hopefully I can share a bit more about it in the future. This particular morph was an experiment using symmetry that didn't make it into the game in the end.


Oliver Franzke reposted

The new Featured Shaders are: - "Tribute - Journey! " by Shakemayster: shadertoy.com/view/ldlcRf - "Klein Bottle (3D)" by lara: shadertoy.com/view/4ltSW8 - "[SIG15] EntryLevel" by dila: shadertoy.com/view/llXXzf - "Radiolarian #3" by tdhooper: shadertoy.com/view/4sdGzs


Oliver Franzke reposted

“Why do games take so long to make?” Games:

RobertAnim8er's tweet image. “Why do games take so long to make?”

Games:

Oliver Franzke reposted

The new Shader of the Week is 'Desert Passage II' by Shane : shadertoy.com/view/WdGcDt


Oliver Franzke reposted

IT'S FINALLY WORKING! raymarched volumetric fog in 2.5D #gamedev #indiegames


Loading...

Something went wrong.


Something went wrong.