Generic pixel-art face avatar

Hi, my name is Joe. I am an LA-based, 32 y/o lifelong coder.

This is my personalweb-- a self-hosted project gallery and blog. Enjoy!

My last hand-written project, a Rust-based, highly-extendable game engine. Inspired by Quake, moddable like Roblox, and scaled up like Minecraft.

Designed for realtime/secure MMO-scale experiences on browsers, desktop, and mobile.

Joe World is a horizontal slice built to demo gizmo, my boutique, Quake-sized engine designed for MMO scale experiences.

  • +4A custom, WASM-plugin-friendly ECS
    • A simple archetype-based ECS with an interface similar to Bevy's ECS
    • Uses a fixed set of archetypes known at compile time for simple/fast queries and iteration
    • Supports dynamically attached storages, to quickly load rooms, chunks, UIs, or services
    • A WASM-friendly API/data model, for WASM-based plugins to consume with low overhead
  • +3Hot-reloadable Rust game logic via WASM
    • The giz CLI tool wraps cargo to produce WASM-based packages
    • Packages bundle game logic and asset catalogues into a singular, standalone payload
    • Catalogued assets can be streamed from a simple webserver, CDN, or directly from disk
  • +2Reactive build system inspired by Bazel for hot reloading code and assets
    • Sandboxed, WASM-based build plugins can perform complex tasks e.g. lightmapping
    • Can publish asset-granular updates to the engine in realtime for hot reload
  • +4A custom reactive UI inspired by React, with immediate mode imgui-style painters
    • A React-inspired custom UI, powered by Dioxus's reconciler
    • A custom/simple bitmap-based renderer for text and fonts
    • Custom rendered widgets via simple painting callbacks
    • Flexbox/grid for layout via taffy
  • +2Asset streaming over the network, for both release builds and development
    • Priority preloading/per-package batching of critical metadata like image bounds/collision meshes to prevent client misprediction before assets are downloaded
    • Simple, HTTP-based caching/distribution can use basic webservers or scaled up CDNs for high throughput
  • +3Simple, highly portable WebGPU-based renderer inspired by Quake
    • Brush/lightmap-based renderer with a very simple lighting model, designed for simplicity/portability over all
    • Fast/simple rendering pipelines for world geometry and dynamic geometry similar to Source-era games
    • Ultimately a basic renderer designed to not bottleneck other parts of the engine design
  • +2Polished platform support for web and native
    • Great web support on Chrome/Safari, plus mobile versions. Growing pains on Firefox.
    • Intentionally portable design, with few dependencies (filesystem not even required, assets can be loaded into memory with simple asset ID-based callbacks)

The engine is designed in a way that is most similar to Minecraft and Quake, with a fun-to-use hot-reloading build system-- written pre-AI and currently going through an evolution post-AI.

I've been spending a lot of time working on my hobby language, which will be used for game logic and incrementally replace much of the Rust under the hood except platform libs.