2011-11-21 34 views
16

Nếu tôi quan tâm đến việc phát triển trò chơi trên iPhone/iPAD, bất kỳ đề xuất nào về công nghệ nào cần bắt đầu xem xét? Thực ra chỉ là một viên đạn đơn giản trên mỗi công nghệ làm nổi bật cách nó phù hợp với sự phát triển game điển hình sẽ là tuyệt vời, vì lý do cho câu hỏi này là tôi không hiểu cách chúng khớp với nhau như thế nào. Vì vậy, trong trường hợp này đó là nơi làm những khoảng phù hợp ở đây:nơi để bắt đầu phát triển trò chơi? UIKit vs Core Animation vs QuartzCore vs OpenGL vs cocos2D

  • UIKit
  • Core Animation
  • QuartzCore
  • OpenGL
  • Cocos2d

tôi đã nhận được ấn tượng rằng Cocos2d sẽ là cách để đi, và nó có vẻ là một wrapper đơn giản cho OpenGL? Bạn không chắc chắn nơi mà lá UIKit vs Core Animation vs QuartzCore sau đó?

Trả lời

38

Ok tôi sẽ cố gắng thực hiện một câu trả lời khá dài ngắn: nó phụ thuộc.

Bây giờ cho một vài suy nghĩ và giải thích dài hơn - điều này là dài. Nếu bạn sẽ không đọc nó đến cùng, hãy chắc chắn bạn đọc vài câu cuối cùng.

Trước tiên tôi cần phải làm rõ rằng "công nghệ" hay API của bạn đã liệt kê là chủ yếu quan tâm duy nhất với đồ họa (trừ UIKit mà cũng xử lý đầu vào) và đó là ok miễn là bạn hiểu rằng đồ họa duy nhất là một phần (và theo kinh nghiệm của tôi, tôi có thể thêm "nhỏ") của toàn bộ trò chơi.

Bên cạnh đồ họa, sẽ có khá nhiều thứ để xử lý khi thực hiện trò chơi thực. Để không nhận được câu hỏi quá nhiều, hãy để tôi chỉ ném một vài từ khóa: logic trò chơi, AI, quản lý tài nguyên, vật lý, tương tác, mạng (có thể), âm thanh, v.v. Khuyến nghị của tôi là một cuốn sách hay về chủ đề và đi sâu vào [1,2].

Bây giờ tôi đọc lướt đó, trở lại câu hỏi của bạn:

Về cơ bản, OpenGL và QuarzCore là những công nghệ cốt lõi để "có được một cái gì đó vẽ trên màn hình". Tất cả các công nghệ khác được xây dựng trên đó. Vì vậy, về mặt lý thuyết, nếu bạn muốn cách đó , bạn có thể thực hiện mọi thứ liên quan đến đầu ra đồ họa với OpenGL hoặc QuarzCore (trong khi đó bạn sẽ phải tính đến thực tế là QuarzCore chỉ vẽ 2D, trong khi OpenGL hỗ trợ 3D và 2D thực sự chỉ là một trường hợp đặc biệt của 3D). Tôi thực sự tin rằng Quarz cũng được xây dựng trên đầu trang của OpenGL, nhưng tôi không chắc chắn về điều đó.

UIKit được xây dựng trên đầu trang và sử dụng nó về cơ bản hai điều: a) tránh tái phát minh ra bánh xe và b) tạo giao diện người dùng dễ dàng hơn, nhanh hơn và mạnh mẽ hơn. Tất nhiên bạn có thể vẽ tất cả các nút bằng cách chỉ định tọa độ của một quad và gửi cho OpenGL để xử lý. Sau đó, bạn sẽ phải kiểm tra mọi đầu vào của người dùng nếu nó chạm vào nút của bạn và gọi một trình xử lý liên quan. Tuy nhiên, chỉ cần tạo một cá thể UIButton (có thể ngay cả trong IB) và chỉ định một trình xử lý trên-click sẽ loại bỏ khá nhiều công việc.

