Live data from Hacker News

Godot 4 Beta 1

godotengine.org

101–110 of 119 posts

Re: Godot 4 Beta 1

#101

Earlier quoted context omitted.

And, as I explained, this line of reasoning is both fallacious and completely irrelevant[1]. [1] https://news.ycombinator.com/item?id=32859519

It's highly relevant. Devs aren't obligated to optimize for your friend's extremely weak computer. They may well be optimizing for a median gaming PC instead.

That's why I loved The Witness devs who released an update for the game, with improved support for my crappy old integrated GPU on laptop. Even though it was not meeting tmhardware requurements of tge game.

Re: Godot 4 Beta 1

#102

Earlier quoted context omitted.

No WebGPU support yet in the engine

That's a shame, first-class support for the web in any of the major engines would be a killer feature imo.

Not really, we are yet to see any WebGL game with the same quality as Infinity Blade.

https://www.youtube.com/watch?v=JDvPIhCd8N4

Re: Godot 4 Beta 1

#103
post #23

from the article, >>As much as we love exciting new features, we also want to see people create games on the full spectrum of devices for everyone to enjoy. This is one of the main attitudes of the Godot team I really appreciate a lot. It might be easy for people in more developed nations to upgrade their hardware every few years, but there's people still playing games running on computers from 2002 and before. I use…

Optimization levels of many newer games are terrible. Low-poly, visually simplistic games like Fortnite, Risk of Rain 2, Valheim, and Deep Rock Galactic barely run on a friend's computer (that was made only 5 years ago). Visually more complex games like League of Legends run buttery smooth on the exact same hardware. (ironically, he says that Valorant, made by a non-Epic company, apparently runs significantly better…

You might need to understand what system requirements are. "Recommended" or "Minimum" hardware these is what developers has tested on and where they provide support. Some games are never designed for whole hardware classes like laptops. If you complain that game does not run on hardware that does not meet "minimum" requirements you are complaining that 1 > 0 is true. The only reasonable response for devs is to provide refund of money spent on purchasing game.

Re: Godot 4 Beta 1

#104
post #27
post #23

from the article, >>As much as we love exciting new features, we also want to see people create games on the full spectrum of devices for everyone to enjoy. This is one of the main attitudes of the Godot team I really appreciate a lot. It might be easy for people in more developed nations to upgrade their hardware every few years, but there's people still playing games running on computers from 2002 and before. I use…

Even seemingly simple games are clocking in at 100GB+ in disk space. I think in terms of performance many games are setting the floor at the Nintendo Switch or the Steam Deck, often ripping out features to get it to run on those platforms (CIV6, 2k etc). This is one reason I really admired Valheim (~1GB). Though even that game had CPU issues (also its an indie title so...).

Isn’t this a symptom rather than a cause. Because game manufacturers can create larger games with scant regards for people’s resources… they do.

Re: Godot 4 Beta 1

#105
post #47

Earlier quoted context omitted.

Yeah callables are a great addition to 4!

Yeah it is part of why I'm going to start with GDScript instead of jumping straight to dotnet 6 (which is what initially got me thinking about trying the new version). I may still jump to c# but I wanna give GDScript a fair shake first. Plus the docs/tutorials tend to be more plentiful for GDScript.

>Plus the docs/tutorials tend to be more plentiful for GDScript.

I quite like reading tutorials in GDScript and trying to convert them to C#, I feel like it strikes a good mix between being told what to do while also getting to go off and explore the engine myself and reinforcing that same learning.

Re: Godot 4 Beta 1

#106
post #93

Earlier quoted context omitted.

I would like too. But games needs to load system libs (which are linked to a glibc), and games are not fully libdl-ized (dlopen/dlsym/dlclose). Additionnaly gcc static libstdc++ does not have a "libdl" mode, or even worse: it seems it links to internal glibc symbols. The glibc "should" be libdl clean, minus of few C runtime services I guess. Basically, binaries of games cannot be "pure" and "simple" ELF64, in other w…

I'm not really proficient with games or C/C++ or gcc therefore please forgive me if this question sounds naive: With games already being large downloads wouldn't it make sense to bundle many/most libraries directly instead of relying on system versions? I did some experiments (with rust) and found musl builds and static linked libraries working quite fine.

The part of a game which is "code" is not "large": it is "small", except if a game has really little data, namely it is a small game, and if it is a small game...

Then, on elf/linux systems, you have "alternatives" and serious abi instability due mostly, but not only, to gnu symbol versioning (it is pathological in glibc, or it could be a scam). Game binaries cannot expect _their_ alternatives to be there, that's why they have to rely on really only video game core, very video game core libs and the sysv abi(elf). The only way to properly "deal" with abi (modules, symbols, with their versions) stuff on elf/linux, is to dynamically load as much as possible from the system: libdl with only the 3 symbols dlopen/dlsym/dlclose.

