Ich möchte ein Brettspiel (ähnlich wie Checker) für das iPhone programmieren. Wäre OpenGL ES oder CoreGraphics eine bessere Option? Was verwenden die meisten Spiele dieses Typs im App Store?iPhone Brettspiel: OpenGL ES oder CoreGraphics?
Antwort
Eigentlich würde ich in diesem Fall Core Animation oder sogar nur UIViews selbst vorschlagen. Wenn Sie alle Elemente in einer einzigen Ansicht über Core Graphics direkt zeichnen, und diese Ansicht für jeden Animationsrahmen aktualisieren, erhalten Sie eine schreckliche Leistung.
Ich würde vorschlagen, die einzelnen Elemente des Spielbretts (Teile, Zähler, Brettquadrate usw.) als einzelne UIViews oder CALayers zu zeichnen und dann diese Ebenen oder Ansichten zu animieren. UIViews sind nicht viel schwerer als CALayers, und sie verwenden Core Animation im Hintergrund, um Animationen einfach zu bewegen, zu skalieren oder zu verblassen. Sie können auch auf Berührungsereignisse reagieren. CALayers sind nützlich, wenn Sie ein plattformübergreifendes (Mac und iPhone) Spiel erstellen möchten oder komplexere Animationen erstellen möchten.
Für ein 2D-Spiel würde ich auf OpenGL warten, bis Sie absolut sicher waren, dass Sie nicht die Art von Leistung erhalten konnten, die Sie von Kernanimation wünschen. OpenGL ist viel weniger elegant zu codieren.
Für ein gutes Beispiel für ein Brettspiel mit Core Animation hat Apple die GeekGameBoard sample code zur Verfügung gestellt. Obwohl es sich um eine Mac-Anwendung handelt, kann der Core-Animation-Code direkt auf das iPhone übertragen werden.
OpenGL, wenn richtig gemacht, wird wahrscheinlich besser aussehen. Mein Verständnis ist jedoch, dass es viel schwieriger als CoreGraphics ist, wenn Sie nicht wissen, wie es funktioniert.
Wenn Sie jedoch nicht damit vertraut sind, ist CoreGraphics einfacher zu erlernen. Ich weiß nicht viel über OpenGL, also als ich ein Spiel geschrieben habe, habe ich es in CoreGraphics gemacht und es ist ziemlich gut geworden.
Wenn Ihre Perspektive hauptsächlich von oben betrachtet wird, befindet sich die Benutzeransicht an einer festen Position und Sie benötigen keine Runtime Texture Mapping oder spezielle Beleuchtung, dann werden Core-Grafiken einfacher. Sonst würde ich mit OpenGL gehen (oder einem dieser Spiele-Baukästen von Drittanbietern wie Unity, die es einfach machen).
Es hängt wirklich davon ab, welche Art von Aussehen Sie anstreben.
Wenn Sie nicht sehr leistungshungrig sind, was ein Brettspiel wahrscheinlich nicht ist, gehen Sie mit CoreGraphics. Sie erhalten den Luxus, auf einer höheren Abstraktionsebene zu arbeiten und Sie erhalten auch einige Dinge, die Sie von Hand schreiben müssten, zum Beispiel Animationen. (P.S Ich nehme an, Sie sprechen über 2D.)
CoreGraphics sicher. Es kann problemlos 20 - 30 Sprites auf dem Bildschirm gleichzeitig mit sehr geringen Leistungsproblemen animieren. Es wird schneller zu ändern sein, weil Sie Werkzeuge wie Photoshop verwenden können, um Ihre Bilder neu zu erstellen. OpenGLES könnte wirklich ordentlich sein, wenn Sie vielleicht ein paar wirklich coole Kamerafahrten machen wollen oder einige wirklich nette Animationen. –
Sie können sicherlich Ihre wertvollen Photoshop mit OpenGL auch verwenden. Apple bietet Code zum Laden von UIImages als OpenGL-Texturen. –
Sie könnten auch cocos2d für iphone - es ist eine ziemlich voll ausgestattete 2d Spiel Bibliothek; Es hat Fliesenkarten, Sprites, Parallaxe, Zeitplanung usw. Ich benutze es für mein Spiel, und es hat mir ziemlich geholfen.
Verwenden Sie Cocos2D, Sie werden niemals einen Block treffen, der auf eine starke Frame-Animation zurückzuführen ist. Sie können auch ausgefallene Partikeleffekte hinzufügen. Es ist sehr einfach zu lernen und beginnt Ergebnisse zu sehen. Bietet Szenenverwaltung. –
OpenGL. Es lohnt sich auf lange Sicht, und ich dachte, die Lernkurve wäre noch einfacher als CoreGraphics für 2D-Sprite-Zeug.
Für diesen einen definitiv Core-Grafik und Core-Animation. Jeff LeMarche hat eine Beispielvorlage für ein Black Jack-Spiel in seinem Blog - ich habe gerade ein Suduko-Puzzle fertiggestellt. Was cocos2D angeht, das ich für ein Plattformspiel verwende - OpenGL würde die Grafik nicht verbessern oder verbessern - es wird definitiv nicht die Grafik besser aussehen lassen - du kannst dein Herz auf diesem einen photoshop und sicher fühlen und wissen, dass es gut aussehen wird . Cocos2D zu lernen ist zu viel Aufwand - das gleiche gilt für das Erlernen von openGL ES - benutze einfach die Kerngrafiken und hol es raus.Soweit openGL ES für die Zukunft zu wissen - natürlich - aber Sie sollten Apples "Kern" verstehen, bevor Sie diese versuchen.
"OpenGL, wenn richtig gemacht, wird wahrscheinlich besser aussehen." Dem stimme ich überhaupt nicht zu. Sie werden wahrscheinlich Alias-Probleme, Probleme mit der Texturfilterung usw. haben, die Sie nicht mit vorgerenderten Stücken haben werden. Natürlich, wenn das, was Sie meinten, "es wäre beeindruckender mit 3D-Rotation rund um das Board", ja, würde es. – jv42
Es wird mit OpenGL nicht besser aussehen. Für einfache Spiele wird CoreAnimation gut funktionieren! – bentford