遊戲程式設計學習筆記 1

2021-05-01 02:57:05 字數 1113 閱讀 9241

關於如何編寫乙個遊戲,一直沒有非常系統和深入的學習.之前的時間一直是在進行無目標的埋頭亂看,window api, gdi, directx等.但事實上編寫遊戲需要的知識遠比這些更多.

工作以後,由於本身就在遊戲公司,並且目前每天的任務量不大,我也就可以騰出時間系統的學習遊戲程式設計了.

從上上個星期開始,我花了10天左右的時間想去編寫乙個2d的小遊戲,泡泡龍.在編寫開始前,我以為會非常的簡單,因為畢竟不管是windows api, gdi還是用c++寫邏輯我都還是十分熟練的.但是真的開始編寫的時候才傻了眼.問題乙個接乙個.

對於乙個事件驅動的程式來說,程式畫面的繪製控制只是和使用者的操作事件有關的,程式的主迴圈為:

while(getmessage(...))

translatemessage(...);

dispitchmessage(...);

然後呼叫視窗的**函式來進行事件處理,並且進行重新整理畫面.畫面的重新整理一般是在wm_paint事件裡面進行的.

更好的方式是這樣的:

將訊息迴圈進行如下的改寫

while(true)

if(peekmessage(....))

if(msg == wm_quit)

return 0;

else

訊息分發;

if(渲染間隔沒有小於需要間隔)

gamemain(); //遊戲過程

else

sleep(0);

如此一來,主迴圈的任務變成了兩部分,首先是去檢視有沒有訊息,但是不會像getmessage那樣阻塞住迴圈,如果有就分發,如果沒有,執行遊戲過程(遊戲過程中一般都包括了渲染)

值得注意的是,如果渲染的時間間隔已經小於需要的間隔了,就sleep(0)一下.看過但是僅僅掌握上面的這些只是開始.當我真的開始編寫gamemain()的時候才發現,麻煩才剛剛開始.事實上,gamemain()應該是什麼樣的結構我該過很多次,都不太好,後來看了下該自動機的結構應該大體如下:

初始化 ----->  接受外界輸入 ----> 邏輯更新(包括判斷) ------>進行渲染 -------> 顯示於螢幕

退出遊戲

通過全域性的遊戲狀態來確定gamemain()具體來做什麼.

接下來的問題更麻煩一些,下篇再說嘍:-)

遊戲程式設計學習筆記 2

經過了1個月左右的製作2d遊戲引擎的嘗試,我似乎陷入了某些瓶頸.渲染速度始終不能達到理想的狀態.這個期間對引擎的結構進行了數次的改變,引擎的結構也從最初的那種非常 的想法漸漸的有了一點頭緒.漸漸的確立了一些關於2d引擎的概念.做這個引擎之出,我對direct draw的硬體加速功能報有了太大的期望,...

DirectX 11遊戲程式設計學習筆記之1 開場白

本文由哈利 2024958085 qq.com 這是我之前的部落格系列 directx9.0c遊戲開發手記之 龍書 第二版學習筆記 的平行版,也可以說是續集。說是平行版,因為這兩個部落格系列因為某種顯而易見的原因,內容是很平行的 而之所以說是續集,是因為前面那個系列可能就此坑掉了 前面那個系列是關於...

《OpenGL遊戲程式設計》學習筆記(一)

opengl遊戲程式設計 本書詳情 是我為了學習opengl,而拜讀第一本書。11年12月拿到這本書到現在也有幾個月時間了 而我對opengl也有了淺薄的了解。於是,我準備花一點點時間來進行一下總結這一階段的學習。正如我第一篇部落格說的那樣,我寫作水平不好哈。還有,如果有說錯的地方,還請各位多多指教...