場景編輯器開發(fā)第三天,重新審視整體需求,修改方案,制作涂鴉工具。
?經(jīng)過昨天也就是第二天的思考分析確定了技術(shù)實現(xiàn)方案,本身是可行的但是經(jīng)過多方面綜合性質(zhì)的考慮,最終還是希望玩家也可以進行編輯,所以回歸到了造輪子的位置。
第一點.flash pro并不是我們自己寫的代碼,出問題或者有技術(shù)難題我們自己是無法控制的。
第二點.經(jīng)過一晚上看jsfl參考文檔,發(fā)現(xiàn)jsfl面向用戶操作,而不是程序員,也沒有actionscript靈活,制作場景編輯器因此難度提高。
第三點.語法比較老,沒有typescript語法新,且和typescript JavaScript語法有一定區(qū)別。
第四點.研發(fā)出來也不是我們現(xiàn)有體系中的功能,沒辦法最大化的利用。
更重要的還是希望玩家也可以進行場景編輯,且功能豐富起來,幾乎一半多的功能都需要定制,不如直接自己造一個了,所以放棄了原flash pro+jsfl方案
改為在現(xiàn)有的游戲引擎上搭建起來自己的場景編輯器,這里技術(shù)應(yīng)用是egret引擎,typescript,json數(shù)據(jù)結(jié)構(gòu),可能也會用到zip包裝,服務(wù)端運行nodeJS進行文件操作處理,數(shù)據(jù)庫是用mongoDB。
考慮到大的場景都是我們這邊專門去繪畫的所以需要給玩家制作一個用于繪畫的功能,肯定不會說完完全全讓玩家來畫,玩家只需要簡單的繪畫指示就可以完成一個場景,我準備用瓦片圖,但是瓦片圖過度太生硬了,所以我用羽化遮罩+瓦片圖,自己做一個瓦片系統(tǒng),來實現(xiàn)這個需求,這里是我想到了曾經(jīng)玩過的魔法哈奇里面的創(chuàng)意空間里面地形的貼圖就是這種方式實現(xiàn)的。


?

?制作繪畫功能比較簡單,我就直接做出來了,也參考了一下,egret社區(qū)網(wǎng)友的邏輯,其中的關(guān)鍵點在于可以記錄每一步操作和創(chuàng)建圖層。并且可以保存為一個json數(shù)據(jù)的歷史記錄文件以后玩家就可以隨時打開編輯,同時json也可以被場景解析出來。
總結(jié)幾個制作涂鴉工具箱的時候遇到的問題。
1.move事件并不是真的記錄每一點拖動,所以需要些一些特有的算法實現(xiàn)插值插入到間隙,否則玩家畫的快的時候就只有幾個點了。

2.不要所有的繪畫點都放到顯示列表,這會讓設(shè)備性能占滿,最合適的方法是每點畫完都塌縮到一個Bitmap里面這里是用截取texture的方法實現(xiàn)

?
?而畫的實現(xiàn)邏輯是,按下時候監(jiān)聽移動和抬起,移動時候畫,每一點清理塌縮,就是這樣。