Bạn đang quan tâm đến Cocos2dx là gì? Phát triển game trên đa nền tảng Cocos2dx phải không? Nào hãy cùng PHE BINH VAN HOC theo dõi bài viết này ngay sau đây nhé!
Video đầy đủ Cocos2dx là gì? Phát triển game trên đa nền tảng Cocos2dx
Nhắc đến game, người ta thường nghĩ đến yếu tố giải trí của nó là phần lớn, nhưng thật ra đây cũng là một lĩnh vực hái ra tiền khá cao, trở thành điểm thu hút của các bạn trẻ do nhu cầu giải trí tăng cao cùng với sự phát triển của các nền tảng công nghệ. Theo thống kê, doanh thu ngành game đạt đến 120 tỷ USD vào năm 2019, gấp đôi cả doanh thu phòng vé các rạp chiếu phim. Vốn thuộc lĩnh vực phần mềm, ngành game đã dần tách ra, phát triển ngày càng đa dạng trên nhiều nền tảng hay game engine khác nhau. Bài viết dưới đây sẽ tập trung vào việc phát triển game dựa trên game engine đa nền tảng Cocos2dx.
Bạn đang xem: Phát triển game dựa trên game engine đa nền tảng cocos2d
Cocos2dx là gì?
Cocos2dx xuất phát từ Cocos2d, một game engine 2D viết bằng ngôn ngữ Python và sau đó nó đã được chuyển sang rất nhiều ngôn ngữ khác. Game engine là phần mềm trung gian kết nối tương tác của nhiều ứng dụng trong cùng 1 hệ thống với nhau, được áp dụng trong thiết kế và phát triển game. Nó nằm trong công cụ dựng hình game, cho xuất ra các hình ảnh dưới dạng hai chiều (2D) hoặc ba chiều (3D). Tuy nhiên game engine không chỉ bao gồm hình ảnh (mà hay nhầm lẫn với Graphic Engine) mà còn bao gồm một số công cụ cần thiết (vật lý, tính toán và phát hiện va chạm), phân luồng, hình ảnh động (animation), âm thanh, mã nguồn, trí tuệ nhân tạo, tạo dòng dữ liệu xử lý, quản lý bộ nhớ, dựng ảnh đồ thị, và kết nối mạng. Nhờ có game engine, lập trình viên có thể lập trình tạo ra các vật thể, thiết lập môi trường, ánh sáng một cách nhanh chóng, tiết kiệm thời gian mà không cần thông qua các hàm bằng Open
GL.
Bạn đang xem: cocos2d-x là gì

Nói về Cocos2d, nguồn gốc của Cocos2dx thì nó vốn là một framework có mã nguồn mở, tương thích với nhiều ngôn ngữ như Swift và Objective-C, cũng như hoạt động tốt trên các hệ điều hành i
Os và OSX và Android qua Sprite
Builder Android plugin. Sprite
Builde là môi trường thiết kế đồ họa trung gian mà các project của Cocos2d được tạo ra nhằm tạo prototype và xây dựng game. Nếu bạn muốn thiết kế một game đa nền tảng dựa trên ngôn ngữ Objective-C hoặc Swift thì Cocos2d là một framework rất đáng được cân nhắc.
Cocos2dx được viết bằng ngôn ngữ C++. Ưu điểm của ngôn ngữ này chính là nó hỗ trợ lập trình viên xây dựng game trên nhiều hệ máy chỉ bằng 1 lần code. Hiện nay Cocos2dx có thể phát triển trên đa nền tảng từ i
OS, Android, mac
OS, Windows cho đến Linux. Theo thống kê, hiện nay đã có hơn 25 nghìn game chính thức được phát triển dựa trên game engine này, bao gồm nhiều tựa game nổi tiếng như: Piano Tiles – Don’t Tap the White Tile, AFK Arena, FLow Free, Diamond Dash, Hill Climbing Racing, Idle Heroes… Tuy nhiên, Cocos2d-x không tương thích với Sprite
Builder như người tiền nhiệm của mình, bù lại nó sẽ cung cấp framework, biên kịch hoạt cảnh, sửa lỗi và xuất ra nhiều nền tảng. Cũng như các game engine khác, cả Cocos2dx và Cocos2d đều sử dụng Open
GL để render hình ảnh.
Vì sao nên chọn Cocos2dx?
Chắc hẳn nếu bạn chỉ cần tìm kiếm trên Google sẽ ra rất nhiều kết quả khác nhau cho game engine, Có dùng để thiết kế game cho các hệ máy như hệ consoles hay máy tính cá nhân (PC). Tuy nhiên Cocos2dx có những ưu điểm vượt trội dưới đây để bạn cân nhắc
Là một game engine đa nền tảng, chỉ cần viết code 1 lần là có thể áp dụng trên nhiều hệ điều hành, và nhiều loại thiết bị khác nhau.Hỗ trợ trên nhiều thiết bị ( Window từ Win7 trở lên) và MacOS, đồng thời hỗ trợ cả các IDE nổi tiếng: Eclipse, Visual từ năm 2012 trở đi, Xcode
Sử dụng ngôn lữ lập trình C++, Lua, Java
Script, đây là các ngôn ngữ phù hợp cho lập trình game, phổ biến và dễ sử dụng
Sử dụng mã nguồn mở nên sẽ miễn phí cho những chức năng cơ bản. Điều này vô cùng phù hợp cho những ai mới tập tành lập trình game trên Cocos2d-x
Cộng đồng sử dụng lớn, có nhiều code tham khảo để bạn học hỏi và copy, đặc biệt cho người mới
Cực kỳ phù hợp với game định dạng 2D, và là nền tảng vững chắc để phát triển lên game 3D.

