2004/10/30

Little Soldiers



益智遊戲,有點像早期「Gobliiins」那類的。不過線上只是Demo,完整版要付費~

前往Little Soldiers

2004/10/29

踩地雷練習

用Flash寫了一個踩地雷,沒有太大難度,約花半小時,116行,應該要再精簡些。
有興趣的自行看看
下載源文件 (MX2004)

*聽說M$的踩地雷是有版權的是吧?

2004/10/28

Slideroll



Slideroll是一套線上slider show製作系統,具有timeline,可設置in out點,做fade in/out,zoom,pan等效果。感覺相當不錯。

前往Slideroll
*作者是以前做ZanpoGeoff

2004/10/25

FPS偵測心得

上禮拜在Gary家小聚會,聊到FPS的偵測問題。在此分享一下我做FPS的偵測心得。


我的FPS偵測原理很簡單,只是每次onEnterFrame時,用getTimer()算下每跑一次Frame的時間長度,而換算成倒數,即是一秒的Frame 數。

在每次onEnterFrame時,就執行一次showFps(),如此而已,並無什麼高深技巧。
用Obj只是方便最後要刪除這些東西而已。

另外分享一些偵測心得。通常會做Fps的偵測,不外乎是要掌握程式的效能。通常在調校期間,我會把fps設到最大值120去做測試,如此才能完全看出程式效能的變化。
例如原本程式理想fps為30,有時電腦配備太好,怎麼測都是30的話,便無法掌握效能變化。
試著把發佈設定的fps設到120,再做測試便可能發現有時是70,有時是50,只有少部份時間是100以上,這代表著程式中某些部份是耗系統較兇的,並針對這些fps變低的地方做加強。

愈早掌握系統效能的變化,將有助於最佳化調校。

2004/10/8

Flash+PHP輸出點陣圖(2)


下載範例

繼續研究PHP的GD函式庫。最近玩這個主要是想做一個具有抓圖功能的TileBasedGame。
目前已有小成,如同上面範例。主要利用:

這些function達成。以上bgImg是當做底圖,tileImg是從外部載入的小圖檔。
因此我只要將所有Tile的座標值及類型傳給PHP,即可用GD重畫一個新的地圖。

2004/10/3

Flash+PHP輸出點陣圖

前陣子看到的,今天特地來玩看看。
下載範例
這是很陽春的繪圖板,滑鼠按下去就開始畫,放開就停止。
重點在JPG或PNG兩個按鈕,按下後可動態產生點陣圖檔。

這技術是從這篇文章學來的:
Convert Flash MX Drawing API Output To Other Image Formats
裏面附有原始碼,即使不懂原理,code貼過來也可以用。

其原理是Flash將繪圖板上所有線條座標資料,傳送給PHP。
再利用PHP的GD影像函式庫去重繪一張點陣圖。
.GD library自1.6版後不能產生Gif,最近2.28版才又恢復GIF支援。
可惜我的hosting上面是2.23版滴。
.動態產生SWF的部份是要靠MingModule,這部份還沒研究。

2004/10/2

TileBased中MC顯示/隱藏小技巧

這裏要討論關於TileBased的MovieClip 顯示/隱藏的小技巧,可用於改善遊戲執行效能。
一般是用_visible來控制顯隱即可,但Tile元素一多時,光_visible還是不夠的。

在製作TileBased、Platform之類的遊戲時,當遊戲場景比可視範圍大時,通常需要將可視範圍以外的MC加以隱藏,而將可視範圍內的MC顯示出來,隨著場景的捲動,不斷刷新畫面圖像
(若沒有這樣重覆刷新,也就失去TileBased的用意了)

上圖即是一個簡單的顯示/隱藏示意圖,當人物向右下方移動,則地圖是往左上方捲動,因此最左上的列Tile需隱藏起來,而最右下需新增一列Tile。
有開發過TileBase或Platform之類遊戲的人,應該很能理解這種顯示/隱藏動作。

最直覺的方式應該是以_visible的true及false的就可以了。

但我個人發現,以_visible控制雖然方便,但對效能提昇上卻是有限,尤其當地圖元素非常多時,場景移動起來還是非常慢。

目前測得較快的方式是以attachMovie及removeMovie來做顯隱。(扯那麼多,就這句話是重點 -_-")
就是直接將MC刪除,而非隱藏而已。當需用時再以attachMovie新增。只是寫起來就比_visible多個好幾行。
測試結果執行效能會比_visible快不少。

我猜想是_visible雖然在視覺上將MC隱藏了,但實際上仍佔用了許多系統資源,用刪除的方式來爭取更多資源回來。(這部份個人所知有限,還請各方高手給予指教)

當然在刪除之前,還是需要將他該有的資訊記住,以便下次場景捲回來時,用attachMovie才知道位置在哪,類型是什麼。所以MC本身最好是不含任何資訊,所有資訊另外以Object來儲存。

以上小小心得,願與各位FlashGame同好分享~

2004/10/1

IsometricTile排列法

今天來談談Isometric Tile Base的排列方式。

在遊戲設計中IsometricWorld通常指像下圖這種地圖系統,華文地區通常稱之為「斜角45度地圖」「2.5D地圖」之類的。


今天主要來談Isometric裏的Tile排列順序,在我個人看過的一些書藉、文件,他們大多引用平面2D的TileBase排列方式來排,如下面兩種圖示。

就是順著x軸向或y軸向,以兩層?圈跑一遍就可以建立起來。
但上述這種方式在深度(depth)控制上常會遇到一些小問題,例如人物會被不該遮到的物體遮到,或是擋到不該擋到的物件,除非另外弄一些小技巧來克服…(有嘗試開發過的人應該能體會)
後來想想,我個人是覺得若是能以下圖的方式去排列,應該會更好。


就是模擬真實的深度順序,由上而下排列。不過這種排列方式,在?圈設計上就需要加點技巧,才能依照需求排列出正確的地圖。

我的回圈設計如下


大致原理如上,但實際應用時絕對不只如此。
IsometricWorld的深度排列十分重要,例如加入角色後,角色的深度變換等問題。
這部份如果將來有出書的話,我會在書中再做詳細介紹^^( 我說如果啦~~ ?)