X3JS (@X3JS_app) header
X3JS (@X3JS_app) profile picture

Three.js game engine | 80%

Joined June 2024
Photo by X3JS (@X3JS_app)Photo by X3JS (@X3JS_app)Photo by X3JS (@X3JS_app)Photo by X3JS (@X3JS_app)Photo by X3JS (@X3JS_app)Photo by X3JS (@X3JS_app)Photo by X3JS (@X3JS_app)Photo by X3JS (@X3JS_app)Photo by X3JS (@X3JS_app)
X3JS retweeted
I've been building on #threejs since 2015. Back then there was no InstancedMesh, no BatchedMesh. Most of the tools we take for granted today didn't exist. In 2017, while developing Jamir, I started building my own game engine on top of it. I've spent the years since profiling and optimizing that engine, often chasing performance problems line by line. That engine became X3JS. After all this time, the hardest part is still how deeply everything is connected. Even the best AI models today can make a change that looks completely correct, and quietly break something three systems away. An engine like this doesn't forgive that. So for this test I didn't want a synthetic benchmark. I wanted a real, AAA-looking game scene: cinematics, dialogue, characters, terrain, weather, a boss fight. The gameplay, the cinematics, the MIDI music, the music and sound selections, the animation choices: all of it was produced by AI through X3JS's MCP tools. Camera work, dialogue, voice casting, triggers, enemy behavior. Everything in the scene comes from the X3JS asset library and when X3JS releases, users will be able to use all of these assets freely in their own games. The video shows the exact same scene, side by side: - GTX 960M, a 2015 laptop GPU - RTX 4070, a desktop GPU Two separate gameplay runs never line up perfectly, so I made a few cuts to keep the cinematics in sync between the two sides. The scene, the settings, and the cinematics themselves are identical. The GTX 960M is still one of my favorite machines to test on and i am lucky to have that. If a heavy scene runs well there, the optimization work is real, not a number on a slide. And X3JS contributors; Terrain materials: @polyhaven Sound archive and AI meta: @selektaudio
7
14
216
14,102
Got new friends. 2015 · GTX 960M · 4GB VRAM 30-35 FPS #threejs
2
4
203
A beautiful sunset.. 2015 · GTX 960M · 4GB VRAM 45-55 FPS #threejs
2
5
228
Created in 18-20 minutes with X3JS + @claudeai Opus MCP Testing in 2015 · GTX 960M · 4GB VRAM Between 45-50 FPS and needs more optimization. Models: X3JS Library #threejs #gamedev
1
9
665
RTX 4070 · 10,000 skinned meshes #threejs #webgpu
1
5
798
Editor performance should stay as close as possible to gameplay performance, so creators don’t get frustrated while building. Making that happen doubles the work behind X3JS, but it’s worth it. 1000 skinned meshes, around 55,000 triangles each, with 6 different PBR materials, directly editable in the browser editor. Tested on: 2015 Asus laptop · GTX 960M · 4GB VRAM #threejs #webgpu #gamedev
1
1
10
581
One stands. Other 531 dance. 27M triangles · 21-23 FPS · Browser 2015 · GTX 960M · 4GB VRAM #threejs #webgpu
1
2
22
2,677
Phase 1 done on the #threejs TSL - GPU light system in X3JS. Lights alone could take at least 20 phases of optimization. Stopping around 7-8 and moving on.
1
1
15
1,631
Jamir's light system is about 40% in X3JS. CPU before, GPU now. One storage buffer and #threejs TSL. 100+ PointLights in the same scene, no extra optimizations yet. Going for 1000 tomorrow.
2
10
607
Jamir's Game Engine fully integrated. X3JS GPU pipeline v1 -> Done. Editor integrated. Next: v2 CPU -> GPU Compute, CPU off the matrix loop. v3 Deeper #threejs TSL + custom compute kernels.
1
11
849
Most of the things are completed. Fun part has arrived. Jamir's 8 years old #threejs game engine (WebGL) is being ported in X3JS Editor, Debug and Production and being remastered with WebGPU only.
2
11
649
I now feel it’s the right time to start @X3JS_app the engine that will power everything I’ve been building for the past 2.5 years. I'll be sharing progress soon..
2
2
7
958
Turning 38 tomorrow. It took me almost 9 years to capture a video with 20 players like this without the game freezing, a server error or some stupid issue ruining the moment. I spent so long building the game engine on top of #threejs that I forgot what it feels like to be a real player and made plenty of mistakes that made old players sad. Sorry for that.. Matches now go from 16 to 32 players and bots are a little smarter. It’s finally fun to play again. I’ll be transferring all that hard work, 3D and 2D effects, ready effects and knowledge into @x3js, where you’ll be able to create games like this with just a few prompts. #gamedev #indiedev #indiegames
21
12
1
365
40,824
For a long time I couldn’t figure out why some players could easily destroy everyone else, causing others to quit in frustration. My old custom BatchedMesh fallback (for WEBGL_multi_draw_extension) was broken for ages without me noticing. Firefox users always hit that path and some abused it. Instead of being angry and confused all the time, maybe I should’ve just tested the game in Firefox 🤦 Just noticed BatchedMesh now has a built-in fallback. ( i think after r176) Thanks @garrettkjohnson @onirenaud , made my day! #threejs #gamedev #indiegame
1
2
22
2,260
I’ve been building jamir io since 2017. It’s been my biggest passion for years but it never reached the success I hoped for. Todays update seems to be the last one. I thought creating a high graphics game on web would be interesting. Jamir shaped how I think about graphics, optimization, networking and persistence. Even if the world didn’t notice, it meant a lot to me really. Thanks #threejs for making it possible..
4
1
21
1,816
sometimes i just need a nice spot and chill.. #threejs #gamedev #indiegame #indiedev #indiegames #IndieGameDev
3
2
16
1,577
AI integration should be; the prompt: scary first-person shooter in a dark forest this is what X3JS should be doing: ▫️choosing the right predefined camera setup ▫️predefined player setup with fps controls ▫️placing realistic objects from its own library to start with which you can change later ▫️setting up lighting & scary environment ▫️building the entire scene fully optimized, ready to run in the engine no code just your idea and visual editing from there.. #gamedev #threejs #webgpu #NoCode
2
539
12 minutes of gameplay made with #threejs link: jamir.io #gamedev #indiegame #IndieGameDev
37
50
8
505
71,654