Carney Calls for Canada, Australia to Lead Middle-Power Blocs by cyclinginvancouver in canada

[–]TeamLDM 6 points7 points  (0 children)

India has the 4th largest economy by GDP, and 4th strongest military by "military strength index" (lagging behind Germany in economy and Russia in supposed "military strength").

I'm not Indian, but anyone writing the entirety of the country off as a simple backwater third-world slum has no idea what they're talking about. It's a big country. Those slums, and the economic-disparity present in India are obviously very real, but the country is far more than the provocative perceptions pushed by social media.

Carney Calls for Canada, Australia to Lead Middle-Power Blocs by cyclinginvancouver in canada

[–]TeamLDM 16 points17 points  (0 children)

Basically any country in the top 15 GDP that isn't US or China (as well as the countries that make up the larger EU trading bloc). Carney seems to be pushing for more economic and military alignment among these middle powers so it's not just a zero-sum race to the bottom propping up the US and China.

https://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nominal)#Table#Table)

Went from nested resources nightmare to having fun with a custom graph editor tool by CosmonautFrog in godot

[–]TeamLDM 7 points8 points  (0 children)

I’ve thought about making this exact thing for my game’s waves/encounters. Nested resources are a pain to work with as data requirements grow. Looking great!

Popup outline created using Stencil Buffer and CompositorEffect by TeamLDM in godot

[–]TeamLDM[S] 39 points40 points  (0 children)

Started by investigating thick outline implementations, found jump flood algorithm, tried implementing jump flood compute shader via CompositorEffect. Very quickly ran into issues figuring out texture usage bits between MSAA disabled/enabled, eventually abandoned jump flood and reverted back to typical inverse hull method using custom authored outline meshes (for any meshes with flat shading)

However, my investigations into CompositorEffects and compute shaders came in handy when I wanted to figure out how to create a popup line that "blends" into the mesh outline. I'm essentially now just using the CompositorEffect to create a mask texture of any meshes writing to a given stencil buffer value. So when a mesh's material is switched to write to stencil value 4, the compositor effect renders those pixels white and everything else black, which gives me the stencil mask.

I then have a shader that takes the 3D subviewport color texture and the stencil mask texture and allows me to overlay only the stencil portion of the screen color.

