官术网_书友最值得收藏!

1.4.1 游戲主循環

除非用戶中斷游戲,否則游戲程序需要一直運行。所以游戲程序中必然存在一個循環,循環中的代碼反復運行。這個循環稱為游戲循環(game loop)。每運行一次循環中的代碼,稱為游戲中的一幀(frame)。基于人類眼球的生理特性,游戲一般采用30或者60的幀率來運行,設置游戲幀率為30,就意味著每秒運行30次循環,換句話說,單次循環消耗的時間要控制在33毫秒左右,不能過多也不能過少。游戲中能否達到這個幀率依賴于很多因素,如果硬件性能很強大,代碼中的計算很簡單,一個循環中的代碼可能只需要幾毫秒就運行完畢。

游戲循環中應該包括主要的游戲邏輯代碼,例如處理玩家輸入、更新游戲數據、生成游戲輸出這3個階段的代碼。以經典的射擊游戲《坦克大戰》為例,玩家輸入可能是鍵盤的按鍵,即通過鍵盤控制方向和發射炮彈,當用戶按下發射炮彈對應的按鍵時,程序要保存并處理這個信息。在更新游戲數據階段,程序要根據用戶的輸入信息,在內存中生成炮彈對象,如果之前已經發射了炮彈,則需要判斷炮彈是否擊中敵人,敵人是否被擊殺。這里可能要處理上百個對象和多種游戲邏輯。在生成游戲輸出階段,最重要的事情之一就是繪制顯示在屏幕上的內容,如坦克、發射的炮彈、爆炸效果等。

主站蜘蛛池模板: 确山县| 铁力市| 桑日县| 陆河县| 铁岭市| 乐清市| 且末县| 福鼎市| 同仁县| 和顺县| 兴化市| 九寨沟县| 枞阳县| 安乡县| 祥云县| 海城市| 光山县| 阳朔县| 同心县| 饶河县| 灵璧县| 盐亭县| 临高县| 新营市| 金秀| 天门市| 保康县| 通山县| 蚌埠市| 成安县| 楚雄市| 南召县| 五寨县| 独山县| 宁国市| 西藏| 兴业县| 凉城县| 台东县| 安仁县| 南阳市|