iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0
自我挑戰組

卡牌遊戲開發日記v2020系列 第 13

Day13 定義資料傳遞格式 (封包格式)

  • 分享至 

  • xImage
  •  

因為是連線遊戲,資料要透過封包傳遞,這邊需要定義玩家和伺服器之間溝通的資料格式

玩家行動的時候需要送出手牌組合使用陣法
格式:組合ID, 陣法ID

手牌組合能夠編碼為0-31數字,代表玩家要出的手牌

  • 1 第一張手牌
  • 2 第二張手牌
  • 4 第三張手牌
  • 8 第四張手牌
  • 16 第五張手牌
    把所有要出的手牌所代表數字加總在一起,就可以表示手牌組合了

使用陣法:目前基礎陣法總共25個,所以用 0-24 表示即可

實際送出卡片代號也可以,只是玩家出牌不會固定張數,送出的資料長度也會受到影響不固定,而且這些資料伺服器已經有了,也不需要再傳,所以思考之後的結果打算用這種方式表示。

然後伺服器根據選擇的手牌組合選取了對應的卡片 seleC,再搭配陣法編號 zenID ,解析陣法後。最後送到處理陣法效果的地方,在處理完蓋牌效果、防護罩、五行生剋…等這些影響之後,把結果送給代理人執行,然後發送更新後的場面狀態給全場玩家

解析前:卡片列表, 陣法ID
解析後,處理場面狀態影響之前:玩家ID, 陣法ID, 對象ID, 陣法數值
處理場面狀態影響之後:對象ID, 效果ID [,數值]

這邊我目前的實作是把一個一個效果拆分出來去執行它

效果ID 在實作影響單體玩家狀態算是蠻方便的,而且這些效果在後面有機會組合成複合效果,就不用每個相同效果都要實作一次底下的基礎效果。

遇到實作上的問題:

  • 同時改變兩個玩家狀態的效果,混沌影響下家手牌,影響自己牌庫
  • 雙方玩家交換血量,同時影響雙方的生命值

影響多個玩家的效果就必須取用兩位玩家的資料,職業規則也有出現對全場自己以外玩家造成影響的效果,所以還是需要盡早支援。

效果部分目前有的:

  1. 受傷
  2. 補血
  3. 建立防護罩
  4. 扣除防護罩
  5. 蓋牌/封印
  6. 蓋牌/防禦
  7. 蓋牌/反震
  8. 蓋牌/空城
  9. 承受光芒

然後自己的經驗是 ID 編排時常會因為開發需要而重新調整,所以是很正常的,不用太介意它為什麼後面跟一開始不一樣。

以上,努力拚實作
謝謝大家的收看,祝大家有個美好的夜晚:)


上一篇
Day12 補完遊戲架構和流程
下一篇
Day14 進度紀錄
系列文
卡牌遊戲開發日記v202030
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言