發表文章

目前顯示的是 2017的文章

Good Game Editor 1.6.3

* 最佳化色塊繪製方式大幅提升繪圖效能。 * 修正FPS計算顯示 < Download >

Good Emscripten Porting

圖片
最近試了一下 Emscripten 將good編譯成web版本,也就是透過Emscripten使用 LLVM 技術將C/C++編譯成javascript,這樣就可以在browser上執行了。 一開始先不管圖形顯式的話,移植都還算很順利,可以在下方看到接上trace log之後表示功能移植完成。接下來使用OpenGL版本的繪圖模組來作成像移植,不過這部份不是很順利,只有色塊可以正常顯示,圖形就都無法正常顯示出來。可能是我的OpenGL版本的繪圖模組太老舊了,Emscripten沒辨法100%相容支援,最後沒辨法只好將OpenGL版本的繪圖模組換成SDL版本的繪圖模組,因為SDL是Emscripten預設內建支援的成像引擎,結果圖形就能正常顯示了,只不過缺點是SDL版本的繪圖模組功能很陽春,很多像是縮放旋轉等功能沒實作,因為是使用SDL1。 不過還有個問題,預設參數編譯出來的js檔有10M,太大了。但如果加上-O2之類的最佳化編譯選項後,結果會造成無法執行(或者是載入太久?)。如果改成使用wasm編譯參數就可以配會-O1以上最佳化參數,編譯出來的檔案再加上使用Closure Compiler去除空白字元等,大小就會小於5M。 底下是測試連結。 Test 這個測試連結同時也以php簡單的實作了上傳及表列good檔案,以及執行選取的good檔案。

Good Game Editor 1.6.2

* 修正播放器(In Editor Player)顯示貼圖資訊的問題。 * 修正關卡編輯器物件樹點擊關卡物件程式當掉的問題。 * 新增 Good.GenObjEx 支援從外部資源包(External Good Package)生成物件。 Download

戰鬥象棋

圖片
這是個休閒放置類型的即時象棋戰鬥小遊戲。( Android下載 ) ( src ) * 共有六種不同兵種可以訓練 * 戰鬥型態有近戰型及遠距型 * 兵種有攻擊型及輔助型 * 每一兵種有二種技能 * 無限關卡可以挑戰 ------------------------------------------------ 底下是演化圖...                                  =========================== 底下是戰略模式玩法的新版本,目前功能己完成測試調整中,更完善後就會發佈。 - 新增戰略地圖,共24個城市 - 共10個玩家,其中9個AI - 目標為佔領所有城市  

Good Game Editor 1.6.1

* 新增可以Undo關卡的寛高。 * 修正關卡編輯器(LevelEditor)顯示格點的效能問題。 * 新增可以指定關卡的位置屬性。 * 新增在狀態列上顯示關卡編輯器(LevelEditor)目前寛高及左上角位置資訊。 * 修正關卡編輯器(LevelEditor)中點擊貼圖物件右下角範圍選取小工具無效的問題。 * 修正當物件數量太大時造成當機的問題。 * 修正動作編輯器(Sprite Editor)Undo時當機的問題。 * 修正 Good.IsAnimPlaying 不能正確工作的問題。 * 修正 Good.GenObj 生成關卡資源內的子物件時沒有設定指定script的問題。 * 播放器FPS資訊新增顯示目前物件數量及最大物件數量資訊。 * 播放器只在畫面內容有變更時才重繪畫面。 < Download >

多人連線版本的吃金幣的人

圖片
吃金幣的人 是對基因算法的一個研究和實驗,主要是資料及算法上的研究和測試。後來使用good的繪圖能力把它 圖形化 ,同時測試及擴展good的整合能力。現在再進一步把它和 網路底層 作結合,建立一個新的實驗平台,命名為nature online。 和good一樣建立no的目的是為了創造一個可以讓我平常利用空間時間來作研發和實驗的平台。no整合了所有到目前為止所作的小實驗和研究。主要的目標是研究分散式網路遊戲的架構及模擬生態系統。 目前具備的功能: - 分散式的網路伺服器架構,後端使用mysql。 - 使用2張測試地圖,隨時可以任意切換至任意地圖任意位置。 - 地圖物件目前有二種:tree/bug。 - tree物件應用 生命遊戲規則 生成及更新。 - bug物件應用基因算法活動食物為tree物件。 - 自動同步client可見視野內的內容。 -使用good為client成象引擎。 下階段的目標是持續底層研發及增加更多種類的物件。 ;========================= 以下二件事是需要特別記錄的。 A. 首先tree物件的更新決定以生命遊戲的規則來作更新及生成,規則沒什麼問題,問題是數量和速度。如果是像good內建的life範例,那相當於16x16的地圖格子大小,總數也才256格,每次更新時全訠256格都掃一次也沒什麼問題。不過當地圖變成像no那樣是500x500或更大時,問題就出來了。每次要掃那麼多的格子,速度就成為一個問題了,而且server每次更新不只是要更新tree物件而己,還有其它工作要作。 一個簡單的解決方法是只檢查需要檢查的格子。 1,記錄目前有那些存活的格子 2,根據存活的格子推算有那些格子在下一世代可能產生狀態變化,可能有狀態變化的格子也就是存活的格子的周圍8個空格子 3,下一世代只需計算(目前存活格子+可能產生狀態變化的格子),其它的格子都可以忽略不看 假設目前存活的格子是10000個,這10000個格子周圍總共30000個空格子,那麼下一世代只需計算40000個格子,而不是全部250000個格子。數量大大的減少了! B. bug物件是以基因算法為基礎來製作。和吃金幣的人一樣,假設基因的編碼是根據上下左右中5個格子(環境變數)共3種不同狀態,基因長度為243。現在的問

Good Game Editor 1.6

圖片
* 新增 Graphics.DrawText 。 * 新增 Graphics.SetAnchor 。 * 關卡編輯器(LevelEditor)中物件左上角顥示狀態圖標:IsVisible,RepX,RepY,HasScript,ImageMissing。 * 支援一次新增多個貼圖資源(New Texture)。 * 新增播放目前選取關卡(Play This Level)功能。 * 關卡編輯器(LevelEditor)中物件支援階層關係編輯。 * 關卡編輯器(LevelEditor)新增編輯Dummy物件。 Download