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

1.4.1 游戲主循環

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

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

主站蜘蛛池模板: 金堂县| 集贤县| 高要市| 普安县| 乐业县| 吴川市| 邯郸县| 石家庄市| 罗田县| 牟定县| 兴国县| 湖州市| 宣化县| 库尔勒市| 即墨市| 渭源县| 南宁市| 瑞金市| 济阳县| 霍林郭勒市| 武陟县| 休宁县| 保山市| 湖口县| 两当县| 壶关县| 镇平县| 衡山县| 元朗区| 宁乡县| 武功县| 西吉县| 东方市| 中江县| 衢州市| 综艺| 郓城县| 寿阳县| 新竹市| 巧家县| 湖南省|