2011-11-21 9 views
16

Czy byłbym zainteresowany opracowaniem gier na iPhone'a/iPADa, sugestiami, na jakie technologie powinienem zaglądać? W rzeczywistości prosta kula każdej z tych technologii, która podkreśla, w jaki sposób pasuje ona do typowego rozwoju gry, byłaby świetna, ponieważ powodem tego pytania było to, że nie rozumiałem, jak te elementy pasują do siebie. Więc w tym przypadku jest to skąd te z grubsza pasuje tu:od czego zacząć tworzenie gier? UIKit vs Core Animation vs QuartzCore vs OpenGL vs cocos2D

  • UIKit
  • Core Animation
  • QuartzCore
  • OpenGL
  • Cocos2d

byłem coraz wrażenie, że Cocos2d byłaby to właściwa droga i wydaje się być prostszym opakowaniem dla OpenGL? Nie wiesz, gdzie to pozostanie UIKit vs Core Animation vs QuartzCore?

Odpowiedz

38

Dobrze, postaram się odpowiedzieć krótko: to zależy.

Teraz kilka długich przemyśleń i wyjaśnień - to jest długie. Jeśli nie przeczytasz go do końca, przeczytaj kilka ostatnich zdań.

Najpierw muszę wyjaśnić, że „technologie” lub API zostały wymienione są w większości związane wyłącznie z grafiką (z wyjątkiem UIKit który obsługuje również wejście) i że jest OK tak długo, jak zrozumieć że grafika jest tylko część (i na podstawie mojego doświadczenia mogę dodać "niewielką") z całej gry .

Poza grafiką, będzie sporo więcej do zrobienia podczas robienia prawdziwej gry. Aby nie oderwać się zbytnio od pytania, pozwólcie, że po prostu wrzucę kilka modnych powiedzonek: logika gry, AI, zarządzanie zasobami, fizyka, interakcja, networking (być może), dźwięk itp. Moje zalecenie to uzyskać dobra książka na ten temat i nurkowanie w [1,2].

Teraz, odtłuszczone, że z powrotem do twojego pytania:

Zasadniczo, OpenGL i QuarzCore są podstawowe technologie, aby „coś wyciągnąć na ekranie”. Wszystkie inne technologie są zbudowane na tym. Więc teoretycznie, jeśli chcesz pójść tą drogą, możesz zaimplementować wszystko, co jest związane z wyjściem graficznym z samym OpenGL lub QuarzCore (podczas gdy będziesz musiał uwzględnić fakt, że QuarzCore jest tylko rysunkiem 2D, podczas gdy OpenGL obsługuje również 3D i 2D to naprawdę tylko specjalny przypadek 3D). Wierzę, że Quarz jest również zbudowany na OpenGL, ale nie jestem tego pewien.

UIKit jest zbudowany na tych, a używanie go zasadniczo ma dwie rzeczy: a) unikanie ponownego wynajdowania koła i b) tworzenie interfejsów użytkownika łatwiej, szybciej i solidniej. Oczywiście możesz narysować każdy przycisk samodzielnie, określając współrzędne kwadratu i wysyłając go do OpenGL w celu przetworzenia. Następnie musisz sprawdzić każde wejście użytkownika, jeśli trafi ono w Twój przycisk i wywołać powiązaną funkcję obsługi. Jednak samo utworzenie instancji UIButton (może nawet w IB) i określenie procedury obsługi po kliknięciu usuwa dość dużo pracy.

Dolna linia: UIKit doskonale nadaje się do tworzenia interfejsów użytkownika. Dodatkowo może być używany razem z OpenGL i QuarzCore. Używam go do interfejsu użytkownika na iOS nawet w grach.

Odnośnie Cocos2D: Ten jest "silnikiem gry" zbudowanym na OpenGL. Jako taki zawiera sporo rzeczy, które musiałbyś sobie poradzić podczas rozwijania własnego silnika opartego na OpenGL, tj. Zarządzania scenami, sprite'ów, teksturowania, siatek, zasobów itp. Uważam, że ma również połączenia z bibliotekami fizyki i wykrywania kolizji. . Jednak aby zrozumieć, co się tam dzieje, trzeba się nauczyć, jak działają grafika komputerowa i gry [1,2,3].

Dolna linia: użyjesz Cocos2D do grafik (2D) i UIKit do stworzenia interfejsu użytkownika.

CoreAnimation służy do animowania rzeczy CoreGraphics. Zapewnia łatwy interfejs, np. do płynnego przesuwania lub obracania materiału, obejmując wszystkie wymagane obliczenia (interpolacje, przerysowanie itp.). Nie działa z OpenGL - ale myślę, że Cocos2D również będzie miał do tego opakowanie.

Dolna linia: służy do tworzenia fantazyjnych animacji interfejsu użytkownika.

Powiedziawszy to wszystko i po prostu przeglądając top, nie chciałem cię przestraszyć.

W swojej specjalnej grze (i każdej grze jest wyjątkowa) możesz uciec z UIKit i CoreAnimiation za grafikę, a to może być hitem kinowym. Pozwalają na wiele rysunków za pomocą łatwego w użyciu interfejsu oraz nie wymagają zbyt głębokiej wiedzy w tle i są wystarczająco wydajne dla małych projektów.

Jeśli masz świetny pomysł na grę, użyj najprostszego możliwego rozwiązania graficznego, które zadowoli Ciebie i Twoich graczy i zrealizuj to. Gdy już to zrobisz, możesz w razie potrzeby go ulepszyć.

[1] http://www.mcshaffry.com/GameCode/

[2] http://www.gameenginebook.com/

[3], http: //www.opengl .org/documentation/red_book/

+0

excellent - dzięki za przegląd - przejrzę referencje. nawiasem mówiąc, jakikolwiek powód dlaczego nie pójdziemy na cocos2d ponad Core Animation? np. czy cocos2d może zrobić to, co potrafi Core Animation i więcej? – Greg

+0

Nie jestem naprawdę w Cocos2D, ale myślę, że może zrobić to, co CA może zrobić i więcej, ale pod względem OpenGL, a nie Quarz. Więc animacje UIKit i Quarz pójdą z CA, wszystko inne z Cocos - ale jak już powiedziałem, nie jestem pewien, co dostarczają (ale zwykle każdy przyzwoity silnik gry ma całkiem dobrą bibliotekę matematyczną, aby go poprzeć). –

+1

I tak, co przychodzi na myśl, różnica polega na tym, że Cocos2D jest (czytam w pełni rozwinięty, ale nie mogę potwierdzić) "silnikiem gry", a CA jest po prostu prostym sposobem dodawania animacji do elementów interfejsu użytkownika - więc to z pewnością różnica . –