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....
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....
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....
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....
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....
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....
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....
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....