[雜談] 最近在嘗試 MapleStory Worlds 的遊戲編輯器
最近都在摸 MapleStory Worlds (以下簡稱 MSW) 的編輯器
這是 Nexon 藉由楓之谷這個 IP 打造出來的創作平台,類似 Roblox
我並沒有接觸過 Roblox,只知道他是一個自由度很高的東西
後來去查才知道它已經是接近遊戲引擎程度的東西,並且提供免費雲端資源讓玩家建立伺服器
而 MSW 也是如此,就連存取資料的方式也很相似
最近都在摸 MapleStory Worlds (以下簡稱 MSW) 的編輯器
這是 Nexon 藉由楓之谷這個 IP 打造出來的創作平台,類似 Roblox
我並沒有接觸過 Roblox,只知道他是一個自由度很高的東西
後來去查才知道它已經是接近遊戲引擎程度的東西,並且提供免費雲端資源讓玩家建立伺服器
而 MSW 也是如此,就連存取資料的方式也很相似
這幾年到處都能聽到或看到 AI 這個詞
圖片是 AI 產的,影片也都在講 AI 就算了
曾經標榜「智慧」的產品現在都改標榜「AI 輔助」
我不排斥 AI 技術,有些 AI 工具其實還蠻不錯用的
但現在太容易看到各種粗糙的 AI 產物
還時不時會看到各種「AI 取代論」
各大媒體以及廠商都在瘋狂蹭 AI 這個詞
這股「AI 狂熱」已經大到令人厭惡的地步
從第一篇文章開始到現在,已經過了三個半月
MapleLooker 從最初的 .NET Framework 4.8 + WinForm 變成 .NET 8.0 + WPF
透過這個專案,學到一些 WPF 的皮毛,現在 MapleLooker 已經沒什麼東西可以翻新了
因此這篇將會是 MapleLooker 翻新的最後一篇文章 🙂
這次主要是實現針對 TreeView 節點的查詢功能
在原始 WinForm 版本中,這個功能並沒有實現,這次特別將它做出來,為這個專案劃下一個句點
最早在 WinForm 時期,TreeNode 的 ContextMenu 是動態生成並即時顯示在指定位置上
轉到 WPF 之後,因為呼叫方式的改變,我改成動態建立 ContextMenu 並掛在節點的 TextBlock 上
一開始,我打算掛在 TreeViewItem 上,當時透過設定 Style 來實現
但卻遇上了選單樣式失效的問題,由於遲遲無法解決,最後還是用一開始掛在 TextBlock 的方案
在翻新的過程中,一直在尋找能夠綁定在 TreeViewItem 並正常呈現方法
或者至少能夠直接用 xaml 來描述 ContextMenu 也行
這次透過免費版 Claude,問到可以根據節點類型切換 ContextMenu 的方法
於是就有了這次的 ContextMenu 重構,想試試看效果如何
上次翻新的 AnimationView 使用了 CompositionTarget.Rendering
事件
在每次 UI 渲染時更新 Image 物件,並判斷經過時間切換圖片來完成影格動畫
雖然最後呈現效果不錯,但 CPU 佔用量高了點
這次想進一步使用 WPF 裡的動畫系統來改寫原本的動畫組件,優化 AnimationView 的效能
這次要翻新的是動畫元件 AnimationView
AnimationView 的用途是播放簡單影格動畫
由於 WPF 本身的繪圖機制跟 WinForm 不一樣,一度讓我失去方向
最後用了一個感覺不太優,但是簡單有效的方法來實做 WPF 版本的 AnimationView 元件
原本打算去更新之前自己寫的遊戲檔案 Library NeoWZ
主要是因為 MapleLooker 上的 WzLib 版本非常舊,我覺得結構也不好,所以打算移除改用後來寫的版本
結果改好幾天都沒成果,時間就這樣白白浪費了 🙃
雖然專案本身沒有什麼進展,但還是寫個文章來紀錄一下,也順便證明我沒有失蹤 (?)
這次主軸是將 TreeView 的資料節點做資料綁定
原本是打算對播放器元件做一些重構,但調整 Slider 時碰到問題暫時沒法解決
所以就改重構 TreeView 的部份了
既上次升級 .NET Core 之後
這次打算把專案的 WinForm 改用 WPF 來呈現
這算是我第一次正式寫 WPF,之前都只有開個專案拉幾個 Control 而已
原本想說應該不難,寫之後才發現事情沒我想的那麼簡單 🙃
時間過得真快,現在已經是 2025 年了
原本想要介紹一些讓程式看起來更簡潔的程式寫法
因為我在自介裡面說過自己追求易於閱讀的程式碼,但卻沒有出過類似的文章中內容
只是我一直想不到該怎麼介紹,連舉例都想不到 🙃
為了尋找素材,去翻了一下以前寫的 C# 專案
剛好翻到一個適合翻新的陳年老專案
於是想說乾脆改寫紀錄自己翻新重構的過程
雖然這個專案後面應該會被蛋雕(丟掉)
但還是想試著翻新來玩玩
這個專案叫 MapleLooker,是楓之谷這款遊戲的資源讀取器
以前從各論壇搜刮來各種資源,用 .Net Framework WinForm 寫出來的專案