home.social

#enginedev — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #enginedev, aggregated by home.social.

  1. so this is where the "spline" part of the "spline mesh" finally appears

    every edge can be turned into a cubic spline

    there's still a bunch of things that don't work yet (e.g. tangent visualization and editing, spline-aware edge picking and face previews)

    but at least the intermediate positions are being generated, the spline edges are rendered correctly and they also appear in the exported polygons

    #gamedev #enginedev #graphics

  2. making some progress with rig processing

    - added conditional tagging
    for now there's only face count for vertices/edges and part count for faces, so it's possible to find outlines and inner vertices/edges

    - added conversion to polygons/polylines
    from there it's possible to make fill/edge meshes etc. from that

    could in theory add materials and other metadata to the rig directly but idk, will try to make upgrades as I proceed and see what's needed/helpful

    #gamedev #enginedev #graphics

  3. created some extrusion code

    the basic mesh transform (outline finding + vertex/edge duplication + face-vertex/face-edge redistribution + bridge faces) turned out much easier than expected

    but making the full thing would probably require upgrading the transform gizmo

    just need to do missing editing features (element tags, grid, selection modes) and element extraction and it'll be ~enough for editing procedural modeling rigs

    #gamedev #enginedev #graphics

  4. finally developed enough features that I could finish skinning the test character at a base level (without finger or face bones)

    also ended up not needing undo so far 🤷

    the weird thing about developing a reasonably efficient tool is that suddenly the work ends up taking like a few hours total and you wonder if spending several weeks on the tool was worth the effort

    hopefully I'll be able to cash in at scale (after skinning a bunch of characters, together with iterations)

    #gamedev #enginedev

  5. noticed a really weird issue with dual quaternion skinning

    at the end of the day, all skinning is a nasty approximation

    (though in this case linear blending looks a lot less weird, even if still unnaturally stretchy)

    I wish there was a better option that didn't involve lots of work (cloth simulation + overbuilding the character for it)

    #gamedev #enginedev #graphics

  6. the slowest part in all this seems to be the process of figuring out what is it exactly that I want to make:

    - dogfooding
    - noticing problems
    - coming up with several solutions
    - coming up with their costs and effectiveness without actually making them
    - picking the optimal combination

    there's a lot of fancy 3D view selection/editing things that I'd like to make but they seem to cost far more and thus I could only justify them if I have seen somewhere that they worked best

    #gamedev #enginedev

  7. did a lot of tiny things but also

    1️⃣ removed *shared* bone weight shapes (ones used for all skins)

    reason: it would be more difficult to fit most of them to 2+ skins than I initially thought

    2️⃣ made weight shape transforms absolute (used to be bone-relative)

    reason: allows moving the bone pivot without moving the shapes

    reason for both: now all skins are self-sufficient and could be moved into separate files to prevent shared changes from rebuilding all associated files

    #gamedev #enginedev

  8. back to working on the mesh skin set editor - a second pass to support more cases

    - made the test view functional (as in, finally allow pose changing)
    - added the missing weight shape visualizations

    yet to figure out how to design the weight shapes for optimal weights (spine seems to be especially complicated... but I have an idea)

    self-intersecting meshes could be a challenge but flood fill might solve it (the test model has teeth, can test later)

    #gamedev #enginedev

  9. been working on a "spline mesh" for some time (a tiny bit at a time) and finally have something to show

    the data structure has been seemingly figured out now and there are a few basic actions available

    it's not yet enough to design anything but could be eventually

    the goal is to build control rigs for things like this and more: mastodon.gamedev.place/@archo/

    eventually it should be possible to turn edges into splines and extract faces as polygons

    #gamedev #enginedev #graphics

  10. starting a new "building generator" thread (previously mastodon.gamedev.place/@archo/) since the last one was getting a bit long

    here's a new attempted approach for producing inner faces for stair cutouts

    - emit requantized shape
    - projected-intersect it against platform shape
    - generate edge mesh by pushing vertices upwards up to top plane
    - filter out entrance face
    - added edge blend layer

    good stair sides are still annoying to make in this system tho

    #gamedev #enginedev #graphics

  11. added a first set of mutexes for loading textures

    there's a global one for the hash table/file texture list, and one mutex for each texture (for loading/unloading)

    the whole thing is a bit messy currently (in part because there are several different types of textures) but a stress test seems to work

    and it's a bit annoying to spend memory per texture for what's basically failsafe code

    but it's the simplest approach I could come up with for now

    #gamedev #enginedev

  12. another thing to fix eventually is force-pausing the game while BeginPlay is waiting for the data to be loaded

    the idea is to emit a special signal if a partition expects to be activated but isn't yet loaded

    and then use this signal to pause most update code and render some overlay indicating to the player that more time is needed before the game can resume

    should reduce situations where scripting could fail due to missing parts of the world

    #gamedev #enginedev

  13. thought about async loading for a while and landed on this extremely basic approach

    since I'll only be loading one thing at a time, the idea is to pick the next thing to do and then apply it, depending on whether it can be streamed or not

    anything under Load/Unload will eventually receive the appropriate mutexes

    isAsyncBusy should be an event instead of an atomic bool but it should not fail on windows (unlike e.g. android where thread scheduling is far less forgiving)

    #gamedev #enginedev

  14. but will I need a separate disk thread? not if most work happens on just one thread (e.g. the map loading thread)

    which is true as long as it won't be necessary to load textures in parallel, separately from the rest (if they're not too large and not too many per partition)

    hoping to avoid a good chunk of the complexity by steering clear of the cutting edge and not overdoing it with the granularity of partitioning

    #gamedev #enginedev

  15. I think it's no secret that most of the issues are likely to appear in the process of making the streaming system work with real content

    expecting a need for a loading thread (with all the necessary sync), and some way to attribute renderables to partitions (possibly with opt-out if I'll want to carry some stuff out) so that I can fade things in and out at the very least

    but e.g. component addressing has been designed with streaming in mind already tho

    #gamedev #enginedev

  16. worked on the runtime side of the partition system

    basic support for loading and unloading works now (no multithreading of any kind yet, no hierarchy either)

    there are a few basic shapes (sphere, box, cylinder*, capsule*) for measuring the distance between the partition and the reference point (= camera position for now)

    (* - missing editor preview)

    so far the work has been much simpler than anticipated, though in part due to prior design and extensive refactoring

    #gamedev #enginedev

  17. One of the things that fascinated me about #Doom was its aggressive visibility determination, avoiding work for geometry that never reached the screen.
    For #helios I opted for a non-hierarchical AABB culling #algorithm (Miettinen), currently testing against every scene member and switching MaterialHandles to highlight culled and visible objects. On to #BSP now! #indiedev #enginedev #indiegames

  18. been working on the editor side of the partition system

    moved map items out of layers, into "indexed chunks"

    the chunks are basically a list of map items that all have common filter parameters (initially layer, now also partition and whether it's inside the low or high LOD section of the partition)

    starting small for now - currently partitions exist, can be edited, and items can be assigned to them but otherwise they don't affect much in practice yet

    #gamedev #enginedev

  19. test animation 4

    this is the animation I wanted to create initially

    the transition points are visibly broken at the moment, but also necessary for this animation to work

    I'm also rethinking the whole concept of transition points, as it doesn't make much sense from an editing standpoint for them to always be synchronized across the axes, possibly even if they contribute to the implicit acceleration curve

    #gamedev #enginedev #3d #animation

  20. created a new test animation consisting of 3 keyframes that create a circular motion with decreasing speed

    it appears that the new rotation curve editor is finally working well enough to stick with it

    #gamedev #enginedev #animation

  21. created a new test animation consisting of 3 keyframes that create a circular motion with decreasing speed

    it appears that the new rotation curve editor is finally working well enough to stick with it

    #gamedev #enginedev #animation

  22. created a new test animation consisting of 3 keyframes that create a circular motion with decreasing speed

    it appears that the new rotation curve editor is finally working well enough to stick with it

    #gamedev #enginedev #animation

  23. a very early preview of how the rotation editor might look (while nothing is hovered)

    worried about vertical autosizing of the curves and keeping everything in the frame while keeping it still for editing (might need some state to freeze things while they're being edited)

    the discontinuous curves are somewhat trippy but also purely visual since the curves as currently defined can't support discontinuities (rapid changes need two points next to each other)

    #enginedev

  24. a very early preview of how the rotation editor might look (while nothing is hovered)

    worried about vertical autosizing of the curves and keeping everything in the frame while keeping it still for editing (might need some state to freeze things while they're being edited)

    the discontinuous curves are somewhat trippy but also purely visual since the curves as currently defined can't support discontinuities (rapid changes need two points next to each other)

    #enginedev

  25. a very early preview of how the rotation editor might look (while nothing is hovered)

    worried about vertical autosizing of the curves and keeping everything in the frame while keeping it still for editing (might need some state to freeze things while they're being edited)

    the discontinuous curves are somewhat trippy but also purely visual since the curves as currently defined can't support discontinuities (rapid changes need two points next to each other)

    #enginedev

  26. so as expected, the curve view interface isn't really working for editing the rotation curves

    and as expected, the issue is the adding of differences

    moving a single point doesn't mean what one would expect

    worse still, moving has this weird duality - the results are different depending on which segment of the curve is considered to be edited

    so it's impossible to preserve the invariant during/after that operation

    now contemplating making a fully custom insanity of a UI

    #enginedev

  27. so as expected, the curve view interface isn't really working for editing the rotation curves

    and as expected, the issue is the adding of differences

    moving a single point doesn't mean what one would expect

    worse still, moving has this weird duality - the results are different depending on which segment of the curve is considered to be edited

    so it's impossible to preserve the invariant during/after that operation

    now contemplating making a fully custom insanity of a UI

    #enginedev

  28. so as expected, the curve view interface isn't really working for editing the rotation curves

    and as expected, the issue is the adding of differences

    moving a single point doesn't mean what one would expect

    worse still, moving has this weird duality - the results are different depending on which segment of the curve is considered to be edited

    so it's impossible to preserve the invariant during/after that operation

    now contemplating making a fully custom insanity of a UI

    #enginedev

  29. created a first test animation

    need to figure out a much better test since this is very axis-aligned and too fast overall

    the fancy interpolation ends up being unused for rotation, basic slerps ended up being OK at this speed

    also probably could use a time scaling parameter

    #gamedev #enginedev #animation

  30. created a first test animation

    need to figure out a much better test since this is very axis-aligned and too fast overall

    the fancy interpolation ends up being unused for rotation, basic slerps ended up being OK at this speed

    also probably could use a time scaling parameter

    #gamedev #enginedev #animation

  31. created a first test animation

    need to figure out a much better test since this is very axis-aligned and too fast overall

    the fancy interpolation ends up being unused for rotation, basic slerps ended up being OK at this speed

    also probably could use a time scaling parameter

    #gamedev #enginedev #animation

  32. working on the animation editor, only made vec3 curves minimally usable so far

    I wish it was easier to line up the velocities of adjacent points when the velocities are small

    #gamedev #enginedev

  33. working on the animation editor, only made vec3 curves minimally usable so far

    I wish it was easier to line up the velocities of adjacent points when the velocities are small

    #gamedev #enginedev

  34. working on the animation editor, only made vec3 curves minimally usable so far

    I wish it was easier to line up the velocities of adjacent points when the velocities are small

    #gamedev #enginedev

  35. working on the animation editor, only made vec3 curves minimally usable so far

    I wish it was easier to line up the velocities of adjacent points when the velocities are small

    #gamedev #enginedev

  36. - created the [animated mesh set] component
    - fixed the data transfer bugs
    - added an [initial pose] feature to the [animated mesh set] component

    ...one thing led to another...

    - created the leaning toilet 🚽

    #gamedev #enginedev #art

  37. - created the [animated mesh set] component
    - fixed the data transfer bugs
    - added an [initial pose] feature to the [animated mesh set] component

    ...one thing led to another...

    - created the leaning toilet 🚽

    #gamedev #enginedev #art

  38. - created the [animated mesh set] component
    - fixed the data transfer bugs
    - added an [initial pose] feature to the [animated mesh set] component

    ...one thing led to another...

    - created the leaning toilet 🚽

    #gamedev #enginedev #art

  39. - created the [animated mesh set] component
    - fixed the data transfer bugs
    - added an [initial pose] feature to the [animated mesh set] component

    ...one thing led to another...

    - created the leaning toilet 🚽

    #gamedev #enginedev #art

  40. (re-)added the ability to edit hit volumes

    the previous skeleton metadata editor was capable of this so it's largely a matter of copying the code

    but now there's a possibility to add more than one shape per bone, which could be useful in cases where one shape isn't quite enough

    #gamedev #enginedev

  41. (re-)added the ability to edit hit volumes

    the previous skeleton metadata editor was capable of this so it's largely a matter of copying the code

    but now there's a possibility to add more than one shape per bone, which could be useful in cases where one shape isn't quite enough

    #gamedev #enginedev

  42. (re-)added the ability to edit hit volumes

    the previous skeleton metadata editor was capable of this so it's largely a matter of copying the code

    but now there's a possibility to add more than one shape per bone, which could be useful in cases where one shape isn't quite enough

    #gamedev #enginedev

  43. (re-)added the ability to edit hit volumes

    the previous skeleton metadata editor was capable of this so it's largely a matter of copying the code

    but now there's a possibility to add more than one shape per bone, which could be useful in cases where one shape isn't quite enough

    #gamedev #enginedev

  44. the whiteboard case also showed in what ways calculated, non-destructively edited weights are superior to painting - subdividing the model wouldn't result in needing to repaint the subdivided bits

    another interesting side effect of in-engine skinning is that I could combine any mesh generator with skinning at some point, making something animated entirely inside the engine

    not that the existing capabilities help with character design but it's something to consider

    #gamedev #enginedev

  45. the whiteboard case also showed in what ways calculated, non-destructively edited weights are superior to painting - subdividing the model wouldn't result in needing to repaint the subdivided bits

    another interesting side effect of in-engine skinning is that I could combine any mesh generator with skinning at some point, making something animated entirely inside the engine

    not that the existing capabilities help with character design but it's something to consider

    #gamedev #enginedev

  46. the whiteboard case also showed in what ways calculated, non-destructively edited weights are superior to painting - subdividing the model wouldn't result in needing to repaint the subdivided bits

    another interesting side effect of in-engine skinning is that I could combine any mesh generator with skinning at some point, making something animated entirely inside the engine

    not that the existing capabilities help with character design but it's something to consider

    #gamedev #enginedev

  47. the whiteboard case also showed in what ways calculated, non-destructively edited weights are superior to painting - subdividing the model wouldn't result in needing to repaint the subdivided bits

    another interesting side effect of in-engine skinning is that I could combine any mesh generator with skinning at some point, making something animated entirely inside the engine

    not that the existing capabilities help with character design but it's something to consider

    #gamedev #enginedev

  48. got as far as getting a skeleton editor to a point where it's minimally usable, and starting work on a mesh skin set editor

    figuring out the data structures and data flows took a long time but I think that might be largely done at this point

    while testing the mesh skin set editor, noticed that the model I was initially testing it with (a movable whiteboard) wasn't sufficiently subdivided to make it bend, so I had to change it

    #gamedev #enginedev

  49. got as far as getting a skeleton editor to a point where it's minimally usable, and starting work on a mesh skin set editor

    figuring out the data structures and data flows took a long time but I think that might be largely done at this point

    while testing the mesh skin set editor, noticed that the model I was initially testing it with (a movable whiteboard) wasn't sufficiently subdivided to make it bend, so I had to change it

    #gamedev #enginedev

  50. got as far as getting a skeleton editor to a point where it's minimally usable, and starting work on a mesh skin set editor

    figuring out the data structures and data flows took a long time but I think that might be largely done at this point

    while testing the mesh skin set editor, noticed that the model I was initially testing it with (a movable whiteboard) wasn't sufficiently subdivided to make it bend, so I had to change it

    #gamedev #enginedev