1. Trang chủ
  2. » Công Nghệ Thông Tin

Thiết kế trò chơi phi thuyền sử dụng kỹ thuật lập trình đồ họa 3d

68 453 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

LỜI CAM ĐOAN Tôi xin cam đoan đồ án tốt nghiệp “Thiết kế trò chơi phi thuyền sử dụng kỹ thuật lập trình đồ họa 3D” công trình nghiên cứu thân Những phần sử dụng tài liệu tham khảo đồ án nêu rõ phần tài liệu tham khảo Các số liệu, kết trình bày đồ án hoàn toàn trung thực, sai xin chịu hoàn toàn trách nhiệm chịu kỷ luật môn nhà trường đề Thái Nguyên, tháng năm 2012 Sinh viên Nguyễn Xuân Trường LỜI CẢM ƠN Lời đầu tiên, em xin chân thành cảm ơn môn Mạng – Truyền thông, trường Đại học Công nghệ thông tin Truyền thông, Đại học Thái Nguyên tạo điều kiện thuận lợi cho em thực đồ án tốt nghiệp Đặc biệt em xin chân thành cảm ơn ThS Lê Anh Tú tận tình hướng dẫn, bảo em suốt thời gian thực đồ án vừa qua Em xin chân thành cảm ơn tất Thầy, Cô Trường tận tình giảng dạy, trang bị cho em kiến thức cần thiết, quý báu để giúp em thực đồ án Mặc dù em có cố gắng, với trình độ hạn chế, trình thực đồ án không tránh khỏi thiếu sót Em hi vọng nhận ý kiến nhận xét, góp ý Thầy giáo, Cô giáo vấn đề triển khai đồ án Em xin chân trọng cảm ơn! Thái Nguyên, tháng năm 2012 Sinh viên Nguyễn Xuân Trường MỤC LỤC DANH MỤC HÌNH ẢNH Hình 1.1: Sơ đồ thành phần Content Pipeline Hình 1.2: Các thành phần camera 14 Hình 1.3:Ma trận projection 15 Hình 1.4: Ma trận View .16 Hình 1.5: Hệ tọa độ hình 17 Hình 1.6: Hệ tọa độ chiều bàn tay trái bàn tay phải 19 Hình 1.7: Phép chiếu phối cảnh 19 Hình 1.8: Phép chiếu trực giao 20 Hình 1.9: Mô tả phép toán Matrix.CreatePerspectiveFieldOfView 23 Hình 1.10: Mô phát va chạm khối cầu 25 Hình 1.11: Ví dụ frustum 27 Hình 1.12: Màn hình giao diện phần mềm 3ds Max 30 Hình 1.13: Cách vẽ đối tượng 3ds Max .33 Hình 1.14: Bảng lệnh Modify 3ds Max .34 Hình 1.15: Khung nhìn Viewport .35 Hình 1.16: Trình bày Layout khung nhìn 35 Hình 2.1: Mô hình phi thuyền 39 Hình 2.2: Tạo hình cầu bán kính 300 40 Hình 2.3: Làm méo hình cầu để đối tượng 40 Hình 2.4: Kéo dãn đối tượng theo trục X 41 Hình 2.5: Làm mịn, bóp méo vặn xoắn đối tượng 41 Hình 2.6: Áp vật liệu cho đối tượng 42 Hình 2.7: Mô hình thiên thạch meteor_v1 42 Hình 2.8: Mô hình thiên thạch meteor_v2 43 Hình 2.9: Mô hình thiên thạch meteor_v3 43 Hình 2.10: Mô hình tên lửa 43 Hình 2.11: Nền Stars game 44 Hình 2.12: Tạo dự án game Cpacecraft .44 Hình 2.13: Trình tự gọi biến hàm viên Game1.cs 45 Hình 3.1: Khởi tạo game level 62 Hình 3.2: Dùng phím Space để bắn đạn 63 Hình 3.3: Phi thuyền bị phá hủy 64 Hình 3.4: Người chơi giành chiến thắng .65 Hình 3.5: Người chơi bị thua .66 MỞ ĐẦU Trong trình phát triển người, cách mạng công nghệ đóng vai trò quan trọng, chúng làm thay đổi ngày, sống người, theo hướng đại Đi đôi với trình phát triển người, nhu cầu giải trí ngày đòi hỏi nâng cao Trong 3D công nghệ xây dựng chương trình giải trí Ngày công nghệ 3D phát triển nhanh chóng thay cho công nghệ cũ với ưu điểm vượt trội mà mang lại Hiện có nhiều kỹ thuật lập trình đồ họa với ưu nhược điểm khác Trong xử dụng thư viện XNA kỹ thuật lập trình đồ họa tốt với ưu điểm tốc độ làm game nhanh, quản lý tài nguyên (hình ảnh, âm thanh, ….) cách hiệu đơn giản, hỗ trợ nhiều ngôn ngữ Được định hướng dẫn ThS Lê Anh Tú, em chọn đề tài đồ án tốt nghiệp: “Thiết kế trò chơi phi thuyền sử dụng kỹ thuật lập trình đồ họa 3D” Với mục đích tìm hiểu kỹ thuật lập trình đồ họa sử dụng thư viện XNA viết demo trò chơi phi thuyền Nội dung đề tài thể qua chương: - Chương 1: Cơ sở lý thuyết - Chương 2: Xây dựng game 3D sử dụng thư viện đồ họa XNA - Chương 3: Giới thiệu game CpaceCraft Do kiến thức khả em hạn chế, nên đồ án tôt nghiệp không tránh khỏi thiếu sót Em mong nhận góp ý thầy, cô bạn để nội dung đồ án tốt nghiệp em hoàn thiện CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Thư viện đồ họa XNA 1.1.1 Giới thiệu XNA 1.1.1.1 Lịch sử phát triển XNA XNA phát triển Microsoft cách chục năm bí mật không nhiều người biết đến Vào năm 2004, Microsoft giới thiệu XNA lần hội nghị phát triển trò chơi lớn hàng năm (Game Developers Conference) XNA không framework giống DirectX, chứa nhiều công cụ chí môi trường phát triển tương thích với Visual Studio để giúp phát triển ứng dụng trò chơi cách dễ dàng XNA kế thừa DirectX Framework, Direct3D 10 Beta cho Windows Vista phát hành vào cuối năm 2005, DirectX framework đồ họa dành cho hệ điều hành Sau đó, đầu năm 2006 GDC Microsoft XNA Build March 2006 CTP phát hành XNA Build công cụ cho phép quản lí tiến trình xây dựng tác vụ phức tạp, tương tự MsBuild Ants, phức tạp hiệu Nhưng sau thời gian xảy ra, đặc biệt nhóm phát triển vừa nhỏ không thật cần công cụ quản lí xây dựng phức tạp Tại hội nghị Gamefest vào tháng tám (hội nghị phát triển trò chơi tổ chức Microsoft), Microsoft thông báo XNA Game Studio Express beta phát hành vào 30/8/2006 Bản beta chứa dụng cụ khởi đầu, “Space Wars”, XNA không bao gồm nhiều tính 3D Nhiều nhà phát triển người yêu thích thử dùng XNA viết nhiều trò chơi 2D nhỏ với giúp đỡ lớp Sprite XNA Khi đó, việc tạo mô hình 3D theo ý điều khó 1.1.1.2 Các phiên – tính XNA framework XNA Game Studio Express hướng tới người bắt đầu, người yêu thích trò chơi sinh viên Môi trường phát triển cho phép họ phát triển ứng dụng trò chơi tảng Windows Xbox 360 cách nhanh chóng Điều nghĩa nhà phát triển trò chơi chuyên nghiệp sử dụng XNA Phiên đặc biệt XNA Game Studio Professional nhằm vào nhà phát triển chuyên nghiệp phát hành vào mùa hè 2007 XNA Game Studio Professional phiên môi trường phát triển tích hợp XNA cho nhà phát triển trò chơi chuyên nghiệp XNA Game Studio Express phiên hướng đến đối tượng không chuyên nghiệp lại yêu thích lập trình trò chơi như: sinh viên, người yêu thích trò chơi, nhà phát triển trò chơi độc lập Nó phiên miễn phí Phiên cuối cung cấp ngày 11 tháng 12 năm 2006 XNA Game Studio 1.0 phiên cập nhật XNA Game Studio Express, đưa vào ngày 24 tháng năm 2007 XNA Game Studio 2.0 (dùng cho Visual Studio 2005) đưa vào ngày 13 tháng 12 năm 2007 Có thể sử dụng cho Windows Xbox với hỗ trợ điều khiển tốt XNA Game Studio 3.0 (dùng cho Visual Studio 2008 Visual C# 2008 Express Edition) Phiên đưa vào ngày 30 tháng 10 năm 2008 Tạo game chạy đa tảng Windows, Xbox 360 Zune XNA Game Studio 3.1 cập nhật sửa lỗi XNA Game Studio 3.0 đưa vào 11/6/2009 XNA Game Studio 4.0 (dùng cho Visual Studio 2010 Visual C# 2010 Express Edition) XNA Game studio 4.0 thức đời vào ngày 16/9/2010 Nó hỗ trợ thêm tảng WP7 (bao gồm gia tốc phần cứng 3D), trang bị thêm đặc tính, đối tượng xây dựng sẵn, thiết bị đồ hoạ có hướng vô hướng, hỗ trợ chạy đa tảng, hỗ trợ điều khiên cảm ứng đa diểm chạm, hỗ trợ nhận âm từ micro XNA Game Studio 4.0 Refresh cập nhật XNA Game Studio 4.0 để sửa lỗi thêm hỗ trợ cho phát triển trò chơi mà mục tiêu hệ điều hành Windows Phone 7.1 trò chơi phát triển Visual Basic 1.1.2 Tổng quan XNA framework Content Pipeline Hầu hết trò chơi sử dụng dạng mô hình, sprite, texture, hiệu ứng, hình động… Toàn tài nguyên tạo nhiều cách khác lưu trữ nhiều định dạng tập tin khác Content Pipeline thiết kế để giúp đưa tài nguyên vào trò chơi cách dễ dàng tự động Content Pipeline dùng để giải vấn đề thực tế: Những nội dung mà tạo cho trò chơi không sẵn sàng cho trò chơi Ví dụ, nội dung 3D thường lưu giữ định dạng riêng cần phải chuyển đổi liệu trước nạp vào trò chơi Nói chung, Content Pipeline nhận tập tin khác đầu vào, chuyển chúng sang dạng mà làm việc, sau biên dịch chúng thành định dạng mà dễ dàng nạp vào trò chơi trò chơi bắt đầu XNA framework Content Pipeline thiết kế để: - Cho phép họa sĩ game sử dụng công cụ tạo nội dung kỹ thuật số (DCC) - Cung cấp kỹ thuật để tách riêng độc lập nội dung số máy trò chơi cụ thể - Cung cấp nội dung đơn giản, mở rộng để xây dựng hệ thống mà cần người thiết kế đồ họa người phát triển trò chơi Sơ đồ thành phần Content Pipeline : Hình 1.1: Sơ đồ thành phần Content Pipeline Các định dạng Content Pipeline hỗ trợ: - Định dạng tập tin 3D: X (dùng DirectX), FBX ( chuyển định dạng tập tin tạo Autodesk ) - Định dạng tập tin nguyên liệu (material): FX (các tập tin hiệu ứng dùng để mô tả chi tiết mô hình 3D thêm hiệu ứng vào cảnh 3D) - Định dạng tập tin 2D: BMP, DDS, DIB, HDR, JPG, PFM, PNG, PPM TGA (các định dạng tập tin hình ảnh thông thường) - Mô tả phông chữ: SPRITEFONT (tập tin XML dùng XNA, mô tả cách tạo sơ đồ bố cục từ kích thước loại phông chữ cụ thể) - Định dạng tập tin âm thanh: XAP (tạo công cụ XACT, gắn hầu hết định dạng tập tin âm thanh) 1.1.3 Quản lý Âm Một ứng dụng trò chơi hấp dẫn thu hút người chơi đẹp mặt hình thức có kịch hay Người chơi cảm giác thật ném bom mà không nghe tiếng nổ, đua xe mà không nghe tiếng động Do đó, âm phần thiếu trò chơi Tùy thuộc vào thể loại trò chơi mà thưởng thức âm khác Các nhà lập trình trò chơi cố gắng tạo hiệu ứng âm phù hợp với nội dung trò chơi 1.1.3.1 Chương trình Cross-Platform Audio Creation (XACT) Framework XNA cung cấp công cụ hỗ trợ để tạo hiệu ứng âm cho ứng dụng trò chơi Cross-Platform Audio Creation (XACT) Để thực XNA audio phải sử dụng đối tượng chính: - XACT Audio Project File: XACT Audio Project File tập tin tạo từ XACT XACT project file có phần mở rộng xap Tập tin mở rộng xap có hiệu để triển khai Windows Xbox 360 - Audio Engine: Đối tượng AudioEngine giúp thể thao tác với đối tượng âm cho ứng dụng trò chơi Đối tượng khởi tạo việc thiết lập thuộc tính lấy từ tập tin thiết lập toàn cục tạo từ công cụ XACT Nếu tham chiếu tập tin xap Solution Explorer, tập tin thiết lập toàn cục tạo tự động chạy ứng dụng Mặc dù thấy tập tin thiết lập toàn cục thư mục chứa tập tin xap, ta nạp mã nguồn theo đường dẫn với thư mục ứng dụng: 10 using System; using System.Collections.Generic; using Microsoft.Xna.Framework; using System.Text; namespace Spacecraft { struct Bullet { public Vector3 position;//Khai báo biến vị trí viên đạn public Vector3 direction;//Khai báo biến hướng bay public float speed;//Khai báo biến tốc độ public bool isActive;//Khai báo biến điều kiện public void Update(float delta)//Hàm xác định vị trí thiên thạch qua biến //delta, gọi lại hàm Update lớp Game1 { position += direction * speed * GameConstants.BulletSpeedAdjustment * delta; //Phá hủy viên đạn bay giới hạn hình if (position.X > GameConstants.PlayfieldSizeX || position.X < -GameConstants.PlayfieldSizeX || position.Y > GameConstants.PlayfieldSizeY || position.Y < -GameConstants.PlayfieldSizeY) isActive = false;//Biến điều kiện có giá trị false (không vẽ bullet) } }} 2.3.3 Xây dựng lớp Game1 Lớp Game1 lớp game, lớp thiết lập mặc định tạo ra, biến hàm thành viên lớp gọi cách tự động chạy game Các thuộc tính, phương thức thư viện XNA sử dụng lớp: Thuộc tính, phương thức Mô tả 54 KeyboardState Vector3 Đầu vào băng bàn phím Một cấu trúc thể vị trí không gian Vector3.Up Matrix chiều, gồm tham số x, y, z Vector3(0, 1, 0) Một cấu trúc mô tả ma trận thư viện XNA, Texture2D Vector2 Microsoft.Xna.Framework.Matrix Kết cấu 2D Một cấu trúc thể vị trí không gian BasicEffect chiều, gồm tham số x, y Hiệu ứng thư viện XNA, effect.EnableDefaultLighting BoundingSphere TimeSpan Microsoft.Xna.Framework.Graphics.BasicEffect Sử dụng hiệu ứng chiếu sáng mặc định Khối cầu giới hạn bao quanh đối tượng Đối tượng TimeSpan đại diện cho khoảng TimeSpan.Zero KeyboardState SpriteBatch thời gian Khoảng thời gian = Trạng thái bàn phím Cho phép nhóm họa tiết vẽ cách sử dụng thiết lập tương tự Các thuộc tính sử dụng lớp: Thuộc tính GameState aspectRatio bulletList meteorList lucidaConsole GameTime Mô tả Trạng thái game (Start, Won, Lost) Tỉ lệ hình Tạo viên đạn có cấu trúc Bullet Tạo thiên thạch có cấu trúc Meteor Phông chữ game Một biến đặc biệt thời gian chạy game Các phương thức sử dụng lớp: Phương thức Initialize ResetMeteors SetupEffectDefaults LoadContent Mô tả Thiết lập logic Tạo thiên thạch vị trí khác có tốc độ khác Thiết lập hiệu ứng mặc định Được gọi chạy game tải toàn content game 55 LoadGameReset UnloadContent Update Tải lại content next level reset game Được gọi lần game thoát game, xóa nội dung chứa game Hàm kiểm tra điều kiện game chạy, kiểm tra kiểm tra va chạm, điều khiển đầu vào chạy nhạc Gọi lại hàm Update lớp cấu trúc UpdateInput Draw DrawModel khác Điều khiển đầu vào Hàm vẽ Hàm vẽ mô hình Các hàm logic quan trọng lớp Game1: 2.3.3.1 Phương thức ResetMeteors Phương thức ResetMeteors tạo thiên thạch vị trí tốc độ khác Ngoài thông qua biến bsoluong btocdo để thay đổi số lượng tốc độ thiên thạch mức level khác Phương thức gọi lại chuyển level reset game private void ResetMeteors() { float xStart; float yStart; for (int i = 0; i

Ngày đăng: 19/04/2017, 22:36

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w