Topotoy Labs
banner
topotoylabs.bsky.social
Topotoy Labs
@topotoylabs.bsky.social
I enjoy pain. That is why I code simulation engines.
My blog: http://brashandplucky.com
Pinned
Surfing a voxelized landscape (wrong gamma!). #gamedev #solodev #sdl
If you fly a plane while maintaining a constant compass heading, you'll trace a STRAIGHT line on a Mercator projection map, but your actual trajectory on the planet will SPIRAL into one of the poles.

#indiedev #gamedev #computergraphics #computationalgeometry #topology
October 23, 2025 at 5:52 AM
This is my spherical terrain streaming demo sourced with a large dataset (200MB: about 1px every 2km) diced into 1-file per region with LZ4 compression and a TOC for fast pull-a-tile-by-its-ID.

#indiedev #gamedev #computergraphics #computationalgeometry #topology
October 19, 2025 at 12:05 AM
I've extended my terrain streaming libraries to the sphere using HEALPix partitioning. Hysteresis radii for CPU/GPU load/activate, per-frame command budgets and sphere subdivision are all configurable.

#indiedev #gamedev #computergraphics #computationalgeometry #topology
October 17, 2025 at 5:27 AM
Playing a little bit more with my new HEALPix framework. I took this 27360x13680 lat-long map from NASA Scientific Visualization Studio.

#indiedev #gamedev #computergraphics #computationalgeometry #topology
October 12, 2025 at 4:11 AM
Just implemented HEALPix (Hierarchical Equal Area isoLatitude Pixelization) which is a very elegant way to subdivide the sphere:

1- Each cell divides into 4 smaller ones.
2- Every cell covers the same solid angle.
3- Cell centers lie on rings of constant latitude.

#indiedev #gamedev #geometry
October 10, 2025 at 2:12 AM
Just implemented metric-aware Delaunay Triangulation on the sphere 🟣 Metric-aware => Every triangle respects the spherical metric, not the Euclidean one. Algorithm described below.

#indiedev #gamedev #computergraphics #computationalgeometry #topology
October 7, 2025 at 2:58 AM
October 4, 2025 at 6:12 AM
Extended my topology libs to work on non-Euclidean domains (spherical, toroidal, etc.) by turning mesh edges into geodesics. Below: Bridson's Poisson disk sampling across different domains.

#indiedev #gamedev #computergraphics #computationalgeometry #topology
October 3, 2025 at 8:51 PM
This is a very rough demo of the two libraries I have been working on recently (CartoKit/TerraKit) for terrain generation and for terrain streaming. Now in 3D, using military perspective (tilted ortographic camera).

#procgen #gamedev #indiedev #procedural #terrain
September 29, 2025 at 5:06 PM
I made some upgrades to my terrain streaming system: 1- asymmetric chunks/regions 2- circular vs. rectangular hysteresis zones 3- a "simulation window" that keeps a rect around the camera loaded in a contiguous block (instead of per chunk) of GPU RAM

#procgen #terrain #streaming #gamedev #indiedev
September 28, 2025 at 12:30 AM
Procedural Island Generation Part III is here! 🏝️

Blending of multi-scale noise layers and mountain distance fields will will transform the paint map foundation into beautiful terrain.

Read the full post:

#procgen #gamedev #indiedev #procedural #terrain
Procedural Island Generation (III)
Adding multi-scale noise layers, mountain distance fields, and elevation blending to create detailed terrain from the paint map foundation.
brashandplucky.com
September 18, 2025 at 4:39 AM
Testing my topology (DCEL/half-edge) library a little bit. Some Conway operators on a polyhedron and Catmull-Clark SubDiv. Simple matcap rendering in the viewport.

#indiedev #gamedev #procgen #dcel #halfedge #computationalgeometry #topology
September 18, 2025 at 4:33 AM
My library TopoKit is essentially a DCEL/half-edge wrapper. I've now added support for face/edge/vertex attributes, and propagation of those during mesh operations.

#indiedev #gamedev #procgen #dcel #halfedge #computationalgeometry #topology
September 17, 2025 at 6:27 AM
Mountain sharpness parameter to control peak steepness in procedural terrain generation: Transforms gentle hills into dramatic alpine ridges 🏔️

(Part of my ongoing series on procedural island generation).

#gamedev #indiedev #procedural #terrain #procgen
September 16, 2025 at 3:26 AM
New blog post: "Procedural Island Generation (II)" - Building on our Delaunay/Voronoi mesh foundation, we now create a low resolution base elevation map that defines the overall island shape.

#gamedev #indiedev #procedural #terrain
Procedural Island Generation (II)
This is a coding blog where I post about the various projects that I am currently working on, both at work, or as an independent researcher. Most content here revolves around computer graphics and physics simulation.
brashandplucky.com
September 14, 2025 at 11:26 PM
In my infinite terrain streaming system I decoupled CPU load/unload (red) vs GPU activate/deactivate (blue) into two separate (intersecting) hysteresis zones. I also added a trait to support different zone shapes.

#gamedev #indiedev #terrainrendering #optimization #graphics
September 13, 2025 at 5:41 AM
New blog post: "Procedural Island Generation (I)" - Started a mini-series exploring terrain generation techniques inspired by the lovely mapgen4 project by @redblobgames.

brashandplucky.com/2025/09/07/p...

#gamedev #indiedev #procedural #terrain
Procedural Island Generation (I)
This is a coding blog where I post about the various projects that I am currently working on, both at work, or as an independent researcher. Most content here revolves around computer graphics and phy...
brashandplucky.com
September 10, 2025 at 11:09 PM
[ fBm + ( 1 - Chebyshev distance to the center (squared) ) times a time-changing constant ] remapped by a water-ground 1D gradient.

#gamedev #indiedev #procedural #terrain
September 10, 2025 at 2:15 AM
( 1 - Chebyshev distance to the center + fBm times a time-changing constant ) remapped by a water-ground 1D gradient.

#gamedev #indiedev #procedural #terrain
September 9, 2025 at 3:42 AM
I just finished my content-agnostic heavily-concurrent infinite-terrain system.

I can now inherit from a (procedural) TerrainProvider class and everything else will happen auto-magically.

#gamedev #indiedev #procedural #terrain #infinite
September 8, 2025 at 5:43 AM
Poisson disk sampling constrained to another Poisson disk sampling. Valid positions for the large dots are constrained to positions from the small dots.

#gamedev #indiedev #procedural #computationalgeometry #algorithms
September 6, 2025 at 9:27 PM
Voronoi diagrams: circumcenters vs. centroids.

1: Using tri circumcenters. Classic/pure, angles are more abrupt.

2: Using tri centroids instead. Smoother, bubble-like regions.

#proceduralgeneration #gamedev #computergraphics #voronoi #terraingeneration #indiedev
September 6, 2025 at 5:39 AM
Little viz of Bridson's algorithm (blue noise). Each point (red=active) tries to spawn 1 new active point in its (orange) [r..2r] annulus. Green=success, red X=failed attempts. When no valid spots remain after k tries, the point turns blue (inactive).

#geometry #gamedev #math #algorithms
September 4, 2025 at 11:08 PM
Little viz of Lloyd's relaxation: iteratively move random points to their Voronoi cell centroids, naturally organizing into a hex-dominant grid. Gray trails show each point's journey from chaos to order.

#voronoi #computationalgeometry #algorithms #math
September 4, 2025 at 1:57 AM
Porting my little topology-focused library to RUST at the moment.

#rust #rustlang #topology #programming #coding
September 3, 2025 at 3:43 AM