Jack Harrhy
Linkblog/2025/02/24

Spear Fish Box2D, ericw-tools, Raw WebGPU, Claude 3.7 Sonnet, TTF File Parsing, Skin Deep, Sokol Odin, Three.js Shading Language.

LaFlamme Studios - Spear Fishing with Box2D

spear-fish_1740865092674_0

Google’d for ‘Box2D fishing’, in relation to a game jam I’m currently working on, ran into this resource with some beautiful debug renderings of a ‘fish’ getting impaled.

Nice.


ericwa/ericw-tools - Quake/Hexen 2 Map compiling tools

ericw-tools-map_1740865186907_0

The goat of simple CLI tools to compile Quake .map files into beautifully lit .bsp’s

Screenshot_2025-02-26_at_11.26.50 PM_1740865226933_0

^ Using it for my game jam game, very basic early integration, but its coming together.


Raw WebGPU

An overview on how to write a WebGPU application. Learn what key data structures and types are needed to draw in WebGPU.

Quite the tome, many inline examples too.


Anthropic - Claude 3.7 Sonnet and Claude Code

New very good models from Anthropic, been using them through Cursor, they are goooood.

Screenshot_2025-02-07_at_3.26.19 PM_1738954582892_0


Tomasz Czajęcki - TTF File Parsing

Great overview TTF files, from their data structure, to rendering them to a HTML5 Cavnas.


Blendo Games - Skin Deep

Skin Deep is an immersive sim set in space where you’ll plot, sneak, and adapt on the fly. Coming April 30, 2025 to PC on Steam.

New Blendo Games dropping soon, with a demo out now!

idTech4 never looked so good…

I might actual consider streaming my play through of this game, the immense vibes Brendon squeezes out of games is fantastic.


floooh/sokol-odin - Odin bindings for the sokol headers

Sokol is cool, Odin is cool, Odin bindings for Sokol are epic.

I have been having a good time with SDL3 GPU, but I do intend at some point to give Sokol a go.


mrdoob/three.js - Three.js Shading Language

Extremely cool ‘shading language’ for Three.js, which honestly is more of a JavaScript amalgamation which lets stuff like this be possible:

const posY = uniform( 0 ); // it's possible use uniform( 'number' )

// or using event to be done automatically
// { object } will be the current rendering object
posY.onObjectUpdate( ( { object } ) => object.position.y );

material.colorNode = posY;

Very cool API.