My new game FeedVid Live is out! It's a horror puzzle game that mixes parser-based puzzle solving with real-time 3D graphics. Check it out in any browser (laptop/desktop preferred)! https://t.co/TGYpn9h8Fk #threejs#javascript#gamedev#reactjs#indiedev#horrorgames
FeedVid Live is getting a limited edition physical release as part of the Super Rare Mixtape: Horror Edition! The collection includes exclusive audio commentary from me and other game devs. Get yours here: https://t.co/1z1nDRKFH1
THE SUPER RARE MIXTAPE: HORROR EDITION IS NOW AVAILABLE 📼
The most packed Mixtape to date. With 30+ incredible games and 8 upcoming demos. You're guaranteed some scares, frights and thrills!
Get yours now 👇
https://t.co/h3jjsuK6zC 👻
Parser combinators are an alternative to parser generators / recursive descent parsers. They're easy to implement and can be both practical and fun to play around with. In this blog post, I show you how to implement them from scratch. https://t.co/QGoR9pNqgQ #javascript#compiler
My new game FeedVid Live is out! It's a horror puzzle game that mixes parser-based puzzle solving with real-time 3D graphics. Check it out in any browser (laptop/desktop preferred)! https://t.co/TGYpn9h8Fk #threejs#javascript#gamedev#reactjs#indiedev#horrorgames
ChatGPT is really good at roleplaying - all it needs is a short prompt describing a character. It even draws on its own internal knowledge of lore. I've collected some demos here to show off this ability: https://t.co/JZ2vLo7ctu #chatgpt#openai#gpt#ai#artificialintelligence
#Emscripten can compile SoX, a 38,000 line C program, directly from the project's official 2015 release with zero source changes. This instantly unlocks a variety of audio conversion operations for use in the browser. https://t.co/X3Pn1podbh #WASM
I just released a port of the survival rogue-like Cataclysm: Dark Days Ahead to the browser using #Emscripten and #WASM. Check it out: https://t.co/JqUo4ooOFI
I've compiled Codec 2 to #wasm using #emscripten so it can be run in the browser. You can use this to decode the tweet above. Be sure to match the encoder mode (700C) when decoding. https://t.co/yjf7thxfIn
Codec 2 is an open-source speech codec that can operate as low as 450 bits/sec. This is small enough that we can encode an audio message in a tweet using Base64 characters. #codec2#programming#signalprocessing
An old prototype from 2014. The concept was to have a turn-based game take place simultaneously across hex-tiled planets and hex-tiled space. Are there any games that have done something similar? #gamedev#unity3d
A more complete solution is to work in a Docker environment, which lets you more or less freeze the entire user-space of an OS. However, you have to deal with mounted volumes, which are frustratingly slow on macOS.
It sucks to revisit an old project and find it broken. We typically lock dependencies, but by default this doesn't lock runtimes (NodeJS, Ruby, etc). Newer runtimes can break code years later. I now use ASDF to lock runtime versions on a per-project basis. https://t.co/X95UAcyuC3
@donrmccurdy Faced this issue in a recent project. Nothing seems wrong until you see what the gamma correct version is supposed to look like. https://t.co/Odu5U9opWV
Turns out, FeedVid Live launched with incorrect gamma handling. 🤦 Check out the difference in light falloff and specular highlights. Make sure to implement gamma properly in your graphics projects! #threejs#gamedev#webgl#glsl
Turns out, FeedVid Live launched with incorrect gamma handling. 🤦 Check out the difference in light falloff and specular highlights. Make sure to implement gamma properly in your graphics projects! #threejs#gamedev#webgl#glsl
Why use a fixed timestep rather than run physics at display refresh rate? Different timesteps can change mechanics subtly. This effects speedrunning, replays, and networked multiplayer, and in the worst case can break level design. #gamedev#threejs#gamephysics#javascript
Marble Mouse is a physics-based browser game that supports high refresh rates (120Hz, 144Hz, etc). For gameplay consistency, physics games must use a fixed physics tick rate. I tick physics at 60hz and use linear interpolation to update objects. #threejs#gamedev#gamephysics
@stevedekorte IMO, the best option is to use something like Rapier, which is specifically designed to be serializable and deterministic. A possible hack might be to destroy/reinitialize the entire Bullet WASM module, and reload both sides of simulation from the same snapshot.
As far as I can tell, Bullet Physics / ammo.js seems to behave deterministically. This means you can easily replicate physics simulations across a network by synchronizing on inputs. #threejs#javascript#webrtc#peerjs
@stevedekorte If you are trying to serialize / restore state over network (rather than just synchronize on inputs from initial state), you'll likely run into problems w/ Bullet. Physics engines often have hidden state in solver, etc. You have to restore all that state.