Ai là người phù hợp với Cocos2dx?
Với nhiều game engine khác nhau, mỗi game engine sẽ có những đặc điểm nhất định phù hợp với những đối tượng khác nhau. Dưới đây là những đối tượng có thể phù hợp với Cocos2d -x:
Đam mê trong lĩnh vực lập trình ứng dụng hoặc lập trình game; hoặc đang làm lập trình viên ứng dụng/lập trình game.Đã hoặc đang học lập trình ở trường, và đang ứng dụng các ngôn ngữ lập trình là ngôn ngữ C, hoặc C++, Lua. Java cũng là một yếu tố ưu tiên vì kiểu cách lập trình của ngôn ngữ này khá giống C++.Vững kiến thức toán học, đặc biệt là toán tin. Lượng kiến thức này sẽ là nền tảng vững chắc, tạo tư duy tốt cho bạn trong khâu xử lý phần thuật toánCó kiến thức tốt về vật lý nhằm xử lý các hiện tượng vật lý trong game. Hãy tưởng tượng rằng game là thế giới thật bên ngoài được mô phỏng và đưa vào trò chơi dựa trên các nguyên tắc toán học và vật lý, và được người lập trình chủ động thay đổi cho phù hợp. Do đó bạn không thể mù mờ kiến thức vật lý, nếu không game sẽ trở nên khá phi lý.Biết về thiết kế đồ họa, càng chuyên sâu càng có lợi thế. Vì sao? Bởi vì “Code là xương, gameplay là hồn, đồ họa là diện mạo”, chắc chắn muốn thành phẩm thu hút người chơi, thì vẻ ngoài của nó phải bắt mắt và long lanh.Đang sử dụng máy tính cài các hệ điều hành như Window 7, hoặc Mac OS. Nếu có máy tính bảng để thử nghiệm bảng mock-up thì càng tốt.Lợi thế cuối cùng chính là biết tiếng Anh, Hàn, Trung để hiểu được phần giải thích code của cộng đồng lập trình viên, đa phần đến từ ba quốc gia này đấy.
Hy vọng những thông tin trên đây của chúng tôi sẽ cho các bạn cái nhìn tố hơn về game engine nền tảng Cocos2dx này. Sử dụng game engine như Cocos2dx cho cả hai định dạng game 2D và 3D đã trở nên rộng rãi và phổ biến trong vài năm qua. Chúc các bạn có thể lập trình thành công trò chơi của riêng mình như hướng dẫn chi tiết nhé!
Tham khảo: Tin tuyển dụng tiếng anh là gì
Như vậy trên đây chúng tôi đã giới thiệu đến bạn đọc Cocos2dx là gì? Phát triển game trên đa nền tảng Cocos2dx. Hy vọng bài viết này giúp ích cho bạn trong cuộc sống cũng như trong học tập thường ngày. Chúng tôi xin tạm dừng bài viết này tại đây.
Thông báo: Phê Bình Văn Học ngoài phục vụ bạn đọc ở Việt Nam chúng tôi còn có kênh tiếng anh Phebinhvanhoc
EN cho bạn đọc trên toàn thế giới, mời thính giả đón xem.
Theo như tiêu đề bài viết, đây sẽ là 1 series tập trung vào việc phát triển game dựa trên game engine đa nền tảng cocos2d-x. Đối tượng bài viết hướng tới là những lập trình viên bắt đầu tiếp cận với cocos2d-x và cả những người đã tìm hiểu và sử dụng qua nền tảng này. Vì vậy level sẽ được nâng dần qua từng bài viết. Nhưng để việc đọc hiểu được tốt thì người viết có 1 vài chú ý nhỏ như sau :
Mặc định các bạn cần biết sử dụng thành thạo C/C++, thế nên trong series này sẽ không đề cập tới việc giới thiệu về ngôn ngữ lập trình này. Ngoài ra cocos2d-x cũng có sử dụng tới JNI, đây là 1 framework cho phép chúng ta giao tiếp giữa C và java. Vì vậy sẽ có 1 bài viết riêng cho vấn đề này.Bạn cần biết sử dụng 1 trong các IDE : Xcode, Eclipse, Visual studio. Theo kinh nghiệm của mình thì dùng Xcode là ngon nhất
OK!Bây giờ chúng ta sẽ đi vào chi tiết của P1. Trong phần này người viết sẽ giới thiệu cài đặt môi trường và kiến thức cơ bản trong cocos2d-x. Let"s go.
Xem thêm: loudness Là Gì - Nghĩa Của Từ Loudness
I. Cài đặt môi trườngCocos2d-x được giới thiệu ở đây là phiên bản 3.8, vì vậy có 1 số requirement như sau :
**Build Requirements**Mac OS X 10.7+, Xcode 5.1+or Ubuntu 12.10+, CMake 2.6+or Windows 7+, VS 2013+Python 2.7.5NDK r10c+ is required to build Android games
Windows Phone/Store 8.1 VS 2013 Update 4+ or VS 2015Windows Phone/Store 10.0 VS 2015JRE or JDK 1.6+ is required for web publishing**Runtime Requirements**i
OS 6.0+ for i
Phone / i
Pad games
Android 2.3+ for Android games
Windows 8.1 or Windows 10.0 for Windows Phone/Store 8.1 games
Windows 10.0 for Windows Phone/Store 10.0 games
OS X v10.6+ for Mac games
Windows 7+ for Win games
Modern browsers and IE 9+ for web games
1. Link download
Cocos2d-x: http://www.cocos2d-x.org/download Eclipse : http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/keplersr2 python:https://www.python.org/downloads/ Android development tool: http://developer.android.com/intl/vi/tools/sdk/eclipse-adt.html Android NDK : http://developer.android.com/intl/vi/ndk/downloads/index.html2. Thiết lập môi trường
http://www.cocos2d-x.org/wiki/Cocos2d-xII. Khái niệm cơ bản trong cocos2d-x
Cocos2d-x là một game engine đa nền tảng (cross-platform). Chúng ta từng nghe tới API hoặc framwork, vậy game engine là gì?
Game engines bao gồm nhiều thành phần riêng biệt, có thể sử dụng kết hợp với nhau giup giảm thời gian phát triển game, và thường có hiệu suất hoạt động hơn so với việc phát triển game khi không sử dụng game engines. Một cách đơn giản là khi bạn muốn chế tao 1 chiếc oto, trong khi bạn chỉ có khả năng làm về dộng cơ, thì giải pháp được dưa ra ở đây là bạn có thể kết hợp với các nhà máy chế tạo khung oto, bánh xe ... để cùng làm ra 1 chiếc oto trong thời gian ngắn. Nhưng nếu bạn lại tự mày mò làm từng cái bánh xe, hay từng cái khung thì chắc là sẽ rất rất lâu để hoàn thành =)). Một game engine bao gồm 1 số thành phần : renderer, 2d/3d graphics, collision detection, physic engine, sound, controller support, animations. Game engine cũng thường hỗ trợ đa nền tảng chính vì vậy việc phát triển game trở lên dễ dàng hơn khi bạn chỉ cần code 1 lần và chạy trên nhiều môi trường khác nhau.Cocos2d-s chính là 1 game engine như vậy. Nó cung cấp rất nhiều thành phần cho phép lập trình viên có thể sử dụng 1 cách đơn giản để tạo ra 1 game chạy trên cả nền tảng mobile hay desktop mà không cần lo lắng về ký thuât phía tầng bên dưới. Cocos2d-s cung cấp một vài thành phần như : Scene, Transition, Sprite, Menu, Sprite3D, Audio và nhiều thứ khác nữa. OK! Chúng ta sẽ tìm hiểu các thành phần cơ bản của cocos2d-x.
1.Main Components
Cocos2d-x gồm 1 số đối tượng cơ bản như sau: Scene, Node, Sprite, Menu and Action. Khi nhìn vào 1 game, bạn sẽ nhìn thấy tất cả các đội tượng này trên 1 màn hình. Ví dụ như :