Tóm lại: UIKit hoàn toàn phù hợp để tạo giao diện người dùng. Plus nó có thể được sử dụng cùng với OpenGL và QuarzCore. Tôi sử dụng nó cho giao diện người dùng trên iOS ngay cả trong trò chơi.

Về Cocos2D: Đây là một "công cụ trò chơi" được xây dựng trên đầu OpenGL. Như vậy nó bao gồm khá nhiều thứ bạn sẽ phải tự xử lý khi lăn động cơ dựa trên OpenGL của riêng bạn, tức là quản lý cảnh, sprites, texturing, meshes, resources… Tôi tin nó cũng có kết nối tới các thư viện vật lý và va chạm . Tuy nhiên, để hiểu điều gì xảy ra ở đó, cần phải học cách đồ họa và trò chơi máy tính hoạt động [1,2,3].

Dòng dưới cùng: bạn sẽ sử dụng Cocos2D cho đồ họa trò chơi (2D) và UIKit để thực hiện giao diện người dùng.

CoreAnimation là để tạo hoạt ảnh cho nội dung CoreGraphics. Nó cung cấp một giao diện dễ dàng, ví dụ: cho trơn trượt hoặc xoay công cụ xung quanh, đóng gói tất cả các tính toán cần thiết (nội suy, vẽ lại vv). Sẽ không làm việc với OpenGL - nhưng tôi nghĩ rằng Cocos2D cũng sẽ có một trình bao bọc cho điều đó.

Tóm tắt: Sử dụng cho hoạt ảnh giao diện người dùng ưa thích.

Đã nói tất cả điều đó và chỉ đơn thuần là lướt qua đầu tôi không muốn làm bạn sợ hãi ngay từ đầu.

Đối với trò chơi đặc biệt của bạn (và mọi trò chơi là đặc biệt), bạn có thể thoát khỏi chỉ với UIKit và CoreAnimiation cho đồ họa và nó cũng có thể tạo ra một trò chơi bom tấn. Chúng cho phép nhiều bản vẽ diễn ra với giao diện dễ sử dụng cộng với chúng không yêu cầu kiến ​​thức nền quá sâu và đủ hiệu quả cho các dự án nhỏ.

Nếu bạn có ý tưởng trò chơi tuyệt vời, hãy sử dụng giải pháp đồ họa đơn giản nhất có thể sẽ làm hài lòng bạn và người chơi của bạn và nhận ra nó. Một khi bạn đã có nó đi, bạn vẫn có thể cải thiện nó nếu cần thiết.

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

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

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

+0

tuyệt vời - cảm ơn cho tổng quan - Tôi sẽ xem các tài liệu tham khảo. bằng cách này, bất kỳ lý do tại sao một người sẽ không đi cho cocos2d trên Core Animation? tức là bạn có biết liệu cocos2d có thể làm những gì mà Hoạt ảnh cốt lõi có thể làm cộng thêm không? – Greg

+0

Tôi không thực sự vào Cocos2D nhưng tôi nghĩ rằng nó có thể làm những gì CA có thể làm và nhiều hơn nữa, nhưng về OpenGL hơn là Quarz. Vì vậy, hoạt hình của UIKit và Quarz sẽ đi cùng với CA, mọi thứ khác với Cocos - nhưng như tôi đã nói, tôi không chắc chắn những gì họ cung cấp (nhưng thường thì bất kỳ công cụ trò chơi nào cũng có một thư viện toán tốt để sao lưu). –

+1

Và điều thú vị là sự khác biệt là Cocos2D là công cụ trò chơi (tôi đọc hoàn toàn nhưng không thể xác nhận) và CA chỉ là cách đơn giản để thêm hoạt ảnh vào các phần tử giao diện người dùng - vì vậy đó chắc chắn là sự khác biệt . –