Dlaczego Rust nie nadaje się do GameDev?

Dlaczego Rust nie nadaje się do GameDev?

Wątek przeniesiony 2024-07-26 14:50 z Rust przez Marooned.

Spine
  • Rejestracja:około 22 lata
  • Ostatnio:4 minuty
  • Postów:6684
4

@Programator_: Rust nadał się do wskrzeszenia Gamedevu :] https://ruffle.rs/


🕹️⌨️🖥️🖱️🎮
loza_prowizoryczna
loza_prowizoryczna
:O
K1
  • Rejestracja:ponad 2 lata
  • Ostatnio:około 3 godziny
  • Postów:49
1

@Programator_: Według mnie może chodzić o dostępność bibliotek. Większość rozwiązań jest oparta na C++. Ten język jest dość mocno zakorzeniony w branży i minie mnóstwo czasu zanim zostanie zastąpiony przez coś innego. Poza tym korzyści jakie wynikają z zastosowania Rusta nie będą niwelować problemu z tworzeniem wielu rzeczy od nowa. Po prostu C++ jest sprawdzony i posiada wiele sprawdzonych rozwiązań, zaś użycie Rusta może być ryzykowne i kosztowne. Warto również dodać, że Rust jest znacznie mniej popularny od C++ i znacznie ciężej znaleźć programistów znających go. Dla większości producentów jest po prostu nieopłacalny.

Rust sam w sobie nie jest gorszy od C++, ale C++ jest bardziej popularny oraz jest wiele sprawdzonych technologii opartych na nim.


"C sprawia, że łatwo jest sobie strzelić w stopę. Z C++ jest to trudniejsze, ale za to w razie czego odstrzelisz sobie całą nogę"- Bjarne Stroustrup.
"A w C# jest to prawie niemożliwe, ale w razie czego strzelisz sobie w łeb" - Ja
Wniosek: im wyższy poziom abstrakcji, tym rzadziej występują błędy, lecz tym większe niosą konsekwencje
several
  • Rejestracja:prawie 16 lat
  • Ostatnio:5 minut
1

Uuuu, przez sugerowanie, że rust się do czegoś nie nadaje narażasz się na gniew rusto seksualnych wyznawów z reddita.

Czy naprawdę Rust 1.80 jest wolniejszy o 30% od C++?

W uśrednionych zastosowaniach ogólnych - nie. I rust i C++ możesz wyskalować by osiągnąć taki perf jaki potrzebujesz. Czasem koszt czasowy osiągnięcia pożądanej wydajności jest korzystniejszy dla C++ bo przez wiele lat dorobił się bibliotek, które przyspieszają sprawę, no i zawsze możesz sobie zejść do C.


edytowany 2x, ostatnio: several
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:3 minuty
  • Postów:8423
0

Jest taka strona, gdzie są linki do bibliotek GameDev w Rust:
https://arewegameyet.rs/
choć nie wiem, na ile aktualna.

Według mnie może chodzić o dostępność bibliotek.

Myślę, że pod kątem samej dynamiki ekosystemu, to Rust to taki trochę jak JavaScript sprzed dziesięciu lat (porównuję dynamikę ekosystemu, a nie technologię!).

Ekosystem JS teraz się już ustabilizował mniej więcej, ale w JS też kiedyś wymyślali różne rzeczy, a potem wychodziły z mody i ciągle zostawały zastępowane. I nie było jednego standardu, a jak był, to był toporny (teraz w Rust zdaje się Bevy jest popularny, próbowałem coś w tym robić, ale dla mnie to strasznie ciężkie jest. Masę zależności, żeby zrobić HelloWorld).

A w Rust nawet jak jest modna biblioteka do gier/grafiki, to za kilka lat przestaje być modna/utrzymywana.

Dlaczego Rust nie nadaje się do GameDev?

Jak jesteś indie hobbystą, to wszystko się nadaje do GameDev, w czym ci się wygodnie pisze (chociaż Rust ma duży próg wejścia).


edytowany 4x, ostatnio: LukeJL
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:minuta
2
Spine napisał(a):

@Programator_: Rust nadał się do wskrzeszenia Gamedevu :] https://ruffle.rs/

