Admin đã trở lại và lợi hại gấp đôi :D

Sun May 18, 2014 1:05 pm by admin_huyetsat

Sorry mọi người vì mình vắng mặt quá lâu, mình là HuyetSat, admin đây.

Hiện tại mình đã chuyển nền tảng phát triển game sang mobile (dùng libgdx framework) và cũng đang dev game và up lên play store, ai dùng đt android thì tải về ủng hộ ad nha:

play.google.com/store/apps/developer?id=Top+Game+Free

[img]…

[ Full reading ]

Comments: 1

Game4V và Event "Viết bài hay, nhận ngay quà tặng"

Mon Feb 20, 2012 11:18 pm by noheart91

Game4V là một trong những cộng đồng game thủ đầu tiên của Việt Nam với lịch sử hơn 5 năm hình thành và phát triển. Sau nhiều biến động, có thể nói hiện nay G4V là một cộng đồng game hoạt động hoàn toàn độc lập, không bị ảnh hưởng bởi tổ chức chuyên nghiệp nào với nền tảng máy chủ được trang bị từ …

[ Full reading ]

Comments: 0

cho minh tham gia lam game

Sat Sep 03, 2011 8:56 am by nvtu553

cho minh đăng kí 1 chổ nha;minh muốn dăng kí làm code
thanks,

Comments: 0

Mình sẽ tạm dừng hoạt động một thời gian

Fri Sep 02, 2011 7:19 am by HuyetSat

Vì lý do cá nhân nên tạm thời mình sẽ ko support xna trên các diễn đàn nữa.

Bạn nào gặp vấn đề về xna cứ mail trực tiếp cho mình.
thanh_vinh648@yahoo.com

Thân

Comments: 0

xin cho minh tham gia voi

Fri Apr 15, 2011 12:35 am by luongthanhbinh3824

Mình giỏi 3ds max có thể cho mình làm designer được không anh HuyetSat
Email: thanh_binh3824@yahoo.com
Phone: 0633703673

Comments: 1

Latest topics
» Xin TUT game bắn trứng khủng long
by anhkhoa2110 Mon Mar 16, 2015 4:29 pm

» xna getRGB texture image?
by bachdienquan Thu Feb 05, 2015 8:34 am

» Cần giúp đỡ về hiệu ứng hình ảnh khi va chạm
by phiemltv Fri Nov 28, 2014 12:20 pm

» Cho mình hỏi về boundbox
by septimus2810 Mon Jul 21, 2014 10:08 am

» Hỏi về cách di chuyển 1 điểm ở tọa độ này sang tọa độ khác cho trước.
by septimus2810 Mon Jul 21, 2014 10:02 am

» Admin đã trở lại và lợi hại gấp đôi :D
by konamij Fri Jun 27, 2014 2:50 pm

» lỗi An unhandled exception of type 'System.NullReferenceException'
by _VH_HV_ Mon Jun 16, 2014 1:59 pm

» networking cho game xna 2d
by admin_huyetsat Tue May 20, 2014 1:04 pm

» hướng dẫn traning C# chuẩn bị cho xna
by lqchinh Tue Apr 15, 2014 11:31 pm

» HelpGameBom2D
by thaimavn Mon Mar 24, 2014 10:35 am

» Hỏi về cách di chuyển 1 điểm ở tọa độ này sang tọa độ khác cho trước.
by bocapzz Mon Feb 24, 2014 10:45 pm

» Hỏi về cài đặt XNA game studio 4.0
by bocapzz Sat Dec 14, 2013 12:33 am

» Cuộc thi lập trình game thế giới 2013 với cơ hội thăm quan Phần Lan
by viope Tue Oct 29, 2013 4:51 pm

» chơi game làm bởi xna như thế nào?
by thinnhph01957 Sat Sep 14, 2013 3:23 pm

» Với 1 Game cái gì là quan trọng ?
by qhhqnavy Tue Aug 13, 2013 8:09 am

» Load fiel .fbx vào Xna bị mất màu
by qhhqnavy Wed Aug 07, 2013 7:42 pm

» Help me hàm Update và Draw với
by sieuthi Mon Dec 24, 2012 11:56 pm

