In my previous post about Tiny Fonts for Tiny Screens , I manually created the example images by hand in Aesprite. Creating those example images allowed me to explore the font designs, but it was incredibly labor intensive. I'm lucky to have finished without a repetitive strain injury. Worse yet, the fonts I created couldn't be easily exported for use on embedded projects without going through the…
While researching for other projects I've come across a number of different approaches to creating state machines in Rust. This post is an example of my favorite pattern for an event-driven state machine implementation that produces clear and maintainable code. The Pattern The pattern consists of a few components: A struct that acts as the machine itself, A state trait and several states An enum…
This documents my investigation into some recently missing data from our home weather station, and some lessons learned. The Missing Data I picked up this "MaxKon" branded weather station almost two years ago. It came with an outdoor unit that contained an anemometer, wind direction sensor, rainfall gauge, solar panel, and a pressure/temperature/humidity sensors. It also has an indoor unit that…
This is a gallery of images designed for the inexpensive SSD1306 OLED display modules that are common these days. There are a few different modules that share the SSD1306 driver. The most common variety is the 128x64 monochrome screen, but there are also narrow 123x32 versions, and a second version of the larger 128x64 screen that has a different color along the top 16 pixels. There are similar…
Building upon my ongoing 3D project by adding new vehicle types, quality of life improvements, and updated graphics and HUD styles. Note: This post expands on the work from several previous posts: Part 1 Part 2 Part 3 Adding a new vehicle Revisiting the vehicle type from my first 3D game , an eight-wheeled vehicle is added here. It has a style that is similar to the tank vehicle, and is also using…
In this update, we polish the "untitled tank game" from the previous few posts, and give it a proper title: Terminal Ballistics. To move the development along, several new features are added here which I have been planning to attempt ever since my first 3D game . Note: This post expands on the work from two previous posts: [ Part 1 , Part 2 ] Demo: The demo is available on Itch.io as Terminal…
Development on my untitled tank game continues in this post. This time, the first NPC vehicle AIs are created, and now vehicle and terrain models are created in Blender and imported into Godot. Note: This builds upon the work from the previous post . Basic Enemy AI Using the newly added ballistic solutions code (from the previous post), it's possible to have NPC tanks aim at, and then shoot at,…
The goal of this project is to take the experience I gained from my 3D Godot 3 vehicle prototype , and apply those lessons - along with my experience since then - towards making an improved version in Godot 4. I want to make something that looks better, feels better, is more fun, performs better, and solves some of the problems I was unable to solve last time. Specifically, I want to develop a…
This is a project about modeling some of the forces of land vehicles, in 2D. The mechanisms here are entirely physics-based with an attempt at replicating realistic modeling of weight, torque, friction, air resistance, etc. Note: This project was posted twice on the Godot subreddit: A physics-based 2D vehicle model with wheel forces, and now skidding! Experiments with RigidBody2D vehicles.…
Since putting together Littletown Journey , I've kept working on improved locomotive/railroad network and physics logic. This is an implementation I came up with that feels abstract enough to be useful in other people's projects, so I'd like to share it. How it works This is built on top of Path2D and PathFollower2D nodes. Tracks A developer working in Godot with this code, can add Track or…