A ja z przyjemnością mogę oznajmić, że dopiero co wydaliśmy nową wersję Godot Rusta, o!


Głodot Rust to, w dużym skrócie, biblioteka która pozwala gadać z Godotem po rustowemu – skupiamy się na tym żeby szybko, efektywnie, bezpiecznie i przyjemnie dało się dostarczać ten słynny value, zamiast bezsensownie utykać. Zero boilerplate, zero rozkmin, większość abstrakcji ułożone tak jak w gdscripcie, siadasz i robisz co trzeba .


W tej wersji wpadły usprawnienia do eksportów, QoL ficzery do Godotowych Callable, `match_class!` do łatwego matchowania danego eventu, ostatnie szlify silnie typowanych sygnałów… i duuuuuuuuuuuużo innych usprawnień >:].


Devlog: https://godot-rust.github.io/dev/september-2025-update/

Github: https://github.com/godot-rust/gdext


#programowanie #godotengine #gamedev #rustlang

Komentarze (7)

koszotorobur

@DEAFCON_ONE - super bo używam Godota - tylko używam go z GDScript jak jakiś wieśniak

Ale jakbym robił coś co ma być szybkie i dla szerszej publiczności...

W każdym razie interesuje mnie jak integracja z portowaniem na konsole - zrobił już to ktoś z tą biblioteką?

DEAFCON_ONE

@koszotorobur z portowaniem na konsole może być problem – szczegółów nie znam i nie ma ich za dużo, przez NDA. Wiem tylko że konsole korzystają z Clanga więc portowanie rusta niewielkim kosztem jest teoretycznie możliwe.


Jeśli poważnie myślisz o targetowaniu konsoli, to uderzyłbym z zapytaniem do jednej z tych firm: https://docs.godotengine.org/en/4.4/tutorials/platform/consoles.html#third-party-support i przemyślał czy rust to dobry wybór .


W planach mam zrobienie absolutnie minimalnych bindingów bez `std`, które prawdopodobnie ułatwiłyby ten proces, ale to daaaaleka przyszłość. Kolejna wersja będzie poświęcona głównie performance – jest już otwarty PR który pozwala warunkowo zdjąć różnorakie checki upewniające się, że wszystko jest sound i nie odstrzelisz sobie stopy, a co za tym idzie de facto wyrównujący prędkość z godot-cpp – i flexibility, co pewnie zajmie z ~pół roku.

Catharsis

@DEAFCON_ONE

skupiamy się na tym żeby szybko, efektywnie, bezpiecznie i przyjemnie

To szybko i przyjemnie czy w Rustcie? Bo mi tu kolidują te słowa ze sobą xD.

A tak na poważnie bo nie jestem totalnie w temacie. Czy gry napisane w tym będą działać jakoś znacznie szybciej niż napisane w tym czym się domyślnie pisze w Godocie? No bo z tego co pamiętam to Godot używał czegoś podobnego do Pythona, no i to na pewno ma dużo mniejszy próg wejścia niż Rust, więc ciekawi mnie czy warto się męczyć z Rustem. Robił ktoś jakieś porównania wydajności, benchmarki itp?

DEAFCON_ONE

@Catharsis Kolejna edycja będzie poświęcona wydajności (pozwolimy w końcu na warunkowe zdejmowanie safety checków: https://github.com/godot-rust/gdext/pull/1278 co oznacza prędkość taką jak w godot-cpp), to wtedy nabazgram parę benchmarków i porównań – ale krótko mówiąc zapierdala, GDScript jest tak wolny, że rust potrafi wycisnąć znacząco więcej nawet z wszystkimi safety checkami w debugu (...debug jest niezoptymalizowany, a safety checki drogie). W zależności od tego co robisz można spodziewać się że w release, bez safety checków, będzie od 20% do paru rzędów wielkości szybciej (w jednym skrajnym wypadku – pic rel – ktoś zobaczył speedup paru rzędów wielkości co jest absurdalne, kumpel z rogalem z 800 FPS przeszedł do 1400 FPS, https://github.com/Houtamelo/spire_enum bez checków jest w pewnych scenariuszach (interpolowanie zmiennych zdefiniowanych w klasach, nie skryptach czy shaderach) szybszy od natywnej implementacji) – im więcej rzeczy robisz w userspace (skryptach/swoich klasach) tym większa różnica na korzyść GDExtension.


ALE GDScript jest gut enuf do większości gier, gdzie tylko kawałki koniecznie trzeba robić w GDExtension czy modułach – osobiście korzystam z rusta bo przyjemniej mi się w nim klepie (rustowe enumy to powinien być standard, okołofunkcyjne rzeczy są deliszys, iteratory kocham, fearless concurrency to nie mem, no i silne typowanie jest bardzo przyjemne) i staramy się jak najbardziej usprawnić ergonomię. Dla kogoś kto nie klepie w ruście może to brzmieć dziwnie, rozumiem, bo sam reaguję tak na ludzi co lubią klepać w cpp :D.


No i klasy w GDExtension to też pełnoprawne klasy w rozumieniu Godota – więc można do nich normalnie doczepiać skrypty.


Myślę że wychodzi git, bo ludzie którzy przychodzą często nie porównują ergonomi godot-rusta z godot-cpp czy modułami, a właśnie z gdscriptem i C#, gdzie często wychodzimy na tym tle korzystnie.

3df3cd8f-6071-4492-b690-e3797ef9ce48
DEAFCON_ONE

no nie wytrzymię, znowu pomniejszyło: https://imgur.com/a/PRnnI3N.


Generalnie wszystkie benchmarki są akademickie i mówią tylko jak coś się sprawdza w benchmarku. Jakbyś sam chciał sprawdzać to polecam poczekać na załączony PR (i pamiętaj o `--release`).

Catharsis

@DEAFCON_ONE Dzięki za wyczerpującą odpowiedź. Chciałbym się kiedyś dobrze naumieć Rusta ale motywacji brak xD. Myślałem, że jak zacznę w tym coś pisać to będzie to jakoś leciało a skończyło się na tym, że utrzymuje program w języku którego nie ogarniam a co gorsza jeszcze jacyś ludzie z tego korzystają xD.

Ogólnie pytałem bo sam bym sobie kiedyś chciał coś popróbować w tym Godocie tak hobbystycznie podłubać przy jakiejś gierce to może spróbuje w Rustcie to się przy okazji pouczę języka. Ale to odległe plany więc może prawie do tego czasu połatacie do końca te optymalizacje wydajności.

Zaloguj się aby komentować