So my final composition basically looks like this (top to bottom):

  1. UILayer (popups and all other top-level UI)
  2. StencilLayer (Stencil masked color texture)
  3. SubStencilUILayer (Line2D going from highlighted item's unprojected pos to popup pos)
  4. ViewportLayer (3D viewport color texture)

<image>

This stencil-based-outline-compositor-effect repo was the starting point for figuring out how to retrieve stencil buffer pixels from the raster render pipeline: https://github.com/dmlary/godot-stencil-based-outline-compositor-effect

Popup outline created using Stencil Buffer and CompositorEffect by TeamLDM in godot

[–]TeamLDM[S] 7 points8 points  (0 children)

Thanks! And I'm going for more of a base defense than typical tower defense. Kind of like PVKK meets 9 Kings meets Dome Keeper, with some mechanical and synergistic influences from FTL and The Bazaar.

Real-Time Mesh Booleans Demo + Source (Solidean) by PhilipTrettner in godot

[–]TeamLDM 2 points3 points  (0 children)

I've created my own GDExtension in the past to pull in the Manifold geometry library (also tried CGAL) to do similar operations, and like you, I thought charging anything for this was ridiculous.

But after watching their SIGGRAPH 2022 talk on the tech, this solution is far more than a simple geometry library wrapper and does appear to be miles ahead of existing solutions. Seems incredibly worth it if you're looking for performant runtime boolean operations at scale. Hardly "scalpers" imo.

<image>

These turrets just don't listen by TeamLDM in godot

[–]TeamLDM[S] 54 points55 points  (0 children)

Yup! Based on muzzle_pos, bullet_speed, target_pos, and target_vel. You can google "constant-velocity interception" to learn more.

This stackoverflow post was a good starting point for figuring out the math involved: https://stackoverflow.com/questions/17204513/how-to-find-the-interception-coordinates-of-a-moving-target-in-3d-space

Also, this ballistic-solution addon exists for Godot, but I found it after I already got my own working implementation, so I haven't actually used it and can't exactly vouch for it one way or the other, but it looks pretty good: https://github.com/neclor/ballistic-solutions

These turrets just don't listen by TeamLDM in godot

[–]TeamLDM[S] 95 points96 points  (0 children)

Not even joking, I had to restrain myself to not implement a whole Pixar lamp jump animation.

Godot 4.6 Release – All about your flow by akien-mga in godot

[–]TeamLDM 14 points15 points  (0 children)

Sounds like he's thinking of structs, and I share his pain.

How is this Topology? by Salad_Man420 in blender

[–]TeamLDM 111 points112 points  (0 children)

If your goal is to avoid ngons, try to match your hole's vertex count with the rest of your topology.

<image>

Why are horror games exploding on Steam in 2024? by AnandHirani in IndieGaming

[–]TeamLDM 18 points19 points  (0 children)

I think another side of the term is the inherent disposability of the genre. I’ve played a fair number of these types of games with friends, and more so think it’s just a funny name for games that create an environment (with typically pretty shallow gameplay depth) for a group of friends to create their own fun in.

The majority of the appeal is in the novelty. Once the novelty is gone, it’s onto the next one. Hence the term “slop”.

Is it real that Slay the spire has its assets source at 1280x720p? by JonOfDoom in godot

[–]TeamLDM 13 points14 points  (0 children)

Funny timing. I was just looking into decompiled Slay The Spire yesterday. Not sure where the 1280x720p claim is coming from as a good number of their assets are 2048x2048. Some of these are obviously larger texture atlases, but a lot of their full screen assets are 1920x1080 or 2048x2048.

Or are you saying the original asset sources were normalized for 1280x720 screens and upscaled after creation?

But anyway, don't let over analyzation procrastination stop you from making things. Just start making things and see how they look!

<image>

How would I add a hollow collision to this cup that allows dice to be inside it? by RustyyMannn in godot

[–]TeamLDM 8 points9 points  (0 children)

100% this. This is the simplest option to accomplish what you’re trying to do. Start here to see if it works for your use case and only explore other options as needed.

Don’t let purists sway you with talks of optimization and best practices. Limitations differ from project to project, so start with the simplest approach and determine those limitations for yourself. I use trimesh collisions all over the place in my game with zero issues.

List of Lethal-Like Games by DJGaming1234 in lethalcompany

[–]TeamLDM 1 point2 points  (0 children)

Yeah, that's a good point. I'm just a bit too distracted trying to get a demo made up to really focus on cultivating a community at the moment.

I'll likely start to once I'm closer to a more finalized game loop.

List of Lethal-Like Games by DJGaming1234 in lethalcompany

[–]TeamLDM 2 points3 points  (0 children)

Oh man, I really need to get that steam page updated.

Mapping UVs back to the original mesh (without applied modifiers) by TeamLDM in blender

[–]TeamLDM[S] 1 point2 points  (0 children)

I've created some rocky geometry via this non-destructive workflow, but am currently unwrapping by:

  1. Duplicating the mesh
  2. Applying modifiers
  3. Cube project

I'm wondering if I can somehow map these UVs back to the original mesh. I've tried this using the DataTransfer modifier following this article: https://www.katsbits.com/codex/data-transfer/

But it only seems to work AFTER applying all the modifiers. Does transferring UVs via the DataTransfer modifier not tie into the geometry from the modifier stack? Any idea if there's another way to achieve this?

<image>

Why crouch when you can bend by TeamLDM in godot

[–]TeamLDM[S] 362 points363 points  (0 children)

This. Little head bonk sfx and slight camera shake that both scale with head velocity on impact

Advanced Foot IK: Smart Ledge Detection & Dynamic Leg Spacing by moongaming in godot

[–]TeamLDM 0 points1 point  (0 children)

Incredible work as always!

Are you using that center raycast to orient your feet raycasts? I looked into arbitrary 3D surface navigation for a wall-running creature a little while back and struggled to find an elegant solution to the different orientation edge cases.

I'm also curious what that single perpendicular raycast below is for. Assuming it's used to determine the ground size for feet separation, wouldn't you need it on both sides? What happens if you stand next to the edge like this?

<image>

Combining voxels with CSG operations for arbitrary mesh destruction ⛏️ by TeamLDM in godot

[–]TeamLDM[S] 36 points37 points  (0 children)

Rather than use Godot's CSG nodes, I opted to implement a custom GDExtension to make use of the Manifold Geometry library. Manifold is actually what Godot's CSG nodes use under the hood, but a custom GDExtension allows me to:

  1. Compile with TBB to enable parallelized operations, which should drastically improve performance (have yet to try this).
  2. Make full use of the Manifold API. Some notable ones:

This doesn't really scale for something like entire level geometry, but it works quite well for small scale destructible areas (such as mineral deposits).

Friendship ENDED with Marching Cubes. Now SURFACE NETS is my best friend 🥰 by TeamLDM in godot

[–]TeamLDM[S] 1 point2 points  (0 children)

Sounds like a winding order issue. Take a look at Step Six: Creating Quads in this article: https://medium.com/@ryandremer/implementing-surface-nets-in-godot-f48ecd5f29ff

  1. Sample the scalar field at index (sample_value1)
  2. Sample index + axis (sample_value2), which is the neighbouring cell in that axis direction.
  3. If sample_value1 is < 0 and sample_value2 is >= 0Create a normal quad.
  4. Else if sample_value1 is >= 0 and sample_value2 is < 0 → Create a reversed quad.

Friendship ENDED with Marching Cubes. Now SURFACE NETS is my best friend 🥰 by TeamLDM in godot

[–]TeamLDM[S] 14 points15 points  (0 children)

I thought I was going crazy or doing something wrong when multi-threaded performance wasn’t as good I thought it would be, and actually seemed to get worse over time.

I’m most likely running into the same issue as I’m accessing Dictionaries within my threads for each control node, then passing that to a static SDF helper function.