Menu

Unity3D – Phần 2: Giới thiệu về Unity3D

Các bạn có thể xem Phần 1 của loạt bài về Unity3D Tổng quan về Game Engine tại đây

Unity3D là gì:

Unity3D là một Game Engine được xây dựng bởi đội ngũ Unity Technologies từ 2004. Version hiện tại là 5.3.x có trên cả 2 nền tảng Window và Mac. Các phiên bản đời đầu (1x-2x) chỉ hướng đến các nhà làm Game không chuyên với những khả năng đơn giản. Tuy nhiên các phiên bản về sau đã có sự phát triển mạnh mẽ và những cải tiến vượt bậc, trở thành công cụ được rất nhiều cá nhân và các công ty sử dụng (đặc biệt là thị trường Mobile)

Tại sao nên lựa chọn Unity3D:

– Hỗ trợ đa nền tảng (23 nền tảng) và vẫn đang tiếp tục tăng (wow ^^)

Unit-2-01

Các nền tảng Unity3D hỗ trợ

– Chi phí sử dụng chấp nhận được, có bản Free và Pro (1,500$/y hoặc 75$/m). Tất nhiên vấn đề đa số chúng ta quan tâm không phải là mức giá này mà là nó khá dễ dàng để cr@ck 😛

– Vấn đề ngôn ngữ: Unity hỗ trợ 3 ngôn ngữ lập trình: C#, Boo và UnityScript (èo…). Các bạn có thể dùng cả 3 ngôn ngữ trong cùng 1 project, tất nhiên là hầu như không ai làm thế và cách này cũng không được recommend. C# là ngôn ngữ rất phổ biến và khá quen thuộc đối với đa số các bạn lập trình rồi ^^

– Asset Store: Unity3D cos Asset Store của mình, ở đây bao gồm các Plugin được cộng đồng Unity phát triển và bán, có cả những bản free (mách nhỏ là nhiều plugin hay ho trên này các bạn có thể tìm thấy qua torrent)

– Community: Unity rất chú trọng vào việc xây dựng một cộng đồng người dùng đông đảo và lớn mạnh, giúp trao đổi, giải quyết các vấn đề bạn cần thắc mắc hoặc quan tâm. Nhiều các tutorials từ cơ bản đến nâng cao, documents, ebook phong phú và các buổi training được diễn ra thường xuyên.

– Hỗ trợ Game 2D: Mặc dù tên gọi đầy đủ là Unity3D nhưng Unity hỗ trợ việc xây dựng game 2D rất tốt và có rất nhiều game 2D nổi tiếng trên các nền tảng khác nhau sử dụng Game Engine này.

Top Unity game

Một số game viết bằng Unity

Một số Game viết bằng Unity:

  • Deus Ex: The Fall
  • Assassin’s Creed: Identity
  • Satellite Reign
  • Escape plan
  • Temple Run Trilogy
  • Rust
  • Battlestar Galactica Online
  • Wasteland 2
  • Hearthstone: Heroes of Warcraft
  • Kerbal Space Program

 

 

Cách thức Unity hoạt động:

Đọc đến đây chắc nhiều bạn sẽ đặt ra câu hỏi Unity có thể viết code bằng C# và hỗ trợ đa nền tảng, vậy bản chất phía sau Unity là gì, một Ứng dụng viết trên nền tảng Unity làm cách nào để đảm bảo được performance của nó? Có phải Unity biên dịch mỗi Ứng dụng của mình thành native code trên tất cả các nền tảng?

Câu trả lời là không, Unity không biên dịch thành native code trên tất cả các nền tảng nó hỗ trợ. Bí mật đằng sau Unity là Mono. Nếu bạn chưa nghe đến Mono bao giờ thì có thể tạm hiểu nó là một nền tảng open-source với mục đích chính là tạo những ứng dụng cross-platform trên nền .Net

Để đảm bảo performance cho 1 Ứng dụng, bản thân Unity Engine được viết hoàn toàn bằng C/C++ (graphics, sound, physics,…). Phần code của chúng ta viết bằng C# sẽ thông qua 1 lớp wrappers để gọi lại các hàm này (chắc nhiều bạn viết ứng dụng .NET cũng đã từng thử việc gọi vào 1 thư viện khác viết bằng C/C++)
Ngoài Mono, Unity cũng tận dụng chức năng của các thư viện phần mềm khác như engine mô phỏng vật lý PhysicX của Nvidia, OpenGL và Direct3D để kết xuất hình ảnh 3D, OpenAL cho âm thanh,…

IL2CPP:

Unit-2-03

Công nghệ TL2CPP của Unity

Việc sử dụng Mono vẫn gây ra 1 số vấn đề về performance, ngoài ra đội ngũ phát triển Unity sẽ phải hỗ trợ vất vả nếu có nâng cấp hoặc bổ sung thêm 1 nền tảng mới, Garbage Collection trên Mono cũng không thực sự hiệu quả nên trong những năm gần đây, Unity đã phát triển công nghệ IL2CPP. Công nghệ này sẽ giúp biên dịch mã nguồn từ C# sang C++, quá trình này cũng sẽ loại bỏ các phần code không cần thiết và thực hiện việc tối ưu code (nghe hay ho nhỉ :D)
IL2CPP cho phép các nhà phát triển có thể tích hợp Garbage Collection của 1 hãng thứ ba như libgc và tương lai có thể là Microsoft GC. Hiệu suất đo đạc được trên các thử nghiệm của IL2CPP là khá ấn tượng, tuy nhiên hiện tại công nghệ này vẫn đang trong giai đoạn phát triển và thử nghiệm (bạn có thể dùng thử trên Unity5 nhưng nó chưa được hỗ trợ đâu nhé :P)
Hi vọng trong một ngày không xa công nghệ này sẽ được hoàn thiện và chính thức đưa vào sử dụng!

Một điểm mà mình khá không thích với Unity3D là lúc build ứng dụng ra dung lượng khá lớn, một game Android đơn giản build ra cũng đã tầm 18Mb, sẽ khó khăn hơn cho việc SEO ứng dụng của bạn. Tất nhiên với tốc độ mạng như hiện nay thì điều đó cũng chưa phải là vấn đề gì quá lớn nếu ứng dụng bạn xây dựng đủ sức hấp dẫn và cạnh tranh. Lúc công nghệ IL2CPP hoàn thiện thì vấn đề này sẽ được khắc phục luôn chưa biết chừng, cứ hi vọng như vậy đã :)

Trong phần tiếp theo của loạt bài viết, chúng ta sẽ tìm hiểu về giao diện làm việc của Unity, các thành phần trong 1 project Unity và một số các cấu hình cơ bản cần thiết.

No comments

Leave a Reply

Video of the day

Social Counter

  • 39 posts
  • 195 comments
  • 0 followers
  • 0 fans
  • 0 subscribers
  • 0 followers

Powered by moviekillers.com