I just uploaded a public version of a talk I wrote for a client on strategies for reducing input latency: On a related note, I’ll be speaking about market research at PIGCon next month! If you enjoyed It’s Not Survivorship Bias , this will be a deeper dive into those topics. Read more...
Text Version Are you in a linear space? YES: Congratulations, things are easy and fast! Task Complete. No: GOTO 2. Can you easily get into one? YES: GOTO 1. NO: GOTO 3. Can you pretend the space is linear? YES: GOTO 1. NO: Zoom in on the graph. GOTO 3. Following these steps results in apparent black magic such as replacing inverse square roots with -0.5*x + 1.5 , or replacing the quaternion…
Many programmers consider Vulkan to be overly complex–maybe not even worth engaging with as an indie. It’s easy to see why people feel this way. If this is how you view Vulkan or modern graphics APIs in general, the goal of this talk is to change your mind. Read more...
When you think Microsoft you probably don’t think sense of humor. And yet, I’m convinced that Microsoft is going to do a very specific very funny thing within our lifetimes. In 2017 I predicted that most programmers would lose their employer employee bargaining power in the next 15-25 years. This was a pretty controversial take at the time, and I never wrote about it publicly, so it’s hard to…
I recently helped Tuple solve an interesting problem. They’re working on a Linux version of their pair programming tool, and they want to make it a fully static executable so that they can ship the same build everywhere. Alright no big deal, just link any dependencies statically and use musl . Easy, right? Unfortunately, it’s not quite that easy. Tuple needs to talk to PipeWire for screen capture,…
Are you shipping textures to players as PNGs? The goal of this post is to convince you that this is suboptimal, and walk you through a better approach. I’ll also share my implementation of the suggested approach, but if you’d rather do it yourself I’ll provide you with the information you need to get started. If you’re using a game engine, it is almost certainly doing what this post suggests…
Conference Site Okay, not literally staying inside. Every year Chris Zukowski puts on an online conference called Staying Inside about marketing indie games. I technically watched some of the recordings while outside because the weather’s been great in Portland, but What I Learned From Watching Staying Inside While Occasionally Technically Outside Because The Weather’s Been Great in Portland was…
I’m writing a new game engine in Zig , and I’m open sourcing each module as I write it. Today I released the beta version of my entity component system ZCS , I’ll consider it a beta until I’ve shipped my next Steam game using it. You can find the documentation here . I’ve written a number of ECSs in the past including the one used by Magic Poser . Going through this process a few times has given…
Lerp, or linear interpolation , is a convenient way to animate stuff in games without having to store much state: const position = lerp ( start , end , time ) ; This will move position linearly from start to end as time moves from 0 to 1 . Unfortunately, linear motion often appears robotic and unnatural. In fact–even a cartoony robot should overshoot and rattle a bit, right? Thankfully there’s an…
Since shipping Way of Rhea last year I’ve been hard at work on game two, but I haven’t been writing as much as I’d like. Every time I sit down to write a blog post in Jekyll, my Ruby dependencies are somehow broken again. Any time spent trying to sort this out feels like time that could be better spent elsewhere. As of today, I’m saying goodbye to Ruby! This site is now powered by Zine , a static…
I recently released Way of Rhea , a puzzle game that I’ve been working on in Rust since 2018. If you like games like Braid, Talos Principle, or Portal you’d probably enjoy it: After launch I posted an AMA on r/rust_gamedev , and people asked a lot of great questions! This write up contains curated highlights from the AMA, with some additional editing for clarity. Read more...
Hey everyone–thanks so much for a great launch day. After having worked on this game for so long, it’s an amazing feeling seeing so many folks enjoy it. :) We hit 10 reviews on day 1, and at the time of writing are at 24 positive reviews: My new goal is to get to 50 reviews so we can be labeled “Very Positive.” I’m not going to share Steam stats today, but I can tell you that getting 10 reviews…
A heartfelt thank you to everyone who’s helped make this happen in any way, this is the culmination of years of hard work–I don’t even wanna say how many years it’s been here, if you know you know. As of now, Way of Rhea is out on Steam! I hope you all enjoy playing it as much as I enjoyed making it. If you want to support me, the best thing you can do is purchase a copy of the game, and then…
Way of Rhea is coming to Steam TOMORROW ! This blog series walks through some of the mechanics featured in the game. Be warned: mild spoilers ahead! This post covers The End Game. For many players, the biomes up until this point will be sufficiently challenging, and some players may be happy to solve most of those puzzles and stop. However for avid puzzle gamers, everything we’ve seen so far is…
Way of Rhea is coming to Steam in 2 days ! This blog series walks through some of the mechanics featured in the game. Be warned: mild spoilers ahead! This post covers The Professor’s Biome. The professor is kind of a jerk. This area introduces The Professor, and a new way to change colors using staves. Read more...
Way of Rhea is coming to Steam in 3 days! This blog series walks through some of the mechanics featured in the game. Be warned: mild spoilers ahead! This post covers Rhea’s Biome. This area introduces Rhea, and color circuits. Read more...
Way of Rhea is coming to Steam in 4 days! This blog series walks through some of the mechanics featured in the game. Be warned: mild spoilers ahead! This post covers The Overworld. Read more...
Way of Rhea is coming to Steam in 5 days! This blog series walks through some of the mechanics featured in the game. Be warned: mild spoilers ahead! This post covers the second area in the game, Snow Crab’s Biome. Hermie got lost in the Ice Caves trying to help his dad, you need to save him! This area introduces Snow Crab, and how you can use his behavior patterns to solve puzzles. Read more...
In celebration of Way of Rhea releasing on Steam in 6 days, I’m making a post a day about a different aspect of the game. Let’s look at the first area of the game: Shrew’s Biome. Be warned–this blog series features mild spoilers! Shrew is your excitable friend who’s very invested in you solving the forest puzzles tonight for some reason. Read more...
Today I’m excited to announce: Way of Rhea is coming to Steam on May 20th, 2024! I want to thank everyone who’ve been patiently waiting for the game to come out–your support means a lot. If you’re excited for the game, the best way to help is: Wishlist Way of Rhea on Steam Share the release date trailer with people, communities, or influencers that enjoy puzzle games I can’t wait for everyone to…
Exciting news–we’re starting the closed beta of Way of Rhea! I’m going to be running it through our Discord . I’m only adding a couple people at a time so that I have time to address feedback between participants–if you want me to add you to the list, ping me there! v0.1.0 Release Notes All levels now have unique music Marked areas navigable by crabs with crystals Improved speed controls, speed…
An IMGUI. Sometimes, you just want some unique bits to use as an ID. Maybe you’re working with an immediate mode GUI , or need to generate IDs for cancellable sounds. In many cases you could technically get away with manually enumerating the various unique IDs in a header somewhere, but this is very inconvenient–especially in the case of IMGUIs: if you do this, every time you add or remove a UI…
If there’s one thing I’ve learned from 29 years of internet, it’s not to reply to YouTube comments. Let’s do it anyway! I gave a talk at Software You Can Love ( SYCL ) titled It’s Not About The Technology - Game Engines are Art Tools. The YouTube recording premiered on Monday, and there was a lot of high quality discussion in the comments. Read more...
A game I do some programming for, LUCID, just went live with its Kickstarter ! I’m sure Eric would appreciate your support. Don’t worry—I’m still hard at work on Way of Rhea—I typically have a few projects in the oven at a time. :) Read more...
In June, I gave a talk at Software You Can Love titled It’s Not About The Technology - Game Engines are Art Tools . The intended audience was systems programmers, but there are lessons here for people evaluating off the shelf systems as well. This is a part two to my talk from Handmade Seattle last year, It’s Not Survivorship Bias - On Successful Software Endeavors . Please note that I’m playing a…
Recent events have a lot of studios thinking about their choice of game engine , and at first glance, options appear to be limited. But things don’t have to be this way. For most studios, the optimal short term strategy is to wait and see if Unity is forced to back down. Retroactively altering the engine license for shipped games certainly doesn’t sound legal. While waiting it out may be pragmatic…
My puzzle game Way of Rhea now runs natively on Linux, and Steam Deck! This is in addition to the existing Windows support. The new demo also has some quality of life improvements–namely the ability to pause and fast-forward time. You can give the free demo a try here , if you run into any issues please let me know . :) Please note that if you’ve ever run the game through Proton, Steam will…
Posting this a little late, but I had a great time at GDC this year! I got to catch up with a lot of people I don’t get to see very often, and meet a lot of new folks. On top of that, a member of GUMBO won the IGF Grand Prize, and the Nuovo award, with his game Betrayal At Club Low . You should play it–Cosmo makes great games, and you don’t have to take my word for it this time what with the whole…
Hey everyone! I recently gave a talk at Handmade Seattle titled It’s Not Survivorship Bias - On Successful Software Endeavours on why some software projects find an audience and others don’t, with a focus on independent games. I’m working on converting this talk into a blog post, in the meantime here are the recordings & slides! Talk Annotations @ The Handmade Guide Q&A Annotations @ The Handmade…
original: https://www.publicdomainpictures.net/en/view-image.php?image=197252&picture=speed-limit-45 Normally, to make your software go faster, it has to do less work. This usually involves improving your algorithms, skipping work the user won’t see, factoring your target hardware into the design process , or modifying your game’s content. We’re not talking about any of that today. This post is a…
Hey Mason could you explain to me a safe way to use github with multiple users for a Unity project? I know a little about github, and I’ve set up the project with the Brackeys’ tutorial. That all went great. I even have the other people pulling the project onto their machines successfully. And I can successfully do a push from mine. My concern is what if they make changes, and want to push. Do I…
So. Up until last week, Way of Rhea did not have a crash reporter. This is kind of a problem! We’re a small, self-funded team. Our initial reviews could have a big impact on sales. The last thing we need is for an easily fixable crash to mess up our day one reviews! I’ve tested the various aspects of the game on a large variety of setups , but there’s always a configuration you’ve yet to test.…
Fullscreen exclusive is a real thing your computer can decide to grant a window, but, as of yet I haven’t been able to find a single game where the fullscreen exclusive vs borderless window settings consistently do what you’d expect them to. If you’re an expert in this topic and believe this post is incorrect in any way, definitely email me or DM me on Twitter and I’ll issue a correction! If…
This morning, I decided it was long overdue that Way of Rhea get its own icon. I believe that if you’re building a project in Visual Studio there’s a UI through which you can change your exe’s icon–but I’m not a Visual Studio user. It took me quite a while to figure out how to set an exe’s icon from the command line, so I figured I’d document what I learned here in the hopes of saving someone else…
I recently attended the Steam Q&A hosted by GamePlay Space , and I took a bunch of notes for myself. A few friends asked about the event, so I figured I’d just upload my notes somewhere I can share. If you’d prefer to read a summary over the raw notes, Chris Zukowski put together some takeaways in his article “What does Valve say you should do to sell your game on Steam?” , and Simon Carless wrote…
With Santa Cruz officially in lockdown due to COVID-19, I’ve been at home a lot working on Way of Rhea . Since I’m left without any excuse for not posting, here’s a neat proof I happened across while working on some new puzzles. :) Read more...
I posted this poll on Twitter few weeks ago: Entity systems won by a long shot, so that’s what I’m going to be writing about today. In particular, I'm going to outline the process that lead me to Way of Rhea 's current entity system. Way of Rhea is being built in a custom engine and scripting language written in Rust , but the ideas described should still be applicable elsewhere. Hopefully this…
These past two weeks I have been drawing inspiration from other side scroller games in order to develop a style unique to [Way of Rhea] ! I have found Braid to be a particularly good source of guidance because it is a successful game with an inspiring art style. The art for Braid is both as encapsulating as it is functional. Additionally, this is the first serious game I’ve worked on, so it helps…
Stack Based API The first API I came across for talking to a scripting language from engine code was Lua’s stack based C API. Here’s hello world executed in Lua, from a C program: lua_getglobal ( ctx , "print" ) ; lua_pushstring ( ctx , "Hello, World!" ) ; lua_call ( ctx , 1 , 0 ) ; Let’s break that down. First, we push the function we want to call onto the stack: lua_getglobal ( ctx , "print" ) ;…
Artists Alley is a segment which provides a behind the scenes glance into the artistic process for [Way of Rhea (WoR)] . This segment is essentially a journal that helps me keep organized and focused. Additionally, I hope these updates will provide insight to other newbie gaming artists, game developers who are working with artists, and curious individuals. That said, I am beyond excited about…