1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án công nghệ .net

33 685 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 7,76 MB

Nội dung

XNA ĐẠI HỌC QUỐC GIA TPHCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM o0o XNA Công nghệ .Net GVHD : Phạm Thi Vương Sinh viên : Văn Đỗ Phước Đạt - 07520074 Đỗ Minh Huy – 07520152 2 | T r a n g Nguyễn Hoàng Minh - 07520229 NHẬN XÉT CỦA GIÁO VIÊN 3 | T r a n g 4 | T r a n g Contents 5 | T r a n g Giới thiệu Microsoft DirectX là tập hợp các APIs (application programming interfaces) để quản lý tác vụ liên quan tới multimedia đặc biệt là trong lãnh vực game. DirectX 1.0 là phiên bản đầu tiên được xuất hiện lần đầu vào năm 1995, phiên bản gần đây nhất được phát hành là DirectX 11.Ngày nay thì DirectX được sử dụng rộng rãi trong việc phát triển game trên hệ điều hành Microsoft Windows và trên các hệ mấy XBOX. OpenGL được Silicon Graphics phát triển và xuất hiện rộng rãi vào năm 1992, OpenGL đã từng được sử dụng trong hệ điều hành Window 95. Tuy nhiên ngày nay thì OpenGL được coi là đối thủ cạnh tranh lớn nhất với DirectX trong mảng xử lý đồ họa. Khác với DirectX, OpenGL là tập hợp các cross- platform API để quản lý mảng đồ họa máy tính 2D và 3D. Do đó OpenGL có thể chạy trên nhìu nền tảng khác nhau như các thiết bị cầm tay, Play Station, UNIX … Trước đây khi chưa có các API đồ họa hỗ trợ thì việc lập trình game là rất khó khăn. Người lập trình viên rất khó khăn khi tiếp xúc với nhiều loại phần cứng thể hiện đồ họa khác nhau. Do đó khi DirectX hay OpenGL ra đời nó tạo ra những giao diện thống nhất giúp người lập trình viên ko còn phải quan tâm quá nhiều vào các loại phần cứng khác nhau mà chỉ tập trung vào lập trình nâng cao chất lượng của game.Tuy nhiên do được phát triển từ khá lâu (tuổi thọ hơn 15 năm) nên việc lập trình trên các thư viện DirectX và OpenGL tương đối khô khăn hơn các công nghệ hiện nay,nhất là khi làm việc với các hàm APIs đồ họa và lại thường được sử dụng chủ yếu với ngôn ngữ C/C++ đã có từ rất lâu, đây cũng là lý do mà hầu hết những lập trình viên, sinh viên cảm thấy áy náy và ngại tiếp xúc với việc lập trình game. Khi DirectX 9 được phát hành thì có một vài sự thay đổi, ngoài phiên bản chính thống, Microsoft còn giới thiệu tới các lập trình viên khái niệm Managed DirectX. Khái niệm mới này đi kèm với một loạt các ngôn ngữ mới như C#, VB và các thuật ngữ CLR, garbage collector … Managed DirectX là một ngôn ngữ dễ hiểu và trong sáng hơn so với DirectX nguyên thủy. Nó tránh được các APIs phức tạp và các vấn đề rắc rối của C++ do đó rất được sự ủng hộ từ cộng đồng. Vấn đề lớn nhất đối với Managed DirectX (và thậm chí ngày nay vẫn thường được nhắc tới) đó là tốc độ thực thi. Ko ai tin hoặc hoài nghi rằng tốc độ của Managed DirectXcó thể chạy nhanh.Do đó việc Managed DirectX bị đi vào quên lãng và ko phát triển tiếp là điều tất yếu (chấm dứt vào khoảng năm 2005) Tuy nhiên sau đó một thời gian thì Microsoft giới thiệu XNA Game Studio. Đây là thư viện mang được đặc tính dễ sử dụng của Managed DirectX và mạnh mẽ trên kiến trúc của DirectX. Nó hỗ trợ thêm rất nhiều nền tảng khác nhau như Xbox 360, Zune HD và mới nhất là Window Phone 7. Không giống như Managed Microsoft, XNA Game Studio được hỗ trợ và phát triển rất mạnh song song với DirectX. Chưa thể đánh giá rõ ràng được tương lai của XNA Game Studio như thế nào trong tương lai,tuy nhiên với sự phát triển mạnh mẽ như hiện nay đặc biệt là phiên bản 4.0 mới nhất hỗ trợ phát triển game trên Window Phone 7 là một sự bổ sung tuyệt vời mang lại nhiều phương pháp làm game tốt nhất trên các hệ máy di động trong lúc mà cuộc chiến giữa các điện thoại, máy tính bảng đang sôi động nhất, XNA hứa hẹn sẽ trở thành một trong những thư viện lập trình game tốt nhất trong tương lai. 6 | T r a n g Lịch sử XNA được phát triển bởi Microsoft trong một vài năm trước tuy nhiên mãi tới GDC (Game Developer Conference) năm 2004 thì XNA mới được công bố lần đầu tiên. XNA ban đầu được coi là từ viết tắt của Xbox New Architecture, nhưng sau khi XBOX360 ra đời thì XNA được hiểu như một tên riêng. XNA Game Studio là một môi trường lập trình cho phép ta sử dụng Visual Studio để tạo ra game trên Window Phone, Xbox 360 và trên môi trường hệ điều hành Window. Nó hoàn toàn miễn phí và có thể download về PC thoải mái. XNA Game Studio bao gồm XNA Framework là một tập thư viện phát triển game dựa trên nền tảng Microsoft .NET Framework 2.0. Cho tới hiện nay thì đã bao gồm 5 phiên bản XNA Game Studio xuất hiện. • XNA Game Studio Express : đây là phiên bản đầu tiên được giới thiệu và chính thức có thể download vào ngày 30 tháng 8 năm 2006. Vào ngày 24 tháng 4 năm 2007 thì Microsoft có phát hành 1 bản update gọi là XNA Game Studio Express 1.0 Refresh cho phiên bản này. • XNA Game Studio 2.0 : phát hành vào ngày 13 tháng 12 năm 2007, có thể sử dụng với tất cả các phiên bản Visual Studio 2005 • XNA Game Studio 3.0 : phát hành vào ngày 30 tháng 10 năm 2008, XNA Game Studio 3.0 cho phép phát triển game trên nền tảng Zune. Phiên bản này hỗ trợ đầy đủ C# 3.0, LINQ và có thể dùng Visual Studio 2008 để lập trình. • XNA Game Studio 3.1 : phát hành vào 11 tháng 7 nằm 2009 giúp người lập trình có thể phát triển một vài chức năng mới trên Xbox 360. • XNA Game Studio 4.0 : được giới thiệu lần đầu vào ngày 9 tháng 3 nằm 2010 ở GDC và phát hành vào 16 tháng 9 nằm 2010. Phiên bản này hỗ trợ phát triển trên hệ điều hành Windows Phone 7. Đi kèm thêm một loạt chức năng mới và có thể kết hợp sử dụng Visual Studio 2010 để phát triển game. Thành phần XNA cho phép chúng ta làm rất nhiều thứ, nó được xây dựng để cho lập trình viên có thể quản lý và thao tác dễ dàng tới tất cả các thành phần có thể tồn tại trong 1 ứng dụng game. Có thể điểm qua các namespace được gói bên trong XNA Game Studio 4.0 như • Microsoft.Xna.Framework : Framework tổng quát chứa các objects, các phép tính toán và các đặc điểm chung của một chương trinh game • Microsoft.Xna.Framework.Graphics : Hỗ trợ tất cả các đặc điểm liên quan tới đồ họa 2D và 3D • Microsoft.Xna.Framework.Audio : Hỗ trợ phần âm thanh • Microsoft.Xna.Framework.Input : Hỗ trợ quản lý các thiết bị nhập (như gamepad, keyboard và mouse) • Microsoft.Xna.Framework.GameServices : Hỗ trợ các truy cập tới XBOX LIVE • Microsoft.Xna.Framework.Media : Các phương thức đa phương tiên cho hình ảnh, âm thanh … • Microsoft.Xna.Framework.Content : Thư viện vùng lưu trữ các tài nguyên trong game • Microsoft.Xna.Framework.Net : Hỗ trợ các thiết lập network • Microsoft.Xna.Framework.Storage : Các lưu trữ với thiết lập định dạng cao cấp 7 | T r a n g Phần mềm yêu cầu XNA Game Studio 4.0: Có thể download trên trang chủ của Microsoft (www.microsoft.com/downloads) Microsoft Visual Studio 2010 : Đây là môi trường để lập trình game, XNA Game Studio 4.0 có thể sử dụng trong hầu hết các phiên bản Microsoft Visual Studio 2010 như • Microsoft Visual Studio 2010 Express for Window Phone • Microsoft Visual C# 2010 Express Edition • Microsoft Visual Studio 2010 Standard Edition • Microsoft Visual Studio 2010 Professional Edition Microsoft .NET Framework 4.0 : XNA Game Studio 4.0 đòi hỏi phải có Microsoft .NET Framework 4.0 Ngoài ra cần có 1 card màn hình hỗ trợ tối thiểu DirectX 9. Cài đặt XNA Game Studio Quá trình cài đặt XNA rất đơn giản, sau khi chọn file cài đặt, ta đọc kỹ các điều khoản sử dụng trong màn hình ENU Setup. Sau đó bấm Accept nếu muốn tiếp tục cài đặt, tiếp theo chọn Install và chờ đợi cho đến khi ứng dụng được cài đặt thành công 8 | T r a n g 9 | T r a n g Ứng dụng Game với XNA Khởi động Visual Studio, trong Visual Studio chọn File->New->Project. Sau khi cửa sổ New Project hiện lên, bên thanh “Installed Templates” trái chọn Visual C#->XNA Game Studio 4.0. Bên phía phải cửa sổ ta có thể tùy chọn nhiều tùy chọn khác nhau tùy theo mục đích, ở đây ta chọn Windows Game (4.0) và đặt tên cho nó ở phần Name (ví dụ ở đây ta đặt là Collision), địa chỉ chứa project ở phần Location. Sau khi chương trình hoàn tất khởi tạo, ở thanh Tool ta chọn Debug->Start Debugging để chạy chương trình, kết quả là ta có ứng dụng game hiện ra màn hình. Như vậy như ta thấy thì khác với khi làm việc với DirectX hay OpenGL đòi hỏi ta phải tự thiết lập cấu hình để chạy ứng dụng Game thì XNA đã thiết lập sẵn hết, các vấn đề khác như độ phân giải hay thiết lập ứng dụng chạy ở dạng fullscreen ta có thể dễ dàng thay đổi bằng đối tượng GraphicDeviceManager. Trong chương trình vừa được khởi tạo, ta thấy phía bên cửa sổ Solution 10 | T r a n g [...]... e.Projection = projection; e.EnableDefaultLighting(); } } mesh.Draw(); Hiện nay thì trong lập trình game3D có một khái niệm đồ họa rất phổ biến là shader Shader giúp cho ta có thể kiểm soát mặt render effect ánh sáng màu sắc cũng như hình dáng vật thể Phải nói là game đẹp hay hoành tráng tới đâu là đều phụ thuộc vào việc lập trình shader XNA cũng hỗ trợ việc lập trình shader cao cấp y như DirectX, điều... CreatePerspectiveFieldOfView như đã trình bày ở trên Lighting : ánh sáng trong game Chúng ta sẽ coi làm việc với ứng dụng 3D như thế nào trong Demo6 Công việc của Demo6 vẫn đơn giản là load một model 3D lên màn hình ứng dụng của chúng ta Demo mô hình vật thể 3D Đầu tiên như bao ứng dụng khác, chúng ta sẽ load file chứa model của chúng ta Công việc này được thực hiện y như việc ta load hình ảnh hoặc âm... game để người chơi theo dõi và tình chỉnh thích hợp Game Input Người chơi chủ yếu thao tác với mouse, bằng việc click chọn các công cụ được cung cấp và thao tác lên oaktree Dựa vào trạng thái của tán lá mà ta chọn lựa loại item thích hợp Có nhiều loại trạng thái khác nhau của tán lá được thể hiện qua các màu sắc khác nhau giúp cho người chơi dễ nhận biết được tình trạng thực tế để giải quyết vấn đề Chi... việc chỉ render 1 tấm ảnh 2D Mún thể hiện hình ảnh 3D trên màn hình thì chúng ta phải qua một loạt các giai đoạn tính toán mang tính chất toán học, các quá trình này được gọi là render pipeline, ta có thể liệt kê các giai đoạn đó như sau Rất phức tạp nhất là các vấn đề liên quan tới toán học, tuy nhiên XNA đã hỗ trợ rất tốt cho ta tất cả các giai đoạn này, khi code những ứng dụng 3D đơn giản trên nền... lên tại đây, công việc này sẽ được thực hiện ở hàm LoadContent Hàm Initialize sẽ được gọi một lần duy nhất khi bắt đầu vào chương trình LoadContent : Được gọi ngay sau hàm Initialize, hàm này được thực thi bất cứ khi nào các nội dung graphics, sounds, models, … cần được load lên bộ nhớ GameLoop : Hầu hết các tiến trình trong game đều được xứ lý ở game loop Tại đây, game sẽ tính toán các công việc input,... việc xử lý đồ họa lên màn hình Các chức năng cơ bản như clear màn hình, thiết lập màu sắc, các hiệu ứng phức tạp trong game … UnloadContent : Trong hàm này, nếu các objects cần được hủy hoặc gỡ khỏi bộ nhớ trước khi thoát ra khỏi game hoặc để chuẩn bị cho việc load một level mới, hàm UnLoadContent sẽ xử lý việc này 11 | T r a n g 12 | T r a n g Game2D với XNA Game là một trong những ngành công nghệ phát... nhạc sẽ được chơi Đoạn code thực thi sẽ như sau if (Keyboard.GetState().IsKeyDown(Keys.P)) sound.Play(); Chạy và kiểm tra ứng dụng bằng cách ấn phím P, ta sẽ thấy đoạn nhạc được nổi lên 24 | T r a n g Công nghệ Net GVHD : Phạm Thi Vương Sinh viên : Văn Đỗ Phước Đạt - 07520074 Đỗ Minh Huy – 07520152 Nguyễn Hoàng Minh - 07520229 25 | T r a n g Giới thiệu OakFairy là ứng dụng game viết trên nền tảng XNA... dùng đối tượng Content đã khởi tạo sẵn trong ứng dụng XNA để Load 1 Texture2D tên là oaktree lên đối tượng texture của chúng ta Sau khi đã load hình ảnh lên, công việc tiếp theo của 14 | T r a n g chúng ta là render nó, chúng ta sẽ thực hiện công việc này ở hàm Render.Ta thêm các dòng lệnh này sau hàm Clear spriteBatch.Begin(); spriteBatch.Draw(texture, Vector2.Zero, Color.White); spriteBatch.End();... render frame gần nhất Trong khi đó milisecondsPerFrame là trị thời gian tối thiểu giữa 2 Frame Điều này có nghĩa là khi timeSinceLastFrame lớn hơn milisecondPerFrame thì ta sẽ vẽ frame kế tiếp, đồng thời ta gán lại giá trị cho timeSinceLastFrame bằng 0 khi vừa render 1 frame Chú ý ở đây frame có thể hiểu đơn giản là ảnh hiển thị tại một thời điểm, trong game chúng ta còn có khái niệm FPS (frames per... tại mỗi đoạn màu đỏ ứng với giá trị milisecondsPerFrame là khoảng thời gian mà các frame sẽ thay đổi, còn ứng với mỗi đoạn màu xanh lá cây ta sẽ render 1 frame mới ứng với ảnh mới, đồng thời tại đó thì timeSinceLastFrame sẽ gán lại là 0 Như vậy ta thấy nếu milisecondsPerFramecàng nhỏ thì tốc độ thay đổi frame sẽ càng nhanh, điều này làm cho ta có cảm giác vật thể di chuyển nhanh hơn Ta có thể thay đổi . XNA ĐẠI HỌC QUỐC GIA TPHCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM o0o XNA Công nghệ .Net GVHD : Phạm Thi Vương Sinh viên : Văn Đỗ Phước Đạt - 07520074 Đỗ. trình trên các thư viện DirectX và OpenGL tương đối khô khăn hơn các công nghệ hiện nay,nhất là khi làm việc với các hàm APIs đồ họa và lại thường được sử dụng chủ yếu với ngôn ngữ C/C++ đã có. một ngôn ngữ dễ hiểu và trong sáng hơn so với DirectX nguyên thủy. Nó tránh được các APIs phức tạp và các vấn đề rắc rối của C++ do đó rất được sự ủng hộ từ cộng đồng. Vấn đề lớn nhất đối với

Ngày đăng: 27/06/2014, 14:20

TỪ KHÓA LIÊN QUAN

w