Welcome to my game development blog!

View the archives or scroll down for the latest posts.

Vulkan Fluid Dynamics - Week 1

Vulkan Slide

Vulkan is the new hotness in graphics programming.

Above is the first slide when the Vulkan API was announced at GDC 2015. Clearly, compute is an important topic for Vulkan and graphics going forward. The term compute (also general programming on the graphics processing unit, or GPGPU) means to use the graphics card for general computations, not just rendering tasks. In the last decade, graphics cards have become more powerful than CPUs and have specialized to become extremely proficient at parallel processing. Tasks that can be parallelized can be computed quickly on the GPU and compute technology allows a programmer to do that.

I am starting a personal project to explore usage of compute shaders in Vulkan. One aspect of game development that can be effectively parallelized is particle systems. Each particle can be calculated in isolation. To add some complexity, I am going to be implementing a simple fluid dynamics algorithm to visualize the particles in an interesting way and add some computational tasks. The visualization will allow the user to toggle using compute on and off to see the performance benefits. I will be documenting my progress over the following weeks on this blog!

Continue Reading →

Making Asteroids in Easy68k Assembly

My first big programming assignment was to make a game in assembly in two weeks. The challenges of making an assembly game are pretty daunting: you basically need to build everything from the ground up. You have access to memory, registers, and trap commands for simple graphics and audio functions.

The game has collision detection, vector graphics, music, sound effects, scoring, and physics-based movement. You can find the source on GitHub here.


Continue Reading →

Growing a Procedural Tree

For our second RPP game, we wanted to make a game about practicing meditation. One of our ideas was to have a bonsai tree grow as the game is played, having it react according to the player’s performance. We thought it would be great feedback for the player and it could serve as the centerpiece for our visual stage.

tree growing

Continue Reading →

Making a Paint Splatter Effect in Adobe Animate (Flash)

In our two week Flash project titled The Perilous Paint Project, the player explores invisible worlds, using paint to reveal their surroundings. Our team brainstormed multiple methods to apply the paint: the artists could make splatter images that would be placed on top of the objects, or each object could have different states that corresponded to different levels of paint.

Ultimately, it was proposed that we could have a dynamically generated image that will generate a random splatter effect at the collision point whenever an object was hit. It took much more work to pull off, but the result was rather compelling - using the paint became one of the most fun parts of the game. In this article, I’ll go into how the effect was achieved.

paint splatter

Continue Reading →

Stage3D and AGAL Textures in Adobe Animate (Flash)

At FIEA, my first group project was an Adobe Animate (formerly known as Flash) game. To get myself acclimated with Flash development, I decided to do a little project before production started. I had read an awesome blog post that shows off Stage3D and AGAL (Adobe Graphics Assembly Language). Making something using Stage3D and AGAL seemed like a good way to get my feet wet with this new platform.

There is definitely a lack of resources on AGAL. At its core, it’s a shading language, and its output is similar to that of GLSL. Functionally, however, it acts as an assembly language, so there’s registers and op codes and all that other fun low-level stuff. As for Stage3D, it isn’t much different than using OpenGL, so if you’re familiar with that then you’ll be able to follow along without much issue.

Continue Reading →

DSP Time in Unity

I’ve used Unity for a long time now, but until I worked on Shapesong I had never had to worry about exact timing with audio. For example, it had never mattered that two samples played exactly simultaneously, or that an audio clip needed to end at an certain time.

In the Shapesong prototype there is a section that involves a player-directed song. At first, a solitary piano loop plays, but as the player progresses more layers of loops are added on top that build to a finale. It’s important that loops remain in sync, otherwise the time difference is distractingly noticable to the player, even if the difference is only a few ms. This led me to do research on audio-specific timing in Unity, and there are some interesting quirks with how Unity handles things that I wish I would have known going in.

Continue Reading →