Ofc, a game should statically link as much as it can (for instance libm), but it requires to dynamically load the video game core libs. Those video game core libs may be linked with musl (hope they have their libdl now), glibc, bionic (if it has a elf loader), etc. If you want full static binaries, you will need a full elf loader into your static binaries. You cannot create such static binaries with the glibc and it is not supported by the set of glibc libs as far as I know (I wonder if it is not done conveniently on purpose to "break" the usage of alternative elf/c runtimes), and if I recall properly you can with musl.

The video game core libs on a elf/linux system are:

- wayland window system code is static into game binaries, but for key symbols resolution, the game must dynamically load the libxkbcommon library for the xkb client state machine with the user configuration (you may not have the "right" xkb data files for a user). Basically, you feed wayland keycodes to the xkb state machine and based on user specific configuration files, you get out the right key symbol (some games have a mode to bypass key symbol resolution and work directly with keycodes).

- x11 system code, the usage is now to dynamically load the client xcb libs and libxkbcommon-x11 (do not use libX11).

- android has wayland, but I don't think it's xkb (no libxkbcommon(-x11) lib).

- GPU, vulkan by-design does require dynamic loading, and GL fallback will require to dynamically load of the targetted GL libs (some games could be 100% cpu rendering in window systems surfaces using a presentation interface).

- sound: you only need to dynamically load the alsa-lib (libasound) as software mixers (dmix/pulseaudio/pipewire/jack/etc) are hidden behind the alsa-lib. (I don't know for android, but alsa has a mobile phone specific configuration interface, don't think it is stable yet though).

- for joypad stuff, it is linux specific with the interface of /dev/input/eventN files.

In theory, games should be sets of pure and simple ELF64 binaries (with the least amount of relocation types), libdl-ing everything from the system. It means no c runtime main() function, but the sysv ABI entry point, which is a basically a main() anyway. To deal with cross-platform (elf/linux|doz|fruitOS|etc), platform specific fallbacks (on elf/linux platform: wayland->x11, vulkan->gl->cpu, etc), proper compile-time and runtime tables of functions usually will do the trick.

Reality check: libstdc++, some libgcc services, and many third-party libs are not libdl-ized. The mitigation is to use "-static-libgcc" and "-static-libstdc++" compiler/linker options and link with an extremely, EXTREMELY old glibc (what godot does). It seems libstdc++ will link with glibc internal symbols if linking happens with a glibc on the build system.

NOTES: for i18n games with "full" text input, an input method should be provided by the game itself as you cannot expect a specific input method to be installed on the user system, if any. A GUI toolkit is "above" the window system and related to user alternatives (some may prefere QT, other GTK, or enlightenment or neither of them, then for the same reason than before, a game must package its GUI toolkits.

Ofc, if you code in plain and simple C, a lot of those issues can be worked around much more easily.

Re: Godot 4 Beta 1

#107
post #41

Earlier quoted context omitted.

Thanks! I think it makes sense, as a non-game programmer it felt "weird" so appreciate the confirmation from your angle.

I also was doing the same but ultimately put it down to wait for Godot 4 (and its niceties such as occlusion culling - I had performance issues with quake 1 maps loaded up through godot). Do you have a repo? I had networking etc running fine with client/server architecture but I would like to see how others have achieved this.

Mine was a bashed together repo from some example tutorial. I was trying to build a paintball game so most of this was actually interest in exploring solid body projectiles vs. hitscan. I was able to get 10 players with 10 balls per second running reasonably smooth without any crazy optimization so that was cool. When I hit the wall of shared lib thats when I gave up further exploration.

Re: Godot 4 Beta 1

#108
post #105

Earlier quoted context omitted.

Yeah it is part of why I'm going to start with GDScript instead of jumping straight to dotnet 6 (which is what initially got me thinking about trying the new version). I may still jump to c# but I wanna give GDScript a fair shake first. Plus the docs/tutorials tend to be more plentiful for GDScript.

>Plus the docs/tutorials tend to be more plentiful for GDScript. I quite like reading tutorials in GDScript and trying to convert them to C#, I feel like it strikes a good mix between being told what to do while also getting to go off and explore the engine myself and reinforcing that same learning.

This is also true, and I'd probably do some of that after learning the transliteration (at least some of the existing documentation like the intro to 2d tutorial give examples in both).

Re: Godot 4 Beta 1

#109
post #94

Earlier quoted context omitted.

I hope to be the one to post LÖVE 12 when its out. LÖVE is a far superior game engine in every way! https://love2d.org/

It looks nice. Will it give me direct access to the C and SDL APIs? Can I use my own SDL cdefs?

People currently do this by accessing them directly with the LuaJIT FFI.

Re: Godot 4 Beta 1

#110
post #23

from the article, >>As much as we love exciting new features, we also want to see people create games on the full spectrum of devices for everyone to enjoy. This is one of the main attitudes of the Godot team I really appreciate a lot. It might be easy for people in more developed nations to upgrade their hardware every few years, but there's people still playing games running on computers from 2002 and before. I use…

What was the MMO? Was it Tibia or OSRS or something? Was your friend Latin American by any chance?
Post reply on HN