Tamam, oldukça uzun bir cevap kısaltmaya çalışacağım.
Şimdi birkaç uzun düşünce ve açıklama için - bu uzun. Sonuna kadar okumadıysanız, son birkaç cümleyi okuduğunuzdan emin olun.
Önce sen listeledik "teknolojileri" veya API en yalnızca (ayrıca girişini işleyen UIKit hariç) grafik ile ilgileniyorlar olduğunu açıklamak gerekir ve bu grafik sadece anlıyoruz sürece tamam Bir oyun (ve benim deneyimimden bütün oyunu ekleyebilirim).
Grafiklerin yanı sıra, gerçek bir oyun yaparken ele alınması gereken biraz daha fazla olacaktır. Sorudan çok uzaklaşmamak için sadece birkaç vızıltı vereyim: oyun mantığı, AI, kaynak yönetimi, fizik, etkileşim, ağ (muhtemelen), ses, vb Benim önerim almaktır konuyla ilgili iyi bir kitap ve [1,2] 'da dalış yapın.
Şimdi tekrar sorunuza ki yağsız olduğu:
Temelde, OpenGL ve QuarzCore "ekranda çizilen bir şey olsun" çekirdek teknolojileridir. Diğer tüm teknolojiler bunun üzerine inşa edilmiştir. Yani teoride, yoluna gitmek isterseniz, grafik çıktısı ile ilgili her şeyi tek başına OpenGL veya QuarzCore ile uygulayabilirsiniz (oysa, QuarzCore'un sadece 2B çizim olduğu gerçeğini hesaba katmanız gerekir, oysa OpenGL 3D'yi ve 2D'yi desteklemektedir). gerçekten sadece 3D özel bir durumdur. Quarz'ın da OpenGL üzerine kurulu olduğuna inanıyorum, ama bundan emin değilim.
UIKit, bunların üzerine inşa edilmiştir ve temel olarak iki şeyi kullanır: a) tekerleği yeniden icat etmekten kaçının ve b) kullanıcı arayüzlerinin oluşturulmasını daha kolay, daha hızlı ve daha sağlam hale getirin. Elbette bir dörtlünün koordinatlarını belirterek ve bunu işlemek için OpenGL'ye göndererek her düğmeyi kendiniz çizebilirsiniz. Ardından, düğmene isabet ederse ve ilgili bir işleyiciyi çağırırsa, her kullanıcı girişini kontrol etmeniz gerekir. Bununla birlikte, sadece bir UIButton örneği oluşturmak (belki de IB'de bile) ve bir tıkla-tıklatma işleyicisini belirlemek oldukça fazla işi ortadan kaldırır.
Alt satır: UIKit, kullanıcı arabirimleri oluşturmak için mükemmel şekilde uygundur. Ayrıca OpenGL ve QuarzCore ile birlikte kullanılabilir. IOS'ta kullanıcı arayüzünde bile oyunlarda kullanıyorum.
İlişkin Cocos2D: Bu seferki OpenGL üstüne inşa edilmiş bir "oyun motoru" dir. Kendi OpenGL tabanlı motorunuzu, yani sahne yönetimini, spriteları, tekstüre, kafesleri, kaynakları vb. Çalışırken yuvarlanmanız gereken şeylerin birçoğunu içerir. Fiziğin ve çarpışma tespit kütüphanelerinin de bağlantıları olduğunu düşünüyorum. . Ancak orada ne olduğunu anlamak için bilgisayar grafikleri ve oyunların nasıl çalıştığını öğrenmek gerekiyor [1,2,3].
Alt satır: kullanıcı arayüzü yapmak için (2D) oyun grafikleri ve UIKit için Cocos2d kullanırsınız. Sonra
CoreAnimation CoreGraphics şeyler animasyon içindir. Kolay bir arayüz sağlar, örn. Tüm gerekli hesaplamaları (enterpolasyonlar, yeniden çizme vb.) enkapsüle etmek için etrafa yumuşak bir şekilde kayan veya dönen öğeler için. OpenGL ile çalışmayacak - ama ben Cocos2D bunun için bir sarıcı var düşünüyorum.
Alt çizgi: fantezi kullanıcı arayüzü animasyonlar için kullanın.
bütün söyledi ve sadece sadece ben ilk etapta sizi korkutmak istemedim üst kaymağını olması. özel oyun için
(ve her oyun özeldir) iyi grafikler için sadece UIKit ve CoreAnimiation kaçabilirsiniz ve iyi bir gişe oyun yapabilir. Kullanımı kolay bir arayüzle çok fazla çizim yapılmasına izin verir, ayrıca çok derin bir arka plan bilgisine ihtiyaç duymazlar ve küçük projeler için yeterince verimli olurlar.
Harika bir oyun fikriniz varsa, sizi ve oyuncularınızı tatmin edecek ve bunu gerçekleştirebilecek en basit grafik çözümünü kullanın. Gittikten sonra, gerekirse yine de geliştirebilirsiniz.
[1] http://www.mcshaffry.com/GameCode/
[2] http://www.gameenginebook.com/
[3]: http: //www.opengl .org/documentation/red_book/
mükemmel - Genel bakış için teşekkür - referanslarım inceleyeceğim. Bu arada, birinin Core Animation üzerinden cocos2d'ye gitmemesinin herhangi bir sebebi var mı? yani cocos2d Core Animation'ın daha fazlasını yapabildiği şeyi yapabilir mi? – Greg
Gerçekten Cocos2D'ye girmiyorum ama bence CA'nın ne yapabileceğini ve daha fazlasını yapabileceğini düşünüyorum, fakat Quarz yerine OpenGL açısından. Yani UIKit ve Quarz animasyonları CA'lı, Cocos'la olan her şeyle birlikte gidecekler - ama dediğim gibi, ne sunduklarından emin değilim (ama genellikle herhangi bir iyi oyun motoru oldukça iyi bir matematik kütüphanesine sahiptir). –
Ve aklıma gelen şey şu ki, fark Cocos2D'nin (oyun motorunu tamamıyla anımsatan ama tamamlayamadığım) "oyun motoru" olduğunu ve CA'nın UI öğelerine animasyon eklemenin basit bir yolu olduğunu - bu kesinlikle bir fark . –