GameDev a Python?

0

Witam,

moze ktos sie wypowiedziec na temat projektowania gier w Pythonie. Wiem ze istnieja narzedzia ktore umozliwaja to np PyGame czy silnik Panda3D. Czy warto inwestowac w to czas? przecieŻ sa inne narzedzia ktorych sie używa w GameDev, jak np Unit (C#) czy Unreal (C++). Jak wyglada sprawa wydajnosci czesto sie mowi ze Python jest wolny porownaniu do C/C++. Ciekaw jestem jak to wyglada to z perspekywy gier AAA czy Indie, moze ktos ma doswiatczenie.

Pozdrawiam i z gory dzieki

2

Python i gamedev to niezbyt trafione połączenie. Ewentualnie jak już to python służy jako język skryptowy wewnątrz jakiegoś silnika by coś tam obsłużyć, ale to rzadko.

Python po prostu nie jest w stanie nadążyć z wydajnością, która potrzebna jest do topowych produkcji, więc rynek na niego w gamedevie nie istnieje.

Oczywiście jest to możliwe - tak samo jak pisanie frontendu w pythonie transpilowanym do jsa, ale czy to dobre wyjście? Moim zdaniem bynajmniej i po prostu nie warto - tak samo jak nie warto inwestować czasu w game dev w Pythonie myśląc o tym w kontekście profesjonalizmu. Jako hobbystyczny projekt to spoko, język nie ma znaczenia.

0

Jak wyżej, wybierz sobie Unity albo Unreal Engine bo nikt Cię nie zatrudni :)

Swoją drogą ciekawe, że kiedy mówimy o grach to już Python jest wolny, a jednak pompuje się go ostatnio tak bardzo że nawet samochody prowadzi. O co chodzi? :)

0

Python to chyba jako dodatkowy jezyk do tworzenia narzedzi, przetwarzania danych.

0
upabove napisał(a):

Jak wyżej, wybierz sobie Unity albo Unreal Engine bo nikt Cię nie zatrudni :)

Swoją drogą ciekawe, że kiedy mówimy o grach to już Python jest wolny, a jednak pompuje się go ostatnio tak bardzo że nawet samochody prowadzi. O co chodzi? :)

Python jako język do obsługi bibliotek napisanych w C/C++ jest ok ;)
Jednak w grach, dla wygody dużo rzeczy złożonych obliczeniowo piszemy też w języku kontrolującym działanie silnika - więc nie tylko wydajemy polecenia silnikowi, ale też np. przeprowadzamy obliczenia w każdej klatce. W przypadku samochodów, algorytmów genetycznych itp. (standaryzowane rzeczy) można skorzystać z wydajnych bibliotek, my im tylko przerzucamy Pythonem dane do liczenia.

W Pythonie np. możemy się pobawić silnikiem fizycznym Box2D, bo tylko wydajemy mu polecenia. Sam Box2D jest napisany w C++.

Po prostu do Pythona brakuje profesjonalnych narzędzi. W C# teraz pisze się gry głównie ze względu na Unity, które jest realizowane z ogromnym rozmachem - mamy edytor, wszystko wizualnie rozmieścimy na scenie, nie wklepujemy pozycji obiektów w kodzie, ale każdy obiekt możemy oskryptować, żeby się ruszał jak mu zagramy. A do Pythona przy tworzeniu gier nie ma jeszcze takich wspomagaczy.

Niby Godot ma język Pythono-podobny, ale nie jest on oparty o interpreter Pythona. - https://godotengine.org/features

0

Co ciekawe dość popularny silnik do tworzenia powieści wizualnych jest oparty na Pythonie.

0

Myslicie ze ktos zrobi kiedys jakies narzedzia wykorzystujace Pythona w GameDev, by byl urzywany wsrod wiekszych producentow. Mowi sie ze Psyco moze przyszpieszyc kod o 100kroc od zrodlowego, to moze rozwiazac problem wolnego Pythona. Python ma ta przeage nad C/C++ czy C# ze jest bardziej czytelny i jest czesciej wybierany w ML/AI. Czy to ma jakies znaczenie w tej dziedzinie czy jestesmy juz na takim poziomie gdzie nie ma potrzeby sie bawic w to zeby Python byl w GameDev?

1

Psyco od dawna nie jest utrzymywany i to martwy projekt. Zamiast niego jest PyPy, ale są pewne rzeczy, których nie da się przeskoczyć za pomocą JIT i przyśpieszyć - po prostu.

Python w ML/Big Data itd. jest często używany, dlatego, że tak jak już @Spine wspomniał, Pythona używamy niejako do 'wrzucania' rzeczy do jakiegoś innego silnika, biblioteki itd. zazwyczaj napisanej w innym, wydajniejszym języku typu C/C++, łatever, sam ten proces 'przerzucania' nie musi być wydajny, zresztą Python to tylko wrapper, którego używamy, ponieważ jego składnia jest prosta, jest czytelny i łatwy.

Chodzi o to, by dowolny nerd z ml, big data, był w stanie szybko stworzyć jakiś działający projekt, żeby nie musiał być świetnym programistą - to nie jest jego zadanie. Jego zadaniem jest analiza danych itd. Język programowania dla niego to tylko narzędzie poboczne.

Stąd też taka popularność pythona w tych dziedzinach - bo szybko można się go nauczyć, jest prosty i czytelny. A co z faktem, że używając jakiś tam pythonowych wrapperów na inne biblitoeki można czasem zaobserować nieznaczne spowolnienia? Zazwyczaj jest to bez znaczenia, gdyż co z tego, że kod będzie działał załóżmy 5-10% wolniej, niech nawet będzie 50%, od kodu napisanego bez Pythonowego wrappera, skoro napisanie tego samego kodu, ale w szybszym języku, zajęłoby danemu analitykowi o wiele, wiele więcej czasu, prawdpodobnie by w ogóle nie powstał, gdyż jezyki niskopoziomwe są zwyczajnie trudniejsze, łatwiej popełnić w nich trudno wykrywalny błąd itd. Czas obliczeniowy jest teraz znacznie tańszy od czasu programisty - trzeba liczyć co się opłaca.

Podsumowując, raczej nie ma co patrzeć w przyszłość na Pythona jeśli o GameDev chodzi. Wydajność obliczeniowa będzie się zwiększała, ale nie na tyle współmiernie do rozwoju wymagań grafiki itd., by uzasadnić i umożliwić użycie Pythona w grach poważnych, zatem tak, amsz rację, nie ma potrzeby bawić się w to, by Python był w GameDevie.

To po prostu narzędzie o innym zastosowaniu.

0

Poczytaj o bardzo fajnym silniku goddot. Ma wlasny jezyk gdscipt który jest bardzo podobny do pythona.

1 użytkowników online, w tym zalogowanych: 0, gości: 1