Đâ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
Screenshot:
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 NormalMapFX và TextureEffects (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
,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.
Client
Server
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
Link download:
source code: http://www.mediafire.com/?jwmi02tglyz
bản full : http://www.mediafire.com/?dudiomfinht
Screenshot:
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 NormalMapFX và TextureEffects (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
.Đặ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.
Client
Server
Chỉnh sửa cuối: