Moin, Moin đź‘‹

Welcome to my blog about whatever I’m currently interested in.

What Disco Elysium Taught Me About Dialogue Trees

Introduction Recently, I started playing the fantastic 2019 video game Disco Elysium, and I was blown away by the sheer amount of dialogue, choices, dice rolls, and consequences. It made me think, “How do you write a dialogue tree like that?” My immediate first thought was SCUMM, or the Script Creation Utility for Maniac Mansion, a game engine developed by then Lucasfilm Games for, you guessed it, Maniac Mansion (1987). I remember hearing about it a few years ago and how you could create locations, items, and dialogue sequences without writing code....

July 3, 2024

Implementing a Merkle Tree in Python

Introduction In this article, we will implement a Merkle Tree in Python, a data structure used extensively in Blockchain technology and other systems requiring data integrity verification. By the end of this article, you will understand how Merkle Trees work, their benefits, what the Merkle Root is, and how to implement all of this in Python. The Merkle Tree A Merkle Tree is a binary hash tree that hashes a collection of data blocks so that any change in the original data results in entirely different values throughout the tree....

July 2, 2024

Bouncing DVD Logo

An attempt to simulate the “Bouncing DVD Logo” (aka “DVD Screensaver”) meme in Python with the pygame library. Recently, I’ve gotten more into Python’s pygame library during research regarding a new personal project I’ll be sharing here soon. That happened roughly simultaneously with my re-discovery of the amazing The Coding Train channel on YouTube. For the uninitiated, The Coding Train is a YouTube channel hosted by Daniel Shiffman, who tasks themselves with solving a so-called Coding Challenge using the p5....

February 11, 2022

Single Wrangle Challenge: Helix / Labs Spiral

Sometimes when I’m bored, waiting for renders or just have nothing better to do, I open an empty Houdini scene, put down a Detail Wrangle and see what I can create from scratch with just mathematics (and VEX of course). Some of the things I create the most are circles, waves and helices (plural of helix — yes, I had to look that up). After the implementation of the SideFX Labs tools, all of the sudden, there was a definitive helix node called Labs Spiral with a bunch of nifty parameters to play with....

March 23, 2021

VEX Ray Tracer #4: Blinn-Phong Shading

How I’ve been looking forward to this part. When I wrote this ray tracer for the first time, implementing the Blinn–Phong Reflection Model was one of my proudest achievements. Not because it’s complicated or anything (it’s actually pretty straightforward), but because it was the first time I translated a technical write-up and pseudo-code into something useful for my purpose. It was also the first time where I could’ve stopped and have a working product....

January 30, 2021

VEX Ray Tracer #3: Supersampling Anti-Aliasing

And we’re back. In the last part, we projected three teapots onto our plane and gathered the colour from the teapot’s Cd attribute. But what you probably noticed is that our objects have very jagged/pixelated edges. That is because every pixel sends only a single ray in a single direction and hitting a single point before it reports back. That’s where Supersampling comes into play. The general idea of supersampling or SSAA (Supersampling Anti-Aliasing) is to instead of using a single ray to gather scene data, using multiple with slightly different offsets and directions....

January 23, 2021

VEX Ray Tracer #2: Plane Projection

Now let’s get into it. I read in all three elements (plane, camera and scene) into the empty ray_tracer geometry. Make sure to choose the camOrigin Add SOP inside the camera object to only merge in a single point instead of the camera visualizer. Also, transform into the object for both the camOrigin and the plane since they probably will have object transforms. We are also adding point normals to the scene in case the come in on vertices or not at all....

January 17, 2021

VEX Ray Tracer #1: Initial Setup

No more procrastinating. After thinking about all the different ways to put this on the internet, I decided to start a blog, and this is my first blog post. In August 2019, I uploaded a video on my Vimeo channel, showcasing a ray tracer written in VEX inside SideFX’s Houdini. I’ve been meaning to put up some explanation, video tutorial, class, whatever you want to call it on how to write this thing....

January 17, 2021