最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

夢(mèng)開始的地方——FC游戲開發(fā)指南(3)引擎循環(huán)

2021-10-12 15:41 作者:皮皮關(guān)做游戲  | 我要投稿

(本系列是一個(gè)回歸電子游戲原點(diǎn)的特別系列,作者 @goodorc_gamedev

本節(jié)介紹FC的游戲主循環(huán)編寫方法。

首先說明,任何實(shí)時(shí)刷新畫面的電子游戲,都有一個(gè)亙古不變的循環(huán)流程:

游戲引擎循環(huán)

無論什么游戲引擎,UE也好,Unity也好,都需要按上圖進(jìn)行每一幀的流程。

咱們的FC當(dāng)然也不例外,也必須符合上圖的原則。

1、FC主循環(huán)

有趣的地方在于——FC本身沒有引擎層,就像一張白紙沒有任何要求,我們可以隨意搞一個(gè)while循環(huán)來代替引擎循環(huán)。返璞歸真的感覺。

我改動(dòng)了示例工程《移動(dòng)》并加了一些注釋。




對(duì)速度很快的現(xiàn)代電腦來說,在循環(huán)中應(yīng)該有某種時(shí)間控制機(jī)制。

FC的CPU很慢,恰好是每掃描一行執(zhí)行一條指令,所以可以用更簡(jiǎn)單的方式控制游戲速度,比如寫個(gè)空循環(huán)。

有了引擎循環(huán),循環(huán)中要考慮幾件事:輸入,邏輯,渲染,幀時(shí)間控制

輸入需要研究FC手柄原理,邏輯可以直接寫C語言代碼,渲染是半自動(dòng)的暫時(shí)不用考慮,時(shí)間控制也需要研究FC計(jì)時(shí)機(jī)制。

好在不用那么麻煩,“FC游戲大師”提供的項(xiàng)目里已經(jīng)寫好了大部分基礎(chǔ)功能。

2、引入常用代碼庫(kù)

“FC游戲大師”里的《迷宮不迷》示例工程已經(jīng)做出了很好的示范,所有基本功能全寫到了"mylib.c"源文件中,將該工程的"mylib.c"文件拷貝到移動(dòng)工程里就能直接用了。

拷貝到工程目錄以后,在"移動(dòng).c"源碼中包含它,之前的<conio.h>不需要了。




3、輸入邏輯

接下來演示手柄輸入怎么寫。




運(yùn)行后可以按方向鍵移動(dòng)文字,但是由于舊的位置不清除,試驗(yàn)效果如圖:

代碼重點(diǎn):

  1. u8就是unsigned char,8位,取值范圍0~255。

  2. 輸入相關(guān)的兩個(gè)變量名為key和okey,它們的用法都是固定的。

  3. 上面的代碼中,X軸是連續(xù)輸入,Y軸是按一下動(dòng)一下,看看寫法有什么不同。(和Unity寫法是類似的)

  4. 每一幀結(jié)尾okey被賦值,如果okey忘了賦值那么判斷downkey的功能會(huì)出問題。

  5. 相對(duì)正確的延遲一幀方法:wait_VBlank()。 它一樣是讓CPU進(jìn)行死循環(huán),但是當(dāng)PPU狀態(tài)變化(代表一幀結(jié)束)就跳出循環(huán)。

這樣,一個(gè)麻雀雖小,五臟俱全的游戲循環(huán)就寫好了。

當(dāng)然,一般的游戲會(huì)有一個(gè)開始界面、一個(gè)GameOver界面,一般做成獨(dú)立場(chǎng)景。

有多個(gè)場(chǎng)景,想切換場(chǎng)景怎么辦呢?最簡(jiǎn)單的辦法:再加一個(gè)while循環(huán)就行,游戲主循環(huán)未必只能有一個(gè),怎么方便怎么寫。

只不過切換場(chǎng)景的時(shí)候要關(guān)閉顯示、切換背景。這塊的內(nèi)容以后再說。

4、補(bǔ)充:輸入詳解

FC手柄有8個(gè)按鈕:上下左右,選擇暫停,AB。為什么上面只用一個(gè)u8 key 變量就夠了呢?

因?yàn)镕C的硬件設(shè)計(jì)就是用8個(gè)bit,也就是8位來表示這8個(gè)按鍵的,正好用一個(gè)u8變量裝下。判斷某個(gè)鍵要用二進(jìn)制技巧。如果想深入了解,可以看mylib.c中downkey的具體寫法。

換句話說,F(xiàn)C手柄想加一個(gè)鍵都不容易,從硬件層面基本都定死了。


本期文章介紹了游戲主循環(huán)與手柄輸入,下次介紹顯示背景的方法。

(本文作者 @goodorc_gamedev 。歡迎加入游戲開發(fā)群:1082025059

對(duì)游戲開發(fā)感興趣的童鞋可去到這里進(jìn)一步了解:http://www.levelpp.com/)



夢(mèng)開始的地方——FC游戲開發(fā)指南(3)引擎循環(huán)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
嵊州市| 都兰县| 宜良县| 政和县| 应城市| 云浮市| 闵行区| 旌德县| 岗巴县| 铁力市| 衡东县| 新建县| 司法| 通化县| 台南市| 德江县| 大冶市| 兴业县| 泸西县| 定远县| 宜兰市| 清丰县| 堆龙德庆县| 华阴市| 麟游县| 淄博市| 游戏| 九江县| 谢通门县| 遵义市| 西贡区| 皋兰县| 奎屯市| 宁河县| 精河县| 贵南县| 奉贤区| 黄石市| 合山市| 泽库县| 京山县|