Development blog
Articles about TeamSpec and its development process: networking, physics, rendering, and the engine changes underneath.
Latest · RenderingStacked Shaders in GodotHow TeamSpec stacks small shaders on top of any material in Godot: one compiled variant per material with every stacked shader behind a per-object bit, and what TeamSpec uses them for.Read the article
In this article
- Introduction
- The problem: Godot thinks in materials
- How I used to do it
- What I wanted instead
- Compile once per material, switch per object
- How one shader gets inside another
- EngineRunning TeamSpec's Integrated Server on Its Own ThreadHow TeamSpec's listen-host server moved off the main thread and onto a secondary SceneTree, the engine modifications it took, what gets shared between the trees, and the threading bugs that showed up along the way.
- NetworkingTeamSpec's Networking ArchitectureAn overview of TeamSpec's networking architecture: why MultiplayerSynchronizer and is_server() checks aren't enough, the server and client copies of every character, snapshots, input commands, prediction, lag compensation, projectiles, and how the server's per-tick work got fast enough.
- PhysicsThe Long Journey of Picking a Character Collision ShapeThe story of how TeamSpec's character collision shape evolved from a capsule to a cylinder to a box to a custom cylinder trace to the 16-sided convex polygon hull I eventually landed on. Updated July 2026: the hull survived, and the collision test underneath it got replaced with swept traces.
- NetworkingA Word on Networking in TeamSpecThis article talks about the challenges I am encountering and have overcome in TeamSpec's Net Code.
- PhysicsAdvanced Character Controller PhysicsThis paper is about the theory behind implementing a comprehensive, multi purpose, and low level character controller. It is considered low level because all it needs from a physics engine is a collision detection algorithm that reports collision normals. I will be using Godot 4's 'move_and_collide()' function, a method native to the PhysicsBody3D class. Knowledge of vector algebra is required to understand this paper.