聊聊網路遊戲同步那點事

2021-08-01 11:47:38 字數 933 閱讀 7546

0x00 前言

16年年底的時候我從當時的公司離職,來到了目前任職的一家更專注於遊戲開發的公司。接手的是乙個platform遊戲專案,基本情況是之前的團隊完成了第乙個版本,即單人模式的基礎玩法,但是之後對該項目的定位又變成了乙個本地區域網的聯機手遊(2-4個玩家)。因此,重寫專案底層外加確定網路同步方案就成了第一件需要去認真考慮的事情了。那麼本文就來聊聊網路同步這件事吧。

0x01 遊戲同步中的主次

開發網路多人遊戲是一件十分有趣的事情,但是和單機遊戲相比無疑增加了更多的挑戰。

例如,我們之前開發的單機版本並不需要多麼擔心作弊的問題。這是因為購買我們遊戲的玩家(假如我們的單機遊戲不免費發布的話)即便作弊,影響的也僅僅是他自己的遊戲體驗,不會影響到別人。

但是開發多人遊戲就不是這樣了,為了保證讓每個人都有好的遊戲體驗,防止作弊總是需要去考慮的。

除此之外,在開發多人遊戲時我們還需要考慮如何「欺騙」玩家的眼睛,讓他們認為他們在同乙個世界中。

當2個或4個玩家一起在手機上玩遊戲時,看上去他們確實像是在共享同乙個虛擬世界,在同乙個世界中遊玩。但事實卻是,玩家自己的手機只是對「同乙個」虛擬世界的近似模擬。換言之,他們的遊戲世界每乙個都是獨一無二的,只不過從外觀上看起來像。

因此,為了達到這種看上去近似的效果,我們需要確認哪些狀態是需要同步的,只要同步了這些狀態,這個遊戲世界就看上去一樣了。而哪些狀態是無需同步的,即這些物件的狀態是否同步對整個遊戲是否看上去一樣並沒有特別大的影響。

在我們的遊戲中,玩家的各種屬性、在世界中的座標、遊戲世界中的敵人各種屬性、道具獲取以及各種觸發器的觸發等等都有可能會對遊戲的表現產生影響,因此需要考慮同步;但是像例如海底的水泡粒子效果、道具獲取後的碎裂效果,甚至是背景**則不會對遊戲的表現產生特別的影響,因此並沒有必要去同步這些內容。

0x02 同步輸入or同步狀態

再談網路遊戲同步

呵呵,一年前的這個時候發過一系列討論網路遊戲同步的帖子。一年後的今天,再重新討論討論這個問題。不知道大家是否碰到過這種情況,當某個玩家發出乙個火球,這個火球有自己的運動 軌跡,那麼如何來判斷火球是否打中了人呢?大部分情況,當策劃提出這個要求的時 候,一般會被程式否認,原因是 太麻煩了,呵呵。複雜點的...

網路遊戲同步問題

介紹 作為乙個程式,你想過網路多人對戰遊戲是怎麼做出來的嗎?從外行的角度來看多人對戰遊戲是很神奇的 2個或者更多的玩家在同乙個時間經歷了相似的遊戲經歷,感覺他們就像在同乙個虛擬世界中遊戲一樣。但是作為程式設計師我們卻知道事實並不是他們想象的那樣的,他們看到的絕大多數其實都是假象。他們所認為玩家間同時...

網路遊戲同步問題

介紹 作為乙個程式,你想過網路多人對戰遊戲是怎麼做出來的嗎?從外行的角度來看多人對戰遊戲是很神奇的 2個或者更多的玩家在同乙個時間經歷了相似的遊戲經歷,感覺他們就像在同乙個虛擬世界中遊戲一樣。但是作為程式設計師我們卻知道事實並不是他們想象的那樣的,他們看到的絕大多數其實都是假象。他們所認為玩家間同時...