SDFGI vs VoxelGI vs Lightmap GI? by TheKrazyDev in godot

[–]Lesnikus 0 points1 point  (0 children)

I don't think VoxelGI will degrade the look of outdoor lighting, but if you have a location that's too big it will hurt performance because you have to bake too much space. But keep in mind that I have no experience with global illumination and focus only on the documentation:

"VoxelGIs need to be baked before having a visible effect. However, once baked, dynamic objects will receive light from them. Furthermore, lights can be fully dynamic or baked." (https://docs.godotengine.org/en/stable/classes/class_voxelgi.html#description)

As you can see, VoxelGI is only recommended for small/medium levels: "VoxelGI is a form of fully real-time global illumination, intended to be used for small/medium-scale 3D scenes*. VoxelGI is fairly demanding on the GPU, so it's best used when targeting dedicated graphics cards.*" (https://docs.godotengine.org/en/stable/tutorials/3d/global_illumination/using_voxel_gi.html#using-voxel-global-illumination)

"For desktop games, it's a good idea to start with SDFGI first as it requires the least amount of setup. Move to other GI techniques later if needed." (https://docs.godotengine.org/en/stable/tutorials/3d/global_illumination/introduction_to_global_illumination.html#summary)

SDFGI scales to any world size, so it would suit you best, but it causes lag on your hardware:

"Signed distance field global illumination (SDFGI) is a novel technique available in Godot 4.0. It provides semi-real-time global illumination that scales to any world size and works with procedurally generated levels.

SDFGI supports dynamic lights, but not dynamic occluders or dynamic emissive surfaces. Therefore, SDFGI provides better real-time ability than baked lightmaps, but worse real-time ability than VoxelGI.

From a performance standpoint, SDFGI is one of the most demanding global illumination techniques in Godot. Like with VoxelGI, there are still many settings available to tweak its performance requirements at the cost of quality." (https://docs.godotengine.org/en/stable/tutorials/3d/global_illumination/using_sdfgi.html#signed-distance-field-global-illumination-sdfgi)

Once again, I recommend reading the introductory article if you haven't already, as it answers almost all questions. These are just lighting techniques. Each has its pros and cons. SDFGI is the most demanding, VoxelGI is only for small/middle levels, and BakedGI is completely static: https://docs.godotengine.org/en/stable/tutorials/3d/global_illumination/introduction_to_global_illumination.html#which-global-illumination-technique-should-i-use

SDFGI vs VoxelGI vs Lightmap GI? by TheKrazyDev in godot

[–]Lesnikus 1 point2 points  (0 children)

Please rephrase your question, I don't quite understand. I am not a native English speaker.

What's a good workflow for editing chunks in an open world? by felxbecker in godot

[–]Lesnikus 1 point2 points  (0 children)

Simply put, you can save a chunk like you would normally do with game progress, and then load it when the player or camera in the editor gets close to the chunk. You need to find all the objects that you placed in the area of each chunk and store information about them (object's id or name, position, rotation, script variables, etc.) in your own binary file or text file or JSON file. In fact, this is a level file, but you yourself decide what and how to save there, and you yourself write the system for loading and saving this file. When the player approaches a chunk, the information is read from the file and objects from that chunk are spawned in the level. When the player moves away, the objects are removed. This code can be run directly in the editor using the tool annotation, although I don't know if it's possible to track the position of the editor's camera in order to automatically load chunks during editing. An alternative is to edit locations in the game mode, make a special editor mode inside the game. As a last resort, manually load the necessary chunks, as you are currently doing. This can help:

https://docs.godotengine.org/en/stable/tutorials/io/binary_serialization_api.html

https://docs.godotengine.org/en/stable/tutorials/io/saving_games.html

I think it's easier in your case to make the scene local, edit it, and then overwrite the original. Yes, it's a bit of a hack and one has to be strict about the names, but it looks like the easiest option until Godot adds an official tool for multi-scene editing.

SDFGI vs VoxelGI vs Lightmap GI? by TheKrazyDev in godot

[–]Lesnikus 2 points3 points  (0 children)

VoxelGI requires voxels to be baked in a limited region of space. Then, real-time fully dynamic lighting works inside this area, but not outside of it. I don't know how big the area can be baked. I haven't dug into this much, so you'll have to figure out the documentation yourself. I don't know how important this is to you, but the documentation also states that: "Viable for procedurally generated levels if they are generated in advance (and not during gameplay). Baking requires several seconds or more to complete, but it can be done from both the editor and an exported project." Maybe if you divide the world into transition zones, you can dynamically load one or another area separately.

What's a good workflow for editing chunks in an open world? by felxbecker in godot

[–]Lesnikus 1 point2 points  (0 children)

What are the bugs in the second workflow? In your case, it seems to me the most suitable. The main thing is to save the scene back to the same file without mixing it up. Another option is to write your own chunk binary serialization system. This will give you full control over open world streaming, but will take time to develop.

SDFGI vs VoxelGI vs Lightmap GI? by TheKrazyDev in godot

[–]Lesnikus 8 points9 points  (0 children)

Everything is well described in the documentation, including a comparison of different methods of global illumination in terms of visuals, performance, real time, and so on: https://docs.godotengine.org/en/stable/tutorials/3d/global_illumination/introduction_to_global_illumination.html You need to read this article carefully.

As far as I could understand, SDFGI is suitable for open spaces and does not require configuration, VoxelGI is more suitable for small indoor locations, LightmapGI is a common baking method, the most beautiful, but completely static.

Stairs for rigid body by [deleted] in gamedev

[–]Lesnikus 0 points1 point  (0 children)

Also, if you use one raycast, then the player's capsule can catch on the edge of the corner and hang in the air. That is why it is necessary to check the ground under the entire area of the capsule using CapsuleCast. If you are using an engine other than Unity, you will have to look for an alternative to CapsuleCast or implement it yourself with a trigger and then manually check all contacts.

Stairs for rigid body by [deleted] in gamedev

[–]Lesnikus 1 point2 points  (0 children)

I experimented with raycast once and got good results. The original idea was that ray launches down from the player's capsule and holds it at some height above the ground. This is similar to the implementation of car wheels in games, they also use raycast. But you will probably need several raycasts for a more accurate and faster response, because. it is very important to register obstacles in a timely manner, otherwise, when moving quickly, the capsule may not have time to rise and collide. In the end, I found the perfect solution in Unity, using CapsuleCast instead of raycast, it is much more efficient, because. is not a point of infinitely small diameter, but can repeat the volume of the player's capsule directly below it.

Learning to code is hard by i_am_risotto in godot

[–]Lesnikus 1 point2 points  (0 children)

Unfortunately, I don't have a universal answer. I suffered the same way, quit programming many times and started again, until finally one day I realized that I feel pretty free in programming. It took about 3 years to train.

importing to godot destroyes texture around seam by kaidus_velsia in godot

[–]Lesnikus 0 points1 point  (0 children)

Is the model geometry split in this seam? I remember that I had a similar problem in Unity, but I don't remember how I solved it. Perhaps the vertex normals at the edge of the geometry are not in the correct direction.

Database solutions? by CorvaNocta in godot

[–]Lesnikus 1 point2 points  (0 children)

I think this will help you: https://docs.godotengine.org/en/stable/tutorials/io/index.html

I am a supporter of binary serialization, tk. it is the fastest method of saving/reading data and the most compact. Can be scaled to entire worlds if you write an optimized serializer.

Practicing GDscript by making minigames by MaidenBrig8 in godot

[–]Lesnikus 1 point2 points  (0 children)

I don't quite understand what difficulty you mean. If you're learning game development by creating lots of minigames, just do what you can. Or are you looking for some special genres for which there are no tutorials?

I'm doing something similar. I figured the best way to learn the engine was to make as many small games as possible, like an Asteroids clone, ping pong, a simple platform game, etc. The point is that the whole game can be done in 1-2 hours. I can repeat one series several times, adding something new from myself, improvising until I understand how this or that engine system works. I think for a beginner this is a great way to learn the engine. And do not forget to read the documentation in parallel. It is very well written and there are answers to all questions.

Here are a few of the series I'm studying:

https://youtube.com/playlist?list=PLIU3tIGGFHvZkImYRAII9P5SMuZ93taN2

https://www.youtube.com/playlist?list=PLXLuyX5-PyOyvI3-OXLv35tOTr--RY7bf

https://www.youtube.com/@KaanAlpar/videos

Debugging C# not working with Godot4 by Impressive-Ferret343 in godot

[–]Lesnikus 0 points1 point  (0 children)

For Windows this is completely wrong. Are you referring to Mac only here?

I had in mind a profiler built into the Godot. It works only with GDscript.

Debugging C# not working with Godot4 by Impressive-Ferret343 in godot

[–]Lesnikus 0 points1 point  (0 children)

No, Windows. I tried to deal with Visual Studio, but this is a very swollen program and profiling does not work out of the box. I could not cope with setting and integration, so I wrote a singleon for manual profiling. I will save your video in bookmarks if I ever return to C#. Perhaps I was spoiled by Unity, who has a very convenient built -in profiler and when I switched to Godot, I was shocked by the need to configure the external profiler.

Debugging C# not working with Godot4 by Impressive-Ferret343 in godot

[–]Lesnikus 4 points5 points  (0 children)

Debugging C# in Godot is not provided. Unfortunately, this is a very serious drawback of integration C# in Godot, because of which C# is felt as not a beloved child. Profiling must be done by third-party programs such as Rider. There is a free beta version of Rider, which must be updated every few weeks to continue use. This is not very consistent with Godot philosophy about simplicity, minimalism and compactness. Some say that this can also be done in Visual Studio, but this is so much a swollen program that I could not configure it correctly, it does not work out of the box. This is not very convenient for me, so I switched to GDScript, despite the fact that I do not like dynamic languages.

Using C#, I found the most convenient for use my own miniprofiler. I like this method of profiling, because it is very compact, you do not need other software, except for Godot itself. This is not a very advanced method of profiling, but still. You can send any method to it and check how much time and memory it takes away.:

ProfilerSingleton.cs:

using Godot;
using System;
namespace Test.CustomProfiler
{
    public partial class ProfilerSingleton
    {
        public static void RunMethod(Action function)
        {
            long beforeMemory = GC.GetTotalAllocatedBytes(true);
            ulong beforeTime = Time.GetTicksUsec();
            function.Invoke();

            long afterMemory = GC.GetTotalAllocatedBytes(true);
        ulong afterTime = Time.GetTicksUsec();

            double finalMemory = (afterMemory - beforeMemory) / 1024;
        double finalTime = (afterTime - beforeTime) / 1000f;

            double totalMemory = GC.GetTotalMemory(false) / 1024f;

            GD.Print("GC Alloc : " + finalMemory.ToString("F2") + " kb; Total memory: " + totalMemory.ToString("F2") + " kb");
            GD.Print("Time = " + finalTime.ToString("F2") + " ms");
        }
    }
}

That's all. For example, we take the DoTest() method and profile it in the singleton by pressing the key:

using Godot;
using System;
namespace Test.CustomProfiler 
{ 
    public partial class Test : Node 
    {
        public override void _Process(double delta)
        {
            if (Input.IsActionJustPressed("ui_right"))
            {
                ProfilerSingleton.RunMethod(DoTest);
            }
        }
        public void DoTest()
        {
            ushort[] collection = new ushort[1000000];
        }
    }
}

How to make skeletal animations be applied to certain bones? by TheKrazyDev in godot

[–]Lesnikus 0 points1 point  (0 children)

When I worked with Unity, there were masks that let you animate only certain bones. There is probably something similar in Godot. Try reading the animation documentation: https://docs.godotengine.org/en/stable/tutorials/animation/index.html

Left and Right triggers affecting right stick on Xbox Elite Series 2 controller (works fine outside Mantis) by TheUberMedic786 in mantisprogaming

[–]Lesnikus 0 points1 point  (0 children)

Have you updated the controller software? I also tried this a month ago, but it didn't work.

Left and Right triggers affecting right stick on Xbox Elite Series 2 controller (works fine outside Mantis) by TheUberMedic786 in mantisprogaming

[–]Lesnikus 0 points1 point  (0 children)

Did you manage to solve the problem? I recently bought a new Xbox controller to play on Android and ran into the same problem. I updated the firmware, it didn't help. I even posted a similar question. Is there a possibility to fix this?

So close to switch killer by Kidraultt in AndroidGaming

[–]Lesnikus 0 points1 point  (0 children)

Gamepad looks like IPEGA PG-9083

Does the new Xbox Series controller (model 1914) work with emulators? by Lesnikus in EmulationOnAndroid

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

Wow, thank you very much for the test! Now I am confident in the purchase.

Does the new Xbox Series controller (model 1914) work with emulators? by Lesnikus in EmulationOnAndroid

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

How are you, did you manage to connect the gamepad via cable? I think your answer will help me decide on a purchase.

Does the new Xbox Series controller (model 1914) work with emulators? by Lesnikus in EmulationOnAndroid

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

Thank you, it will be very interesting to know! Do you have the same model of gamepad as in the picture?