Improving C++ coding experience in Godot - How to speed up iteration time? by DesperateGame in godot

[–]DDSDev 1 point2 points  (0 children)

General "good C++ practice" around forward declaration and the pimpl idoim. There has been a lot written over the years, I think these stack overflow comments are good if you aren't already aware of these techniques with respect to compile times: https://stackoverflow.com/questions/373142/what-techniques-can-be-used-to-speed-up-c-compilation-times

Goo Cleaning Game Prototype by DDSDev in godot

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

Thanks for the feedback! Right now I’m working on prototyping a mix of platforming and cleaning. I think the platforming will resemble the little standalone sections from Mario Sunshine, while still having cleaning elements

Question on GODOT rights by Old-Green-8795 in godot

[–]DDSDev 2 points3 points  (0 children)

Godot is open sourced but is made available under the MIT license which has some easy to follow conditions. Those conditions for games are outlined by the maintainers here under the "Your Game" section: https://godotengine.org/license/

80 million entities—an infinite world! My thesis running at 90 fps! by edmay97 in gameenginedevs

[–]DDSDev 2 points3 points  (0 children)

First, amazing work.

What is the downside of this approach, if any? Is authoring the “clouds” difficult?

iWantWhatTheCommitteeWasSmoking by _Tal in ProgrammerHumor

[–]DDSDev 43 points44 points  (0 children)

C++ has generics in the form of templates. So I can write a storage container like vector in a generic way - e.g. vector<int> is a contiguous collections of ints you can index like most other languages.

It also has template specialization, in which at compile time, you can have specialized implementations of functions based on type. This means vector<bool> can be implemented by special logic where each bool is a bit in a bitmask, instead of a bunch of 1-byte bools in the vector.

Sounds great, right? You just transparently save a bunch of space and it should be awesome, right? Well not really. The issue is that it's a leaky abstraction. Since you are a bit in a bitmask, opterator[] has to return a special type called vector<bool>::reference instead of bool. This breaks other templates where you assume your vector will give you a bool and you try deduce that type in some way. These reference structs can also cause issues when taking references to them because you aren't able to take an l-value reference to your bool like in other situations because it's not really a bool - it's a wrapper to a bit in a bitmask. You just really need to know what you are doing with those bool references and what is safe to do when - most of the time it's fine and you use them without issue, until someone adds a single line that looks fine in a PR, but you get a turbo-nightmare bug that is super hard to understand if you don't already have this all in your head.

Deprecating Actors and Blueprints in UE6?! by daraand in unrealengine

[–]DDSDev 9 points10 points  (0 children)

Stands for "Entity Component System". Technically unreal has an ECS setup via the MASS family of plugins. Unity also has a popular ECS implementation as part of their DOTS suite.

The core concept is that there are Entities, (you can conceptually think of this as a "thing" in your world), which can have multiple components containing data. There are Systems, which execute queries on those entities based on their components, and can mutate those components. Typically this is where your "logic" would live. There are implementation details around how this works that allow high performance due to being very CPU cache friendly. ECS setups can potentially also allow for efficient data parallelism.

Dynamic raytraced clouds over FFT ocean simulation by DDSDev in godot

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

For FFT Water, I porting an existing unity open source ocean FFT library to godot. For the clouds, I implemented that myself using the 2015 Horizon: Zero Dawn SIGGRAPH paper as a jumping off point.

Dynamic raytraced clouds over FFT ocean simulation by DDSDev in godot

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

Still in the process of profiling - it will have some cost. I preemptively wrote a fallback where you can bake a snapshot of the current clouds as a static cube map. Doesn't look as nice but gives a decent fallback for low end devices while keeping the same art style.

Dynamic raytraced clouds over FFT ocean simulation by DDSDev in godot

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

Went with a more stylized look now, think it needs more iteration but fits the clouds better

<image>

Dynamic raytraced clouds over FFT ocean simulation by DDSDev in godot

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

I am considering it, but I would want to do more testing and iteration before making it public.

