1 số ebook + example code về Game Programming

Đây là source code project tạo game bắn xe tank 3d qua mạng góc nhìn thứ nhất nhóm mình làm trong 1 đợt thực tập 1 tháng.

Cái này viết bằng VC++ 2008 ,thư viện DirectX và ....notepad để viết code Shader =))

Mình post source code và bài báo cáo lên đây cho ai quan tâm,có thể sửa code của mình tùy thik,làm cho nó tốt hơn cũng dc :D


Screenshot:

tank3dbloomf0dot8.jpg


tank3dsc7.jpg


tank3dsc8.png


tank3dsc10.jpg



1 vài lưu ý:

-Bạn nên down bộ directX SDK tháng 8 năm 2009 trở lên để có thể sử dụng thư viện directX.Cài xong vào Visual Studio add đường dẫn đến thư mục include và thư mục chứa file lib của DirectX (nó nằm trong thư mục bạn cài directX SDK)

Cách add:
+(thư mục lib)Tools -> Options->Projects and Solutions->VC++ directories->library files ->thêm vào đường dẫn đến thư mục lib (phía sau có thêm /x86 hay x64 tùy máy bạn) trong thư mục bạn cài DX SDK.
+(thư mục include)Tools -> Options->Projects and Solutions->VC++ directories->include files ->thêm vào đường dẫn đến thư mục include trong thư mục bạn cài DX SDK.





-Card đồ họa nên hỗ trợ Shader Model 2.0 trở lên,mình đã rất cố gắng viết 1 số thứ thấp xuống tận shader 1.1 nhưng vì nó quá hạn chế ,nên 1 số effect ko thể gói vào shader 1.1 dc





-Trong project này mình chia làm 5 project nhỏ :
+Project tạo thư viện tĩnh DXGraphics
+Project Tank3D (tạo file exe cho bên client)
+Project ServerDXTank3D (tạo file exe cho bên Server)
+Project NormalMapFXTextureEffects (tạo thư viện động có chứa các lớp hiện thực các hiệu ứng trong game dùng Shader (cụ thể là NormalMap ,Bloom,ShadowMap)

2 project Tank3D và ServerDXTank3D sẽ link đến thư viện tĩnh DXGraphics ,project tạo thư viện tĩnh sẽ tạo ra 2 phiên bản : Debug có tên là DXGraphicsD.lib ,Release có tên là DXGraphics.lib .Tùy vào phiên bản Release hay Debug của 2 project trên nó sẽ link vào file lib tương ứng. Vì vậy để 2 project trên link dc thì các bạn nên add đường dẫn đến thư mục Debug và Release của DXGraphics (cách add:Tools->Options->Projects and Solutions->VC++ directories->library files)

Tương tự bạn cũng cần add đường dẫn đến thư mục source code của của DXGraphics vì trong đó mình bỏ mấy file .h mà 2 project trên đều có include trong source code . (cách add giống trên nhưng thay vì library files thì chọn include files)







-Trong project này mình ko có hiện thực lớp chuyên vẽ ký tự lên màn hình mà dùng lại lớp CD3DFont trong example cũ của MS,lớp này chỉ có thể vẽ các chữ đơn giản,ko thể vẽ dc các chữ có font phức tạp (như vni times ) vì vậy chỉ có thể viết tiếng anh,các bạn muốn viết tiếng việt thì phải tự hiện thực 1 lớp.Hoặc dùng lớp ID3DXFont (tìm hướng dẫn trên mạng) ,lớp này viết dc chữ có font phức tạp nhưng nó dùng windows GDI để vẽ chứ ko phải directX nên performance ko tốt dc bằng CD3DFont (theo như trong cuốn sách "introduction to 3d game programming with directX9.0c" nói vậy)






-Mình vẫn còn đang đi học nên chưa có nhiều kinh nghiệm,cũng như thời gian làm quen DX cũng chưa lâu nên các bạn đọc source code thấy có vẻ lung tung cũng là điều dễ hiểu :D ,cái thư viện tĩnh mình đã xây dựng nó từ rất lâu,từ những ngày đầu làm quen DX ,nên có 1 số lớp có thể nói là code khá lung tung :)) .Đặc biệt là phần particles. Và vì cái thư viện đó ngày càng phình to nên mình rất lười sửa lại.

Mặt khác,trong code mình ko có comment rõ ràng,vì vậy mong các bạn thông cảm,có thể post bài lên đây hỏi trực tiếp mình chỗ này chỗ nọ mình sẽ giải thik.Đọc bài báo cáo để hình dung tốt hơn.








-Trong project này mình có hiện thực 1 kiểu clipping (loại bỏ các đa giác mà mình ko nhìn thấy ,ko vẽ để tiết kiệm tài nguyên) kiểu "cơ bắp" =)),các bạn có thể giúp mình hiện thực các giải thuật clipping khác hiệu quả hơn.








-Cuối cùng :cách chơi :bật file exe của Server lên,chờ các client kết nối,các máy khác muốn chơi phải bật file exe của client lên,gõ ip của server ,tên mình rồi nhấn connect ,khi số người đang connect từ 1 trở lên thì server có thể nhấn nút start=>tất cả vào màn chơi.1 Client và 1 server có thể cùng trên 1 máy.

tank3dclient.jpg

Client

tank3dserver.jpg

Server
 
Chỉnh sửa cuối:
Anh em giúp tớ nên down Microsoft Visual Studio nào thông dụng với tớ đang bí 1 cách là cô bắt tớ phải viết 1 chương trình My Paint, với 1 chương trình tự chon như bắn súng, lái máy bay, đánh chữ, v.v... bất cứ trò chơi nào đơn giản và phải viết bằng Microsoft Visual Studio. Xin anh em cho tớ vài cách viết tiêu biểu giúp tớ hiểu thông, qua đó tớ sẽ mở mang 1 tí về cái này và sau này tự dựa vào đó mà làm.
 
Đây là source code game dự thi của mình trong vòng 1 cuộc thi Extreme Programming Challenge 2010 của Gameloft,bạn nào quan tâm có thể xem qua thử.
Bài này mình dc 109.75 / 100 điểm

Trong code có comment khá đầy đủ ở mọi chỗ.Có thể đọc qua readme.txt và techdoc.pdf để xem rõ về technical design của bài dự thi.
Có thể mở solution bằng visual C++ 2008 express hoặc cao hơn.

Game này mình dùng openGL để render vì đề thi yêu cầu.


pathMan.jpg
 
Back
Top