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

Hướng dẫn lập trình game với XNA , XNA ebook green ray games

34 2,2K 4

Đ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 34
Dung lượng 1,35 MB

Nội dung

Hướng dẫn lập trình game với XNA

1 2 Mục lục Phần I - Tổng quan 3 - Lời nói đầu 4 - Ngành công nghiệp game hiện nay và hướng phát triển 4 Phần II – Nhập môn XNA 5 - Các phần cơ bản 6 - Đưa một dòng chữ vào game 9 - Đưa một tấm hình vào game 14 - Input 17 - Đưa một đoạn âm thanh vào game 19 Phần III – Bắt đầu làm một game đơn giản 20 - Tính toán dự án 21 + Tạo hình cho các đối tượng trong game 21 + Xây dựng các class 21  Class Phi Thuyền 21  Class Đạn 22  Class Background 28  Class Enemy 29  Va Chạm 30 Phần IV – Review 34 3 Phần I Tổng Quan Phần này sẽ tập trung khái quát về ebook này 4 Lời nói đầu Ebook này do Green Ray Games phát hành hoàn toàn miễn phí. Chúng tôi hi vọng các bạn có niềm đam mê có thể tiếp cận nhanh hơn với ngành công nghiệp phát triển game. Có rất nhiều ngôn ngữ và nền tảng để bạn có thể lập trình một game, đa phần ngày nay khi làm game client chạy trên PC các nhà sản xuất đều viết trên C++ với sự hỗ trợ tuyệt vời của directX, nhưng hôm nay chúng tôi sẽ giới thiệu với các bạn một nền tảng có thể nói là mới ở Việt Nam thậm chí trên thế giới nhưng thực sự thì không có gì là mới. Microsoft XNA đã có một quá trình phát triển qua nhiều năm, thời điểm hiện tại chúng tôi viết ebook này là XNA 4.0 chạy trên C# 2010. Để có thể làm được game theo hướng dẫn của ebook này yêu cầu các bạn phải có bộ Visual Studio 2008 hoặc ít nhất là phải có C# 2008. Sau đó các bạn phải cài Microsoft XNA Game Studio 3.1. Một điều cần nói thêm là tuy chỉ làm một game đơn giản và dành cho người mới, nhưng chúng tôi sẽ không hướng dẫn chi tiết về C#. Nếu bạn chưa lập trình trên C# bao giờ hoặc thậm chí còn chưa biết lập trình trên các ngôn ngữ khác thì nên bắt đầu tìm đọc một cuốn ebook cơ bản về C# để có thể tiếp cận nhanh chóng ebook này. Vì sao chúng tôi không hướng dẫn trên XNA 4.0 – C# 2010 mà lại lùi một phiên bản. Vì XNA 4.0 cần phải có windows XP PS3 trở lên nên có thể khó cho một số bạn cài các bản OS cũ. XNA 3.1 hoặc các phiên bản cũ hơn có thể dễ dàng cover lên 4.0 mà hiếm khi phát sinh lỗi. Tuy nói XNA là dễ nhưng thực sự ban đầu không phải dễ dàng gì. Bạn hãy cố gắng kiên trì và đam mê lập trình thì sẽ thành công thôi. Ngành công nghiệp game hiện nay và hướng phát triển Có thể nói ngành công nghiệp game hiện nay phát triển hết sức đa dạng. Nếu trên PC bạn có thể thấy chia ra làm hai trường phái là game cài đặt và game chạy trên web. Tất nhiên theo ebook này thì chúng ta chắc chắn sẽ cho ra một game cài đặt nhưng tôi sẽ nói rõ hơn một chút về mảng game PC. Nếu bạn đang có dự tính làm game on web thì bạn nên biết rằng ngày nay game trên web thường được viết bằng flash, hiếm hơn chút là Java và sau này có thể là HTML5. Nếu bạn dự tính làm game cài đặt thì có 2 sự lựa chọn cho bạn là C++ - DirectX và mới hơn và giờ chúng ta đang học là C# - XNA. Tất nhiên Flash, Java và nhiều ngôn ngữ/nền khác cũng có thể viết game cài đặt như bình thường. Bạn cần phải biết thêm là theo dự đoán của các chuyên gia thì kỷ nguyên của PC sắp chấm dứt, tất nhiên dự đoán vẫn là dự đoán, qua thời gian mới có thể chứng minh được. 5 Phần II Nhập Môn XNA 6 Các thành phần cơ bản - Sau khi cài tải bản XNA 3.1 về cài đặt, nó sẽ tự tìm đến C# và add vào. So với DirectX add vào C++ thì công đoạn này rất thoải mái. Sau khi cài đặt xong vào các loại dự án của C# bạn sẽ thấy như hình trên - XNA có thể viết game để chạy trên cả Xbox 360 và Zune nhưng giáo trình này sẽ chỉ đi hướng dẫn phần Windows game thôi. - Sau khi lựa chọn templates Windows game (3.1) bạn đặt tên rồi chỉ nơi lưu dự án sau đó OK. - Sau khi OK dự án sẽ được tạo ra. - Trong dự án mới đó bạn sẽ thấy bên khung Solution Explorer được cấp sẵn Properties, Reference, Content, một cái hình icon cho game, một gamethumbnail và 2 class là game1.cs và program.cs. + Properties có chứa 1 class ghi thông tin của dự án hiện hành, cái này bạn bây giờ để nó ở đó và không cần quan tâm. 7 + Reference nếu đã học qua C# chắc bạn cũng biết nó là gì. Giờ bạn cũng chẳng cần quan tâm tới nó nữa ( nếu lập trình trên DirectX bạn sẽ khá vất vả với phần này). + Game icon là icon của game bạn, phần này bây giờ bạn không nên đầu tư vào. + GameThumbnail thuộc về bên Xbox cũng không cần quan tâm nó. + Class Program.cs bạn cứ giữ nguyên và cũng không quan tâm nó. + Những cái trên đều không cần quan tâm, giờ đến cái cuối cùng và duy nhất bạn phải quan tâm thật “đặc biệt” chính là class game1.cs. - Game1.cs nếu nhìn lần đầu bạn sẽ thấy đây là một class kỳ lạ, nó được using khá nhiều Microsoft.Xna.Framework.* và được tạo sẵn nhiều phương thức (method) trong đó. Đây chính là class chính của game chúng ta sẽ tạo sau này, với từng từng thành phần của các namespace Microsoft.Xna.Framework.* các bạn nhìn tên cũng đoán ra nó sẽ đảm nhận nhiệm vụ gì sau này, giờ bạn cứ giữ nguyên nó không cần quan tâm lắm. Sau đây tôi sẽ nói rõ từng phương thức đang có trong game1.cs. + Đầu tiên là hàm tạo của game1.cs bên trong nó đang có đồ họa và content (content là những đối tượng như ảnh, nhạc, model, bạn sẽ đem vào game sau này). public Game1() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; } + Kế đến là phương thức làm nhiệm vụ khởi tạo. protected override void Initialize() { base.Initialize(); } + Tiếp theo là phương thức làm nhiệm vụ load content cho game của bạn protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); } + Tiếp là phương thức unload content, cái này tạm thời bạn chưa cần quan tâm tới. + Tiếp đến là một phương thức khá quan trọng chi phối game của bạn sau này, phương thức Update protected override void Update(GameTime gameTime) { base.Update(gameTime); } Phương thức này như tên gọi (cập nhật), bất cứ thứ gì bạn bỏ vào phương thức này cũng sẽ được cập nhật liên tục nếu bạn không ghi điều kiện kèm theo. Bạn có thể xóa đi dòng sau vì giờ mình không cần nó: if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) 8 this.Exit(); + Cuối cùng là một phương thức cũng quan trọng, phương thức Draw. protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); base.Draw(gameTime); } Như tên gọi của mình, nó sẽ vẽ các đối tượng bạn load từ content lên game khi được yêu cầu. - Nếu bạn không rành về tiếng anh và không thích rối thì có thể xóa sạch các dòng chú thích trong game1.cs đi để đỡ choáng. Sau khi xóa sạch chú thích có vẻ thông thoáng hơn nhiều như hình trên. - Bây giờ bạn hãy thử chạy xem sao. Vì đây chỉ toàn bộ là các phần có sẵn của XNA nên sau khi chạy thành công thì bạn sẽ thấy xuất hiện một cái cửa sổ màu xanh. Tóm lại là từ đầu đến giờ XNA chỉ xây dựng sẵn cho chúng ta những phương thức thiết yếu sau này, sau đó chúng ta sẽ tự thêm vào những thành phần của riêng mình để thành một game hoàn thiện. 9 Đưa một dòng chữ vào game Đây là cái đơn giản nhất mà chúng ta sẽ thêm vào. - Đầu tiên bạn cần phải tạo một font chữ trong content. - Click chuột phải vào Content >> Add >> New Item - Xuất hiện hộp thoại mới (Add new item – Content ) Bạn chọn Sprite Font, sau đó đặt tên font (vd: FontChu.spritefont ), sau đó bấm Add. - Khi add xong sẽ xuất hiện một file font trong content và hiện ra một tab điều chỉnh các thông số của font chữ vừa tạo. - Trong tab mới mở ra bạn có thể thấy nhiều thẻ vd như thẻ font name <FontName>Kootenay</FontName>. Nếu bạn thích font hay size gì thì sau này đổi, giờ tạm thời hãy giữ nguyên và đóng tab FontChu.spritefont lại. - Tất nhiên là chỉ mới bỏ 1 font chữ vào content chưa thể viết nó ra cái cửa sổ xanh được. Giờ ta bắt đầu khai báo nó. Vào class game1.cs bạn khai báo một Sprite font sau đó đặt tên. VD: SpriteFont fontSeViet; Sau đó bạn vào phương thức LoadContent chỉ đường dẫn đến font chữ bên Content như sau: fontSeViet = Content.Load<SpriteFont>("FontChu"); Trong đó fontSeViet là cái bạn vừa khai báo ở trên, bạn cho content load đến tên của font chữ bạn tạo lúc trước. Cuối cùng là ở phương thức Draw bạn thêm vào: spriteBatch.Begin(); spriteBatch.DrawString(fontSeViet, "Game dau tien cua toi ne!", Vector2.Zero, Color.White); spriteBatch.End(); Trong đó mỗi khi muốn viết/vẽ gì bằng spriteBatch ta phải mở đầu (.begin) và kết thúc nó (.end), tại sao lại phải rắc rối như vậy?- Sau này nhiều game lớn dính tới matrix bạn phải thêm đối số vào đó. Bây giờ thì chỉ vậy thôi. 10 Ở giữa mở đầu và kết thúc SpriteBatch ta thêm vào spriteBatch.DrawString cái đầu tiên chúng ta truyền vào là tên đã khai báo ở trên (fontSeViet), string "Game dau tien cua toi ne!" chính là dòng chữ chúng ta sẽ viết ra màn hình, bạn có thể thay đổi nếu muốn, Vector2.Zero là tọa độ của dòng chữ mình sẽ viết ra màn hình, Color.White là màu của dòng chữ đó (ở đây là màu trắng). Nếu xuất lên màn hình dòng chữ bạn vừa viết thì phần này bạn đã thành công. Nếu chạy bị lỗi có lẽ bạn làm không đúng chỗ, bạn có thể giải nén code 1 ra để xem. - Giờ chúng ta sẽ tìm hiểu kỹ về phần vector trong XNA. Các bạn nếu đã học qua chương trình toán phổ thông hoặc đại học chắc đã quen với trục tọa độ. Nếu như trục tọa độ bạn đã biết thì O có tọa độ như hình bên dưới [...]... xét là lập trình trên XNA khá là dễ hơn so với các ngôn ng , nền tảng lập trình khác - Về phần hướng dẫn từ đầu đến giờ tôi chỉ cùng các bạn đi sơ qua những mảng cơ bản của XNA thôi, vì ở đây ta hướng theo đúng tên của giáo trình - XNA vẫn theo những khuôn mẫu nhất định của C #, nên hi vọng bạn đã học qua C# trước khi tiếp cận giáo trình này Có thể thấy các phần như class, phương thức, list, random, nạp... khảo game Black Hole Adventure của Green Ray Games để tìm hướng nâng cấp hơn về tựa game của mình - Trong quá trình làm game của mình nếu bạn gặp vấn đề gì không giải quyết được hãy viết lên tường nhà của chúng tôi trên zing me (http://me.zing.vn/b/greenraygames) nếu có điều kiện chúng tôi sẽ giúp đỡ các bạn Lần tới có lẽ Green Ray Games sẽ giới thiệu với các bạn một ebook nâng cao hơn 34 ... lên Ngoài lề: Khi lập trình game bạn phải đối mặt với một sự thật rất rõ ràng, trong trường hợp trên, nếu là gamer, người chơi sẽ biết là phi thuyền của họ đang bay lên Còn đối với bạn là một người lập trình game, bạn biết là phi thuyền của bạn đang giảm Y  - Giờ ta bắt đầu vào phần Input, hãy tạm thời xóa dòng lệnh giảm Y vừa rồi đi để chúng ta bước vào điều thiết yếu nhất trong mỗi game: “Sự tương... spriteBatch.DrawString(fontDiem, "Diem: " + Diem, Vector2.Zero, Color.White); spriteBatch.DrawString(fontDiem, "Mang: " + Mang, new Vector2(70 0,0 ), Color.YellowGreen);  Hãy chạy game xem khi bắn hạ kẻ địch bạn có nhận được 10 điểm và khi bị kẻ địch đâm trúng bạn có bị trừ 1 mạng không nhé Nếu có vấn đề gì hãy mở GameBanPhiThuyen code11.rar tham khảo  Những phần cơ bản để tạo một game đều cơ bản đã hướng dẫn cho bạn, giờ... là một game hoàn thiện, khi bắn kẻ địch chết không có hiệu ứng n , hoặc chẳng có thắng thua hay điểm dừng Những phần vừa nêu đều thuộc phần thuật toán, mỗi người có một cách xây dựng riêng, ví dụ như phần hiệu ứng n , có rất nhiều cách để làm như thuật toán, animation, … - Nếu bạn có dự định nâng cấp game cho nhiều loại địch hơn thì khuyên bạn nên áp dụng kế thừa của C# Các bạn có thể tham khảo game. .. game nghe xong nhạc nền đã phát lên chưa và khi bạn bắn địch có nghe gì không Nếu gặp vấn đề hãy mở GameBanPhiThuyen code12.rar ra tham khảo Tiếng nổ nghe có vẻ giống tiếng súng bắn, do âm thanh ở đây chỉ mang tính chất tham khảo, nếu bạn làm game thực sự thì nên chú trọng phần âm thanh nhé 33 Review - Nhìn lại cả quá trình học tập của chúng ta tùy theo năng lực của bạn có thể thấy lập trình trên XNA. .. KeDich.cs các bạn khai báo một hình chữ nhật đặt tên là bao khung: public Rectangle baoKhung; ++ Hình chữ nhật trong XNA có 4 đối số ( X, Y, Dài, Rộng) trong đó X,Y là tọa độ zero của hình chữ nhật, 2 cái còn lại là chiều dài và chiều rộng của hình chữ nhật bạn sẽ tạo Minh họa một rectangle ( 3,2 , 5,3 ) trên màn hình: - Khung màu tên to chính ta cửa số màn hình Khung màu đen nhỏ hơn là hình chữ nhật của chúng... làm game theo từng công đoạn Dự án mới tôi đặt tên là GameBanPhiThuyen, bạn có thể vào thư mục Du An Game 1 và giải nén GameBanPhiThuyen code1.rar để chúng ta cùng bắt đầu code Bạn hãy add vào Content hết tất cả những gì có trong thư mục Nguon (âm thanh, hình) Class Phi Thuyền, di chuyển cho Phi Thuyền + Bạn hãy tạo 1 class mới đặt tên PhiThuyen.cs Bên trên là ảnh của class PhiThuyen ta mới tạo, nó... using using using using Microsoft .Xna. Framework.Input; Microsoft .Xna. Framework.Content; Microsoft .Xna. Framework; Microsoft .Xna. Framework.Graphics; 21 + Trong 4 namespace trên cái đầu ta cần cho việc di chuyển của phi thuyền, kế đó là cần cho LoadContent, Update và cuối cùng là Draw + Như phần trên ta đã biết các phương thức thiết yếu cho game của bạn đã xuất hiện trong game1 .cs hết rồi Class PhiThuyen.cs... Draw(SpriteBatch sp) { sp.Draw(hinhNen 1, toaDo 1, Color.White); sp.Draw(hinhNen 2, toaDo 2, Color.White); } }  Rất đơn giản, chỉ là nhân lên làm 2 cho nó nối tiếp nhau, nếu tọa độ nó lớn hơn hoặc bằng 600 nó sẽ nhảy lên -600 và tiếp tục trôi xuống  Lưu ý: Nhớ qua class game1 .cs để khai báo và xây dựng class hình nền Phần Draw bạn phải lưu ý là đối tượng nào draw sau sẽ nổi lên trước, trường hợp của phi thuyền . lục Phần I - Tổng quan 3 - Lời nói đầu 4 - Ngành công nghiệp game hiện nay và hướng phát triển 4 Phần II – Nhập môn XNA 5 - Các phần cơ bản 6 - Đưa một. 34 3 Phần I Tổng Quan Phần này sẽ tập trung khái quát về ebook này 4 Lời nói đầu Ebook này do Green Ray Games phát hành hoàn toàn miễn phí. Chúng tôi hi vọng