nic wielkiego bo dawno jest coś takiego w javascript / typescript:
https://awayfl.org/
https://swf2js.com/en/
awayfl działa jakby płynniej i wygląda jakoś lepiej - jakby ruffle nie miało wygładzania krawędzi (testowałem side to side na pobranych z https://ruffle.rs/demo animacjach).
Zużycie procesora identyczne, zużycie pamięci 2x mniejsze na korzyść rusta - ruffle 115MB, awayfl 230MB

Programator_ napisał(a):

Czy naprawdę Rust 1.80 jest wolniejszy o 30% od C++? Macie jakiś rzetelny benchmark?

Wątpię, natomiast czy ma to jakiekolwiek znaczenie? Poza jakimiś symulacjami i może grami AAA gdzie wykorzystuje się możliwości sprzętu do końca to może ma ale większość gier ma minimalne zużycie CPU i większość się dzieje na GPU.
Pamiętam kilkadziesiąt lat temu jak się bawiłem w pascalu na komputerze z procesorem 16MHz który spokojnie płynnie ogarniał na ekranie 10000 jednostek (kropek) z jakąś tam prostą logiką.


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
edytowany 5x, ostatnio: obscurity
several
  • Rejestracja:prawie 16 lat
  • Ostatnio:5 minut
2

ale większość gier ma minimalne zużycie CPU i większość się dzieje na GPU

Jeśli mówimy o high endowych gierkach AAA to zużycie CPU jak najbardziej ma znaczenie i UE jest właśnie krytykowany przez fakt, że nie potrafi w pełni wykorzystać obecnej technologii przez co łatwo nadziać się na czkawki w postaci spadków FPS albo brakujących klatek. Był to jeden z tematów gdy CDPR ogłosił że przechodzi na UE, bo ichniejszy RedEngine w Cyberpunk fantastycznie potrafił wykorzystać CPU i nie zamierzają wykorzystywać UE bez własnych modyfikacji właśnie z tego powodu.

ps. Screenshot z cyberpunku pokazujący jak że potrafi działać płynnie gdy ma dostepne tylko intelowe e-cores.

screenshot-20240808143808.png

https://x.com/CapFrameX/status/1705949917976445181



edytowany 3x, ostatnio: several
Zobacz pozostałe 12 komentarzy
Wibowit
miałem na myśli numbe i jaxa - aa dobra, no faktycznie są biblioteki do pythona generujące natywny kod. tak czy siak, z tym jitem to chodziło mi głównie o tiered compilation, a więc przy pierwszym uruchomieniu shadera jest on kompilowany bardzo szybko (to minimalizuje przestoje przy pierwszym uruchomieniu), ale do mało wydajnego kodu, a potem jest odpalany i jednocześnie (równolegle do wykonywania shadera) kompilowany z lepszymi optymalizacjami, a potem mniej zoptymalizowany shader jest wyrzucany i zastępowany lepiej zoptymalizowanym. myślę, że to byłoby kiedyś wykonalne.
GO
@Wibowit: właśnie nie znam kompilacji shadera, ale kod typu libgccjit, się łatwo kompiluje, shadery mają swój pipeline do GPU, trzeba kiedyś to zrozumieć tak żeby w dyskusji potem móc się kłócić, bo tak to nie wiem dokładnie jak działają, chodź programowałem wiele razy, jedna funkcja, która dla każdego pixela się uruchamia bez pętli całą tablicę jednocześnie przejdziesz, jako parametry idx i idy bierze tylko.
Wibowit
ja już klepałem compute shadery hobbystycznie (implementowanem algorytmy sortowania na gpu), więc co nieco wiem jak działają. jednak nie schodziłem niżej niż opencl c (openclowa wersja języka c), więc nie znam szczegółów implementacyjnych i ograniczeń sprzętu, więc nie wiem jakie jest prawodpodobieństwo, że tiered compilation kiedyś wejdzie.
GO
@Wibowit: shadery się łatwo programuje, piszesz raz kod, który w funkcji dostaje x i y i masz przewidzieć dla danego pixela wartość, dzięki czemu jedna funkcja jest na tysiącach rdzeni wykonana i jednocześnie jeden shader dla każðego pixela się wykona jest to mega efektywne, ale za to ciężko się programuje, te pipeline co dodali w UE i Unity to jednak robią robotę, łatwo wiele zjawisk łączyć.
several
problem z unreal engine 5 jest też taki, że wykorzystuje pierdylion różnych shaderów Nie tylko. Jeśli wierzyć komentarzom na YT to CDPR zamierza całkowicie zrezygnować z domyślnego streamingu danych, które w UE nazywają WorldPartition, który zawiera takie systemy jak LOD i temu podobne. Z innych, podobno system aktorów również jest nie wydajny przy większych projektach.
Boski
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 2 godziny
  • Postów:136
1

Popatrzcie też pod kątem ludzi, bo to raczej ważne. Prowadzicie firmę, zatrudniacie od lat wielu specjalistów. Wchodzi boom, rzucamy c++ na rzecz rusta, bo jest szybszy.

  • Programiści żeby się przestawić będą potrzebować z roku. Żeby wyspecjalizować w niuansach kolejnych paru lat.
  • Zatrudnić nowych, rustowych? To też problem. W gd rozwiązuje się specyficzne zagadnienia, czy to graficzne czy algorytmiczne.
  • Zrobić stop na rok? Raczej mało kogo na to stać.

Nawet łatwiejszy a trudny przypadek - piszę w c# więc mogę wskoczyć na hop do backendu stronek? No nie - nie znam się na bazach, zabezpieczeniach sieciowych, dockerach itd.

edytowany 1x, ostatnio: Boski
LukeJL
Programiści żeby się przestawić będą potrzebować z roku - to jest jeden z powodów, dla którego nowe języki programowania zwykle zdobywają popularność powoli, latami (czy nawet dekadami). Poczekajmy z 5-10 lat. Z czasem pewnie coraz więcej będzie programistów Rusta i nie będą musieli się przestawić, bo będą go znać.
SE
  • Rejestracja:9 miesięcy
  • Ostatnio:9 miesięcy
  • Postów:12
0

Chciałbym żeby Rust miał taką prostą składnię jak Hylo, Vale. Do tego Hylo skopiował bezpieczeństwo pamięci z Rusta tylko dodał do tego mniejszą i prostszą składnię.
https://docs.hylo-lang.org/language-tour/functions-and-methods
https://vale.dev/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.