Xem mẫu

  1. TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT - HÀN KHOA KHOA HỌC MÁY TÍNH TÊN ĐỀ TÀI THIẾT KẾ VÀ LẬP TRÌNH GAME RUNNING MAN TÓM TẮT ĐỒ ÁN TỐT NGHIỆP NGÀNH LẬP TRÌNH MÁY TÍNH HSSV thực hiện: Nguyễn Tuấn Anh Mã HSSV: CCLT17A001 Cán bộ hướng dẫn: ThS. Nguyễn Văn Lợi Khóa đào tạo: Khóa k11 Đà Nẵng - 12/2020
  2. Chương 1: Mở đầu  Lý do chọn đề tài: Nhu cầu giải trí tăng cao cùng với sự phát triển của các nền tảng công nghệ khiến cho phát triển game trở thành một nghề cực kỳ có sức hút đối với giới trẻ. Loạt bài tìm hiểu ngành nghề ngày hôm nay sẽ giới thiệu cho các bạn một nghề sẽ khiến rất nhiều các bạn trẻ hứng thú: lập trình và phát triển game. Triển vọng lĩnh vực này rất cao: Từ lĩnh vực phần mềm, game dần tách ra thành một ngành riêng biệt bởi sự phát triển vượt bậc và khả năng mang lại doanh thu khủng, chiếm tỉ lệ cao nhất trong ngành công nghệ thông tin (doanh thu 91,7 tỉ USD trong năm 2015 trên toàn thế giới). Không ai khác, chính thế hệ trẻ ngày nay đã ý thức được sức ảnh hưởng, độ bao phủ của game đến cộng đồng hiện nay như thế nào. Tại Texas, Mỹ, theo thống kê của “The Texas Tribune”, lương trong ngành Mô phỏng và Lập trình Game từ 1.000 đến trên 40.000 USD/tháng. Game và nội dung thông tin số là ngành công nghiệp tiềm năng không chỉ trên thế giới mà cả tại Việt Nam. Lương lập trình viên game dao động từ 7 đến 15 triệu/tháng, đó là chưa kể nhiều công ty thưởng lương tháng 13, thưởng thành tích và doanh thu sản phẩm khá cao. Các
  3. công ty game Việt Nam liên tục tuyển người nhưng vẫn thường xuyên rơi vào tình trạng “khát nhân lực” do nhu cầu cao nhưng số lượng đáp ứng yêu cầu công việc lại thấp. Môi trường làm việc hiện đại cũng là điểm cuốn hút của ngành nghề này đối với giới trẻ. Dạo quanh các game studio của các công ty như FPT online, Gameloft VN, GlassEgg, Sáng Tạo, VNG…, các bạn trẻ có thể bị “choáng” vì bàn làm việc của mỗi người có thể gồm 2 màn hình, hai, ba chiếc di động và nhiều thiết bị hiện đại khác. Nhưng quan trọng nhất là triển vọng nghề nghiệp của lập trình viên game là rất cao.  Mục tiêu và nhiệm vụ nghiên cứu. Hiểu và biết cách làm game 2D.  Đối tượng và phạm vi nghiên cứu. Đối tượng nghiên cứu: Game Running Man Phạm vi nghiên cứu: Game 2D  Dự kiến kết quả. Hoàn thành được 01 game 2D  Ý nghĩa khoa học và thực tiễn. Nhiều tựa game Việt tự tin “sải cánh” và được đón nhận không chỉ ở Việt Nam mà trên thị trường quốc tế như: Thời loạn, Cờ Tỷ Phú, Khu vườn trên mây. ZingPlay - cổng game giải trí đa nền tảng tiên phong ở Việt Nam bước chân ra
  4. thế giới, cũng không ngừng thay đổi và phát triển để phù hợp với nhu cầu đa dạng của người dùng toàn cầu. “Game là sản phẩm công nghệ giải trí thậm chí có giá trị truyền tải văn hóa hơn cả sách và phim ảnh, đòi hỏi người làm game phải sáng tạo, đam mê hơn làm phần mềm bình thường”, ông Nguyễn Vũ Tiến, Quản lý sản phẩm của VNG Game Studio North, người đã gắn bó hơn 10 năm trong ngành khẳng định. Chương 1: Giới Thiệu Chung 1.1. Giới thiệu về unity Unity là một game engine đa nền tảng được phát triển bởi Unity Technologies. Unity nổi bật với khả năng xây dựng trò chơi chạy trên nhiều nền tảng. Các nền tảng được hỗ trợ hiện nay là Android, Android TV, Facebook Gameroom, Fire OS, Gear VR, Google Cardboard, Google Daydream, HTC Vive, iOS, Linux, macOS, Microsoft HoloLens, Nintendo 3DS family, Nintendo Switch, Oculus Rift, PlayStation 4, PlayStation Vita, PlayStation VR, Samsung Smart TV, Tizen, tvOS, WebGL, Wii U, Windows, Windows Phone, Windows Store, và Xbox One. 1.2. Giới thiệu về game running man Cách chơi: Di chuyển: dùng phím mũi tên trái phải để di chuyển hoặc phím “a” để di chuyến sang trái và phím “d” để di chuyển sang phải.
  5. Nhảy: nhấn phím “x” để nhảy. Giữ phím “x” để nhảy cao hơn. Chương 2: Thiết kế và lập trình game 2.1. Nhân vật chính Đây là đối tượng để chúng ta điều khiển vượt qua thử thách trong trò chơi này. Thêm thuộc tính Box Collider 2D cho nhân vật để có thể nhận ra sự va chạm vật lý khi tác động nhân vật với các thành phần khác trong game. Tiếp theo thêm vào thuộc tính rigidbody 2D làm cho nhân vật có trọng lượng để có thể rơi xuống khi nhảy lên trên không trung. Tạo 4 animation tương ứng với 4 trạng thái của nhân vật là đứng, chạy, nhảy và chuyển hướng. Sau đó qua cửa sổ animator để liên kết 4 trạng thái này với nhau giúp cho khi di chuyển nhân vật mượt mà hơn Thêm các thuộc tính tốc độ (float), dưới đất (bool), chuyển hướng (bool) vào các liên kết để kiểm tra xem nhân vật đang ở trạng thái nào. Code di chuyển: void DiChuyen() { float PhimNhanPhaiTrai = Input.GetAxis("Horizontal"); r2d.velocity = new Vector2(VanToc * PhimNhanPhaiTrai, r2d.velocity.y);
  6. TocDo = Mathf.Abs(VanToc * PhimNhanPhaiTrai); if (PhimNhanPhaiTrai > 0 && !QuayPhai) HuongMat(); if (PhimNhanPhaiTrai < 0 && QuayPhai) HuongMat(); } void HuongMat() { QuayPhai = !QuayPhai; Vector2 HuongQuay = transform.localScale; HuongQuay.x *= -1; transform.localScale = HuongQuay; } void NhayLen() { if (Input.GetKeyDown(KeyCode.X) && DuoiDat == true) { r2d.AddForce((Vector2.up) * Nhay); } if (r2d.velocity.y < 0) { r2d.velocity += Vector2.up * Physics2D.gravity.y * (RoiXuong - 1) * Time.deltaTime; } else if (r2d.velocity.y > 0 && !Input.GetKey(KeyCode.X)) { r2d.velocity += Vector2.up * Physics2D.gravity.y * (NhayThap - 1) * Time.deltaTime; } } Trong phần Rigidbody tích vào Z ở Freeze Rotation trong Constraints để nhân vật luôn đứng thẳng khi va chạm với các thành phần khác của trò chơi.
  7. Trong phần void Update sẽ có lệnh khi nhân vật rơi xuống vực khi đang chơi sẽ bị chết: void Update() { if (gameObject.transform.position.y < -10f) { Destroy(gameObject); } } Tạo âm thanh cho các hoạt động của nhân vật: Thêm Component Audio Source vào để có thể thêm âm thanh cho các hoạt động của nhân vật. Khởi tạo âm thanh: private AudioSource AmThanh; void Start() { AmThanh = GetComponent(); } public void TaoAmThanh(string FileAmThanh) { AmThanh.PlayOneShot(Sounds.Load("/" + FileAmThanh)); }
  8. 2.2. Các thành phần khác trong trò chơi: 2.2.1. Tường gạch Đây là phần khá quan trọng của trò chơi. Nó là nền đất để nhân vật di chuyển, là các vật để nhân vật có thể di chuyển dễ dàng hơn khi chơi, là tường giới hạn để nhân vật không đi ra ngoài map được. Tường gạch sẽ chỉ có thuộc tính Box Collider 2D để nhân vật có thể đứng được trên nó. Ở dòng Draw Mode chọn Tiled thay vì simple để có thể kéo viện gạch dài ra và cao lên để tạo thành tường mà k làm biến dạng viên gạch. Ta phải thiết lập thuộc tính Size ở Box Collider 2D đúng bằng với thuộc tính Size ở Sprite Renderer để trạng thái vật lý được áp dụng trên toàn bộ chiều dài của tường gạch. Sau khi thiết lập được 1 tường gạch ta kéo vào trong thư mục prefabs để có thể sử dụng chúng liên tục mà không cần thiết lập lại. 2.2.2. Ống khói Đây là chướng ngại vật gây cản trở cho nhân vật khi di chuyển. Ống khói được tạo thành từ 2 thành phần đó là đầu trên và thân ống khói.
  9. Cần thêm 2 thuộc tính cho ống khói là Box Collider 2D và Platform Effector 2D 2.2.3. Thiết kế và lập trình cho kẻ địch 2.2.4. Tạo giới hạn cho map Để cho nhân vật không chạy ra bên ngoài của màn chơi. Tạo thêm các tường chắn ở bên ngoài rìa của màn chơi. Lấy tường đã được định dạng sẵn để làm giới hạn cho màn chơi. 2.3. Xử lý va chạm public class VaCham : MonoBehaviour { GameObject Man; private void Awake() { Man = GameObject.FindGameObjectWithTag("Player"); } private void OnCollisionEnter2D(Collision2D collision) { if (collision.collider.tag == "Player" && (collision.contacts[0].normal.x > 0 || collision.contacts[0].normal.x
  10. private Vector2 ViTriChet; public void ManChet() { ViTriChet = transform.localPosition; StartCoroutine(HManChet()); } IEnumerator HManChet() { float TocDoNay = 2.5f; float DoNayCao = 2.5f; while(true) { transform.localPosition = new Vector2(transform.localPosition.x, transform.localPosition.y + TocDoNay * Time.deltaTime); if (transform.localPosition.y >= ViTriChet.y + DoNayCao + 1) break; yield return null; transform.localPosition = new Vector2(transform.localPosition.x, transform.localPosition.y - TocDoNay * Time.deltaTime); if(transform.localPosition.y
  11. 2.4. Camera Lập trình cho camera luôn đi theo nhân vật trong suốt quá trình chơi là việc rất quan trọng. Nó ảnh hưởng trực tiếp đến trải nghiệm của người chơi ngay từ lúc bắt đầu vào cho đến khi kết thúc. 2.5. Chuyển đổi màn chơi Sau khi lưu màn chơi hiện tại vào thư mục Scenes. Tạo thêm Scenes mới tương ứng với mỗi màn chơi. Vào Build Setting ở thẻ File để lưu các màn chơi vào. Scenes nào cần hiển thị đầu tiên thì sẽ thêm vào Build Setting đầu tiên. Chương 3: Tổng kết và kết luận 3.1. Tổng kết Covid-19 bùng nổ đã thay đổi hoàn toàn cách cả thế giới vận hành. Từ chỗ tập trung đông người trong những sự kiện offline hoành tráng, nhiều mô hình đã phải chuyển sang hình thức online dẫn tới gia tăng chi phí cho nghiên cứu & phát triển, vận hành. Giữa lúc nhiều ngành nghề gặp khủng hoảng, thậm chí một số thương hiệu khách sạn, hàng không còn phải tuyên bố phá sản, ngành công nghiệp game trên toàn thế giới nhìn chung vẫn tăng trưởng tốt. Bởi game là ngành kinh doanh đặc thù xuyên biên giới khi bất cứ thị trường nào cũng có thể là nơi vừa tiêu thụ vừa là nơi sản xuất game. Cơ hội vì thế rộng mở cho bất cứ
  12. quốc gia khởi nghiệp nào chứ không chỉ riêng những nước có ngành công nghiệp game phát triển mạnh như Mỹ, Nhật, Hàn hay Trung Quốc. Dự báo của Niko đến năm 2024, nhóm 10 nước châu Á sẽ có 826 triệu người chơi game và tạo ra doanh thu 42 tỷ USD. Khi đó, doanh thu toàn cầu của cả thị trường ước đạt 195 tỷ USD, theo Newzoo. Đây có thể xem là cơ hội vàng cho các nhà phát triển game Việt Nam. Tuy vậy, số lượng startup khởi nghiệp ở lĩnh vực này trong những năm qua chỉ đếm trên đầu ngón tay, mà phần nhiều là các studio độc lập (indie) làm game nhỏ phát hành ra nước ngoài (go global). Cơ hội để cho người Việt „tái định nghĩa‟ ngành game vì thế vẫn còn khá mơ hồ, dù người chơi trên toàn cầu vẫn luôn rất cởi mở với các sản phẩm mới. Vì thế, tập trung phát triển ngành làm game vẫn là ý tưởng tốt trong nhiều năm tới. Đây là cơ hội tốt cho chúng ta tiếp cận và phát triển ngành nghề này. 3.2. Kết luận Em xin gởi lời cảm ơn chân thành và sự tri ân sâu sắc đối với các thầy cô của trường Đại học Công Nghệ Thông Tin và Truyền Thông Việt Hàn, đặc biệt là các thầy cô khoa Khoa Học Máy Tính của trường đã tạo điều kiện cho em có nhiều thời gian cho đồ án tốt nghiệp. Và em cũng xin chân thành cám ơn thầy Nguyễn Văn Lợi đã nhiệt tình hướng dẫn hướng dẫn em hoàn thành tốt khóa thực tập.
  13. Trong quá trình làm đồ án, khó tránh khỏi sai sót, rất mong các Thầy, Cô bỏ qua. Đồng thời do trình độ lý luận cũng như kinh nghiệm thực tiễn còn hạn chế nên bài báo cáo không thể tránh khỏi những thiếu sót, em rất mong nhận được ý kiến đóng góp Thầy, Cô để em học thêm được nhiều kinh nghiệm. Em xin chân thành cảm ơn!
  14. Tài liệu tham khảo  https://mfgg.net/index.php?act=user&param=09&uid=14 300  https://themushroomkingdom.net/media/smb/wav  https://vi.wikipedia.org/wiki
nguon tai.lieu . vn