Jestem studentem, który chce postawić stopę w progu rozwoju gry i chcę zrobić coś 2D, może tetris / kosmicznych najeźdźców / coś z klonem interakcji z małą myszką.
Skierowałem swoje poszukiwania w kierunku C ++ i 2d i ostatecznie doprowadziłem do DirectX / OpenGL
Teraz, jak rozumiem, wszystkie te pakiety zrobią dla mnie rysowanie rzeczy na ekranie. I to wszystko, na czym mi naprawdę zależy w tym momencie. Dźwięk nie jest konieczny. Prawdopodobnie wejście może być obsługiwane przez stdlib.
Tak więc, dla początkujących próbujących stworzyć podstawową grę w C ++, czy poleciłbyś DirectX lub OpenGL? Dlaczego? Jakie są kluczowe różnice między nimi? Który jest bardziej użyteczny?
Użyłem zarówno SDL, jak i SFML do moich projektów gier. Użyłem SDL do ukończenia gry, gry tetris, i głównie używałem SFML jako warstwy okienkowej do eksperymentów z shaderem. Z mojego doświadczenia muszę powiedzieć, że SDL jest tym, co mówi. Jest to prosta warstwa bezpośrednich mediów, która wyodrębnia dane, z którymi współpracują Twoje media (dźwięk i wideo) do poziomu, z którym możesz wchodzić w interakcje na różnych platformach. To „wszystko”, co robi.
Z tego powodu zazwyczaj należy wymieszać go z kilkoma innymi bibliotekami, w szczególności z SDL_mixer, SDL_gfx i SDL_image, które zapewniają funkcjonalność potrzebną każdemu do tworzenia gier.
Wszystkie te biblioteki są również przeznaczone dla języka programowania C i są zgodne z jego konwencjami. Nie chodzi o to, że jest w tym coś złego, ale jeśli chcesz zorientowanego obiektowo podejścia do interakcji z io, w zasadzie musisz sam zbudować tę warstwę.
SFML zawiera wszystko od razu po wyjęciu z pudełka. Ma dźwięk, ma wideo, ma miksowanie, ma ograniczanie klatek i jest zorientowany obiektowo. Jeśli tego właśnie chcesz, polecam pójść na to. SFML ma również warstwę abstrakcji dla niektórych podstawowych funkcji OpenGL (w szczególności beginShape / EndShape i shaderów pikseli). Nie sądzę, że SDL ma coś takiego, tylko metodę łączenia się z tym.
PS Nie odrywaj konwersacji od C / C ++, ale jeśli nie używasz tego języka z jakiegoś konkretnego powodu i chcesz łatwiejszego, zawsze jest pygame. Który jest w zasadzie SDL + dla Pythona.
źródło
http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263140&reply_id=3598844
Zgadzam się z tymi uwagami i uważam, że to świetna dyskusja na temat tego, dlaczego DirectX jest lepszy niż OpenGL.
Ten dziennik jest odpowiedzią dla Davida z Wolfire.
Mam nadzieję, że to trochę zrównoważy to. ;)
Ale ogólnie, jeśli używasz międzyplatformowego frameworku API:
Użyj DirectX w systemie Windows i OpenGL w * nix.
źródło
http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX
Zgadzam się z tymi uwagami i uważam, że to świetna dyskusja na temat tego, dlaczego OpenGL jest lepszy od DirectX.
Jednak to pytanie jest absolutnie kwestią opinii, a DirectX absolutnie ma swoje zalety w stosunku do OpenGL, szczególnie 10 i 11, a zwłaszcza w kontekście rozwoju gier.
Ponadto, jeśli zdecydujesz się na OpenGL, SDL jest wspaniałą i bardzo popularną biblioteką, i istnieje wiele zasobów do nauki OpenGL (NeHe itp.) - ale to może być miejsce na kolejne pytanie.
źródło
Jeśli dopiero zaczynasz, prawdopodobnie lepiej jest użyć istniejącego silnika lub frameworka 2D, takiego jak SFML .
źródło
Lubię Direct X i używam go od kilku lat w wielu projektach, ale jeśli się uczysz, uważaj na problemy z wersją.
Odkryłem, że większość bezpośredniego kodu x nie będzie się kompilować w innej wersji i może to być piekło, jeśli próbujesz wykonać samouczek.
Polecam Direct X, ponieważ istnieją funkcje dla wszystkich, które ułatwiają, gdy zaczynasz od początku, a następnie bardziej zaawansowane sposoby manipulowania rzeczami w miarę postępu.
źródło
Silnik gry Haafa
Nie wiem, jak to jest aktualne (mam na myśli, że tak nie jest, ale nie sądzę, żeby istniał jakiś powód, dla którego nie powinien być użyteczny), ale użyłem go jakiś czas temu (C ++) i naprawdę podobało mi się to. HGE nie był aktualizowany od 05.08, ale znowu pamiętam, że jest dość prosty do nauczenia się i szybki. Jest również wyposażony w różnego rodzaju narzędzia i pomocnika, takie jak układ cząsteczkowy.
W każdym razie, jeśli chcesz stworzyć rzeczywistą grę, w przeciwieństwie do uczenia się rzeczy, które dzieją się „pod maską” w procesie rysowania i tak dalej, zaleciłbym użycie czegoś wyższego niż OpenGL lub DirectX, lub spędzasz czas rysując rzeczy na ekranie zamiast tworzyć rzeczywistą grę. A HGE jest zdecydowanie warte sprawdzenia.
http://hge.relishgames.com/
źródło
Jestem w tej samej pozycji, co ty, dopiero kilka miesięcy temu zacząłem pracować nad tworzeniem gier (na platformie iPhone). Pochodząc z tła C, sugerowałbym użycie frameworka (szczególnie Cocos2d).
Zalety frameworka są więcej niż omówione w tym poście - ale głównie obsługuje większość procesów niskiego poziomu w OpenGL i zapewnia metody radzenia sobie z tym, czego najprawdopodobniej będziesz potrzebować dla twórców gier. Mają świetną społeczność, są open source, a więc jeśli potrzebujesz dostępu do podstawowego kodu frameworka / zmodyfikować dowolny jego fragment, aby dostosować go do swoich potrzeb / w razie potrzeby przejść do niskiego poziomu OpenGL - nadal masz wybór.
Możesz iść drogą bezpośredniego OpenGL, ale dla mnie to po prostu przesada.
Najprawdopodobniej będziesz chciał zajrzeć do różnych istniejących bibliotek fizycznych - Google Chipmunk i Box2D, aby uzyskać więcej informacji.
Twoje zdrowie!
źródło