Sign in

Keilthar

@keilthar.bsky.social
50 followers 17 following 101 posts

🔅 IT #Engineer - 🖥️ Indie game developer on #Unity - 🤓 Passionate about technology, science and geek culture - 🤨 Grumpy old bastard and proud of it ! DevLog : keilthar.github.io/devlog

PostsRepliesMedia
Keilthar @keilthar.bsky.social · 08/07/2026
The logical next step was to apply a texture based on the terrain's topology. Here’s a quick demo showing how I can easily create a rocky area and then flatten its edges to suit gameplay needs. #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vfx
0101
Keilthar @keilthar.bsky.social · 04/07/2026
This new architecture opens wild things, like : - the possibility to paint/edit the ground according to textures - the complete remove of ground colliders, raycasting/positionning use the heightmap now - minimal network, client just send shape and server callback modified samples in byte
000
Keilthar @keilthar.bsky.social · 04/07/2026
Map Editor: migration to GPU rendering, allowing preview and new modes - Absolut : apply strictly the shape - Extrude/Cut : apply only what is above/under the ground level - Additive/Subtractive : add/remove one height step #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vfx 1/2
192
Keilthar @keilthar.bsky.social · 18/06/2026
Without AI, I think it would have taken me at least 15 days to do, instead of 4 (and I'm probably being optimistic in that estimate). I really like this process anyway, it's fluid, I retain control but I delegate the writing to AI and I can do much more than I would ever have imagined on my own.
000
Keilthar @keilthar.bsky.social · 18/06/2026
Overall, I don't have any waiting time in this process. When it's working on a task, I'm preparing the next orders, reviewing the architecture for the final refactoring, working on visuals (here the 3D assets + shaders) or doing in-game robustness tests.
100
Keilthar @keilthar.bsky.social · 18/06/2026
His longest work session is ~15 minutes, on average 2 to 5 minutes. No agents, no autonomy: he executes the tickets task by task, which I review as it goes. I try to have changes of a few dozen lines per task whenever possible. Easier for me to follow, and I can challenge the entire implementation.
100
Keilthar @keilthar.bsky.social · 18/06/2026
~134 million tokens used on Codex (inside the €20 subscription). It wrote 100% of the code, to my standards. I defined the technical and functional architecture, and he handled: - reviewing my ideas to get critical feedback - complete ticket management - code implementation - git commits
100
Keilthar @keilthar.bsky.social · 18/06/2026
Completed in 13 commits in total, or ~3 commits per day. You might find it surprising that gameplay is so far down the list, but that's due to the constraints of ECS + online multiplayer.
100
Keilthar @keilthar.bsky.social · 18/06/2026
6 - Communication of client inputs -> server 7 - Creation of keyboard/mouse + gamepad gameplay 8 - Resolution of server-side inputs and distribution of floor height data to clients 9 - Resolution of heights and editing of floors client side 10 - Refinement (progressive lerp, snapping on the grid...)
110
Keilthar @keilthar.bsky.social · 18/06/2026
I broke it down into 10 tickets that follow a logical progression: 1 - Creation of the ECS core data 2 - Generation of bundles from 3D models 3 - Loading the bundles onto the server 4 - Distribution of authorized bundles to clients 5 - Loading authorized bundles on clients
100
Keilthar @keilthar.bsky.social · 18/06/2026
To give you an idea of ​​the scale: - Time: 4 days to implement (between 35 and 40 hours of work) - Number of lines of code: ~4000: * 1000 to handle keyboard/controller inputs + network transmissions * 2500 for server-side calculations + client-side modeling * 500 for bundle creation 1/7
100
Keilthar @keilthar.bsky.social · 17/06/2026
The bundle itself is very simple: it consumes a .fbx file, generates a height sample file from the geometry, and a JSON manifest file. Then, the server uses this in combination with the position/rotation/scale to apply the ground transformation, and the client uses it to display the red preview.
000
Keilthar @keilthar.bsky.social · 17/06/2026
And the best part is that the tool is directly open to modding; it relies on a bundle architecture that can be placed in a user directory. If both the server and the client have the bundle installed, it becomes authorized for use (the server is authoritative).
100
Keilthar @keilthar.bsky.social · 17/06/2026
Floor editing tool overhaul: in addition to the free sculpting mode, it now allows you to import any 3D shape and use it as a brush to sculpt the floor, even that good old Suzanne from #blender ! #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vfx #b3d
1122
Keilthar @keilthar.bsky.social · 13/06/2026
Actually my chunks are 10m large, with samples every 0.5m, so 441 samples/chunks. And the brush is 8m large max, so at most it will trigger on 4 chunks and change ~300 samples max. As I only store the samples height in a strict order in each chunk, the payload is quite light even for the callback.
010
Keilthar @keilthar.bsky.social · 13/06/2026
It really depends on latency, that's why I'm thinking about some local prediction for the responsivness, but I have to ensure I dont compute meshes/colliders twice or it will hurt FPS quite badly.
010
Keilthar @keilthar.bsky.social · 13/06/2026
With this architecture I have no contention between clients, but they dont have a fully reactive brush application, they have to wait for the server callback of the chunks for the mesh modification. I will probably add some prediction for reactivity, but I need to prevent to much mesh recalculation.
100
Keilthar @keilthar.bsky.social · 13/06/2026
I sent an input intention with the brush data for each client. The server loop through all inputs, calculate them sum of all inputs, clamp the data and save them into the chunks. Each chunk is a static ghost, with only the delta sent back to all clients, they each modify there meshes locally.
200
Keilthar @keilthar.bsky.social · 10/06/2026
Hop, 4 clients + 1 server on the same machine, with a ground editor handling ground chunk data on the fly, distributed to clients that only handle the visuals (mesh editing), with decent FPS. 🥰 #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vfx
191
Keilthar @keilthar.bsky.social · 26/05/2026
Technical showcase of what I do with Unity. There's a lot missing : it's quite recently that I've felt comfortable enough to film what I create and share it. Imposter syndrome / 20. 🫤 Youtube link : youtu.be/hilybD14InA #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vfx
youtu.be
Unity - Technical showcase
YouTube video by Keilthar
0132
Keilthar @keilthar.bsky.social · 14/04/2026
Nah just a way to sort what happens, it's the data cherry on the cake of the network shitshow 😅
000
Keilthar @keilthar.bsky.social · 14/04/2026
Creating a real-time drag-and-drop system in an online multiplayer game is quite a challenge! Just look at this architecture diagram... 😭 (And then there's all the data behind it, with the Tick IDs, Session IDs, and the last state to retain...) #indiegame #indiedev #IndieGameDev #gamedev
1114
Keilthar @keilthar.bsky.social · 13/04/2026
I started a DevBlog ! keilthar.github.io/devlog/en/ Already 2 articles are available : - Introduction to ECS concept keilthar.github.io/devlog/en/EC... - Project Management via Obsidian and AI keilthar.github.io/devlog/en/To... #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vfx
093
Keilthar @keilthar.bsky.social · 20/02/2026
I need to add LODs for large shot like this, but it runs quite smoothly at 100+ FPS for the gameplay I am aiming (ARPG-like aerial view) and I will probably not need 50k units. I have quite an average setup (RTX 2080 + I7 12700k). This simulation runs with 1.3GB ram. 2/2
000
Keilthar @keilthar.bsky.social · 20/02/2026
"Just make it exists first, you make it good later" 50k undeads, chasing 15 targets, using a flowfield navigation system, across a 500m x 500m map, with ~180k decors, rendered via Unity ECS/DOTS + VATs. 1/2 #indiegame #indiedev #IndieGameDev #madewithunity #unity #vfx
151
Keilthar @keilthar.bsky.social · 08/01/2026
OK so it was not a culling issue, but a CPU bottleneck ! Now at close range the simulation runs smoothly. With the introduction of VATs, I lost the auto-LOD, so now the GPU is struggling when too much units are in FOV. 😅 #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vfx
090
Keilthar @keilthar.bsky.social · 07/01/2026
I didn't expect at all to go this far with this christmas side project... And now I am totally thinking of rebuilding my own game around this tech and it changes everything how I would design it. 🙃
020
Keilthar @keilthar.bsky.social · 07/01/2026
They are billions ! (not really but it's a nice game I recommend) 100k VATs moved by Unity ECS with a flow field, on a 500x500m map, at 30+ FPS ! 🤪 But I suspect a culling issue (FPS does not increase when zooming in) #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev
0114
Keilthar @keilthar.bsky.social · 07/01/2026
Starting to look at how to implement VATs on Unity and like every new topic I start studying, this meme is kicking hard 😅 #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev
0133
Keilthar @keilthar.bsky.social · 07/01/2026
I never deep dived on the animator code, so cant really answer. As far as I tested it on Unity, it always had a limit around 1-2k gameobjects depending on the model/rig to render at ~50 FPS. I am waiting impatiently for the Animator 2.0 they talked about in 2024 which can handle far more 😭
020
Keilthar @keilthar.bsky.social · 06/01/2026
It's a lowpoly model I imported from the asset store. 43 bones. assetstore.unity.com/packages/p/s... I don't use many tricks here, I only disable gameobjects out of screen and reduce animator speed based on camera distance.
110
Keilthar @keilthar.bsky.social · 06/01/2026
As expected using 3D models with animator massively decrease perfs (no LODs here, but that will not solve the issue). The most optimal approach would be to use VATs, but I never implemented it until now. 😅 #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev
1111
Keilthar @keilthar.bsky.social · 05/01/2026
50k units with avoidance ! 👀 That's funny, because adding avoidance improves performances, making a lot of the units waiting their turn to move (to display 100k units, I would need a far bigger map to spread them) #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev
0101
Keilthar @keilthar.bsky.social · 04/01/2026
In this video no, but the architecture is ready for it. The idea will be that each cell of the flow field will have a owner and each move of a unit from one cell to other will proc the path update on its neighbors.
010
Keilthar @keilthar.bsky.social · 04/01/2026
This simulation has barely no optimisation, only using the Unity ECS implementation. I have quite a lot of options to increase the FPS. However, my units are only capsules. With a proper model + animation, the units count should be reduce drasticaly.
020
Keilthar @keilthar.bsky.social · 04/01/2026
So in this scene we have : - 90k cells (1m width, 300m map width), each one with a shader to indicate the path - 9k obstacles - 100k units, moving each frames Without the cell shader and with 10 targets moving at 1m/sec, the simulation runs at a smooth 100 FPS, quite nice.
110
Keilthar @keilthar.bsky.social · 04/01/2026
Fun fact : the frame rate of this simulation is greatly dependant of the targets speed. If they move too fast, they trigger the all map refresh more often, tanking the performances. On the first video, they move at 3m/sec. I double the framerate when they move at 1m/sec. 😅
100
Keilthar @keilthar.bsky.social · 04/01/2026
The flow field does not refresh all at once. There is a propagation mechanism where each cell tags its neighbors to recalculate a path. With this approach, a small amounts of cells are updated each frames. #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev
131
Keilthar @keilthar.bsky.social · 04/01/2026
Targets refresh the flow field when they move from one cell to another. The green to orange area is refreshed at each cell change when the red one is refreshed every 5, reducing the recalculation of the entire map. #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev
141
Keilthar @keilthar.bsky.social · 04/01/2026
100k units moving each frame, attempting to reach the nearest target out of 10 (at center of each green areas), through obstacles (white blocks), using ECS and a flow field composed of 90k cells on a 300x300m map. #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev
292
Keilthar @keilthar.bsky.social · 15/12/2025
Fully functional resizing system ! It's a little sluggish with such a large area (+100 FPS for 70k sheets, which is still acceptable). But I'll limit the size of the areas eventually, so it's not a concern. 😋 #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vfx
063
Keilthar @keilthar.bsky.social · 11/12/2025
Even with a completely absurd number of leaves grouped into a single spline (so all my calculations run on all the leaves at the same time), it runs on my old RTX 1080 ! There's a leaf every 10 cm here. 🤪
000
Keilthar @keilthar.bsky.social · 11/12/2025
First prototype to modify the shape of leaf zones and validate performance live. Calculations via ECS + GPU batching, it'll spawn tens of thousands of leaves for breakfast ! 😎 #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vfx
1145
Keilthar @keilthar.bsky.social · 09/12/2025
I made a rework into a system of zones delimited by splines, far better for level design. No more tedious grids to manage ! Leaves can be moved out of zones and return once the animation is finished. 🥰 #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vfx
171
Keilthar @keilthar.bsky.social · 03/12/2025
Thx ! Yeah, that's a nice environmental effect, I have big plans for it for other VFX 👀
110
Keilthar @keilthar.bsky.social · 03/12/2025
You have no idea how lucky you are not to know what a quaternion is, and how much of a pain it is to rotate objects in 3D space... 🙃
media.tenor.com
a close up of yoda with suffering written on the bottom
ALT: a close up of yoda with suffering written on the bottom
000
Keilthar @keilthar.bsky.social · 02/12/2025
I have my continuous wind effect. However, performance-wise it's terrible... I'll have to brainstorm on my architecture to find a solution (hashmaps are cool, but I can't randomily pick a leaf in them) 🧐 #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vf
1103
Keilthar @keilthar.bsky.social · 02/12/2025
Because it's that time of the year... 🎶 All I want for Christmas is flying glowing leaves 🎶 Now you've got it stuck in your head, I'm off ! 😏 #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vfx
0155
Keilthar @keilthar.bsky.social · 01/12/2025
And if I set the tornado's rotation speed to 0, I can generate a kind of underground explosion effect or an antigravity well effect depending on how long I hold it. It's just so cool. 😱 #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vfx
0153
Keilthar @keilthar.bsky.social · 01/12/2025
Hello little tornado ! And my system lets me chain effects together seamlessly. Anyway, I'm having way too much fun developing this VFX ! Why play games when you can make them ! 🥰 #indiegame #indiedev #IndieGameDev #madewithunity #unity #gamedev #vfx
0154