Blog

Subscribe with RSS

Art rules from first principles, part 1: Perspective

There are many shorthands and rules of thumb one encounters when learning the fundamentals of representational art — vanishing points, warm-cool contrasts, grouping of values into light, midtone and shadow, etc. There are many good non-technical explanations of these ideas out there, but I wanted to dive deeper and investigate how they arise from the physics of light and geometry of space. In this first part we'll look at geometric interpretations of common perspective drawing methods.

Painting normal maps, and other Krita tips

I'm a big fan of using software effectively and optimizing my workflows, so over my years using Krita I've spent quite a bit of time digging into its features. In this post I want to talk about how I use this wonderful piece of software and highlight some not-so-obvious bits that have made a difference in my process. I'll do general painting first, hopefully in a way that is useful to beginners, and then indulge in some nerding out about normal maps and how to make them.

A decade of digital art

The oldest digital drawing I have on my computer turns ten years old today. This post is a self-indulgent trip down memory lane, looking back at landmark pieces and lessons learned throughout the years.

Game graphics: the journey so far

The majority of my recent game development work has revolved around graphics — both workflows for making them and technology for rendering them. Many ideas have been had and many scrapped along the way, and the journey certainly isn't over yet, but I think I'm moving towards something pretty unique and cool. This is a devlog-style post where I meander through some of the more noteworthy moments so far without going very deep into technical details (but providing technical sources where relevant).

Rounding collider corners

Back in 2022 I entirely rewrote one of the most complicated parts of Starframe, the collision detection system. A notable feature of the new system is the ability to give any shape rounded corners. I also wrote most of this post back then, but things happened and it was left unfinished. Here it is now, more than two years later. Better late than never I suppose.

Stuff I liked in 2024

In recent years I've made a habit of posting a list of my favorite heavy metal releases of the year on Mastodon. This year I decided to list more than just music and do it in a more permanent place here on my website. So here are some metal albums, books, and games I enjoyed in 2024.

Ten formative games

Inspired by recent discussions in the Eggplant Show Discord community, here's a list of ten video games. Not my favorite games (though many of them are that too), but ones that had a notable influence on who I am today.

Starframe devlog: Rope physics

Starframe's rope physics is the first piece of physics code I've written that I designed entirely myself. This is a short story of that design process and the challenges and solutions found along the way.

Starframe devlog: Solving Constraints in Physics

The Starframe physics solver has gone through a few iterations recently as my understanding of the problem and knowledge of available methods have grown. In this post I attempt to explain what constraints are and detail a few game-engine-friendly ways of solving them. I'll try to make this understandable to someone with approximately the level of knowledge I had before starting this: decent linear algebra and calculus skills and a tiny bit of physics knowledge.

Starframe devlog: Architecture

I've spent a large portion of the past two years writing and rewriting the basic structures that describe a game and its content in Starframe (formerly known as MoleEngine). These are some notes on what I've done so far and what I've learned from it.