遊戲製作心得(一)

2021-03-31 08:56:58 字數 2370 閱讀 1501

談了很多關於網路遊戲的一些技術技巧和框架,但都是零散的,這有好處,但大多數新手或是愛好者都不知道該如何下手,下面談談我的遊戲開發心得

遊戲開發一般使用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 ...