Đă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

Tran Thanh Tung
Ai có tài liệu Unity bằng tiếng Anh share mình với
  • tháng 8 24, 2012
  • ·
  • Thích
  • ·
Đặng Minh Dự
Admin
Tham khảo quyển Unity Game Development Essentials nha anh! http://www.mediafire.com/?c4dahcebtsekhj9
  • tháng 8 24, 2012
  • ·
  • Thích
  • ·
Lương Công Dân
Chào tác giả,
Chân thành cảm ơn đóng góp bài viết của bạn.
Nhưng mình có góp ý xíu: vì bài viết gồm nhiều kỳ, nên sau khi bạn viết kỳ 2, nên quay lại kỳ 1, attach thêm link của kỳ 2 để người đọc tiện theo dõi.
Thanks
  • tháng 8 24, 2012
  • ·
  • Thích
  • ·
Đặng Minh Dự
Admin
Vâng! Cám ơn ý kiến của anh! Em sẽ điều chỉnh sau khi hoàn thành kỳ 2! ^^
  • tháng 8 24, 2012
  • ·
  • Thích
  • ·
Lê Giang Anh
Cho em hỏi có ai còn mấy bộ video tutorial của Unity không? 3D Buzz với VTC chẳng hạn
  • tháng 8 24, 2012
  • ·
  • Thích
  • ·
Hoàn Tân
thank
  • tháng 10 18, 2012
  • ·
  • Thích
  • ·
hnptung
unity có làm game 2D không
  • tháng 10 30, 2012
  • ·
  • Thích
  • ·
Trần Công
có từ bản 4.3 thì phải bạn à
  • tháng 8 18, 2014
  • ·
  • Thích
  • ·
Đặng Minh Dự
Admin
Engine 3D nào cũng làm được game 2D được hết, những engine khác mình không rõ nhưng với Unity thì base của các game object đều phải quy về 3D hết.
  • tháng 10 30, 2012
  • ·
  • Thích
  • ·
Lam Nhat Tu
  • tháng 6 18, 2013
  • ·
  • Thích
  • ·
Trần Công
Hình như bài này bị vietunity cop í trước em đọc ở đó rồi
  • tháng 8 18, 2014
  • ·
  • Thích
  • ·
Đặng Minh Dự
Admin
Đúng rồi bạn, VietUnity copy có ghi nguồn vietgamedev.net đó!
  • tháng 8 19, 2014
  • ·
  • Thích
  • ·
Trần Công
Hì chắc em chưa đọc kĩ
  • tháng 8 19, 2014
  • ·
  • Thích
  • ·
promenpro
ai giúp e vs e cần học về làm game android ai giúp e thì liên hệ fb https://www.facebook.com/bongtoi.trongtoi.58 hoặc sdt 0927681793 ai dạy e làm dc game e sẻ trả phí nhé
  • tháng 9 12, 2014
  • ·
  • Thích
  • ·
Captcha Challenge