1 số ebook + example code về Game Programming

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi kakashidinho, 9/1/10.

  1. kakashidinho

    kakashidinho Thành viên cấp 5

    Tham gia ngày:
    3/10/07
    Bài viết:
    1,147
    Đâ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:

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]


    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.

    [​IMG]
    Client

    [​IMG]
    Server
     
    Chỉnh sửa cuối: 12/5/10
  2. ba_con_gau

    ba_con_gau Thành viên cấp 5

    Tham gia ngày:
    2/6/06
    Bài viết:
    2,535
    Nơi ở:
    Balamb Garden
    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.
     
  3. windepzai

    windepzai Thành viên mới

    Tham gia ngày:
    19/9/10
    Bài viết:
    1
    cám ơn bạn rất nhiều. mình đang cần tài liệu học.
     
  4. kakashidinho

    kakashidinho Thành viên cấp 5

    Tham gia ngày:
    3/10/07
    Bài viết:
    1,147
    Đâ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.

    [​IMG]
     
  5. vo_danh_tieu_tu

    vo_danh_tieu_tu Thành viên mới

    Tham gia ngày:
    12/3/11
    Bài viết:
    1
    Bạn làm việc tốt đến cùng luôn đi bạn. Bạn có thể cho mình xin luôn source code của game Towerdef14-5-10 không bạn::-*:DEmail của minh là:tvbo89@gmail.com
     
  6. leminh9898

    leminh9898 Thành viên mới

    Tham gia ngày:
    7/5/09
    Bài viết:
    34
    thanks ban nhieu giup ich cho minh rat nhieu
     
  7. loverainone

    loverainone Thành viên mới

    Tham gia ngày:
    11/10/11
    Bài viết:
    1
    Cảm ơn nhiều nhé! Mình đang nghiên cứu!
     

Chia sẻ trang này