Ben Walker (@benprototype) header
Ben Walker (@benprototype) profile picture

engineering things

United Kingdom
Joined April 2015
There weren't any errors. It just looked like this (minus the agent thats sorting it out for me) A single project seemed to show up which I hadn't worked in for a week or so without any threads which was weird because I'd removed it.
1
419
The limit is only for meshes where FixedSize = false Send the mesh data to the client and use a pool of unfixed meshes to bake into fixed meshes. CreateEditableMeshAsync is sync when CollisionFidelity is set to Box and the collision geometry replicates automatically
1
1
108
i implemented various optimisations and got it from p50=40ms, to p50=4-5ms so an 8x speed up on average and p99 before was 80ms which felt horrible theres probably a bit more left to squeeze out plus i could compute the chunks in parallel but its not worth the effort i think
1
204
ok its fast again. this is a way more detailed voxel grid and way more explosions than would ever happen in game average is 4ms and 99th percentile is 19ms which is like 50fps only performance concern now is memory usage of all the meshes/textures on mobile i think
1
13
472
Everything is simple to change, here I downsampled the same map to just 4000 voxels Each voxel is now 5x5 studs. Chunks are now 30x30 (except for the ones on the edge) It runs much faster when I do this and doesn't look meaningfully worse so I need to find a balance.
1
42
Replying to @cryptidsoftware
Chunks are 25x25 Voxels are 2x2 The marching squares are 1x1 Voxels can overlap chunk boundaries and some chunks can be smaller than others. Nothing is forced to line up. I'm doing some boring performance optimisation stuff next so most of this will change
1
1
35
its a bit slow with this many explosions and chunk updates going on at once i'll try profiling it and speeding up the slow bits next. it might also be able to run chunk updates in parallel but i've not tried that before worst case i can just lower the voxel/render resolutions
1
8
470
I need to tune the noise, but adding material variations to the rock is pretty simple. I can use the marching squares to detect contours for each material and generates a few more meshes per chunk
1
7
319
Here's a few screenshots that show a bit more detail. Each chunk is made up of a rock mesh, a grass mesh, and a mud projection. Triangulating all this fast enough for real-time destruction was certainly fun.
6
401
Rendering the destructible terrain with meshparts. I'm honestly surprised the engine allows this. Not being able to use a fragment shader makes texturing this so difficult. There's a few layers of dynamic meshes per chunk here to get the grass and mud layers to work.
7
5
126
5,575
Silencing issues is especially bad if you've got a big codebase because changing a type somewhere might cause errors in some other random file. I have this static analysis tool that scans all files and looks for type errors. Catches a lot of issues before I even run the game!
1
65
I'm not sure I understand what you mean. If you cast the entire object then you're pretty much defeating the point of the whole type system because issues like this are silenced casting nil :: string | nil for just the optional properties isnt ideal but a bit better imo
1
56
Lots of things don't work at scale it seems, another example being the beam waterfall on my lovely toolbox terrain 🥲 I expect I'll have to use a lot of tricks to make this game look good
67
Replying to @realmaloni
I need to be able to zoom the camera out all the way to let players see the whole map. Even on max graphics, the engine terrain turns so blocky at this distance. Also the collision mesh of the engine terrain seems pretty unreliable, the grenade kept falling through it.
1
1
447