談了很多關於網路遊戲的一些技術技巧和框架,但都是零散的,這有好處,但大多數新手或是愛好者都不知道該如何下手,下面談談我的遊戲開發心得
遊戲開發一般使用vc+dx,你可以使用win32 api直接建立乙個windows應用程式框架,也可以使用mfc來建立乙個windows應用程式框架,注意,並不是像很多人想象的那樣,用了mfc就覺得很慢,其實我們只是用mfc搭建了乙個應用程式框架,而且mfc有很多很好用的類庫,這些類庫可以提高我們開發的效率,但並不影響我們的圖形渲染和資料處理,因為在圖形渲染和資料處理部分我們很少能用得上mfc,不會影響執行效率。
當然,不用mfc也可以,直接使用win32 api 也並不是需要花很多時間。可以根據個人需求進行選擇。
大多數人都知道遊戲的基本結構
game_init( );
while ( )
else
}game_destroy( );
我先說簡單的 update( )和render( ) 函式
一般說來不同的資料更新在自己不同的事件中處理,但有很多是帶狀態的資料,比如:idirectinput的狀態機,需要在一定的時間來處理這些資料,那麼我們可以在update函式裡來處理。我們還可以模擬一些自定義的事件訊息,比如自定義的ui,或者指令碼。
update( )
}關於渲染函式很簡單了,很多遊戲資料都介紹了如何渲染,但渲染什麼我稍後再說
render ( )
下面說渲染內容,渲染內容都是預先準備好的。
我們一般有2種方式組織資料,一種我稱之為集合式,一種我稱之為派生式。
1、集合式
所有的物件都有2個類
class cobj
;typedef cobj* objptr;
class ccobj
public:
static ccobj * getinst( );
public:
loadfromconfigfile( char * szfile ); // 從配置檔案中批量讀取物件
objptr new( ); // 直接新建物件
bool add( objptr p ); // 增加新物件
bool remove( objkey ); // 移除物件
objptr find( ); // 檢索物件
void clear( ) // 全部清空
}m_lstobjs.clear( ); }};
要特別注意的是那個集合的析構函式,另外還有乙個函式就是getinst( ),它是靜態的,用來訪問這個類,其實也就是說這個集合類是個全域性性的例項,用來管理整個遊戲中所用的該物件。那麼我們在cpp檔案裡需要這樣定義:
#include "obj.h"
ccobj g_ccobj;
ccobj * ccobj::getinst( )
這樣,關於obj的資料我們就處理好了,用的時候是隨需申請,集中釋放,比如:
#include "obj.h"
我們不需要去呼叫delete pnewobj來釋放該物件,因為當程式退出的時候,集合ccobj會把所有申請的物件全部集中釋放,不用擔心記憶體問題,用的時候只管用就好了。
上面的是集合式管理
2、派生式管理
派生式管理就是我們定義乙個基類
class cobjbase
cobjbase( cobjbase * pbase )
}~cobjbase( )
}m_lstobjs.clear( );
}這就像一棵大樹,每個節點下面有幾個子類,釋放的時候一級一級的釋放,主要是根節點需要手工釋放,用的時候比較方便,但釋放時其實是遞迴呼叫,所以一般用於休閒小遊戲,用法如下:
cobjbase * proot = new proot( null );
new cobjbase( proot );
new cobjbase( proot );
...new cobjbase( proot );
delete proot;
上面new的時候甚至不用返回值,我們只需要釋放掉proot就可以了。所有其他的類都可以從這個基類派生,比如:
class cobj1 : public cobjbase
;class cobj2 : public cobj1
;用的時候
p1 = new cobj1( proot );
new cobj2( proot );
p2 = new cobj2( p1 );
new cobj2( p2 );
還是很方便的。
今天就講這麼多了,下次再聊
托盤製作心得
製作的主要涉及到的 api只有 shell notifyicon 雖然 api只有乙個,但是這個 api的引數的資料結構可是看的讓人很煩的。notifyicondata typedef struct notifyicondata tchar szinfotitle 64 tip 視窗標題 dword...
網線製作心得
上周五下午在給同事安裝台式電腦時需要拉一根長網線,所以需要製作一根網線。之前在學校做過一次網線,但是不成功,昨天的製作也是很艱難,所以記錄一下製作網線的要點。網線剝開外皮後需要按照對應的線序將裡面的細線接入水晶頭,線序是橙白,橙,綠白,藍,藍白,綠,棕白,棕。分好線序後將細線小心塞入水晶頭裡的軌道,...
製作單機俄羅斯方塊遊戲心得(二)
前面說的是建立了piece0,piece1,piece2,piece3,piece4,piece5,piece6.其中變化的方塊,由於遊戲開始和下乙個方塊出現時是隨機得到不同的大方塊的,在定義piece時用changes屬性 protectec list changes new arraylist ...