» Hỏi về load hình chồng nhau trong XNA
by sieuthi Mon Dec 24, 2012 11:49 pm

» nơi ghi danh tham gia Game Development Team
by echdonghop Fri Dec 21, 2012 1:56 pm

» tài liệu cơ bản 5 chương cho xna
by Nelson Quang Thu Nov 22, 2012 12:26 pm


Những điều cơ bản khi sử dụng XNA

Go down

Những điều cơ bản khi sử dụng XNA

Bài gửi by HuyetSat on Thu Apr 01, 2010 6:41 pm

Cơ sở lập trình của XNA

HUYETSAT - XVNA.forumotion.com

XNA là một công nghệ làm game của microsoft phát triển. nó hướng đến đối tượng sử dụng là các học sinh, sinh viên và những người đam mê lập trình game... Bản XNA 3.0 yêu cầu bạn phải có visual studio 2008 trở lên (bạn có thể down bản Express 2008 SP1) tại trang web của microsoft và bộ XNA 3.0 (hoàn toàn miễn phí). Do XNA sử dụng C# nên bắt buộc bạn phải có nền tảng C# tốt. nếu chỉ làm game đơn giản thì bạn nắm vững phần lập trình hướng đối tượng của C# là ok! Sau khi cài đặt XNA, nó sẽ tích hợp trực tiếp vào visual studio C# , bạn có thể chọn new project => XNA 3.0 Window game. XNA có 1 ưu điểm là viết game đc cho Xbox, Zune game vẫn chạy trên HĐH Window mobile mấy cái này quan trọng lắm nhé, nếu bạn muốn kiếm tiền từ việc viết game thì Xbox là môi trường hấp dẫn ko thua PC. Nếu game bạn viết hay thì có thể mang lên chợ game XBox của microsoft mà bán cho những người chơi game khác.
1. Game và những điều cần lưu ý
Gốc gác của XNA là 1 class được xây dựng , chính là Microsoft.Xna.Framework.Game (gọi tắt là Game) Bạn sẽ thấy 1 file là program.cs sẽ run cái file này và nó chính là file chứa toàn bộ mã nguồn chính để chạy game, nó bao gồm mọi thành phần của game, thường thì chúng ta cần 1 thể hiện của class Game là đủ.
Trong class game chính của bạn (đc kế thừa từ Game) sẽ thấy có rất nhiều method mà Game cho phép bạn override: initilize(), Update() ...
Tuy nhiên khởi đầu cho việc lập trình là khai báo biến, bạn nên khai báo các biến như là Player, hay Enemy... nhiều Enemy thì có thể tạo 1 class chứa toàn bộ tụi nó gọi là Enemy Manager chả hạn, nếu bạn có nhiều màn trong game thì chúng ta khai báo player , Enemy trong từng màn (dùng GameCompoment - sẽ nói sau) và khai báo màn ở file game chính (như mặc định là Game1.cs đó)
Bạn có thể cấp dữ liệu về một thứ dùng chung nào đó cho các GameCômpoment bằng cách dùng service:
Code:
Services.AddService(typeof(SpriteBatch), spriteBatch);
GameCompoment sẽ có giá trị của spriteBatch mà dùng cho 2D graphic ở Draw method
Tiếp đến bạn có method Initilize() nó sẽ được gọi trước Update hay Draw method, bạn thiết lập các giá trị cơ bản như: chạy nhạc nền hay tùy chọn full màn hình thiết lập cho Enemy và player nếu có...
LoadContent là method giúp bạn load tài nguyên từ thư mục Content (theo mặc định sẽ là thư mục gốc chứa tài nguyên). Cú pháp để load khá đơn giản. thực ra bạn load ở đâu cũng đc nhưng thường là sau khi Init và khi đã bắt đầu chạy game (vào Update) thì chả ai lại load lại content cả, nó sẽ có thể gây ra những lỗi nghiêm trọng
Update là method có nhiệm vụ duyệt tất cả các thành phần của game, KT điều kiển để Update cho game (VD tốc độ của object là 1, sau 1 lần update , tọa độ của nó sẽ cộng thêm bởi 1) Khi dùng Update bạn nên cẩn thận đừng để quá nhiều object Update 1 lúc game sẽ rất lắc. bạn nên KT điều kiện mà sẽ Update cho object (VD như chỉ Update cho những Object nằm trong vùng nhìn thấy của camera khi làm game 3D) Theo mặc định thì XNA update 60 lần 1 giây bạn có thể tăng giảm con số này tùy thix cho phù hợp với game và sức chịu đựng của cái máy bạn: code dưới đây làm XNA update 100 lần 1 giây

