Wydajność Python vs Game Maker [zamknięte]


14

Początkowo myślałem o stworzeniu gry z Pythonem i SFML. Rozumiem, że Python działa wolno w porównaniu do C ++, ale jak to jest w porównaniu do Game Maker?

Głównym powodem, dla którego pytam, jest to, że ostatnio grałem w Game Maker (The Iconoclasts), który działał z dość niską częstotliwością klatek na moim komputerze (GMA 950). Martwię się, że miałbym podobne problemy z wydajnością w Pythonie / SFML.


W Game Maker zaszły ogromne zmiany, nad którymi warto przyjrzeć się
Jeff

Odpowiedzi:


50

Stwierdzenie, że „Python jest powolny w porównaniu do C ++” jest uogólnieniem, które ignoruje wiele praktycznych zastosowań i zwykle jest złym rodzajem osądu, na którym można polegać. To, co naprawdę chcesz zrobić, to spojrzeć na to, co konkretny język lub technologia może przynieść do stołu pod względem twoich potrzeb, i podobnie, ocenić potencjalne wady tej technologii w stosunku do twoich potrzeb.

Jeśli musisz zadać takie pytanie, istnieje bardzo duża szansa, że ​​czynnikiem ograniczającym pod względem wydajności każdej gry, którą stworzysz, będziesz ty, a nie same wybory technologiczne. W związku z tym optymalnym wyborem jest ten, który daje Ci najwięcej możliwości, innymi słowy, technologię lub język, który znasz już najlepiej.

Jeśli chodzi o słabą wydajność gry, w którą grałeś, może to wynikać z wielu czynników, z których niektóre są specyficzne dla tej gry, takich jak słaby kod napisany za pomocą narzędzi Game Maker lub języków skryptowych. Niekoniecznie jest to wina samego Game Maker.


2
@Nevermind, możesz - Google dla sockpuppets . :) Żartuję - dodam za ciebie głos. 5001 - spoko, może teraz głosować na edycje tag-wiki ...
Cyclops,

1
Na GMA 950 nie byłbym wcale zaskoczony, gdyby gra była związana z GPU, a nie z procesorem.
Adam

4

Jeśli musiałbym odgadnąć największy powód, dla którego grałeś tak wolno, to nie jest to, że jest to gra dla twórców gier, ale ta gra sprzedaje się specjalnie dla nie-programistów. Ponieważ nie jesteś programistą tworzącym gry, istnieje duże prawdopodobieństwo, że dana gra używa bardzo nieefektywnych algorytmów, które powodują jej wolne działanie.

Jak w większości przypadków, szybkość języka wpłynie jedynie nieznacznie na ogólną wydajność programu. Kiedy ludzie mówią „omg ten język jest o 50% wolniejszy niż ten inny język”, a prędkość jest nadal głupia duża w obu przypadkach, to nie zauważysz żadnej lub żadnej zauważalnej różnicy dla użytkownika końcowego.


3

Game Maker to dobre narzędzie dla początkujących. Ale zalecam przejście do większych i lepszych programów, jeśli masz jakiekolwiek wcześniejsze doświadczenie w programowaniu. Użyłem GameMakera na studenckim kursie tworzenia gier 2D, ma ładny, łatwy w użyciu system przeciągania i upuszczania. Problem polega jednak na tym, że przeciąganie i upuszczanie programu nie używa najbardziej wydajnych (lub logicznych) poleceń. Ponadto przeciąganie i upuszczanie nie obsługuje wielu zaawansowanych poleceń, które program jest w stanie wykonać, więc programista musi być z nim kreatywny lub nauczyć się kodować. Jeśli jednak nauczysz się korzystać z kodu GameMaker, będziesz w stanie obejść ten problem ze względną łatwością.

Ale może być trudno nauczyć się kodu dla jednego programu z napiętymi harmonogramami, które wszyscy mamy, i to jest prawdopodobnie powód, dla którego doświadczyłeś niskiej wydajności.

Ale, jak wcześniej stwierdził Kort Pleco, większość prędkości językowych nie różni się znacząco. Wszystko zależy od tego, jak kod zostanie napisany i wykonany. Wiele redundancji może znacznie zwolnić, co zwykle wynika z braku doświadczenia w kodowaniu.


2

W grze, nad którą pracuję, używam algorytmu kwadratu diamentowego do losowego tworzenia terenu po rozpoczęciu nowej gry. Aby zdecydować się na użycie Pythona z pygame dla projektu lub GameMakera, zaimplementowałem generator terenu w obu. Pygame działała nieco szybciej, ale różnica była znikoma. Ostatecznie wybrałem GameMaker, ponieważ mogę w nim pracować znacznie szybciej.


1

Przyjęta odpowiedź jest martwa, ale chciałem dodać moje 2 centy jako użytkownik GM na prawie 8 lat.

GM miał wiele problemów z optymalizacjami, więc istnieje uzasadniona obawa. Istnieje grupa przestarzałych metod * _variable_exists? które istniało wcześniej w studiu Gamemaker. Ze względu na tę wygodę metoda została wykorzystana w prawie każdej wyobrażalnej bibliotece i rozszerzeniu napisanym dla GM. Okazało się, że te metody były strasznie drogie i powodowały poważny problem podczas uruchamiania gier na dużą skalę.

Tak więc istnieje wiele przypadków, w których GM może być naprawdę zły, ale przy odpowiedniej wiedzy i starannym użyciu jest nie mniej uzasadniony niż jakakolwiek inna metoda (unity2d, pygame itp.). Po prostu twórz gry i baw się dobrze.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.