Тёмный
AntzGames
AntzGames
AntzGames
Подписаться
Hello, I create games for fun. This channel is about my journey.
Godot Ocean Waves
6:40
День назад
Godot: Smash the Mesh!
7:35
14 дней назад
Godot Robot Plush: 3D Intro Screen
6:30
3 месяца назад
libGDX 3D weird fps drop
4:04
3 месяца назад
Godot 3D: AI, Statistics, and Credits
7:19
3 месяца назад
Godot 3D: Explosions with Particles Effects
4:51
3 месяца назад
Godot 3D: Projectiles and Collisions
6:55
4 месяца назад
More 3D shadows options for libGDX
12:15
4 месяца назад
1400 FPS - 3D low poly infinite terrain test
0:39
5 месяцев назад
Комментарии
@ivanonlyone7160
@ivanonlyone7160 53 минуты назад
3 frames per second 😢
@Nikkuuu69
@Nikkuuu69 Час назад
I so regret not paying attention to mathematics in school... Now I have to learn everything again lmao
@AntzGames
@AntzGames Час назад
2Retr0, the creator of this project did a good job documenting the techniques and listing the references. Have fun!
@Tushioooooooo
@Tushioooooooo День назад
Thank you!
@wOkeN05
@wOkeN05 3 дня назад
Another proof that the limit is imposed by the dev, not the engine.
@AmirSina.R
@AmirSina.R 3 дня назад
Is it worth to make 2D games with libGDX now? People say java is dead and LibGdx is going to die, but i really like java
@AntzGames
@AntzGames 3 дня назад
libGDX is perfectly fine for 2D. It is also strong for Android game development. See my first video of the series for more info: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-r9HnEGHbIQQ.html
@thejackimonster9689
@thejackimonster9689 3 дня назад
The numbers of Java are pretty impressive. But I guess that makes sense when you compare an algorithm which only deals with numbers and you utilize an ArrayList. So there's very little interaction with the heap doing allocations and utilizing the garbage collector. I would imagine the more complex your application gets (using many classes, objects and relations) the more Java will fall off in terms of performance in comparison to C++. However implementing the same thing in C++ will cause much more headache (choosing between references, smart-pointers, applying rule of 5 and such).
@AntzGames
@AntzGames 3 дня назад
In the context of Godot game development, a C++ call threw a GDExtension is not free, and there is an inherent cost to this. Therefore the more nodes that make C++ calls you have, the less a C++ solution performs, and the better GDScript performance gets relative to C++. The same for Java, the calls between the Godot engine and the JVM are not free.
@thejackimonster9689
@thejackimonster9689 2 дня назад
@@AntzGames Very interesting. I have only used GDScript in Godot so far but wanted to develop a GDExtension in the future. I'll keep this in mind.
@Tech_Wes_
@Tech_Wes_ 4 дня назад
Very cool! Thanks for sharing
@aslkdjfzxcv9779
@aslkdjfzxcv9779 4 дня назад
excellent.
@YOLOCX
@YOLOCX 4 дня назад
I wonder if this is achievable in WebGL in ThreeJS?
@user-iw1gy7ev6e
@user-iw1gy7ev6e 3 дня назад
no, WebGL has no compute shaders, geometry shaders or tessellation, you'll have to use WebGPU instead
@AntzGames
@AntzGames 3 дня назад
This is correct. Compute shader are used in this project.
@extendedrealities27
@extendedrealities27 2 дня назад
Thanks. I wonder when ThreeJS will support WebGPU in WebXR then.
@eobet
@eobet 4 дня назад
But the thing one wants to see is how do calm waters with reflections look? How does a ship placed in those waters look? Can you mask out the interior of the ship, etc etc…
@AntzGames
@AntzGames 3 дня назад
So there is already a request on GitHub to add some of the features you mentioned here: github.com/2Retr0/GodotOceanWaves/issues/3
@pwhv
@pwhv 4 дня назад
amazing test!
@leungleung-c5h
@leungleung-c5h 5 дней назад
You should not use libGDX for game develop
@AntzGames
@AntzGames 3 дня назад
So I have close so 3 hours of content making my case that libGDX is not good for 3D games. Can you back your statement with some facts or experiences?
@everythingcouldbesimplify818
@everythingcouldbesimplify818 5 дней назад
Release build in C# is always faster than Debug, godot particularly allow AOT compilations which makes C# closer to C++
@AntzGames
@AntzGames 5 дней назад
So you lose access to Performance data in release builds, and I needed debug to see differences in the amount of memory being used, which also provided some interesting results. I would not focus on the actual numbers too much. C# performs well, and even if it performs closer to C++ with release builds, it still cannot be used in HTML builds. C++ is the clear choice if you want speed in your HTML builds.
@everythingcouldbesimplify818
@everythingcouldbesimplify818 5 дней назад
​@@AntzGames Yeah, for html5 sure, if at least there was an 3d engine with a high level language like C# that support html5, that would be nice.
@AntzGames
@AntzGames 5 дней назад
I reran the all tests on release build: - C++ and Java had the same performance: 44ms and 54ms respectively - C# indeed improved: From 178ms to 68ms - GDScript improved: 4538ms to 3058ms
@everythingcouldbesimplify818
@everythingcouldbesimplify818 4 дня назад
@@AntzGames Great, it looks like both C# and Java looking great, I wonder when is html for c# comming maybe in .net 9, There is also a Godot for Javascript/TypeScript but it's on 4.1version which is supposed to export to html.
@pwhv
@pwhv 4 дня назад
@@everythingcouldbesimplify818 unity
5 дней назад
The GH repo link is 404. Did you forget to make it public? :) I would love to try it with Zig bindings.
@AntzGames
@AntzGames 5 дней назад
Indeed it was private. Set to public now. Thanks.
@gameprogramming6550
@gameprogramming6550 5 дней назад
Thanks for thee comparisons.
@guillaumemagniadas2472
@guillaumemagniadas2472 5 дней назад
std::array should be faster than a vector in C++ if you know your maximum size
@AntzGames
@AntzGames 5 дней назад
Good to know. This algo needs to add values to the end of the array during the execution, and technically does not know the final size of the array, but does know the maximum possible size.
@guillaumemagniadas2472
@guillaumemagniadas2472 5 дней назад
@@AntzGames yes, that’s what I meant, utilizing the knowledge of the maximum possible size (if it’s not a problem)
@thejackimonster9689
@thejackimonster9689 3 дня назад
@@guillaumemagniadas2472 Technically you can also call reserve() of std::vector which allows reducing the amounts of allocations to only one and forcing it to the beginning of the algorithm. That way the only difference between std::vector and std::array should be whether you access memory in heap or stack. So I guess it depends on the OS whether that makes a reasonable impact.
@AntzGames
@AntzGames 5 дней назад
Please see my updated video: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-qDXomV7Ojko.html
@seth111yta1
@seth111yta1 6 дней назад
another great way to create turbulent waves with godot is questionable community managers
@igork1336
@igork1336 7 дней назад
I use GDScript to design and test the Architecture (or build a prototype). Once I'm satisfied with the result, I convert it to C++. GDScript performs well, and for most developers, it makes only sense to do a C++ conversion if you are creating something computationally heavy, for example, AI that will be used by over 1000 NPCs so they can interact with each other.
@AntzGames
@AntzGames 7 дней назад
That is where I am at. I plan to use it only for very expensive tasks. I went threw this exercise to learn how to do C++ GDExtensions. It is good to know I have options in Godot once you hit performance limitations.
@kairu_b
@kairu_b 7 дней назад
Awesome
@ruyzuki1
@ruyzuki1 7 дней назад
wow, just impressive.
@arkhanyc247
@arkhanyc247 7 дней назад
Nice tech !
@Kry0000
@Kry0000 8 дней назад
Thank you for sharing this resource, ocean simulation and water simulation are subjects that I find fascinating, pair that with my interest with the Godot Engine and what it's capable of and you have my attention.
@Snow_Crab
@Snow_Crab 8 дней назад
How was the performance?
@AntzGames
@AntzGames 8 дней назад
I list my hardware specs in the video description. This implementation makes it easy for you to change a few settings to increase your FPS by reducing some quality. There are some reports of some people with older 4GB graphics cards having some issues. Check out the issue list in the Github repository for more information.
@RichardLofty
@RichardLofty 8 дней назад
This is just Acerola's code for for godot. The repo you are showing just implemented other guy's code, and put it in godot. Please do research before praising people and calling them scientists and PHDs...
@AntzGames
@AntzGames 8 дней назад
2Retr0's repo does list Acerola's video in one of his references. But, I think you should do more research before making a statement implying that he `just implemented other guy's code'. If you actually read 2Retr0 detailed explanation of the techniques used it is far more detailed than Acerola's and 2Retr0 clearly details when he combines techniques. In addition he has GPUParticles for sea spray that I don't see in Acerola's. Acerola's shaders are not optimized (Acerola says this in his github repo), yet 2Retro0 has implemented optimizations for increased FPS. Some of these optimizations include load balancing cascades, include a update rate parameter, and other techniques to reducing overhead between the CPU and GPU in the pipeline. Anyhow I personally think 2Retr0 implementation looks way better than Acerola's.
@MadsterV
@MadsterV 5 дней назад
@@AntzGames it's the same base idea, which is the hard bit.
@sauliusvincevicius8688
@sauliusvincevicius8688 5 дней назад
It;s not Acerola's ocean, he did not even this nor came up with this idea. Most credits should go towards J.Tessendorf, Christopher J Horvath and others.
@AntzGames
@AntzGames 5 дней назад
@sauliusvincevicius8688 This is 2Retr0's references list: Flügge, Fynn-Jorin. Realtime GPGPU FFT Ocean Water Simulation. Hamburg University of Technology. (2017). Gunnell, Garrett. I Tried Simulating The Entire Ocean. (2023). Horvath, Christopher J. Empirical Directional Wave Spectra for Computer Graphics. DigiPro. (2015). Tessendorf, Jerry. Simulating Ocean Water. SIGGRAPH. (2004). Matusiak, Robert. Implementing Fast Fourier Transform Algorithms of Real-Valued Sequences. Texas Instruments. (2001). Mihelich, Mark. Wakes, Explosions and Lighting: Interactive Water Simulation in 'Atlas'. GDC. (2019). Pensionerov, Ivan. FFT-Ocean. GitHub. (2020).
@sauliusvincevicius8688
@sauliusvincevicius8688 4 дня назад
​@@AntzGames Should be more: [1] Franz Gerstner. Theorie der wellen. Annalen der Physik, 32(8):412-445, 1809. [2] Jean Baptiste Joseph Fourier. Théorie analytique de la chaleur, volume 1. Gauthier-Villars, 1822. [3] Jerry Tessendorf et al. Simulating ocean water. Simulating nature: realistic and interactive techniques. SIGGRAPH, 1(2):5, 2001. [4] Christopher J Horvath. Empirical directional wave spectra for computer graphics. In Proceedings of the 2015 Symposium on Digital Production, pages 29-39, 2015. [5] Klaus Hasselmann, Tim P Barnett, E Bouws, H Carlson, David E Cartwright, K Enke, JA Ewing, A Gienapp, DE Hasselmann, P Kruseman, et al. Measurements of wind-wave growth and swell decay during the joint north sea wave project (jonswap). Ergaenzungsheft zur Deutschen Hydrographischen Zeitschrift, Reihe A, 1973. [6] Willard J Pierson Jr and Lionel Moskowitz. A proposed spectral form for fully developed wind seas based on the similarity theory of sa kitaigorodskii. Journal of geophysical research, 69(24):5181-5190, 1964. [7] Steven A Hughes. The tma shallow-water spectrum description and applications. 1984. [8] Sergej A Kitaigordskii, VP Krasitskii, and MM Zaslavskii. On phillips’ theory of equilibrium range in the spectra of wind-generated gravity waves. Journal of Physical Oceanography, 5(3):410-420, 1975. [9] Edward F Thompson and Charles Linwood Vincent. Prediction of wave height in shallow water. In Coastal Structures’ 83, pages 1000-1007. ASCE, 1983. [10] Ian R Young. Wind generated ocean waves. Elsevier, 1999. [11] Carl Friedrich Gauss. Nachlass: Theoria interpolationis methodo nova tractata. Carl Friedrich Gauss Werke, 3:265-327, 1866. [12] James W Cooley and John W Tukey. An algorithm for the machine calculation of complex fourier series. Mathematics of computation, 19(90):297-301, 1965. [13] Bui Tuong Phong. Illumination for computer generated pictures. In Seminal graphics: pioneering efforts that shaped the field, pages 95-101. 1975. [14] Joe Wilson. Physically-based rendering, and you can too! 2017. marmoset.co/ posts/physically-based-rendering-and-you-can-too/. [15] Mark Mihelich and Tim Tcheblokov. Wakes, explosions and lighting: Interactive water simulation in atlas. 2021. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-Dqld965-Vv0.htmlsi=Jy0_un81KjUsWmk6. [16] Stephen Hill and Stephen McAuley. 2012-2020. blog.selfshadow.com/ publications/. [17] Libo Huang, Ziyin Qu, Xun Tan, Xinxin Zhang, Dominik L. Michels, and Chenfanfu Jiang. Ships, splashes, and waves on a vast ocean. ACM Trans. Graph., 40(6), dec 2021. 31 REFERENCES 32 [18] Dmitrii Kochkov, Jamie A Smith, Ayya Alieva, Qing Wang, Michael P Brenner, and Stephan Hoyer. Machine learning-accelerated computational fluid dynamics. Proceedings of the National Academy of Sciences, 118(21):e2101784118, 2021. [19] Fynn-Jorin Flügge. Realtime gpgpu fft ocean water simulation. 2017. [20] Jerry Tessendorf. Interactive water surfaces. Game Programming Gems, 4(265-274):8, 2004. [21] Jerry Tessendorf. ewave: Using an exponential solver on the iwave problem. Technical Note, 2014. [22] Peter Kipfer, Mark Segal, and Rüdiger Westermann. Uberflow: a gpu-based particle engine. In Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on Graphics hardware, pages 115-122, 2004 github.com/Biebras/Ocean-Simulation-Report/blob/main/finalReport.pdf
@ramsaybolton9151
@ramsaybolton9151 9 дней назад
they look woke
@wirrexx
@wirrexx 9 дней назад
This is beautiful this is .. wow . I’d love to know where to begin with shaders
@UliTroyo
@UliTroyo 9 дней назад
The foam is amazing! Most shaders implement the foam far less well.
@gigabit6226
@gigabit6226 9 дней назад
looks fantastic
@everythingcouldbesimplify818
@everythingcouldbesimplify818 9 дней назад
I wonder if this test is comparing stack in C++ with heap in the C#, and C# in the editor without the released build, cause I tried it and got 3ms in the release build and around 12-16ms in the editor.
@AntzGames
@AntzGames 9 дней назад
To add some context to your original comment and also this edited comment. So this algorithm is very bad in terms of space, and yes, 2 million is very big stack, even for C++. Time Complexity: O(N*log(log(N))) Auxiliary Space: O(N) I may redo the test using the test using the Segmented-Sieve algorithm: www.geeksforgeeks.org/segmented-sieve/ Which reduces the space needed for the algo to the square root of 2million (which is only 1414), shown below: Time Complexity : O(n * ln(sqrt(n))) Auxiliary Space: O(sqrt(n)) Also, I should also redo the tests using the release build as you suggested. Also I may add both Rust and Java/Kotlin GDExtension times, as many people have requested it.
@okie9025
@okie9025 9 дней назад
🏳️‍🌈
@kira.herself
@kira.herself 9 дней назад
Awesome tech and video <3 🏳‍🌈🏳‍⚧
@JohnLogostini
@JohnLogostini 9 дней назад
Is that WaveWorks?
@esko911
@esko911 9 дней назад
GoWoke Engine
@kira.herself
@kira.herself 9 дней назад
that's why it's the best engine 🏳‍🌈🏳‍⚧
@esko911
@esko911 9 дней назад
@@kira.herself keep telling yourself that transmission.
@azaa2188
@azaa2188 9 дней назад
How so? The engine is still the same as it was two days ago
@kira.herself
@kira.herself 9 дней назад
@@azaa2188 you can't reason with them, I also wish to know where all this random hate comes from, but I never get a real factual answer
@okie9025
@okie9025 9 дней назад
​@@kira.herselfthey don't consider it hate, they think they're morally correct by hating on minorities.
@friedrichjunzt
@friedrichjunzt 10 дней назад
I wish Godot would focus on their engine and less on activism and culture wars, like their Community Manager is doing 😢
@ahslanabanana
@ahslanabanana 10 дней назад
go cry about it
@throwplate
@throwplate 9 дней назад
Agreed. They're not attracting prospective game devs by publically dehumanizing those who chose not to put 'gender justice' in their games
@throwplate
@throwplate 9 дней назад
@@ahslanabananaHe is, and we are. That's the whole point of the comment. Odd choice of rhetort.
@ahslanabanana
@ahslanabanana 9 дней назад
@@throwplatethis is peak victim mentality. trans people get the tiniest bit of support from the community of a major game engine, and somehow you’re the victim here? stop making everything about yourself
@lachee3055
@lachee3055 9 дней назад
god forbid a community manager tries to engage with its community. Go cry a river cultist.
@charles_kuperus
@charles_kuperus 10 дней назад
yes please do a rust version of this Video.
@Le_x_Lu
@Le_x_Lu 10 дней назад
this is amazin... its looking great, never tough of using imGUI in Godot C++ extensions tho :0 love that combination..
@nathanielblairofkew1082
@nathanielblairofkew1082 10 дней назад
great video, thanks!
@pwhv
@pwhv 10 дней назад
can you tell your hardware specifications please?
@AntzGames
@AntzGames 10 дней назад
This is a good request, I will add this to the video description: CPU: Ryzen 5 5500 GPU: RTX 3050 8GB (original) Monitor Resolution: 3840 x 2160 (4K @ 60 Hz) RAM: 32 GB OS: Windows 11 Godot: 4.3
@notavail
@notavail 11 дней назад
This is really great, thank you.
@Ivorforce
@Ivorforce 13 дней назад
Hiya, interesting comparison! I'm currently working on a numpy-like math API and came across this, so I wanted to have a go at this myself. My 2c, I'd be surprised if GDScript was actually 100x slower than c++, or 27x slower than C#, in the real world. C# may have some edge by being JIT'd and its the compiler having a better implementation than GDScript, but it's also possible the compilers even vectorized your calls automatically, elevating their speeds beyond what's expected from the benchmark designer. But it's hard to say what really happened without actually opening the guts of the binaries. Benchmarks are hard! Anyway, my gdscript implementation got comparable results to yours (about 160ms), while it took about 9ms with the vectorized calls (~16x decrease). That doesn't quite bring it to C# or C++ levels according to your test, but it brings it a lot closer! The library (NumDot) does use SIMD vectorization to speed up assignments, but it's somewhat handicapped in comparison to C++ plain because of the many abstraction layers between logic and assignment.
@AntzGames
@AntzGames 13 дней назад
In a real world game example with a complex scene graph, GDScript performs much better, and many C++ GDExtension calls becomes more expensive. However, a highly computational and/or any algo that requires loops severely impacts GDScript. Also I think you might want to edit your statement >>> I'd be surprised if C# was actually 100x slower than c++, or 27x slower than C# I know you meant GDScript at the beginning.
@Ivorforce
@Ivorforce 13 дней назад
@@AntzGames you got it right, i meant GDscript there :) statement is edited.
@SebastienGuillemin
@SebastienGuillemin 14 дней назад
I'm guessing the performance difference between the benchmark you posted (which was one big computation, and where kotlin performs really well) and this game (which performs many frequent calls, and where kotlin is behind gdscript) is due to the cost of crossing the JNI boundary for each call, right?
@AntzGames
@AntzGames 13 дней назад
This is exactly correct. This project conducts benchmarks, and you can see the results here: github.com/utopia-rise/godot-kotlin-jvm/tree/master/harness/bunnymark They are working on batching the JNI calls and other performance goodies that will reduce the impact of the JNI calls. The interesting thing is with design changes to the BunnyMark code (they have 3 versions of it) you can make Godot Kotlin JVM 2.5x faster than GDScript all the way to 10% slower than GDScript. You can avoid the impact by making design changes in the node structure of your project.
@IRQ333
@IRQ333 14 дней назад
F java game dev dead
@Dgzt
@Dgzt 13 дней назад
There are several java based games on Steam and the most of android games are made in Java/Kotlin.
@ghorshy
@ghorshy 14 дней назад
What version of .NET were you using in these tests?
@AntzGames
@AntzGames 14 дней назад
Hello. V8.0.303 C:\Users\antho>dotnet --list-sdks 8.0.303 [C:\Program Files\dotnet\sdk]
@katm9877
@katm9877 18 дней назад
I thought GDExtension did not work with HTML5 target? How do you have c++/html5 results?
@AntzGames
@AntzGames 18 дней назад
C++ GDExtensions can be compiled using Emscription to produce a Web Assembly module (WASM) and run on the web, as I explain in the video. This is done automatically on export. Here is another example: www.reddit.com/r/godot/comments/1atvz4z/gdextensionc_game_on_the_web_with_wasm_sand_slide/
@AntzGames
@AntzGames 18 дней назад
So I added a GitHub repository so you can run the GDExtension on an HTML export yourself: github.com/antzGames/GDExtensions_VS_GDScript_Test
@ДмитрийЭдем
@ДмитрийЭдем 20 дней назад
Good day, thanks for the video, why didn't you consider the option with JMonkeyEngine when migrating from libgdx? If the answer is in the previous videos about libgdx, then sorry, I haven't watched everything yet.
@fireball7708
@fireball7708 20 дней назад
Rust + godot ?
@AntzGames
@AntzGames 20 дней назад
So this older Godot3 repo did some rust + GDNative (which is now GDExtensions): github.com/extrawurst/godot-rust-benchmark I would assume a rust shared library GDExtension to be relatively the same speed as a shared library C++ GDExtension.
@eyzake
@eyzake 21 день назад
bro 😭 make a course on libgdx not on !libgdx
@kewnst
@kewnst 21 день назад
gicven how much gd script borrows from python idl ike to see python vs godot test.
@AntzGames
@AntzGames 20 дней назад
So this prime number test is like the worst possible test for GDScript (and most likely Python). I used it specifically to expose the weakness of GDScript in code loops. I would take the results with a grain of salt. GDScript actually does pretty well in real world rendering examples. The official Godot benchmarks can be run here: github.com/godotengine/godot-benchmarks
@LuisFrontanilla
@LuisFrontanilla 21 день назад
O_o