Rust for Game Development -- Game Engines & Frameworks
HTML-код
- Опубликовано: 16 июл 2024
- Today we are looking at the most popular engines, frameworks and libraries for Rust game development.
Links
gamefromscratch.com/rust-game...
-----------------------------------------------------------------------------------------------------------
Support : / gamefromscratch
GameDev News : gamefromscratch.com
GameDev Tutorials : devga.me
Discord : / discord
Twitter : / gamefromscratch
----------------------------------------------------------------------------------------------------------- Наука
Links
gamefromscratch.com/rust-game-development-in-2022/
-----------------------------------------------------------------------------------------------------------
*Support* : www.patreon.com/gamefromscratch
*GameDev News* : gamefromscratch.com
*GameDev Tutorials* : devga.me
*Discord* : discord.com/invite/R7tUVbD
*Twitter* : twitter.com/gamefromscratch
-----------------------------------------------------------------------------------------------------------
You need to update the game engines by language playlist with this one I think
I'm pretty sure Rust will become the prominent language for games in years to come.
Adoption will be very slow, and then explode as soon there is a viable product for AAA production.
The amount of bug fixing that Rust just outright eliminates from the start is astonishing.
It makes games safer, faster and efficient.
Which is why it would be amazing for game developers, they're already ridiculously rushed, but rust eliminating a significant chunk of bugs from the start would at least let them make the game be more stable on release.
@@MrGamelover23 tell me about it 🙄
Currently dabbling with löve2D for a little thing.
Löve is an engine based on Lua.
I love Lua for what it is, but debugging is a sheer nightmare.
Since it is so flexible it allows for so many shortcuts to take, and because programmers are by nature lazy...
Those are just self assembling trip hazards.
Which I just trip over for the sheer principle off it.
90% off debugging is spend on me being an idiot 😂
Yesterday I spend an hour debugging something that was completely fine from the get go just because I was unable to count correctly 😅
The first company that has a Rust based engine that can compete with Unity and Unreal is going to make bank in the long term.
‘No mobile” is not a limitation of Rust. Rust libraries can be used on both iOS and Android.
wgpu and to a certain degree bevy already run on mobile. Additionally godot-rust let’s you build godot games in rust that can already run on mobile.
-No mobile and no console. What a game development language!
@@robertoze you can use it on mobile, and I don't see why you can't use it on console.
@@zoeherriot Officially it doesn't support mobile and console. Do you know official support for Android, Ios, Ps and Xbox?
@@robertoze what do you mean by "it"? What are you referring to exactly?
Reading a little about Rust made me understand a bit easier C/(old) C++ I now use at work (avionic industry). Vice-versa, C++ made me understand parts of Rust I initially didn't fully comprehend. I really don't understand the hate on either of them some people seem to have.
Just noobs complaining, not knowing rust can link c/c++ code - it was a primary design goal that rust be compatible with old code bases.
I mostly develop C/C++ embedded systems. Rust is an interesting language in some ways I wish it came before C++, it does a lot of the things C++ would like us to use i.e. const correctness by default. The only negative is I find Rust syntax unintuitive, but that might just be me.
@@blaser80 I found rust's syntax ugly as hell when I first saw it, but after a couple days of reading the free book they have, I've started to genuinely enjoy it.
@@BlazertronGames I found rust sintax beautiful, sometimes it remembers typescript
C++ has a lot of legacy to carry and still many ugly (undefined) sides. Also I know that many people are tortured to use C++ with raw pointer and C-style return value error reporting. Since C++ lacks some modern features (like an OS independent way for Sockets/Web Sockets/Shared Memory) you often depend on 3rd party libraries or something homegrown or make your software OS dependent. There is more but I am lazy.
Rust on the other hand is very "young". Some libraries cease development and bug fixes before you might even finish a product. The whole language requires people to rethink how to write software, so there is much frustration because you need time to adapt (kind of similar when you would need much time to adapt to Haskell or LISP). If you use a 3rd party library you might have to use async or special error types. Having more complex generic types in Rust can create ugly long function definitions.
These are bullet points of what I would criticise on the languages but I use both and don't hate them.
"gg easy" is how you pay respects to your opponents after a competitive match.
I'm not sure if I would describe "ez" as paying respects.
@@taizeen1805 LOL, ggez is a great way to add salt to the fire
Love it. Time to fry some overthinkers
Embark Studios are heavily into Rust.
I was rusty on this topic, thanks for the update :)
"gg ezed" is what Mike says when he trashes noobs of the opposite team
I'm starting to learn rust and will develop games using the bevy engine. I just started and rust seems amazing for me looking as a c, c++ dev.. so many similarities but at the same time very different and very safe, the compiler is also very straight forward with the errors.. i'm really enjoying
As for me, everything is simple and clear. Thank you very much for
many thanks - tons of useful info as always with your videos
I literally decided to learn Rust today and you upload a video, thanks lmao
Good luck and have a fun journey
As an addition, it might be easier to use the wgpu crate instead of Vulkan, OpenGL, ... bindings. Wpgu is a graphics library that has Vulkan, OpenGL, Dx and Metal backends to provide native rendering. As it is based on the upcoming WebGPU API, it will soon be able to also run wgpu projects on the web with high performance.
It's also the project used by the bevy game engine.
Have you used it? I've tried to and I find that there are very limited resources to learn so I've struggled with understanding how to use it and how it works.
@@santiagoarellano2983 There is a really good (but expensive) book available on Amazon.
@@zoeherriot how is it called? Or who wrote it?
@@santiagoarellano2983 Jack Xu - Practical GPU Graphics with wgpu and Rust.
@@zoeherriot thanks!
Informative. Thanks
I was literally checking your Bevy 0.7 vid a few hours ago and cloned their repo already, best timing ever.
I was going to try Amethyst originally but changed my mind after seeing that Bevy seems to have the upper hand in terms of roadmap, also personal preference.
Amethyst discontinued as well I believe, in deference to Bevy
yep, repo has been archived
@Tigregalis is bevy equal in performance?
The first moment I saw your thumbnail, I didn't see the R, and got a flashback of UST crash.
ggez probably is pronounced as GG Easy
The rust gamedev news letters shows some advanced rust projects
Nice!
in the article the link to "SDL2 Bindings" goes to the raylib crate
@1:12 Mike: ". . .but it was almost like Rocket Surgery to learn."
Yeah, being an Aerospace Doctor is a very high bar to entry.
I love these subtle jokes, please keep them up! 🤣
Just like the legend himself, Jonny Kim
Should have covered macroquad!
Allegro 5 has a Crate for rust, and is fantastic alternative to SDL :)
Please take a look at kajiya renderer it works with bevy game engine, and it looks as good as Unreal Engine.
Yeah. I just looked it up. It is a very interesting project.
I don't know when it came about, but there's another Rust game engine called INOX with a Blender based editor.
I don't think you'll see any triple A using rust unless NIntendo, Sony & Microsoft support a rust interface with their sdks, or if you can compile rust to c++ that can be compiled with their sdks.
can i make a game in rust using unreal engine because i like unreal engine and c++ but i am wondering if i can use rust and unreal engine
So... I wonder how hard it would be to use bevy's ECS with godot
Well, someone did it with Unity.
Hey! If you're watching this today and happen to be interested in the development for the GDExtension for Godot 4.x, we do need some help writing the documentation and tutorials for it. i did a Pull Request of my own to the book for Rust-godot 4.x, but there's still a lot to be done ^^
I have tried Gdext, I don't think bindings will ever come close to the ergonomics of a native library. I once even couldn't compile my Rust in release mode with Gdext, not good.
ggez name is just too good lol
Using rust almost daily, not for work, just for toy projects atm, and I love it. The language is just fun to work with (all the other benefits of it aside). I tried to use bevy at some point, but it got me confused as hell with its structure, macros, and traits. Maybe I'll get into that someday but sadly, not enough time to just learn it properly right now for me...
As someone with many years of experience and works with Rust professionally. Most Rust game engines are not well documented or as simple as they should be.
Hey whats projects are you doing?
@@jonathan2847 this thing is correct for almost all libraries for rust, i've used rust at work, it was a miserable experience, don't get me wrong i love the language and i got hired primarily because i knew the language a bit, but man, the immaturity of the ecosystem is real, most of the libraries are like alpha / pre-alpha state, no big company baking, no defined standard, lack of documentation, every library lack documentation that goes beyond an "hello world" example, took me 2 months for building those projects, and also, it seems that the rust community have some problems regarding unit testing...it seems that most rust devs have never used it professionaly and it shows
Why not go lang?
Ggez probably means
Gg - as in good game
And ez - as in easy
So good game ez
Rust is the future.
How would you recommend bevy which is extremely early on, doesn't even have an editor, but then say fyrox is very early in development and should be careful when using it to create a game"
Bevy doesn't even have basic rendering going for 3D, basics of the basics are missing.
Fyrox 💕
Maybe mentioned already, the Stardew Valley team is using Rust now as I recall, hopefully have that right. While not on the scale of Naughty Dog, that team has a big following. Whatever is next may be Rust based.
Did they switch to rust? Last time i checked it was C# i think ( was a few years ago :/ )
@@zettwire That’s what I heard as I recall.
Its gonna take AGES before Rust begins being adopted in more industries, but damn will I be happy when it is. Rust is just a better designed language imo than say C++.
ggez = gee gee ee zee = good game, easy!
Every environment that I have seen with people, always tend to be on top of a C/C++ environment. As long as it can't stand on it's own, it has to sit on top of something else, wrap it etc, I'll always have hesitancy with using it outside of just a hobby project. Unlike some other languages, I don't even find Rust easy to write in, even compared to C/C++.
The major points Rust gives are validated safe memory handling and multithreading, Which are both Big pluses when using a low level language and kills a ton of potential bugs compared to when using C and C++
Change is gradual, and large games take many years to make. Longer than most of these engines have even existed in total.
So yes, you won't see this in the wild yet, it's simply too young. That doesn't say anything about the future though. In 20 years, it might not be so uncommon.
It has a minimal runtime for ref counting I guess. I was coding happily in rust until I ended up with using a self referencing struct
You can just Box a self referential struct though.
@@unsafecast3636 I know. If you are pinning a struct which has fields stored in a stack, there is too much boilerplate code and unsafe. I love rust, but sometimes I feel like doing a lot to satisfy the compiler than coding the actual stuff.
Mobile is limited because Android and iOS have their own renderers.
0:25 "opera-renovating-systems"
gg e zet bruh
GGEZ is pronounced GG-easy as if good game easy, something you say when you win and you wanna be salty x')
interesting stuff, but it's going to take decades until it can dislodge C++ for professional Game Programming.
My comment is no longer here.
I wrote about macroquad and fermium.
Rust is seriously solid!
Think about you ave game and it is out as soon as yoy leave the map cz rust is good at garbage collection😅😅😅
Rust = Best programming language
Macroquad = Best game framework / engine (if you want it to be)
Say's everyone who will never actually create anything :D
@@demosthenes7902 facts
Feels like Rust's libraries are more restricted access compared to other languages.
Like it's not uncommon for there to be paid libraries or game engines, but I've noticed there's a higher level of it in the Rust community which is rare for a relatively modern language.
On the plus side, it has PSP support so it has homebrew potential.
install dark reader. thank you.
Eww, gross.
Me, who already knows like 20 more convenient engines in languages I actually know: hmm… interesting.
Rust compile time is slow!
Rust's compilation is slow only if you're ignoring download times for packages for other languages. Cargo first downloads all needed crates and compiles them. After that, incremental compilation takes over and subsequent compilations take only a few seconds. Having to fetch packages via NuGet, Vcpkg, or manually downloading them from online and then compiling your project that's in another language can easily add a minute or longer to your build time, compared to Cargo.
@@perregrinne2500 That's nice and all, but cargo builds external dependencies only once per project(which is already stupid, imagine cloning ue5 for each project, lol), after that compiling is still slow. Or more specifically linking.
Rust adores static linking, so each time you build the program, it gonna link everything together. It's so bad, Bevy advises to use shared library during development (however it's not possible on windows).
As someone in their 30s that remembers not understanding the appeal of Python when they were a young teen, the question with programming is not "if you can", it is "why would you".
While there will always be dedicated people that will do things simply because they are hard, if there is no specific reason to use Rust over C++ and such for game development, why do it?
Well, there *are* reasons
For me, the simplest reason is I know Rust and I don’t know C++
I know Rust and C++, and C++ was my favorite language until I discovered Rust. Many people here write the programming/writing in Rust isn't easy... Well I don't know, in my case after a session with Rust when I have to go back to C++ it is a real pain. Usually we all write in C++ because as far as games go there is often very little choice to the language...
Because Rust kills at compile time a ton of potential C and C++ bugs that could be hard to catch on production.
If Rust wasn't so ugly, I'd maybe use it...
Not saying C/C++ look amazing or anything, but at least they have the excuse of being old...
LMAO
never thought that languages can be described by their prettyness before
OK now I'm curious, what exactly or rather why is it ugly?
Since IMO it is a very concise readable language if used properly.
"Properly" is the keyword, it get's ugly when people try to use paradigm that they are used from other languages.
AKA fighting the complier... He's a d++k but he only has pure intentions...
rust is evil
why
why
Why? Just use whatever language is best for the project currently in mind
@@timothytim9238 He owns a 70s Chevy in the rust belt.
I just today played around with rocket(high-level framework for rust, reminds me of bevy in how it treats state: in bevy you make Resource argument, in Rocket - State and framework figures itself that it needs to be passed) and also I read about sqlx, which supports sqlite and hence can be useful for gamdev.
Coming from c++, rust macro is something of next-level. sqlx can check sql syntax by connecteing to DB at compile time.
Why would you use SQL when building a game
@@GeorgeSukFuk
Lots of games have lots of relational data. Overall sqlite is very good for that.
It's reliable: you don't have to worry about data recovery, file renaming, etc.
It's expandable: you don't have to worry about that adding new fields will break old files.
It's portable: no need to worry about byte order or something like that.
It's composable: you don't have to think how to mix in one file inventory, units skills, etc.
It's queryable. You don't need to load it fully (contrast with json/xml/other text format) if you don't need to.
It adds extra layer of fool-proofness(FK)
It's small and easy to use.
It's patchable. If you need to repair save/asset file because you changed a lot internally, you don't need to write sed script or make adhoc tool to load and save: you often can just use sqlite cli
It's creatable: if you need to test mock data, it's SQL statements.
It's used in real world by big boys(Witcher3 FWIR)
Sqlite literally advertises itself as a replacement of fopen. And it's a very good replacement.
It has downsides(PITA for version control, no concurrent writes, next to useless for something like minecraft worlds)
@@etopowertwon I'm from the web area, where we use a lot of SQL, and I was interested in what you said. In games, how is this code that deals with relational data organized? Do you use any kind of ORM? Any MVP (or MVP) style patterns?