1. 程式人生 > >VS下用C++實現的簡單3D射擊遊戲(附遊戲檔案與源工程程式碼)

VS下用C++實現的簡單3D射擊遊戲(附遊戲檔案與源工程程式碼)

記不得什麼時候開始感興趣寫遊戲程式碼了。開始的時候就只是寫一些簡單的小遊戲,打檯球,開小車,走迷宮,用一些2Dgraphics庫,完成每個小作品後都很開心。後來一想,在現在的計算機裝置條件下,2D太簡陋了,於是開始著手做一個3D賽車遊戲。說是賽車,實際上也就只有一輛小車。模型簡陋而且貼圖粗糙。但做完之後還是很開心的。畢竟,修改修改美工,多寫點運動控制程式碼,也勉強算個小遊戲。

然後,就想到開始做這個3D射擊遊戲。

這就是個時間長的過程了。因為決定提高質量,所以打算多看完教程再來寫。

附:LearnOpenGL CN
https://learnopengl-cn.github.io/

推薦這本網上的教程。當時看了一些書打了基礎,再看這個教程時就嘗試看完一篇實現一篇。這個過程雖然漫長,但因為親身實踐學到了很多有意思的內容----視差貼圖,

HDR,泛光,幀緩衝。。。

然後,就開始動手做了。框架構思好,然後一步一步來。

做的時候才發現,沒有想象的那麼容易,因為全部都是自己一個人做。比如搭地圖做骨骼,因為opengl的三種變換矛盾了很久;比如貼圖時,發現光照和深度貼圖總會產生問題;比如連結庫檔案時版本,格式不同,困擾了我好幾天。。。有的預期效果,因為實在找不出bug只好放棄。

有時候趴在圖書館的桌子上想,萬一花了很多時間做,但最後做出來還是很爛怎麼辦啊?但一擡頭看著電腦螢幕,看到自己已經做出來的東西,就突然振奮了許多,又提上了勁。

中間還夾雜了很多事情:除了學習任務,還要做助研,完成IPP,這兩件事都需要不少時間,於是只能從課餘時間中再抽點零碎時間來做這個。有趣的是:我還在做助研專案時受到了啟發

------為什麼不把這個3D射擊遊戲做成聯網的呢?聯網這部分反而做的比較快,就是連線資料庫,然後分析每幀過去後哪些上傳哪些接收。可能很多人認為難點在於聯網互動,實際上資料庫部分不難(也可能我做的不完備,會有資料衝突),難的是立體圖形處理的細節,比如人物關節,比如碰撞、射擊檢測。

數了一下,總共寫了十多個類,一共2500行,應該算是我寫過最長的一個project了。如今終於差不多可以說Mission Complete,回首間才發現自己已經收穫了很多。

連結:http://pan.baidu.com/s/1slTcLPj 密碼:f4f9