Draw Method là cái bạn cần chú ý sau cùng, nó cũng hết sức quan trọng vì mọi thứ bạn nhìn thấy trong game đều đc đưa lên ở đây . tất nhiên điều này là ko bắt buộc bạn có thể để nó trong Update, tuy nhiên XNA đã tạo sẵn cho chúng ta rùi, ngu gì ko sài và làm chương trình đơn giản hơn? Draw cũng đc "update" như ở Update() method nhưng chỉ là khi có sự thay đổi thích hợp liên quan đến Update method nghĩa là bạn cũng KT ĐK đc ở đây nhưng chỉ là để Draw object cho thix hợp thôi, còn về game lôgic thì để ở Update() là hay nhất
Bạn có thể thắc mắc về mấy chữ Base trong môi method. Nhiệm vụ của chúng rất đơn giản thôi, đó là gọi các method tương ứng của các gamecompoment trong game (nếu có) ví dụ như Update Method (sau khi Update cho Game1.cs xong, phần Base.Update(gameTime) sẽ update cho tất cả các GameCompoment đã đăng ký (khởi tạo và added vào mảng Compoments của class Game1.cs)
2.GameCompoment và DrawableGameCompoment

Chúng là những phần tạo lên 1 game hoàn chỉnh đc viết từ XNA. Bạn sẽ thấy chúng luôn có một biến đc nhập vào, đó là game và khi đó mỗi compoment sẽ có sẵn một biến tên là Game (nó liên quan trực tiếp) đến game1.cs . VD bạn có thể thêm GameCompoment object vào game chính như sau:
Game.Compoments.Add(object);
Drawable cũng như GameCompoment, cái khác là nó có khả năng Draw mà ko cần thêm code ở game chính làm game code của chúng ta đơn giản đi rất nhiều. GameCompoment dành cho những thứ ko cần draw như camera, light, materials, input ...
Biến Game thực sự rất hữu ích, khi mà bạn cần các giá trị từ game chính (VD: Game.GraphicDevice - nếu ko có nó thì đố bạn tìm được giá trị aspectRatio mà làm ko gian chiếu phối cảnh khi viết game 3D)

Ngoài ra nó có thể nhận giá trị mà Game chính truyền cho thông qua service, theo như VD phần 1:
Code:
spriteBatch = Game.Services.GetService(typeof(SpriteBatch)) as SpriteBatch;
nếu bạn dùng Drawable, bạn sẽ dùng cái spriteBatch cho Draw method, từ đó Compoment sẽ có khả năng tự Draw ko cần đến kiểu như
object.Draw(SpriteBatch spriteBatch)

chỉ cần base.Draw(gameTime) là đủ để đưa tất cả DrawableGameCompoment là xong!

Tất cả những thứ liên quan đến service tốt nhất bạn sờ đến nó ở initilize() lúc này init của game chính đã chạy và biến truyền dữ liệu đó ko bị null, bạn sẽ ko mất thời gian debug mấy lỗi vớ vẩn như thế Very Happy

Ngoai ra, hai thuộc tính của GameCompoment là Enable và Visiable, nếu chúng là false thì trong phần Base ở các method Update và Draw trong class Game chính sẽ ko chạy (tức là nó ko hề hoạt đông và ko nhìn thấy)
Source:http://www.mediafire.com/?g2rm20znqjy
avatar
HuyetSat
Administrator

Tổng số bài gửi : 167
Điểm : 1291
Danh Tiếng : 19
Join date : 30/03/2010
Đến từ : Microsoft

Xem lý lịch thành viên http://xvna.forumvi.com

Về Đầu Trang Go down

Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết