Đăng ký
Cộng đồng phát triển game Việt - kết nối đam mê !

PHÁT TRIỂN GAME VỚI UNITY, TẠI SAO KHÔNG? – Kỳ 1 : Xin chào Unity!


Lời ngỏ:


Đang trong thời gian “ngồi nhà” nhàn nhã và rãnh rỗi vì đang “thất nghiệp”, với lại đã tham gia cộng đồng một thời gian nhưng chưa có đóng góp gì, thôi thì dốc ít sức mọn ra viết một tutorial series xoay quanh Unity, trước là để chia sẽ kiến thức, kinh nghiệm với các beginer, sau để học hỏi thêm ở các bậc tiền bối, đồng thời là cơ hội luyện tập để khỏi quên. Trong quá trình tôi phát triển series, mọi người cứ chém thẳng tay nhé! 04


Giới thiệu:


“PHÁT TRIỂN GAME VỚI UNITY, TẠI SAO KHÔNG?” Sẽ được viết dưới dạng một series dài kỳ (bao nhiêu kì thì chưa biết), với mỗi kỳ sẽ gồm nhiều bài nhỏ xoay quanh chủ đề của kỳ. Mỗi kỳ sẽ có một chủ đề hay một định hướng được phát triển dựa theo những series bài viết hay các video tutorials của các developer, designer nước ngoài đã làm.


Series không giành riêng cho bất kỳ một phân ngành nào trong phát triển game, cũng như không quá đào sâu vào riêng một nội dung nào mà được viết dưới góc nhìn của một Designer biết (có kỹ năng) lập trình. Thế nên không cần phân vân, đã làm trong nghiệp game dev cứ đọc qua cho biết! 04


Series bài viết tham khảo nội dung từ các bài viết, video clips từ các nguồn sau:


http://www.Unity3DStudent.com


http://www.youtube.com


http://www.google.com 04


KỲ 1. XIN CHÀO UNITY!




Giới thiệu:


Như một thủ tục, bài viết nào về cái gì cũng có một bài giới thiệu, làm quen về cái đó, tôi xin phép được giành riêng một kỳ cho việc giới thiệu tổng quang về Unity cũng như các khái niệm xoay quanh. Chương này sẽ không chia bài vì nội dung không nhiều và chỉ mang tính chất khái niệm.


Nội dung kỳ này sẽ giới thiệu sơ lược cho chúng ta biết về Unity, một số khái niệm về các thành phần cơ bản trong một dự án Unity. Nếu là một Beginer còn quá mới mẻ, vẫn cần nhiều hơn những nội dung cơ bản về Game engine, các khái niệm trong thế giới 3D, chi tiết các tính năng của Unity thì mời bạn đọc qua những phần đầu trong tài liệu sau:


http://www.mediafire.com/?pxrgnq5mwvjm1pj


Các nội dung trên sẽ không được trình bày lại ở đây nhằm mục đích tránh lang mang, dài dòng và cái chính là đỡ phải gõ lại. 04


Phần này toàn chữ và chữ, khái niệm và khái niệm nên có lẽ hơi buồn ngủ, nhưng cứ kiên trì, những phần sau chúng ta sẽ không phải đối mặt với nó nữa, thay vào đó là đi vào các bài làm thực tế một tí 04


 



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.


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.

  • 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ộ.

  • 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.

Để được rõ hơn về khả năng của Unity, mời mọi người xem qua 4 video clip sau đây:


 




Video 1. Environtment



Video 2. Environtment



Video 3. Physic & Image Effect



Video 4. Quantum Conflict - một MMOFPS đang tiến đánh facebook



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

Tham khảo chi tiết tại: http://unity3d.com/unity/4/?unity4


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”.


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ẽ.


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ế.


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.


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.


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.


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! 04


 


Tạm kết: Chúng ta vừa làm quen Unity thông qua các nội dung khái lược, kỳ sau chúng ta sẽ bắt đầu “đi vào chuyên môn” bằng các bài ngắn dự theo bộ video clip Tutorials for Begin của trang web Unity3Dstudent.com.


*Lưu ý: Nếu bạn có ý định học Unity luôn, hay đơn giản là theo dõi hết series bài biết này, thì tốt nhất nên quan tâm, đọc đầy đủ bài viết và các nội dung cơ bản trong tài liệu bên trên để dễ theo dõi, cũng như để tránh trường hợp phải ngỡ ngàng khi gặp một khái niệm lạ nào đó! 04


 


Bài tiếp theo: PHÁT TRIỂN GAME VỚI UNITY, TẠI SAO KHÔNG? – Kỳ 2 : Coding for beginers – Bài 1: Mass / Gravity

Ngọc Tuấn
nên có những đoạn clip "nhá hàng" để thấy sức mạnh của Unity
  • tháng 8 21, 2012
  • ·
  • Thích
  • ·
Lê Giang Anh
Có cái bootcamp đi kèm Unity đó anh
  • tháng 8 21, 2012
  • ·
  • Thích
  • ·
Steve Tan
hay quá muốn tìm hiểu Unity mà nhiều khi đọc tiếng Anh không hiểu, nay có loạt bài này thì quá tốt để học hỏi.
  • tháng 8 21, 2012
  • ·
  • Thích
  • ·
Huyhung Kun
mình thấy có câu "chạy trực tiếp trên web nhờ Unity Web Player", vậy là người dùng phải cài player này mới chạy được trên web, cũng không tiện lắm nhỉ
  • tháng 8 22, 2012
  • ·
  • Thích
  • ·
Đặng Minh Dự
Admin
Ở thời điểm hiện tại, để game có thể chạy mà không cần cài thêm plug-in thì chỉ có HTML5 làm được!
Nhắc đến HTML5 có lần mình đọc được ở đâu đó rằng Unity Techonologies có hứa hẹn sẽ đưa HTML5 vào Unity, nhưng hiện tại ở Unity 4 sắp ra mắt thì vẫn chưa nghe nói rõ ràng gì về vấn đề này, nếu ~ phiên bả...
  • tháng 8 22, 2012
  • ·
  • Thích
  • ·
Lê Giang Anh
Mình đọc thì chính Unity confirm sẽ không support HTML5 vì cấu trúc hoàn toàn khác biệt. Có thể (mình đoán) Unity sẽ làm một engine khác dành riêng cho HMTL5
  • tháng 8 22, 2012
  • ·
  • Thích
  • ·
Đặng Minh Dự
Admin
Dưới đây là 1 bài nói về việc này, chưa thấy gì thể hiện sự chắc chắn nhưng cũng không có ý nào nói sẽ không support (vì hoàn toàn khác cấu trúc), anh có thể cho em tham khảo nguồn mà anh đọc không?
"One of the most popular game engines in the industry today will eventually support HTML5 applications...
  • tháng 8 22, 2012
  • ·
  • Thích
  • ·
Lê Giang Anh
Trên forum của Unity đó, search đi nha em
  • tháng 8 23, 2012
  • ·
  • Thích
  • ·
Huyhung Kun
Mình nghe Flash Player thì rất quen và chắc là máy của ai cũng có cài nhưng Unity Player thì nghe lạ quá, liệu người dùng có dễ dàng tải về cài một player lạ lẫm không nhỉ
  • tháng 8 22, 2012
  • ·
  • Thích
  • ·
Đặng Minh Dự
Admin
Nếu người ta thật sự muốn chơi trò chơi hơn là chơi qua cho biết thì người ta sẽ tìm hiểu và sẽ cài khi biết nó chẳng là gì phiền hà! ^^ Tất nhiên, không trừ ngoại lệ...
  • tháng 8 23, 2012
  • ·
  • Thích
  • ·
Captcha Challenge