Hejto.pl
Dodaj post

Wpisz coś do wyszukania (minimum 2 znaki)

Wpis użytkownika DEAFCON_ONE w Programowanie

Inspirator

w Programowanie

16piorunów

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

Komentarze (7)

Osobistość0piorunów

@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?

Osobistość1piorunów

@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.

Inspirator2piorunów

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`).

Inspirator0piorunów

Komentarz usunięty

Inspirator3piorunów

@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.

Safeguard levels: fine-tune the amount of runtime validations by beicause · Pull Request #1278 · godot-rust/gdextUpdate Bromeon -- tweaked some things, but huge thanks go to @beicause for initiative and the solid groundwork. Safeguard levels godot-rust now supports three tiers that differ in the amount of run...GitHub
Fanatyk2piorunów

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

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ą?

Inspirator2piorunów

@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.

Console support in GodotConsole porting process: In order to develop for consoles in Godot, you need access to the console SDK and export templates for it. These export templates need to be developed either by yourself or...Godot Engine documentation