Thứ Năm, 23 tháng 2, 2017

PHÁT TRIỂN GAME VỚI UNITY, TẠI SAO KHÔNG?

PHÁT TRIỂN GAME VỚI UNITY, TẠI SAO KHÔNG?

1. Sơ lược về engine Unity:

Unity là một commercial game engine, được xây dựng bởi đội ngũ Unity Technologies. Hiện tại đã release đến version 3.5 và đang chuẩn bị cho những bước tiến mới bằng version 4.0 sắp được phát hành.
Ảnh minh họa


Với các phiên bản đầu tiên như 1.x - 2.x, Unity còn rất đơn giản và gần như chỉ hướng đến các nhà làm game không chuyên với những khả năng đơn giản. Các phiên bản về sau, Unity được cải tiến, nâng cấp và tích hợp nhiều thành phần, công nghệ mạnh mẽ khác để đủ sức phát triển một serious game. Hiện nay, mặc dù cộng đồng sử dụng Unity đa số vẫn là các cá nhân hay các indie team, nhưng Unity vẫn phát triển mạnh với tốc độ rất nhanh, bằng chứng là càng có nhiều cá nhân, công ty sử dụng Unity, đồng thời đã có nhiều tựa game được phát triển bởi Unity được tung ra thị trường (đặc biệt là thị trường game mobile).

2. Đặc điểm khiến Unity trở nên được ưa chuộng:


- Giá thành rẻ với nhiều gói license lựa chọn.

- Unity tích hợp nhiều công cụ, công nghệ về graphic rendering (DirectX, OpenGL), physic (NVIDIA PhysX), audio (OpenAL) giúp quá trình phát triển game trở nên nhanh và đơn giản hơn khi không phải thực hiện và kết hợp nhiều thành phần riêng lẻ lại với nhau thay vào đó là sự gắn kết liền mạch giữa các thành phần một cách trực quan và logic nhờ sự hỗ trợ trực tiếp từ Unity.
Ảnh minh họa


