News for hackers. Stuff that matters.
Re:Game Engines on Steam: The Definitive Breakdown by ehutch79 on Thursday September 02, 2021 @04:30PM (#28396949)
I'm surprised Godot doesn't even appear
Re:Game Engines on Steam: The Definitive Breakdown by larsiusprime on Thursday September 02, 2021 @08:24PM (#28399079)
Godot is severely undercounted because of its export format -- many Godot games are just a single EXE! There are actually a few hundred Godot games we could detect (the ones exported in a particular format), but not in the particular criteria for this report.

https://www.gamedatacrunch.com/steam/list/all/reviews_total/...

Re:Game Engines on Steam: The Definitive Breakdown by adamrezich on Thursday September 02, 2021 @04:42PM (#28397102)
I'm not—has anything notable shipped with it yet? it's a cool engine and I'm sure there's a nonzero number of Godot games on Steam but it's not surprising it doesn't show up in metrics like these yet
Re:Game Engines on Steam: The Definitive Breakdown by humps on Thursday September 02, 2021 @04:49PM (#28397173)
Next week the answer to your question is probably "yes" https://twitter.com/NathanGDQuest/status/1430992735192985605
Re:Game Engines on Steam: The Definitive Breakdown by jay_kyburz on Thursday September 02, 2021 @05:20PM (#28397506)
Juan made it very clear in a follow up tweet that Sega would have had to have made significant changes to the engine in order to ship a game on it.

I spent three months working in Godot a few years ago and it was clear even then that there were significant bugs in major systems. If you want to ship on Godot you had better be prepared to roll up your sleeves and dive right down deep into the engine.

This is one of the few bugs I logged before finally giving up on the engine.

https://github.com/godotengine/godot/issues/32383#issuecomme...

The object pooling system reuses references so that your script can't tell when a reference to an object it is holding, changes. They doubled down on the bug by making the behavior in Debug different to a Release build. It's marked closed, but users still report it happening.

Re:Game Engines on Steam: The Definitive Breakdown by kevingadd on Thursday September 02, 2021 @07:58PM (#28398885)
Aside from whether this should be fixed, that's a classical problem not unique to godot: https://en.wikipedia.org/wiki/ABA_problem

The real problem is that you are not properly managing the lifetime of your objects so you have dangling references. Obviously Godot could provide better tooling to help you identify and troubleshoot it, but dangling references like that will cause breakage in basically any runtime environment that makes it possible to have them.

IDs of that sort can be reused in many environments. For example, if you use Unity, .NET GCHandle IDs can be reused in the exact same way.

Re:Game Engines on Steam: The Definitive Breakdown by jay_kyburz on Thursday September 02, 2021 @08:35PM (#28399184)
Sure, there are easy workarounds, but the issues are unexpected and secret (and now only in release). In any other scripting language I've worked on you can do some test on a reference to see if its null or doesn't exist. In Godot you have to listen for the object reference leaving the scene.

I can guarantee this is not an issue in Unity where a object that has been removed from the scene is null.

Re:Game Engines on Steam: The Definitive Breakdown by kevingadd on Thursday September 02, 2021 @09:13PM (#28399395)
As it happens, Unity has its own version of this problem, where it pretends that a non-null dangling reference is a null-reference: https://jacx.net/2015/11/20/dont-use-equals-null-on-unity-ob...
Re:Game Engines on Steam: The Definitive Breakdown by jay_kyburz on Thursday September 02, 2021 @10:03PM (#28399663)
That is not the same at all. The equivalent would be that your reference is pointing to some other object in the scene.
Re:Game Engines on Steam: The Definitive Breakdown by thaumasiotes on Thursday September 02, 2021 @09:41PM (#28399556)
> In any other scripting language I've worked on you can do some test on a reference to see if its null or doesn't exist.

Except - and this is called out in the github thread - the reference is not null and does exist. The check is working correctly.

The problem lies in the fact that what you want to check for is "is the object I originally pointed to still around?", but instead of doing that, you're checking "is the thing I'm pointing to currently a valid object?".

Re:Game Engines on Steam: The Definitive Breakdown by jay_kyburz on Thursday September 02, 2021 @10:07PM (#28399679)
Yes, but read further, there is no method to test whether the object I pointed to still exists. You have to listen for a signal that the object is leaving the scene and manually clear your reference.
Re:Game Engines on Steam: The Definitive Breakdown by nightowl_games on Friday September 03, 2021 @02:14AM (#28400974)
https://docs.godotengine.org/en/stable/classes/class_%40gdsc...

I'm making a complex Godot game.

'is_instance_valid' does what you are describing.

Re:Game Engines on Steam: The Definitive Breakdown by jay_kyburz on Friday September 03, 2021 @03:10AM (#28401248)
Only in Debug builds. If you rely on it in a release build you will crash.

https://github.com/godotengine/godot-proposals/issues/1589 https://github.com/godotengine/godot/issues/41179

Reduz doesn't want the fix in release builds because the will be slower!

Re:Game Engines on Steam: The Definitive Breakdown by nightowl_games on Friday September 03, 2021 @11:19AM (#28405384)
I don't understand. That's not what that PR says. That PR is about using == null. It offers no substantial information about is_instance_valid.
Re:Game Engines on Steam: The Definitive Breakdown by jay_kyburz on Friday September 03, 2021 @04:33PM (#28409055)
Apologies, you might need to do some digging and research on your own.

On Oct 2 @RandomShaper said "is_instance_valid() was made thread-safe, but it's still not something you can trust. An object allocated at the same address as a freed one will report a false positive. That's, of course, considering that what you want to check is that your variable is still pointing to the object you assigned, and not to just some object, which I think is the case.

@reduz respoinded with "Ah that may be still the case of 3.2, but in 4.0 this function is 100% trustworthy"

Re:Game Engines on Steam: The Definitive Breakdown by thaumasiotes on Friday September 03, 2021 @01:37AM (#28400747)
> there is no method to test whether the object I pointed to still exists

There probably is such a method, but you'd have to invoke it on the object, not on some other unrelated object.

Re:Game Engines on Steam: The Definitive Breakdown by Arech on Friday September 03, 2021 @09:06AM (#28403624)
One of the funniest moments I've experienced with Godot while developing the FitOwl [1] was the behaviour of a flag that governs sleeping state of RigidBodies. That flag was meant to exclude the body from physics-related computations to save some CPU-cycles and it just didn't work.

When I reported the issue to the bugtracker, I was asked by devs literally "I still don't understand the issue you're experiencing. Aside from saving resources, why is it important that Rigidbodys are asleep?"... I was (and still is) speechless from that attitude, because, c`mon guys, the sole reason for that flag is to save some resources! But they didn't really cared about that, just reworded the docs a little and happily closed the issue.

Moreover, I got an email from one of the Devs stating that I'm violating their Code of Conduct for the phrase "I'm struggling to not interpret your comment as a joke.".

That was the last time I tried to take part in Godot improvement...

[1] https://news.ycombinator.com/item?id=28402743

Re:Game Engines on Steam: The Definitive Breakdown by dkersten on Thursday September 02, 2021 @08:20PM (#28399054)
My experience back in 2018 was similar. I wanted to do some fairly simple 2D things and it was quite a lot of hassle. I’m sure the issues I hit are fixed now, but at the time it was frustrating.

With that said, I’m still happy to have contributed a little bit of code to gdnative. Nothing exciting, just some quality of life stuff I wanted at the time (a few variadic template wrapper functions around the C api to avoid having to manually construct godot list objects of parameters). Last I checked it was still in use, although moved to a different file.

Re:Game Engines on Steam: The Definitive Breakdown by meibo on Thursday September 02, 2021 @08:18PM (#28399031)
A lot of ports, especially from Japan, only do menus and graphics in new/general-purpose engines and use a native library with their old codebases for logic.

I can imagine that this was done here, Godot isn't really ready for a game like this IMO - it would have taken a huge amount of work.

Re:Game Engines on Steam: The Definitive Breakdown by adamrezich on Thursday September 02, 2021 @05:01PM (#28397313)
yooooo that's rad! great news for Godot!
Re:Game Engines on Steam: The Definitive Breakdown by kvark on Thursday September 02, 2021 @05:02PM (#28397329)
https://store.steampowered.com/app/975150/Resolutiion/ felt quite good to me. It's not an AAA title, it's not graphically complex, doesn't have thousands of actors on screen. But the engine does the task very well.
Re:Game Engines on Steam: The Definitive Breakdown by adamrezich on Thursday September 02, 2021 @05:15PM (#28397435)
that's awesome, it's going to be great to see Godot getting more and more market share as it matures in the coming years.
Re:Game Engines on Steam: The Definitive Breakdown by coptun on Thursday September 02, 2021 @08:25PM (#28399098)
Re:Game Engines on Steam: The Definitive Breakdown by poisonarena on Thursday September 02, 2021 @05:28PM (#28397595)
Yes my favorite game right now: Cruelty Squad https://store.steampowered.com/app/1388770/Cruelty_Squad/
Re:Game Engines on Steam: The Definitive Breakdown by WJW on Thursday September 02, 2021 @05:48PM (#28397794)
I looked at the trailer on steam and now my eyes bleed. I guess it is a lot of fun though?
Re:Game Engines on Steam: The Definitive Breakdown by nohr on Thursday September 02, 2021 @08:22PM (#28399067)
A YouTube comment described it best: "Someone spent a ton of time to make sure this game is designed and plays great, and then spent just as much time making it look like it doesn't."
Re:Game Engines on Steam: The Definitive Breakdown by AfterShave on Friday September 03, 2021 @05:07AM (#28401959)
Cruelty Squad's artstyle feels like someone getting every answer wrong on their art test on purpose. Then sticking with it and making it feel sort of cohesive in the end anyway. It certainly grew on me more and more as I played it.

Not to mention that the actual gameplay is incredibly fun. With varied gear options, replayable missions with new gear and lots of secrets to find.

Re:Game Engines on Steam: The Definitive Breakdown by Sakos on Thursday September 02, 2021 @09:44PM (#28399579)
I agree that the game looks like vomit, but it's really fun to play and it has a lot of personality (partly because of the visual design). It's worth playing, imo.