CHƯƠNG 1: GIỚI THIỆU 1. Mục đích chọn đề tài. Đề tài này thuộc khuynh hướng tìm hiểu và thiết kế các nhân vật và animation game 2D. Bên cạnh đó cùng là niềm đam mê với lập trình game và thiết kế nhân vật 2D.
Vật nên bọn em quyết định chọn đề tài này vừa phục vụ cho việc học tập thiết kế nhân vật, vừa có thể thực hiện niềm đam mê với lập trình game. Giới thiệu đề tài. Đề tài “ thiết kế game pixel AF ” là chính là dự án đầu tay của chúng em về lập trình game. Đây là một game pixel được làm nên bởi phần mềm unity phần mềm chuyên về lập trình cách thể loại game 2D và 3D và các nhân vật, bối cảnh được vẽ bằng adobe illustrator.
Mục tiêu nghiên cứu. - Xây dựng và thiết kế được các nhân vật game 2D hoàn chỉnh - Xây dựng các animation của nhân vật cũng như các animation game - Giúp bản thân có thêm khả năng sáng tạo, tư duy thông qua thiết kế nhân vật và giao diện game cũng như trao đồi các kỹ năng làm việc nhóm 1 CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT 2. Tổng quan về Unity engine 2. Unity là gì? Unity là một “cross-flatform game engine” tạm hiểu là công cụ phát triển game đa nền tảng được phát triển bởi Unity Technologies.
Game engine này được sử dụng để phát triển game trên PC, consoles, thiết bị di động (Android, IOS ) và trên websites. Hình 2 - 1 : Unity Unity3D là phần mềm làm games trực tiếp theo thời gian thực, mà không cần render, cho phép người design game có thể thiết kế InterfaceGraphic, map hay character,… từ một phần mềm thứ 2 (thường là các phần mềm thiết kế đồ họa chuyên nghiệp như 3Dsmax, Blender, Maya, XSL,Cinema4D,Cheetah3D, Modo, Autodesk FBX, LightWave…) sau đó chỉ việc import nó vào trong Unity với định dạng của tập tin là *. Quá trình phát triển của Unity: Ra mắt đầu tiên vào năm 2005 tại sự kiện Apple’s Worldwide Developer Conference bởi nhà sáng lập David Helgason, trải qua nhiều năm phát triển, Unity đã có version 5.5 hoàn thiện hơn về rất nhiều mặt. Tháng 5-2012 theo cuộc khảo sát Game Developer Megazine được công nhận là Game engine tốt nhất cho mobile.
Năm 2014 Unity thắng giải “Best Engine” tại giải UK’s annual Develop Industry Exellence. Phiên bản mới nhất hiện nay là 2018.2 với nhiều tính năng nổi trội 2. Một số thống kê về Unity: Tính đến quý 3 năm 2016 đã có 5 tỉ lượt download game và ứng dụng được phát triển bởi Unity 2,4 tỉ thiết bị di động đã từng tải ít nhất 1 ứng dụng bởi unity. Trong top 1000 game Mobile miễn phí thì số lượng game tạo ra bởi Unity chiếm tới 34% Số lượng người 2 dùng (gamer) của Unity đạt tới con số 770 triệu, trong khi đó số người thường xuyên sử dụng Twitter là 310 triệu người.
Ưu điểm của Unity: Chức năng cốt lõi đa dạng 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. 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…. Hình 2 - 2 : Đa nền tảng 3 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. 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ác khái niệm trong Unity 2. Asset Đây là kho tài nguyên cho việc xây dựng game trong một project của Unity.
Các tài nguyên này có thể là hình ảnh, âm thanh, hoặc một mô hình 3D có sẵn. Unity sẽ tham chiếu đến các tập tin chúng ta sẽ sử dụng để tạo ra các tài nguyên cho trò chơi. Đây là lý do tại sao trong bất kỳ thư mục chứa project sử dụng Unity thì tất cả các tập tin tài nguyên phải được lưu trữ trong một thư mục con tên là Assets. Scene Trong Unity, chúng ta có thể xem Scenes là các màn chơi, cấp độ chơi riêng lẻ, hoặc các vùng của nội dung trò chơi.
Ví dụ như Main menu, Options, About … Bằng cách xây dựng trò chơi với nhiều cảnh, chúng ta sẽ có thể phân phối thời gian tải và thử nghiệm các phần khác nhau của trò chơi riêng lẻ một cách nhanh chóng và chính xác. Game Object Khi một tài nguyên được sử dụng trong một scene, khi đó chúng ta có thể coi tài nguyên này là một “Game Object” mới. Mỗi GameObject phải chứa ít nhất một thành phần, đó là thành phần “Transform”. Transform chứa các phép để biến đổi góc quay, tỷ lệ hay tịnh tiến của đối tượng.
Component Component là các thành phần trong một Game Object của Unity. Bằng cách đính kèm các thành phần vào cho một đối tượng, chúng ta có thể áp dụng ngay các phần mới của game engine vào đối tượng. Thông thường các thành phần này được Unity xây dựng sẵn như ánh sáng, camera, particle, hiệu ứng vật lý… 2. Script Script là thành phần quan trọng nhất trong Unity, có thể xem scripts như là linh hồn của game.
Chúng ta có thể viết kịch bản cho game bằng C#, Java Scripts hoặc Boo (một dẫn xuất của ngôn ngữ Python). Theo nhiều người đã sử dụng Unity thì code bằng C# sẽ giúp game chạy nhanh hơn và giúp kiểm soát code tốt hơn do tất cả các biến phải được khai báo rõ ràng. Mặt khác ngôn ngữ C# rất tiện dụng để lập trình, nên trong thành phẩm Game bắn súng 3D ở chương 4, chúng em dùng ngôn ngữ C# để viết kịch bản cho game. Mỗi file script C# là một class bắt buộc kế thừa từ lớp MonoBehaviour, có tên class phải trùng với tên file script.
Một đoạn script muốn thực thi được thì nó phải được gắn vào một đối tượng. Prefab Prefab là một bản sao lưu các vật thể chúng ta đã tạo, bao gồm các kịch bản cho hành động (khởi tạo, di chuyển, hay hủy đối tượng). Ta có thể sử dụng đối tượng này nhiều lần trong trò chơi, và cũng có thể sử dụng lại cho project khác. Prefab cho phép chúng ta lưu trữ các đối tượng, toàn bộ thành phần bên trong và cấu hình hiện tại.
Material và Shader Shader là đoạn script quy định cách thức render của chất liệu trên bề mặt vật thể. Material sử dụng shader để làm chất liệu cho mô hình. Giữa materials và shaders có mối liên hệ với nhau. Shaders quy định các thuộc tính cần để shader làm việc.
Còn material cho phép gán hình ảnh vào các thuộc tính đó từ Asset. UnityAPI UnityAPI chứa rất nhiều lớp hỗ trợ lập trình game, trong đó có một số lớp quan trọng như : MonoBehaviour: tất cả các script muốn gắn vào một đối tượng game bắt buộc phải kế thừa từ lớp này. GameObject: lớp cha của tất cả các thực thể trong scene. Component: lớp cha của tất cả các thành phần có thể gắn vào đối tượng.
Transform: giúp thay đổi vị trí, xoay, biến đổi tỉ lệ mô hình. Input: hỗ trợ lập trình với chuột, cảm ứng đa điểm, cảm biến gia tốc. Camera: giúp lập trình camera. Light: giúp tạo ánh sáng trong game.
Projector: giúp chiếu texture lên bề mặt vật thể. ParticleEmitter: hỗ trợ tạo các hiệu ứng particle đẹp mắt. Audio: hỗ trợ lập trình với âm thanh. Animation: chạy chuyển động của mô hình nhân vật.
Rigidbody: giúp tạo hiệu ứng vật lý liên quan đến trọng lực như bóng nẩy, lăn,. 6 CharacterController: giúp điều khiển nhân vật di chuyển theo độ cao địa hình. Collider: hỗ trợ lập trình va chạm giữa các vật thể. GUI: giúp lập trình giao diện người dùng trên Unity.
Không gian 3D và vector trong không gian Nhắc về hệ tọa độ không gian 3 chiều chắc hẳn chúng ta đều nhớ môn hình học không gian hoặc đã từng sử dụng một công cụ dựng hình 3D nào đó. Hệ tọa độ không gian 3 chiều bao gồm 3 trục X, Y, Z hay hiểu đơn giản là chiều ngang (X) chiều cao (Y) và chiều sâu (Z). Chúng được kí hiệu theo cú pháp: (X, Y, Z) Trong không gian 3 chiều, tồn tại 1 điểm gọi là Origin hoặc Word Zero. Đây là điểm có tọa độ (0,0,0).
Tất cả tọa độ của các đối tượng tồn tại trong không gian đều có mối liên hệ với điểm này, cách tính này là theo Word Space. Tuy nhiên, để việc tính toán đơn giản, người ta sử dụng thêm một khái niệm gọi là Local Space nhằm xác định tọa độ của đối tượng này so với đối tượng khác. Mối quan hệ này gọi là parent – child. Hình 2 - 4 : Một chiếc cầu thang trong không gian 3 chiều 7 Hình 2 - 5 : Rotation X, Y, Z 2.
Cửa sổ làm việc Hình 2 - 6 : Cửa sổ làm việc 2.Project: Mỗi Project của Unity đều chứa một thư mục Assets. Nội dung của thư mục này được hiển thị trong Project View. Đây là nơi chứa tất cả các assets để tạo Game như Scenes, Script, 3D models, Textures, Audio, Prefabs. Chúng ta không nên di chuyển assets bằng cách sử dụng Window Explorer (hay Finder trong MAC), vì nó sẽ phá vỡ cấu trúc siêu dữ liệu của assets với nhau, và luôn sử dụng Project View để cấu trúc assets 8 Để thêm assets vào project, chúng ta có thể kéo thả bất kỳ file nào vào trong project view hoặc vào công cụ Assets – Import new Assets(Click chuột phải vào Project View).