- Các công cụ, tính năng dành cho mảng thiết kế trực quan, thân thiện thuận lợi cho Designer. Hỗ trợ lập trình bằng nhiều ngôn ngữ (C#, JavaScript, Boo) bởi một thư viện API không kém đồ sộ.
Ảnh minh họa


- Hỗ trợ Networking để phát triển MMO game.

- Hỗ trợ xuất bản nhiều platforms từ stand alone cho PC và Mac, mobile như iOS và Android, console như PS3, XBOX360, Wii đến các phiên bản chạy trực tiếp trên web nhờ Unity Web Player.

- Cộng đồng lớn mạnh sẵn sàng chia sẽ kiến thức, tài nguyên. Nhà phát triển thường xuyên tổ chức các hội nghị, hội thảo, các cuộc thi phát triển game với các phần thưởng hấp dẫn.

3. Unity 4.0:

Unity 4.0 lần đầu tiên được nhà sản xuất cam kết có thể dùng để phát triển một game hạng AAA với những tính năng mạnh mẽ không thua kém một engine nào trên thị trường:

- Graphic rendering với DirectX 11
- Công nghệ diễn hoạt nhân vật mới
- Xuất bản cho nền tảng Flash và Linux
- Cập nhật, cải tiến Workflow


4. Các thành phần trong Unity:

Nãy giờ giông dài quá rồi, tóm lại chỉ là PR cho Unity, thôi thì bây giờ chúng ta đi vào chuyên môn 18

Các nội dung này cũng có sẵn trong tài liệu, tuy nhiên có tầm quan trọng đáng kể nên tôi xin phép trình bài lại ở đây. Những khái niệm này sẽ được chúng ta sử dụng xuyên suốt quá trình thực hiện dự án trên Unity.

4.1. Assets:

Asset là những tài nguyên xây dựng nên một dự án Unity. Từ những tập tin hình ảnh, mô hình 3D đến các tập tin âm thanh. Unity gọi các tập tin mà chúng ta dùng để tạo nên trò chơi là tài sản (Asstets). Điều này lý giải tại sao tất cả các tập tin, thư mục của các dự án Unity đều được lưu trữ trong một thư mục có tên “Assets”.
Ảnh minh họa


4.2.  Scenes:

Trong Unity, chúng ta cần hiểu một cảnh (hay một phân đoạn) nghĩa là một màn chơi riêng biệt hoặc một khu vực hay thành phần có trong nội dung của trò chơi (ví dụ như Game menu). Bằng cách tạo nên nhiều Scene cho trò chơi, chúng ta có thể phân phối thời gian tải hoặc kiểm tra các thành phần khác nhau của trò chơi một cách riêng lẽ.
Ảnh minh họa


4.3. Game Object:

Khi Assets được sử dụng trong Scene, chúng trở thành Game Object – một thuật ngữ được sử dụng trong Unity (đặc biệt là trong mảng lập trình). Tất cả các Game Object đều chứa ít nhất một thành phần là Transform. Transform là thông tin về vị trí, góc xoay và tỉ lệ của đối tượng, tất cả được mô tả bởi bộ 3 số X, Y, Z trong hệ trục tọa độ. Thành phần này có thể được tùy biến lại trong quá trình lập trình nhằm thay đổi vị trí, góc quay và tỉ lệ của đổi tượng (so với đối tượng gốc) qua các đoạn mã. Từ các thành phần cơ bản này, chúng ta sẽ tạo ra Game Object, với các thành phần khác, bổ sung chức năng cần thiết để xây dựng nên bất kỳ một thành phần  nào trong kịch bản Game mà chúng ta đã thiết kế.
Ảnh minh họa


4.4. Components:

Components có nhiều hình thức khác nhau. Chúng có thể xác định hành vi, cách xuất hiện, … hay ảnh hưởng đến các khía cạnh khác nhau trong chức năng của Game Object trong trò chơi.

Bằng cách “gắn” (attach) chúng vào trong Game Object, chúng ta có thể ngay lập tức áp dụng tác động của chúng lên đối tượng. Những Components phổ biến trong quá trình phát triển trò chơi đều được Unity hỗ trợ sẵn. Ví dụ như thành phần Rigitbody chuyên xử lí các vấn đề vật lý, các yếu tố đơn giản đến từ thực tế khác như ánh sáng, Camera, … Để tạo nên các yếu tố tương tác trong trò chơi, chúng ta sẽ sử dụng Script (mã kịch bản), chúng cũng được xem như là một Components trong Unity.
Ảnh minh họa


4.5. Script:

Được Unity xem như một Component, Script là một thành phần thiết yếu trong quá trình phát triển trò chơi và đáng đề cập như một khái niệm “chìa khóa”. Unity cung cấp cho chúng ta khả năng viết Script bằng cả 3 ngôn ngữ  là JavaScript, C# và Boo (một dẫn xuất của ngôn ngữ Python).

Unity không đòi hỏi chúng ta phải học làm thế nào để lập trình trong Unity, nhưng hầu như chúng ta phải sử dụng Script tại mỗi thành phần trong kịch bản mà chúng ta phát triển. Unity đã xây dựng sẵn một tập hợp đa dạng các Class, Function, … mà chúng ta hoàn toàn  có thể ứng dụng trong quá trình lập trình trò chơi của mình.

Để viết Script, chúng ta sẽ làm việc với một trình biên tập Script độc lập của Unity, hoặc với chương trình Mono Developer được tích hợp và đồng bộ với Unity trong những phiên bản mới nhất gần đây.

Mono Developer là một IDE khá tốt để lập trình khi cung cấp đầy đủ các chức năng của một IDE hoàn chỉnh tương tự Visual Studio. Mã nguồn viết trên Mono Developer sẽ được cập nhật và lưu trữ trong dự án Unity.
Ảnh minh họa

4.6. Prefabs:

Là một thành phần khá quan trọng, cho phép chúng ta tạo dựng các gói tài nguyên mà có thể tận dụng lại ở mọi lúc mà chúng ta cần, Prefabs cho phép chúng ta lưu trữ các đối tượng với những Components và những thiết đặt hoàn chỉnh. Có thể so sánh với khái niệm MovieClip trong Adobe Flash, Prefabs chỉ đơn giản là một đối tượng chứa (Container) mà chúng ta có thể đưa bất kỳ một đối tượng hay dữ liệu mẫu nào mà chúng ta muốn tái sử dụng về sau.
Ảnh minh họa


5. Giao diện trong Unity:

Đây cũng là một thủ tục khi giới thiệu về một phần mềm nào đó – giới thiệu giao diện, tuy nhiên cũng không quá quan trọng, giao diện của Unity đủ thân thiện để bạn có thể dễ dàng làm quen, mặt khác đã có trong tài liệu ở trên, nên mời bạn tham khảo tài liệu cho nhanh!
Bạn có thấy thú vị về Game Unity không, hãy tham gia vào khóa đào tạo lập trình game Unity học viện đào tạo CNTT NIIT-ICT Hà Nội 

Tại sao các nhà phát triển game đều “tôn sùng” Unity?

Tại sao các nhà phát triển game đều “tôn sùng” Unity?


Unity cải thiện trải nghiệm game tổng thể, và đó là yếu tố cốt lõi của bất cứ game thành công nào. Những nhà phát triển sử dụng Unity thành công biết rằng người dùng của mình hứng thú với một thị trường game sáng tạo, ổn định và hấp dẫn, chứ không phải cả tấn dòng mã với bề mặt đồ họa bóng loáng ở trên cùng.


Máy console, smartphone, tablet, PC,… ngày nay mọi thứ đều là nền tảng chơi game. Đây là điều tuyệt vời dành cho các game thủ, nhưng đối với những nhà phát triển tạo ra chúng, sự tách biệt về thiết bị, hệ điều hành, và tính tương hợp là một cơn đau đầu khủng khiếp.

Tuy nhiên, mặc cho sự bất đồng do có quá quá nhiều nền tảng game khác nhau, một công cụ phát triển đang giúp hợp nhất ngành công nghiệp này: engine game Unity.
Chiếm tới 45% cổ phần thị trường, với 47% nhà phát triển game dựa vào nó, hơn 600 triệu người trên toàn thế giới chơi những game được tạo ra từ Unity trên 21 nền tảng khác nhau – từ trình duyệt trên PC, handheld đến thiết bị thực tế ảo VR. Vậy điều gì khiến Unity trở thành “con cưng” của ngành công nghiệp game này?


Nhà phát triển game tôn sùng Unity 









Unity là lựa chọn hàng đầu cho các nhà phát triển

Tùy thuộc vào độ phức tạp mà một game được tạo ra, các nhà phát triển có vô số bộ phận cần phải làm việc trong chỉ một studio. Làm thế nào họ có thể quản lý một cách hiệu quả tất cả những yếu tố nhỏ này và bộ khung được đầu tư ra sao sẽ quyết định tới thành công cuối cùng của game.
Unity đơn giản hóa độ phức tạp của các mã game, thêm vào đó giúp các nhà phát triển nâng cao khả năng và sự tiện nghi khi làm việc – bởi lẽ nó dựa trên ngôn ngữ lập trình cao cấp C#. “Theo ý kiến của tôi, lợi thế đầu tiên là ở chính ngôn ngữ C#,” nhận định của ông Andrey Rylach, nhà phát triển Senior Unity 3D cho XIMAD Inc., trực thuộc XIN Inc. “C# là một ngôn ngữ lập trình cao cấp cho phép nhà phát triển thâm nhập vào quá trình phát triển của game một cách dễ dàng. Điều này thực sự quan trọng bởi lẽ không giống như các engine game dựa trên ngôn ngữ C++, C# có nhiều yếu tố và công nghệ đã được giới thiệu sẵn, và các nhà phát triển chỉ việc tận dụng trực tiếp chúng.”
Các nhà phát triển làm mã trên môi trường tự nhiên sẽ gặp phải vấn đề ngôn ngữ lập trình cấp thấp hoặc tổng hợp ngôn ngữ khi họ chuyển cùng một game sang nền tảng khác. Điều này cũng đồng nghĩa với những chu trình phát triển mất thời gian và phức tạp hơn, cần nhiều tổ đội hơn cho quá trình chuyển giao nền tảng. Vì dụ như một nhà phát triển game mobile sẽ cần hai tổ đội riêng biệt, một cho Android và một cho iOS.

Lập trình game bằng Unity









Bằng cách tận dụng cơ sở C# và sự sát nhập xuyên nền tảng, các nhà phát triển Unity có thể tiết kiệm được rất nhiều thời gian và cắt bớt độ phức tạp trong mã của họ. Mã lập trình cao cấp điển hình sử dụng ngôn ngữ tự nhiên so với mã cấp thấp, thêm vào đó rất nhiều biểu hiện phức tạp đã được tự động hóa. Những dòng mã như “Hero.Attack()” hay “Hero.Move(place)” chắc chắn là sẽ dễ viết và giải mã hơn rất nhiều.
Cộng thêm khả năng chuyển game sang nhiều nền tảng khác nhau, thật dễ hiểu là tại sao các nhà phát triển lại “tôn sùng” Unity đến vậy. Ông Andrey giải thích rằng “cùng mã, phát triển qua engine Unity, có thể chuyển qua nhiều nền tảng (PC, Mac, Android, iOS, Web, console game) với những điều chỉnh tối thiểu. Nó giúp giảm thiểu đáng kể công sức cần thiết để phát triển game.”



Game thủ có lợi gì?



Unity đem lại những lợi thể không thể phủ nhận cho các nhà phát triển, vậy còn những người đang trực tiếp chơi game thì sao?
Rõ ràng là từ khi sở hữu công cụ làm game hiệu quả hơn, những tựa game chất lượng hơn đã ra đời. Các nhà phát triển tốn ít thời gian làm mã hơn và dành nhiều thời gian làm phong phú trải nghiệm chơi của các game thủ. Bên cạnh lợi ích tổng quan là giúp làm ra những game tốt hơn, Unity còn giúp gì cho những game thủ đang “nhấn” màn hình và “nghiền” các nút của họ?
Unity làm ra những game tốt hơn









Bộ khung đầy sức mạnh của Unity đóng góp trực tiếp vào thành công của game. Nhờ sự hỗ trợ đa nền tảng, Unity cung cấp cho các nhà phát triển bộ công cụ và tính năng 2D lẫn 3D đầy đủ, để họ có thể thiết kế những tính năng hấp dẫn hơn, thiết kế đồ họa đẹp hơn, và trải nghiệm chơi sống động hơn cho người dùng.
Unity cải thiện trải nghiệm game tổng thể, và đó là yếu tố cốt lõi của bất cứ game thành công nào. Những nhà phát triển sử dụng Unity thành công biết rằng người dùng của mình hứng thú với một thị trường game sáng tạo, ổn định và hấp dẫn, chứ không phải cả tấn dòng mã với bề mặt đồ họa bóng loáng ở trên cùng.
Đội ngũ phát triển mà ông Andrey làm việc cùng đã kết hợp tính linh hoạt của Unity với giải pháp của riêng họ, như Bộ khung giải pháp đa nền tảng (Multiplatform Solutions Framework – MSF). Đây là một công cụ giúp đơn giản hóa quá trình phát triển game hơn nữa, MSF tăng tính hiệu quả trong phát triển bằng cách sắp xếp hợp lý hóa nhiều khía cạnh của quá trình như lưu trữ tệp dữ liệu và hồ sơ người chơi trên một sever và liên kết với các mạng xã hội.Với những module có sẵn, tùy biến nội dung game dễ dàng, và các phân tích in-game, MSF hỗ trợ tính hiệu quả sẵn có của Unity như một engine game.
Điều này dẫn tới những tiện ích lớn hơn cho người chơi. Ví dụ, game thủ có cùng profile trên các thiết bị khác nhau có thể chơi game của họ xuyên nền tảng và quá trình chơi đó sẽ được lưu dưới một hồ sơ duy nhất dù sử dụng các thiết bị khác nhau.

Unity giúp phân tích game hiệu quả
Sự tập trung dữ liệu cũng giúp các nhà quản lý xử lý mảng phân tích game hiệu quả hơn. Qua một nền tảng, họ có thể theo dõi những lần thanh toán, thời gian chơi, đăng nhập và đăng xuất, và kể cả việc level nào là khó nhất đối với người chơi, từ đó tổng hợp để đưa ra nhũng quyết định chính xác.

Những thử thách trong tương lai của việc phát triển game

Unity thực sự là một cơ sở nền móng hiệu quả cho việc phát triển game.Ông Alex Bogdanovich, trưởng phòng XIM Wireless (trực thuộc XIM, Inc.), giải thích trong một buổi phỏng vấn với VentureBeat về mức độ ảnh hưởng trực tiếp của Unity tới thành công của game: “Bộ khung mạnh mẽ và hữu dụng của Unity chính là yếu tố ảnh hưởng trực tiếp tới thành công của game. Nó cho phép nhiều tính năng thú vị hơn và cả những thiết kế game cực “ngầu”, bên cạnh đó còn cho phép các nhà phát triển tập trung nhiều hơn vào trải nghiệm bề mặt với ứng dụng của người dùng. Tất cả tạo nên một sản phẩm thành công mang tính thị trường.”
Đối với Andrey và Alex, Unity đã cho phép họ phát triển, cải thiện và quản lý tất cả những game mà họ tạo ra thông qua một bảng điều khiển đa nền tảng hiệu quả, được sử dụng để giúp đỡ nhóm khách hàng của họ.
Với gần một nửa thị trường đứng sau chiến lũy của mình, Unity có vẻ như đang trên đà thống trị phát triển game trong tương lai, đặc biệt là với việc phát hành phiên bản Unity 5 gần đây. Nhưng vẫn còn tồn tại vài vấn đề cần được giải quyết.
Ảnh minh họa
Thứ nhất, Unity không có rào cản cao để thâm nhập vào – điều này về cơ bản là do mong muốn của chính họ. Bất cứ nhà phát triển nào cũng có thể thâm nhập vào môi trường phát triển tương tác mạnh mẽ này và tạo ra những game tuyệt đẹp. Nhưng không phải bất cứ game nào với đồ họa hào nhoáng, bóng bẩy cũng đáng chơi. Vội vàng làm những sản phẩm “mỳ ăn liền” bao giờ cũng có những mặt trái rõ ràng – với những game nặng về thiết kế nhưng nhẹ về chất lượng, ví dụ, chúng có thể rút cạn pin của thiết bị một cách nhanh chóng.
Unity là một công cụ dễ sử dụng cho các nhà phát triển chuyên nghiệp, nhưng nếu không thực sự đầu tư vào quá trình thiết kế, vài nhà phát triển có thể gom một mớ tính năng Unity hỗn độn vào một ứng dụng mà không quan tâm đến kiến trúc, đảm bảo chất lượng và thử nghiệm.
Tất nhiên, những thử thách này luôn tồn tại trong một ngành công nghiệp phát triển không ngừng. Song trong một mảng lớn như game, sự ngập lụt những game Unity được thiết kế sơ sài có thể làm hỏng hình ảnh của tất cả. Unity vẫn luôn là lựa chọn hàng đầu cho các đội ngủ phát triển game, song chỉ riêng engine thì không thể làm nên game được.

Unity3D – engine game đa nền tảng xuất sắc hiện nay

Tìm hiểu Unity3D – engine game đa nền tảng xuất sắc hiện nay


Engine game là gì?

Nếu chúng ta coi mỗi tựa game là một ngôi nhà thì engine game chính là hệ thống cung cấp vật liệu xây dựng, trang thiết bị và các phương thức lắp ghép cơ bản. Các kỹ sư làm game chỉ việc vẽ ra bản thiết kế, tự mình lắp ghép các vật liệu, trang trí hay sắp đặt chúng thành một ngôi nhà hoàn chỉnh.

Nền tảng Game Unity là nền tảng game phổ biến nhất hiện nay
Tuy đồ họa không thể so sánh với Cry Engine nhưng chất lượng hình ảnh Unity3D mang lại cũng quá đủ để thỏa mãn game thủ hiện nay. Hơn nữa, Unity3D còn có những ưu điểm mà không phải engine game nào cũng có.








Chức năng cốt lõi của engine game bao gồm: cung cấp công cụ dựng hình (kết xuất đồ họa) cho các hình ảnh 2D hoặc 3D, công cụ vật lý (tính toán và phát hiện va chạm), âm thanh, mã nguồn, hình ảnh động, trí tuệ nhân tạo, phân luồng, 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ó các engine mà công việc làm game trở nên ít tốn kém và đơn giản hơn. Một số engine nổi bật hiện nay có thể kể đến như Cry Engine, Unreal Engine, Source Engine, Id Tech Engine, IW Engine, Unity Engine, Dead Engine….

Tại sao Unity3D được đánh giá cao?

Unity hay Unity3D chắc chắn không phải engine đỉnh cao nhất về mặt đồ họa. Về mặt này, Cry Engine vẫn đang dẫn đầu với ưu thế đồ họa 3D cực kỳ chân thực. Có thể cảm nhận rõ ràng điều này qua chất lượng hình ảnh các tựa game gần đây sử dụng Cry Engine như Far Cry hay Crysis 3. Tuy nhiên, những engine khủng như Cry hay Unreal rất kén chọn và yêu cầu cấu hình cũng khủng không kém. Hơn nữa cái giá để được cấp phép sử dụng Cry Engine chắc chắn cũng không dễ chịu chút nào.
Three Kingdoms Online – một game xây dựng bằng engine Unity3D chơi được trên cả Web, iOS và Android



Hỗ trợ đa nền tảng: Một trong các thế mạnh của Unity3D chính là khả năng hỗ trợ gần như toàn bộ các nền tảng hiện có bao gồm: PlayStation 3, Xbox 360, Wii U, iOS, Android, Windows, Blackberry 10, OS X, Linux, trình duyệt Web và cả Flash. Nói cách khác, chỉ với một gói engine, các studio có thể làm game cho bất kỳ hệ điều hành nào và dễ dàng convert chúng sang những hệ điều hành khác nhau. Đồng thời, đây cũng là giải pháp cho các game online đa nền tảng – có thể chơi đồng thời trên nhiều hệ điều hành, phần cứng khác nhau như Web, PC, Mobile, Tablet….


Republique – một game viết cho iOS, PC và dòng máy Mac có đồ họa chân thực, sắc nét



Dễ sử dụng: Unity3D được built trong một môi trường phát triển tích hợp, cung cấp một hệ thống toàn diện cho các lập trình viên, từ soạn thảo mã nguồn, xây dựng công cụ tự động hóa đến trình sửa lỗi. Do được hướng đến đồng thời cả lập trình viên không chuyên và studio chuyên nghiệp, nên Unity3D khá dễ sử dụng. Hơn nữa, đây là một trong những engine phổ biến nhất trên thế giới, người dùng có thể dễ dàng tìm kiếm kinh nghiệm sử dụng của “tiền bối” trên các forum công nghệ.
Tính kinh tế cao: Unity Technologies hiện cung cấp bản miễn phí engine Unity3D cho người dùng cá nhân và các doanh nghiệp có doanh thu dưới 100.000 USD/năm. Với bản Pro, người dùng phải trả 1.500 USD/năm – một con số rất khiêm tốn so với những gì engine này mang lại.
Có thể thấy, tuy không phải engine “khủng” nhất, nhưng nếu xét toàn diện, Unity3D đích thực là một trong những engine game đa nền tảng tốt nhất hiện nay.