Micha Mettke

450 Followers
289 Following
232 Posts
Engine/Lead Tools Programmer at Keen Games. Interested in Engine/Games/Optimization/SIMD/Tools/Data oriented/System programming and API design.
Twitterhttps://twitter.com/MichaMettke
Githubhttps://github.com/vurtun

3D XPBD Chain Simulation: https://gitlab.com/-/snippets/4918914

Hard-realtime, low-variance, fixed size, no dynamic memory allocation, fixed upper bound loops, AVX2/SSE4.2/Neon. MT missing but trivial to add.

Currently not simulated chains are packed to 64-byte cache size and stored. So 32k chains are 2MB of memory. Which chain to simulate is picked based on game specific variables so not added (for example distance player, visibility, random sampling,...)

What our players of Enshrouded build is out of this world beautiful in terms of skill, creativity and execution. Can't wait to see what they will build with some of the updates we have planned for the future.

In terms of actual ui. What we currently have is that each node checks if it still exists on global project tree changes (add, remove,...). If that happens the tree is corrected.

However soon I will work on a change that will basically just send over the expansion state of tree and generates and sends the full tree over. Already have that for searching in the project tree which is amazingly fast.

We have the same with a project tree with the hierarchy of all objects. In terms of topology we have deleting objects, moving and copying on the editor side.

Our changeset has a scope for multiple operations (example float values dragging, node dragging, deleting lots of objects).

Basically:
`Changeset changeSet(pClient, "Undo Message")
changeSet.deleteObject(...);
changeSet.moveObject(...);
```
Was that what you meant?

Job interview for a company A for a role as principal engine programmer. Got tested on listener pattern code:

for (l: listeners) {
l(...);
}

The problem: listener adds listener -> iterator breaks. Wanted me to solve that (no remove) a problem he actually encountered in their code and fixed with lots of code.

Irony was how I wrote the code:

for (int i = 0; i < ls.size(); ++i) {
ls[i](...);
}

Got Gas lit and downgraded from principal to senior staff based on "missing AAA experience"

Burn out since November after getting out of a toxic relationship with severe emotional and psychological abuse.

Combined with working for a year on a single problem with set backs after set backs and finally Overtraining Syndrome (OTS) that hit me on top of that.

Now had to stop working this week. Even basic task feel impossible. Hope to be able to take a rest and recharge. Will definitely have to reevaluate some of my life choices.

Any tips on what best to do to get better?

Sebastian Aaltonen finally finished his "No Graphics API" blog post! Which ends with a graphics API of course :) But it is like 150 lines of "API surface". Pretty cool. https://www.sebastianaaltonen.com/blog/no-graphics-api
No Graphics API — Sebastian Aaltonen

Graphics APIs and shader languages have significantly increased in complexity over the past decade. It’s time to start discussing how to strip down the abstractions to simplify development, improve performance, and prepare for future GPU workloads.

Sebastian Aaltonen

Currently implementing GLTF import of mesh, skeleton and animation with cgltf. We have the following function declaration:

cgltf_bool cgltf_accessor_read_float(const cgltf_accessor* accessor, cgltf_size index, cgltf_float* out_data, cgltf_size element_size);

which is the correct call? We want to get a vector3 here.

cgltf_accessor_read_float(a,keyIndex*3, &vec.x,3)
66.7%
cgltf_accessor_read_float(a, keyIndex, &vec.x,3)
33.3%
Poll ended at .

Released our water update for Enshrouded. Great work all around!

Even better news some of our Programmers will be holding talks on it next week https://www.graphicsprogrammingconference.nl/ at the graphics programming conference including @jkoenen @luckyxxl @ands .

So look out for our presentations for more information or feel free to talk them up to next week if you are at the conference.

Tough year so far. Got hit with a triple punch of hard lessons. Each feeding and worsen the others in effect. Took quite a bite out of me. Mentally and physically.

One of them was wasting a year of my life with FBX. An absolute shit file format that should never be used my anyone. Should have pulled a stop way earlier and just use gltf but in combination the overload just didn't let me see clearly for a long time.