斜45度遊戲開發(一)

2021-06-09 00:20:29 字數 1968 閱讀 7460

斜45度遊戲開發(一)-

注:寫的十分粗糙,如果看不懂請對照kgamev1.0源**瀏覽。

最好的遊戲末過於rpg遊戲了,但如果贏得大眾的好評,那麼必須要採用(甚至說現在是一種標準)斜45度地圖、人物遊戲引擎,下面我們分別展開分析。

一.地圖資料結構

soft的《聖劍英雄傳二》定義的就不錯,可以參考它的。

定義地圖結構以前,我們要先定義tile結構,分兩種情況。

(1).物品、景物等按npc處理(不規則處理,如「魔力寶貝」):

typedef structstcell;

具體我也不說什麼了,注釋都很清楚!

(2).物品、景物也按tile處理但npc按不規則處理(如:「仙劍奇俠轉」,強烈不推薦!)

typedef structstcell;

太清楚了,我也不解釋了!

下一步就是地圖了,地圖的處理不管是什麼方法大同小異.

int id; //地圖編號

char name[32]; //地圖名稱(地**件名)

int width; //寬度(以格仔為座標) 斜

int height; //高度(以格仔為座標) 斜

int mapstartx,mapstarty; //左上角座標

stcell **cell; //動態格仔

char filename[32]; //當前地**件名

char scrfname[32]; //地圖初始化指令碼檔名

char reserve[4]; //保留位,(我估計我們肯定還有想不到的一些資訊,以後可以在這裡新增,以免地圖編輯完成之後,再修改map_struct格式,破壞原先編好的地**件)

//這裡先不用看,到了那裡再說。

lpdirectdrawsu***ce7 lpdds_mapback; //地圖臨時儲存點

lpdirectdrawsu***ce7 lpdds_tmouse; //tile滑鼠

int mapbx,mapby; //用來優化機器

這樣不就介紹完了嗎?簡單吧,不過後面的越來越難,做好心理準備。

二.座標轉換

//斜45度的座標轉換成螢幕座標

inline void mitomd(int dx,int dy,int &ix,int &iy)

//螢幕座標轉換成斜45度的座標

inline void mdtomi(int ix,int iy,int &dx,int &dy)

其中#define tilewidth 32 //每個tile的寬

#define tileheight 16 //每個tile的高

三.繪製地圖

繪製地圖有什麼難的,錯!地圖繪製好了fps能提高數倍。

傳統的地圖繪製方法:

for(int i=0;i

經過改進我這樣做

if (mapbx!=x&&maxby!=y)

{for(int i=0;i

這樣空閒狀態的fps就會提公升,什麼?還想提公升,這樣辦吧!

推理方法從略(其實我也不記得的,春天寫的):

#define mapdmx int(0.5*((screenheight<<1)+screenwidth)/(tilewidth>>1))+1 //最大畫出點x

#define mapdmy int(0.5*(screenheight<<1)/(tilewidth>>1))+1 //最大畫出點y

#define mapdsy int(0.5*(-screenwidth)/(tilewidth>>1))-1 //最小畫出點y(特殊)

然後if (mapbx!=x&&maxby!=y)

{for (int y=intsizel(mapstarty+mapdsy,0); y

其中intsizel取兩個數大的,intsizes取兩個數小的!

速度優化到極限了,好了,先寫到著,下一次我再說遮擋。

斜45度遊戲開發(二)

斜45度遊戲開發 二 這一篇我們主要研討地圖的物品 景物 npc建立,並說一下遮擋的簡單實現方法。npc 主角結構 主角和npc在一起比較好,也便於管理 再次宣告 作者已經不使用這些方法,這些方法只適用於初學者 結構如下 struct strolec 這兩個結構其中strole是內部儲存的結構,而s...

斜45度遊戲開發(二)

斜45度遊戲開發 二 這一篇我們主要研討地圖的物品 景物 npc建立,並說一下遮擋的簡單實現方法。npc 主角結構 主角和npc在一起比較好,也便於管理 再次宣告 作者已經不使用這些方法,這些方法只適用於初學者 結構如下 struct strolec struct strole 這兩個結構其中str...

等角 斜45度 遊戲與數學

1984年歐洲的玩家被一款當時發布的遊 knight lore 震驚了。這款2d遊戲居然相當真實的模擬了3d環境,而當時遊戲的發布平台是 zx spectrum,48k的記憶體。這個技術就是isometric perspective 等角投影 後來大菠蘿 最終幻想等遊戲均採用了這種投影技術。等角投影...