實習的日子,最大的成果就是做了兩個小游戲。一個是山寨版的雷電,一個是網絡版瘋狂的石頭。
兩個都是3人團隊趕出來的作業,雷電用了1周,石頭用了2周半。這一個多月很好的體會了敏捷開發,重構,團隊合作。
由于是趕出來的東西,還有很多小Bug, 但怎么說也是個完整的程序了。
山寨雷電用的是破解出來的Starcraft 2的3D模型,用opengGL做了一個極簡單的"引擎",僅做模型渲染用。敵人的出現次序通過配置文件指定,由于時間關系這里的配置方法太簡陋,關卡的配置文件應該可以做得更好。自己添加了一些美術資源,比如爆炸碎片是隊友用3DMax畫的面片。爆炸用photoshop編輯過的。
戰機發出的激光束實現了一個簡單的骨骼動畫,激光束是一條虛擬的"繩子"(即骨骼),圖元在繩子的左右兩邊進行渲染。最初的設計用粒子效果,但是當戰機左右移動時候,激光粒子就會散開,改用骨骼動畫之后不會有這個情況,因為"繩子"一直跟隨戰機。
山寨瘋狂的石頭用純python打造,有server和client端,server管理游戲大廳。client端用了pygame做底層庫(實質是SDL庫),CPU占用率有點高。
支持8個房間,一個游戲場景最多4個人網絡對戰,通過推不同效果的箱子攻擊對方。用冰凍,爆炸等效果。通過做這個小游戲很好地理解了動作游戲的網絡同步問題,期間還研究了一下盛大泡泡堂的通信方式。在有網絡延時的環境下,如何處理玩家響應,邏輯同步,防止外掛三個方面平衡是個挑戰。在本設計中,位置由客戶端往服務端同步,而對于傷害,攻擊,推箱等邏輯則需由服務器同一仲裁,客戶端需等待服務器仲裁結果再作出反應。
