[程式] 網路遊戲資料庫開發問題(Unity)

作者: Cosmology (宇宙學型男)   2021-06-08 02:21:48
大家好
想請問一個網路遊戲開發資料庫設計的用法
我想開發一款小型的網路遊戲(很小 可能就朋友間互相玩 我估計同時應該不超過50人)
主要是使用unity當作開發工具
我想最基本的架構就一個玩家可以開server然後大家連過去他的IP跟PORT
(我猜among us應該也是類似這樣)
網路上應該找到蠻多基本的教學我想這類即時互動的應該不是太大問題
但我現在想要有一個功能就是玩家(包含開伺服器者)都退出遊戲後
可以把遊戲資料跟狀態存到資料庫內 然後給一組序號你可以記下來
下次你開server而且輸入這個代碼 就可以繼續玩之類的
我查了一點資料想確認以下想法可不可行
主要是用mongodb + Node.js(express)設定好一個網頁伺服器?
然後有一些HTTP Request Methods(GET POST等等)的網頁可以被call
這個call可以回傳或是送入一些json檔案(就像一些網頁前後端的處理)
然後在unity(UnityWebRequest)裡面call這些api藉此把這些玩家資料josn一起丟進去
mongodb裡面或抓出來
請問這樣的架構是有可能的嗎?
自己有做過一些網頁開發 也有在aws上面跑這些網頁
但是針對網路遊戲的儲存不確定這樣是不是可行的(技術上或效能上)
如果可行 想請教另一個問題
有某款遊戲用類似方式開發 是否可能我們可以找到她的API
以後去call這些API達到作弊的目的?
(例如某個api叫了可以驗證變成金牌會員或增加金幣等等)
謝謝
作者: wix3000 (癢,好吃)   2021-06-08 04:57:00
你都用 Unity 連線了,直接在 HostClient 寫入數據不是比較實際嗎。另外玩家數量不超過 50 的話,或許資料存成硬碟檔案讀寫比較直接,也比較利於部署
作者: NDark (溺於黑暗)   2021-06-08 08:08:00
各方法都存在作弊可能.伺服器記得驗證.不讓客戶端知道細節
作者: meowyih (meowyih)   2021-06-08 12:40:00
除了作弊問題外,看不出有什麼做不到的,但是與其說技術不如說叫玩家自己記下雲端存檔的index的原因是什麼? 你是覺得玩家會著這個序號跨平台或換硬體玩? 為什麼不存在玩家遊戲端就好? 如果我是玩家我會覺得又不是在玩老DQ XD(紅白機的DQ,沒有實體存檔,要自己記密碼的年代..:>)
作者: NDark (溺於黑暗)   2021-06-08 13:42:00
就算client存UUID,server還是存一份手遊要考慮換機的功能.所以才會有綁定社交帳號的系統.如果不使用綁定社交帳號.那麼本機就要自己存UUID.否則每次登入都是全新玩家.甚至有些產品要想辦法把ID存在玩家不能刪掉的地方.避免玩家刷首抽
作者: ctrlbreak   2021-06-08 14:06:00
每個人都拿同一個code來繼續任務, 那回傳的時候要以誰的資料為主?
作者: Cosmology (宇宙學型男)   2021-06-08 15:12:00
所以才想有沒有可能由一個伺服器來統一管理這些數據其他人CALL api就好
作者: ctrlbreak   2021-06-08 15:57:00
以你描述的玩法來看 把server開在client端是不行的.你目前的想法一般是用在網路版的單機遊戲, 多人不適合.
作者: madturtle (旅者‧愚人‧夢想家 )   2021-06-08 16:15:00
其實就是玩家都下線後要一個table存放"任務進度"第一個進來的玩家從資料庫抓進度重建世界。後續進來的玩家就遵循client-server model。應該沒太大問題。
作者: ctrlbreak   2021-06-08 16:35:00
如果第一個玩家沒有把資料回存呢(斷線、閃退)
作者: SecondRun (雨夜琴聲)   2021-06-08 16:48:00
雲端存檔你就要開一個伺服器了 不然會很多問題
作者: newyellow (newyellow)   2021-06-08 17:16:00
其實要看遊戲細節了 資料庫夠不夠存 要看遊戲內容以煮過頭來說 他可以大家上線一起玩故事模式 但任何人都可以在離線以後繼續進度 感覺跟描述的接近煮過頭的關卡資料非常簡單 只有 過關/沒過關 分數這樣的資料 database table 的方式來就很好存然後煮過頭的故事進度 每個人本機端都會存一個副本所以下次要由誰開局 (或他自己玩) 都可以
作者: throwaway (平行線)   2021-06-12 03:12:00
簡單,用Blockchain,每人都燒機。
作者: xxxxae86 (非洲大草原)   2021-06-14 12:39:00
一定可以
作者: longlongint (華哥爾)   2021-06-16 12:20:00
如果存檔不複雜 直接轉base64字串給user一個txt

Links booklink

Contact Us: admin [ a t ] ucptt.com