A Walnut's Thoughts

Self taught developer. Interested in systems programming, video games, and epic fantasy books.

Bypassing the borrow checker - do ref -> ptr -> ref partial borrows cause UB?

Partial borrows across function boundaries don't really work in Rust. Unfortunately, that's kind of a major issue. There are workarounds, some are outlined here, but all of them come with pretty major drawbacks.

2024-08-09 · 30 min · 5894 words · Walnut356

Simulating Starcraft Part 2 - Data Wrangling

Oh how naive I was when I thought I'd be moving on to pathfinding and abilities. I had hoped some of the game's mechanics would function better in isolation, so I could gradually add complexity on top of the tracer bullet in a modular way. Unfortunately, that doesn't seem possible without a huge refactoring burden every time I add the next layer. It'll be more worth my time to properly architect it right now, and build it from the ground up with all of the systems it'll need.

2024-06-02 · 15 min · 2889 words · Walnut356

Simulating Starcraft Part 1 - Tracer Bullet

A while back, I made a small application meant to demonstrate some important principles about RTS design, namely that unit stats in a vacuum can be very misleading. As a quick example, stalkers have ~9.7 dps on paper. When fighting marines though, their effective DPS drops to ~8.4 (8.2 with combat shields) due to overkill. That's about the same DPS as a sentry. Unfortunately, there's only so much info that can be extracted from a Time To Kill calculation between two units.

2024-05-15 · 22 min · 4214 words · Walnut356

The space time complexity tradeoff

I encountered a neat example recently while solving Advent of Code 2015, day 6. The problem can be boiled down to "There is a 2D array of values. Given a range and instruction, apply the instruction to all values in that range. How many values are 'on' at the end?". There are only 2 possible states for each value: on and off, and only 3 possible instructions: on, off, and toggle. I won't focus too much on parsing the input or the structure of the algorithm here, I just want to investigate the hot loop which applies the instruction to each value.

2024-03-09 · 10 min · 1998 words · Walnut356

Protoss has always had a cost efficiency problem

2024-02-07 · 28 min · 5434 words · Walnut356