切換
舊版
前往
大廳
主題

【廢文】炎炎夏日何處去?當然是發廢文啊!

格子@懷念光牧的社畜 | 2015-08-12 14:38:14 | 巴幣 502 | 人氣 214

來囉,本篇廢文,討論取向。
來,都來,都可以來。


最近模組前端告了一段落,1.8繼續胎死腹中。
主要就是把登入、組隊、聊天、選角的四大系統搞定了架構。
完全就是坐等新增運算用的參數。
        →力量、敏捷之類的,眼神死的角色能力
        →不過現階段沒有碰的打算

至於1.8的部分,我感覺好像是封包沒有處理好。
貌似Client/Server的CustomPacketEvent有一點小變動。
可惜Eclipse都沒告訴我錯在哪。錯誤都是出IndexOutOfBound之類的。
但是Unpooled的buffer大小都出1024了,各種玩我。

找了一下可能是要用一點都不簡單的SimpleNetworkWrapper下去整個重寫我的Packet的部分。
眼神死。整個超級哭哭。
→聽說不要用Message的SNW系統也可以,
→但是貌似要對Packet做Registry。小麻煩,
→真的迫不得已要升級1.8再來研究吧哈哈。

除了1.8繼續難產以外。
基本的函數定義也有困難XD"
目前的想法是用從時間下去做客觀的定義,
然後藉由時間函數主體下去推演出其他的Function。
至於技能就。


Eat Shit. XDDDDDD"


今天事情告一段落,跑去跟指導老師聊天。
聊著聊著就講到了最近在寫的模組。
所以就從Forge講到模組,又聊了一堆哩哩喳喳的東西。
系統考量拉、效率之流的。

後來老師還跑來看我現在模組的運行效果。
整個受寵若驚。

老師大人表示:很有興趣。
哈哈,難道要跟我一起做嗎?可以噢XD"


其實這篇開起來,是打算寫NBT Data的小筆記www。

最近比較常用到的大概就是NBTTagCompound跟NBTTagList了。
在存檔裡面。

以下高能,廢文看完可以上一頁了。

基礎上Forge有Hook一個欄位給我們。
只要針對EntityPlayer做一個getEntityData()的函數呼叫。
就會回傳一個NBTTagCompound給我們。
而這個Compound的存儲識別字叫做ForgeData。

Forge好接口www。
而基礎上這個Compound只要是用getEntityData()叫出來的。
都會回傳一樣的東西。

只不過裡面可能包含其他模組的資訊,如果你有裝的話。其他模組。
例如地方的RPG模組、地方的村莊模組、地方的....模組隨便啦。

簡單來講,只要不是用IEEP或者硬要(注1)的方法,
這個Compound就有可能包含其他方式。
(注1:IEEP會產生一個設計師自訂識別字的欄位,而硬要的方法,就是直接讀存檔。)
到這裡是ForgeData()的結構介紹。



但是這邊還有一個迷思。
當使用NBT Data的時候,其實並不是寫入存檔裡頭。
意即,當程式已經把Tag Set進去的時候,
其實它是先寫入玩家UUID識別的NBTTagCompound裡頭暫存。
然後等到進入了存檔週期,才會再playerdata的資料夾裡頭建立檔案。

所以在這中間的時候,
如果玩家死翹翹,ForgeData的欄位就會被重新讀取。
分析一下就是。

玩家死亡-----> 存檔(但是ForgeData並沒有存)-----> 玩家重生 ------> 讀取檔案。

所以會造成一個,好像存檔沒有存進去的感覺。


解決辦法其實超簡單。
玩家死掉的時候,把ForgeData抓出來暫存,然後等重生的時候,塞回去。

可能會有人納悶,為什麼不要就把ForgeData存進去存檔裡頭就好了?
答案很簡單:因為這很危險。而且我也不會。(後面才是真心話

在錯誤的週期跟錯誤的執行緒當中,
執行了儲存的動作,鬼知道你中間會忘記做甚麼前置。

這個時候直接發揮NBT強大的特性就好了。
基本上NBT在做Read跟Write的時候。
它是把標籤寫入、讀出。

所以用一個已經存資料的Compound去進行讀取。
系統會把資料抓出來。然後放在新的Compound裡頭。
寫入亦同。

而這種方法的門檻很低。

兩個Event(DeathEvent、RespawnEvent)、一個Map(HashMap)。超簡單。
別忘了用UUID下去做Map的Key。


下次有機會我在介紹一下關於NBTTag的東西吧。
基礎上這一塊是非常冷門的(當然我是指巴哈)。
尤其是深入到存檔的方面。
用IEEP相對來講門檻超低。因為有自己的紀錄週期。
只要無腦寫欄位,無腦讓系統存就好了。

單純下去手把手邊寫NBT的控制,
其實要搭配一些Event才能好好的解決它。

好了打到後面語無倫次了。
用字遣詞如有意義不清,歡迎透過各種管道發問。

咳咳咳... 感冒惹。


埋埋超可愛,用她的萌來席捲你們吧!
本篇重點↑
日8B,GET!

創作回應

都在江湖飄只有你挨刀
格子你真的很容易感冒耶。
2015-08-12 14:52:02
格子@懷念光牧的社畜
沒辦法,破少年。五百塊穴穴尼。https://truth.bahamut.com.tw/guildwiki/B/fa07f904ce2302ce2fff2cf5b56193e3.GIF
2015-08-12 14:59:02
小知
其實文章的重點就是最後的小埋妹妹!(飛撲
2015-08-12 17:56:18
格子@懷念光牧的社畜
被發現了。(擋)https://truth.bahamut.com.tw/guildwiki/B/89108b409c3de808dcc36d6d7dfca0b2.GIF
2015-08-12 18:04:34

相關創作

更多創作