斜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 等角投影 後來大菠蘿 最終幻想等遊戲均採用了這種投影技術。等角投影...