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.
Godot 4 Beta 1
101–110 of 119 posts
Re: Godot 4 Beta 1
#102Earlier 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.
Re: Godot 4 Beta 1
#103from 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…
Re: Godot 4 Beta 1
#104from 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...).
Re: Godot 4 Beta 1
#105Earlier 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.
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
#106Earlier 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.
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
#107Earlier 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.
Re: Godot 4 Beta 1
#108Earlier 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.
Re: Godot 4 Beta 1
#109Earlier 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?
Re: Godot 4 Beta 1
#110from 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…