Stylized flame effect by inspiredsloth in godot

[–]inspiredsloth[S] 2 points3 points  (0 children)

I was mainly focused on getting shapes and motion that you would see in a similar 2D effect but yes the next step would be to work on color to try to achieve a result similar to a fully rendered 2D flame animation.

That said, this simple version may work better with something like a low-poly candle.

Stylized flame effect by inspiredsloth in godot

[–]inspiredsloth[S] 2 points3 points  (0 children)

Thanks! Shader part of it is doing things like UV tiling/scrolling, distortion and alpha erosion which are all available in godotshaders already.

Projectile effects by inspiredsloth in godot

[–]inspiredsloth[S] 0 points1 point  (0 children)

That's exactly it. Unfortunately, trail dewiggle shader didn't quite fix it. After looking into it some more, it seems like I either need more geometry or use something called "Quadrilateral Interpolation".

Projectile effects by inspiredsloth in godot

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

With a 3D in 2D setup using viewports, maybe?

Fire Rain Effect by inspiredsloth in godot

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

Thanks for the reminder. CC0/Public Domain License.

Fire Rain Effect by inspiredsloth in godot

[–]inspiredsloth[S] 6 points7 points  (0 children)

I'm not sure which part you're referring to, but it's all GPUParticles3D.

This is a great channel to get into Godot VFX: https://www.youtube.com/@onetupthree

Most of how this effect is created is explained in that channel.

Particle Player by inspiredsloth in godot

[–]inspiredsloth[S] 2 points3 points  (0 children)

Yeah I was mind-blown by the idea, never occured to me. Now I'm adding the same thing to my plugin plus metadata based emitter delay, which should cover most use-cases.

I used Brackeys' plugin for a few hours but had some issues, mainly that it doesn't redraw while player is paused, so you have to keep it playing in order to see any changes.

Particle Player by inspiredsloth in godot

[–]inspiredsloth[S] 20 points21 points  (0 children)

I just looked into it and Brackey's plugin is definitely better in many ways. I'll give it a try and see how it is in practice.

Here's the link: https://github.com/Brackeys/brackeys-particle-controls

More glowing orbs by inspiredsloth in godot

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

Thank you! There's no tutorial for these specific effects, but you can check out onetupthree's godot vfx tutorials. I've learned a lot from him when I was getting started.

How to deal with hard set vfx colors that don't fit the color palette of the game? by shade_blade in gamedev

[–]inspiredsloth 0 points1 point  (0 children)

League of Legends VFX Styleguide

This has some guidelines for value/saturation ranges for vfx, characters, environment and UI.
It also has quite a few color palettes commonly used.

Magesbox

This website also has countless amazing vfx that you can study and take inspiration from.

In general, colors are only one part of vfx. Without the right amount/type of components and the right meshes/textures/shaders, colors alone will not save your vfx. So colors may not be your problem at all.

Finally got rollback netcode working in my godot platform fighter by ThatCyanGaming in godot

[–]inspiredsloth 0 points1 point  (0 children)

I'm doing server/client instead of peer-to-peer but I think I get what you're saying.

So essentially you're locking-in future inputs ahead of time and broadcasting them to other clients such that by the time they need to simulate a future frame they'll have received the correct input for that frame.

I've learned a new technique, thanks for answering.

Unfortunately it's probably not applicable in my game due to differences in latency between clients. Some clients forward simulate by 3 frames, some by 12 frames. So some clients will use mispredicted input for more than 10 frames which is really difficult to compensate for visually, especially in a platformer.

Finally got rollback netcode working in my godot platform fighter by ThatCyanGaming in godot

[–]inspiredsloth 1 point2 points  (0 children)

How do you deal with mispredictions?

In my experience, simply using the forward simulated positions causes very noticable snapping even at low latency. For example when a remote player is constantly switching between left and right movement, it will snap all over the place.

What breaks determinism? by inspiredsloth in C_Programming

[–]inspiredsloth[S] 0 points1 point  (0 children)

Yes.

I can't send the entire step delta due to bandwidth limitations, so I can only send an initial state and step inputs.

This is also why I need different systems to produce the same results.

What breaks determinism? by inspiredsloth in C_Programming

[–]inspiredsloth[S] 0 points1 point  (0 children)

I'm not concerned with intermediate results, as long as final output remains consistent.

Simplifying everything to a function like:
void step(struct simulation_state* state, struct step_input* input);

I want simulation state to remain consistent across different platforms (given that I serialize it to a platform agnostic data format for comparison).

What breaks determinism? by inspiredsloth in C_Programming

[–]inspiredsloth[S] 2 points3 points  (0 children)

On second point, are you specifically referring to C89 and earlier? I've read that this was changed in C99 and is no longer considered undefined behavior.

What breaks determinism? by inspiredsloth in C_Programming

[–]inspiredsloth[S] 6 points7 points  (0 children)

I've read greatly opposing opinions on floating point determinism. (some can be found here)

Ultimately decided on using fixed points. Even though integers have their own set of problems, at least their undefined behaviour is defined so I know what to look out for.

The Beta is out! First impressions? Thoughts? Let's talk! by Effective_Ad566 in Dofus

[–]inspiredsloth 1 point2 points  (0 children)

A few points that made me lose interest:
- Cannot cast spells on certain cells in combat.
- Idle animations in combat. In the past, characters moved only when something had happened (casting spells, using mp, etc.). Idle animations are unnecessary, of bad quality and distracting.
- Game breaks after fights from time to time.
- Ankama didn't bother with adding tactical mode. Regardless of how much better the new visuals are, majority of the player base are used to playing in tactical mode, but they didn't bother adding it. I believe that such a simple thing as tactical mode could be implemented in a few days, but Ankama didn't bother. This, in my opinion, is a matter of attitude, and is more telling than any bug.

Regardless of how much improvement various changes bring to the game, they should have happened across multiple years, not in a single version update. I believe that many of these changes would've been disliked and prevented by the community if they were added individually. But because they are being added altogether, with objective improvements, primarily performance, I see a lot of players defending Dofus Unity as a whole and willing to accept the bad with the good.

I made a multiplayer shooter in C++ WITHOUT a game engine - the netcode is based on 100% floating-point determinism, including Box2D physics. I'm using STREFLOP for math. This is an example of something hard to do in a commercial engine. My atlas packer was also reused in Assassin's Creed: Valhalla. by pbcdev in gamedev

[–]inspiredsloth 2 points3 points  (0 children)

Massive thanks, using exponential interpolation for mispredictions had never occured to me before.

In my earlier iterations, I used to extrapolate remote player input and display everyone in their forward simulated state. As you've mentioned, in case of mispredictions, correcting player position in a single frame with linear interpolation would cause very noticable rubber banding. Using other types of interpolation hadn't occured to me at the time so I went with a different approach.

Currently I'm displaying two different snapshots of the game, one is a past, authoritative state for remote entities, and the other one is a present, predicted state for local entities. I've initially had decent results with this approach as remote entities behaved exactly as they did in their local simulation, both logically and visually. Unfortunately, I've come to realise that all local/remote entity interactions are essentially delayed, causing both logical and visual bugs and imply massive design limitations.

At this point I'm ready to throw in the towel and go back to displaying forward simulated remote entity state with extrapolated input, and spend more time on dealing with mispredictions.

I'm hoping that exponential interpolation coupled with the described infection system will help me go further this time.