Bạn có thể nhìn thấy menu, 1 vài sprite và label.
2. Director
Trong cocos2d-x, sử dụng khái niệm Director. Một Director có nhiệu vụ điều khiển ghi đè hay chuyển đổi Scene. Một cách đơn giản là khi bạn muốn chuyển từ screen A sang screen B thì bạn sé có 2 lựa chọn, 1 là ghi đè (replacements), 2 là chuyển đổi (transitions). Eassy, Director sẽ giúp bạn làm việc đó 1 cách đơn giản. Director được thiết kế theo mô hình Singleton(đây là 1 khái niệm trong design pattern - các bạn chịu khó tiều hiểu nhé


3. Scene
Có thể bạn muốn trong game của mình có phần lựa chọn chính (menu), hay hiển thị kết thúc game. Vậy làm thế nào để tổ chức tất cả thứ đó thành các phần riêng biệt ? Thật đơn giản Cocos2d-x cung cấp cho bạn khái niệm Scane.

Đây là một màn hình lựa chọn chính và nó là Scene độc lập. Scene được tạo bởi nhiều phần, và chúng được sắp xếp phù hợp trong màn hình.
4. Scene Graph
một Scene Graph là 1 cấu trúc dữ liệu, có nhiệm vụ sắp xếp cấu trúc hiển thị của scene. Một Scene Graph bao gồm nhiều đối tượng Node theo cấu trúc dữ liệu kiểu tree.

Hehe, nhìn có vẻ khá là khó hiểu, và bạn nghĩ rằng tại sao lại cần phải hiểu khái niệm này ? Hầu hết khi code sử dụng cocos2d-x, phần giao diện sẽ được code gần như hoàn toàn bằng code (mặc dù cocos2d-x đã có tool editor riêng, nhưng mình k thích dùng ). Nếu như vậy thì làm thế nào để bạn biết được việc draw 1 đối tượng sẽ được coco2d-x thực hiện đúng theo ý của bạn. Tôi có thể đảm bảo rằng đôi lúc, sau khi bạn draw 1 Menu lên Scene, nó được hiển thị 1 cách hoàn hảo. Perfect! Nhưng khi bạn touch vào thì lại k xảy ra hiện tượng gì cả =)). Omg! Đơn giản Menu của bạn đang được draw dưới 1 Node khác. Vậy bạn đã biết tầm quan trọng của Scene Graph rồi đấy .Cocos2d-x sử dụng thuật toán in-order walk. in-order walk sẽ được duyệt tree từ trái sang phải, xuất phát từ root. Những node nằm ở nhánh bên phải sẽ được draw sau cùng.

Scene Graph dễ dàng được minh hoạ bằng hình ảnh dưới đây

Nó được draw theo thứ tự sau:
Một điểm cần lưu ý ở đây, Scene Graph đưa ra khái niệm Z-order. Những node ở nhánh trái là negative z-order, node ở nhánh phải positive z-order.Dựa trên khái niệm này, chúng ta có thể hiểu Scene là 1 tập hợp các đối tượng Node. Như vậy ta có thể dùng khái niệm Scenen Graph để chia nhỏ bố cục của Scene như sau:

// Adds a child with the z-order of -2, that means// it goes to the "left" side of the tree (because it is negative)scene->add
Child(title_node, -2);// When you don"t specify the z-order, it will use 0scene->add
Child(label_node);// Adds a child with the z-order of 1, that means// it goes to the "right" side of the tree (because it is positive)scene->add
Child(sprite_node, 1);Phần tiếp theo, chúng ta sẽ tìm hiểu thêm về Sprites, Actions, Squences và Spawns, Parent Child Relatioship, cũng như game mini minh hoạ.