Ngày đăng: 11/03/2014, 19:08

HÌNH ẢNH LIÊN QUAN

Sau khi cài đặt xong vào các loại dự án của C# bạn sẽ thấy như hình trên - Hướng dẫn lập trình game với XNA , XNA ebook   green ray games
au khi cài đặt xong vào các loại dự án của C# bạn sẽ thấy như hình trên (Trang 6)
Sau khi xóa sạch chú thích có vẻ thơng thống hơn nhiều như hình trên. - Hướng dẫn lập trình game với XNA , XNA ebook   green ray games
au khi xóa sạch chú thích có vẻ thơng thống hơn nhiều như hình trên (Trang 8)
Nếu xuất lên màn hình dịng chữ bạn vừa viết thì phần này bạn đã thành công. Nếu chạy bị lỗi có lẽ bạn làm - Hướng dẫn lập trình game với XNA , XNA ebook   green ray games
u xuất lên màn hình dịng chữ bạn vừa viết thì phần này bạn đã thành công. Nếu chạy bị lỗi có lẽ bạn làm (Trang 10)
- Trở lại với phần viết chữ lên màn hình lúc nãy. Giờ bạn hãy khai báo thêm một vector2 làm tọa độ của dòng chữ. - Hướng dẫn lập trình game với XNA , XNA ebook   green ray games
r ở lại với phần viết chữ lên màn hình lúc nãy. Giờ bạn hãy khai báo thêm một vector2 làm tọa độ của dòng chữ (Trang 11)
một phần rất thú vị, đưa một hình lên màn hình. - Hướng dẫn lập trình game với XNA , XNA ebook   green ray games
m ột phần rất thú vị, đưa một hình lên màn hình (Trang 13)
Vẽ một hình lên màn hình - Hướng dẫn lập trình game với XNA , XNA ebook   green ray games
m ột hình lên màn hình (Trang 14)
- Chỉ vậy thôi là bạn đã có thể vẽ một hình ra màn hình rồi đấy. Hãy chạy dự án xem thành công chưa - Hướng dẫn lập trình game với XNA , XNA ebook   green ray games
h ỉ vậy thôi là bạn đã có thể vẽ một hình ra màn hình rồi đấy. Hãy chạy dự án xem thành công chưa (Trang 15)
- Tọa độ (400,300) chính là điểm màu xanh lá cây trên màn hình, nhưng đó lại cũng chính là tọa độ (0,0) của phi thuyền - Hướng dẫn lập trình game với XNA , XNA ebook   green ray games
a độ (400,300) chính là điểm màu xanh lá cây trên màn hình, nhưng đó lại cũng chính là tọa độ (0,0) của phi thuyền (Trang 16)
- Hãy chạy dự án xem loạt đạn của bạn đã được Delay như hình bên dưới chưa, nếu có phát sinh vấn đề gì hãy mở GameBanPhiThuyen code5.rarra tham khảo. - Hướng dẫn lập trình game với XNA , XNA ebook   green ray games
y chạy dự án xem loạt đạn của bạn đã được Delay như hình bên dưới chưa, nếu có phát sinh vấn đề gì hãy mở GameBanPhiThuyen code5.rarra tham khảo (Trang 27)
Xây dựng hình nền - Hướng dẫn lập trình game với XNA , XNA ebook   green ray games
y dựng hình nền (Trang 28)
- Tiếp đến ta sẽ làm một số chữ để ghi lại thành tích của người chơi. Bạn đã học cách viết chữ lên màn hình - Hướng dẫn lập trình game với XNA , XNA ebook   green ray games
i ếp đến ta sẽ làm một số chữ để ghi lại thành tích của người chơi. Bạn đã học cách viết chữ lên màn hình (Trang 32)

TỪ KHÓA LIÊN QUAN

w