主題

【Unity 多人遊戲開發 筆記】用Photon做個聊天室

快樂趴趴鼠夥伴 | 2021-04-28 23:22:40 | 巴幣 134 | 人氣 194

前言:
新年願望之一,開發多人遊戲。
加上最近想到覺得不錯的點子,就決定叫他: Radar War ! (雷達戰)





展示影片:
(指令欄,解析功能還沒做,所以現在是純聊天室XD)
網格是用這個Shader,發現座標不會滾動的bug= = 等等修
((UI正常滾動

目標玩法: 仿cmd風格,用指令操作的作戰遊戲。
之後會分職業,例如偵測兵視野很廣,但攻擊力弱,需要靠打聊天式指令告訴同隊的長砲兵狙擊座標等等

指令之後預計用之前做的tag語言工具去分析,像是要射擊可以打" shoot(0,0)" 或許能讓使用者打for迴圈或設變數(?


以下是筆記:

Photon RPC不能傳送自訂類別,所以要把資料轉成byte[]。 方法來源

其他的跟上一篇筆記差不多,但有個地方想更正:

上篇寫到:《
當下懷疑既然只有被打的A才會繼續執行扣血的動作,那為什麼還要透過RPC告訴大家? 原因是透過RPC更新所有玩家端的玩家A血量。意即:若場上有3個玩家,則就有3個玩家A的分身,透過RPC叫每個人電腦裡面的玩家A去執行扣血的動作。

有點講錯,因為實際執行起來:
假設一個房間有ID 1018(主機)、2022、3054這3個玩家連線,每個玩家電腦裡面都會有這三個玩家物件的分身。
當1018射2022,照上篇的程式碼,1018電腦裡的2022玩家物件會呼叫TakeDamage呼叫RPC的RPC_TakeDamage方法。

如果執行178行 的pv.isMine,則:
1018電腦的2022玩家物件 isMine=False
2022電腦的2022玩家物件 isMine=True
3054電腦的2022玩家物件 isMine=False
所以HP真正有被更新的只有2022電腦裡的2022物件。其餘兩個人電腦裡的2022玩家物件HP還是100。
2022 HP歸零會死亡也只是因為2022電腦裡的2022物件HP歸零,才呼叫方法告訴其他人他死了,叫大家殺死自己電腦裡的2022。


創作回應

派大星教授死掉了咩噗
也不算雲端ㄅ(?) 不太懂 其實就是藏在RPC call的函數後面 你call RPC前不用自己每次手動叫就是XD 但說實在code效率一樣[e8]
2021-04-29 01:15:34
快樂趴趴鼠夥伴
雲端的好像比較慢? 因為多出4 byte overhead
2021-04-29 01:16:08
快樂趴趴鼠夥伴
哦哦,原來是本地的[e15] 以為是連方法都上傳雲端
2021-04-29 01:16:42
派大星教授死掉了咩噗
就是不管是client還是server 彼此互相打call (RPC)時 都是把資料serialize成array bytes傳出去ㄅ (因為底層最後送出去就是一堆bytes)
2021-04-29 01:18:52
愛德莉雅.萊茵斯提爾
願順利,加油(*´ω`*)
2021-04-29 07:46:57
快樂趴趴鼠夥伴
謝謝[e5]
2021-04-29 19:31:58
is樂小呈
好複雜,加油[e15]
2021-04-29 09:47:39
快樂趴趴鼠夥伴
講起來有點抽象XD
2021-04-29 19:32:40
甜在心饅頭
這個點子感覺很有趣~~~加油[e22]
2021-04-29 11:17:00
快樂趴趴鼠夥伴
希望最後能組到20人一起玩XD
2021-04-29 19:32:50

更多創作