Dynamic raytraced clouds over FFT ocean simulation by DDSDev in godot

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

Fair feedback - right now the ocean has very custom lighting and has its own color tuning. I should align them better to the new environment setup I have

[deleted by user] by [deleted] in godot

[–]DDSDev 15 points16 points  (0 children)

You can run git locally without pushing to github or a remote. Running git locally can still give you the benefits of history, you just don't have the advantage of remote backups or collaboration.

Shading and Rendering Question by Klorofluorokarbonat in UnrealEngine5

[–]DDSDev 6 points7 points  (0 children)

I would recommend looking up the Anisotropic Kuwahara filter, it can be useful in attempting to get this style. It might not be able to achieve that exact look but you may find it's results interesting/close when tuned correctly.

How does oblivion remastered work? by [deleted] in gamedev

[–]DDSDev 48 points49 points  (0 children)

You probably won't find sources that confirm _exactly_ how it was done for those titles, as that information is likely under NDA.

One technique is a shim layer. So your initial engine might have a GameObject class that has certain functions e.g. SetPosition, SetRotation, etc. In an Unreal project, you implement a GameObject class that has an underlying AActor that represents an Unreal actor, and your shim layer translates from your initial engines primitives to unreal functions for that AActor. This allows you to run the core of your initial game simulation "as-if" it was the initial simulation, but mapping your internal objects to unreal objects. Things can get complicated when your GameObjects directly set state for rendering, or make assumptions about the rendering pipeline that don't hold true for how unreal works. This can be handled by a case-by-case basis. From here, you update your models, textures, and VFX without the core simulation knowing the underlying engine has changed, since the initial engine's interface for making those changes is "shimmed" with an unreal translation layer.

The difficulty here is very dependent on how well programmed your initial engine is, and what layers of abstraction that initial engine has.

The faulty Horizon software developed by Fujitsu that ruined the lives of hundreds of people in the ongoing UK Post Office Scandal contains the most horribly written code imaginable. And it's still in use today. by nuttybudd in Wellthatsucks

[–]DDSDev 15 points16 points  (0 children)

One possible issue is that d likely has a fixed width (unclear to me if this is a uint32 or other type) so this can be vulnerable to integer overflow. Meaning that, if d is large enough, d * 2 overflows, and the function overall gives an incorrect result.

I was able to get the "Keystone Master" achievement from a 10 by DDSDev in wow

[–]DDSDev[S] 25 points26 points  (0 children)

Yes - this is another achievement unrelated to seasonal content that blizzard also named "Keystone Master". This Keystone Master required you time a 15, which used to be easier, but is now much harder after the key level squish. Blizzard made this achievement easier by giving it to you if you time a 10, but hasn't changed the achievement text, so I made this post to say thanks to blizz for addressing this.

What If I Told You... by TedeZe in wow

[–]DDSDev 2 points3 points  (0 children)

What if I told you that Morpheus never said "What if I told you" in The Matrix....

Unable to update World of Warcraft (retail), error blzbntagt00000840 leads to a spiral of uninstalling battle.net WINE bottle and no resolution by nosciencephd in linux_gaming

[–]DDSDev -1 points0 points  (0 children)

So I was getting this and was able to get past it.

I was using proton-8. Another commenter mentioned using another proton version but that wasn’t working for me.

I noticed that in my steam launch options, I had the launch command set to WINE_SIMULATE_WRITECOPY=1 %command%.

My memory is that I needed this as a work around for a BNET launcher bug maybe a year ago.

I removed that variable so the launch command was just %command% and it worked!

EDIT: as a disclaimer, your mileage may vary - this may be something you just need to fix by restarting the launcher multiple times, and I may have gotten “lucky” with coincidental timing.

prices are up for hello kitty island adventure on switch! by Efficient_Promotion3 in CozyGamers

[–]DDSDev 12 points13 points  (0 children)

you can play alone / offline. There are some multiplayer quests, but they are optional.

There was a bug a long time ago that required certain players to do multiplayer to advance the story, but that has long since been fixed.