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

看板GameDesign作者 (宇宙學型男)時間2年前 (2021/06/08 02:21), 2年前編輯推噓12(12025)
留言37則, 11人參與, 2年前最新討論串1/1
大家好 想請問一個網路遊戲開發資料庫設計的用法 我想開發一款小型的網路遊戲(很小 可能就朋友間互相玩 我估計同時應該不超過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叫了可以驗證變成金牌會員或增加金幣等等) 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 139.138.255.133 (美國) ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1623090110.A.086.html

06/08 04:57, 2年前 , 1F
你都用 Unity 連線了,直接在 HostClient 寫入數據不是比
06/08 04:57, 1F

06/08 04:57, 2年前 , 2F
較實際嗎。另外玩家數量不超過 50 的話,或許資料存成硬
06/08 04:57, 2F

06/08 04:57, 2年前 , 3F
碟檔案讀寫比較直接,也比較利於部署
06/08 04:57, 3F

06/08 08:08, 2年前 , 4F
各方法都存在作弊可能.伺服器記得驗證.不讓客戶端知道細節
06/08 08:08, 4F

06/08 12:40, 2年前 , 5F
除了作弊問題外,看不出有什麼做不到的,但是與其說技術
06/08 12:40, 5F

06/08 12:41, 2年前 , 6F
不如說叫玩家自己記下雲端存檔的index的原因是什麼? 你是
06/08 12:41, 6F

06/08 12:41, 2年前 , 7F
覺得玩家會著這個序號跨平台或換硬體玩? 為什麼不存在玩
06/08 12:41, 7F

06/08 12:42, 2年前 , 8F
家遊戲端就好? 如果我是玩家我會覺得又不是在玩老DQ XD
06/08 12:42, 8F

06/08 12:43, 2年前 , 9F
(紅白機的DQ,沒有實體存檔,要自己記密碼的年代..:>)
06/08 12:43, 9F

06/08 13:42, 2年前 , 10F
就算client存UUID,server還是存一份
06/08 13:42, 10F

06/08 13:42, 2年前 , 11F
手遊要考慮換機的功能.所以才會有綁定社交帳號的系統.
06/08 13:42, 11F

06/08 13:44, 2年前 , 12F
如果不使用綁定社交帳號.那麼本機就要自己存UUID.
06/08 13:44, 12F

06/08 13:44, 2年前 , 13F
否則每次登入都是全新玩家.
06/08 13:44, 13F

06/08 13:46, 2年前 , 14F
甚至有些產品要想辦法把ID存在玩家不能刪掉的地方.
06/08 13:46, 14F

06/08 13:46, 2年前 , 15F
避免玩家刷首抽
06/08 13:46, 15F
抱歉不確定是不是沒有講清楚 假設我這遊戲開局以後有多人同時玩 我想要的是"任何人"都可以在離開後繼續回來玩 (假設遊戲內所有人都離線登出 都可以再登入回來繼續完成任務) 這樣是不是就沒辦法單純存到玩家遊戲端? 假設存到A的local B玩家怎麼可能讀的到? 用code主要是要換機換平台或不同登入帳號都不用擔心 只要拿到這組code的都可以繼續幫忙完成任務 用Node.js+MongoDB只是之前有做過比較熟悉 但是沒用他串過遊戲 所以想說問問看 ※ 編輯: Cosmology (139.138.255.133 美國), 06/08/2021 14:01:26

06/08 14:06, 2年前 , 16F
每個人都拿同一個code來繼續任務, 那回傳的時候要以
06/08 14:06, 16F

06/08 14:06, 2年前 , 17F
誰的資料為主?
06/08 14:06, 17F

06/08 15:12, 2年前 , 18F
所以才想有沒有可能由一個伺服器來統一管理這些數據
06/08 15:12, 18F

06/08 15:13, 2年前 , 19F
其他人CALL api就好
06/08 15:13, 19F

06/08 15:57, 2年前 , 20F
以你描述的玩法來看 把server開在client端是不行的.
06/08 15:57, 20F

06/08 16:01, 2年前 , 21F
你目前的想法一般是用在網路版的單機遊戲, 多人不適合.
06/08 16:01, 21F

06/08 16:15, 2年前 , 22F
其實就是玩家都下線後要一個table存放"任務進度"
06/08 16:15, 22F

06/08 16:18, 2年前 , 23F
第一個進來的玩家從資料庫抓進度重建世界。
06/08 16:18, 23F

06/08 16:19, 2年前 , 24F
後續進來的玩家就遵循client-server model。
06/08 16:19, 24F

06/08 16:30, 2年前 , 25F
應該沒太大問題。
06/08 16:30, 25F

06/08 16:35, 2年前 , 26F
如果第一個玩家沒有把資料回存呢(斷線、閃退)
06/08 16:35, 26F

06/08 16:48, 2年前 , 27F
雲端存檔你就要開一個伺服器了 不然會很多問題
06/08 16:48, 27F

06/08 17:16, 2年前 , 28F
其實要看遊戲細節了 資料庫夠不夠存 要看遊戲內容
06/08 17:16, 28F

06/08 17:16, 2年前 , 29F
以煮過頭來說 他可以大家上線一起玩故事模式 
06/08 17:16, 29F

06/08 17:17, 2年前 , 30F
但任何人都可以在離線以後繼續進度 感覺跟描述的接近
06/08 17:17, 30F

06/08 17:17, 2年前 , 31F
煮過頭的關卡資料非常簡單 只有 過關/沒過關 分數
06/08 17:17, 31F

06/08 17:17, 2年前 , 32F
這樣的資料 database table 的方式來就很好存
06/08 17:17, 32F

06/08 17:19, 2年前 , 33F
然後煮過頭的故事進度 每個人本機端都會存一個副本
06/08 17:19, 33F

06/08 17:19, 2年前 , 34F
所以下次要由誰開局 (或他自己玩) 都可以
06/08 17:19, 34F

06/12 03:12, 2年前 , 35F
簡單,用Blockchain,每人都燒機。
06/12 03:12, 35F

06/14 12:39, 2年前 , 36F
一定可以
06/14 12:39, 36F

06/16 12:20, 2年前 , 37F
如果存檔不複雜 直接轉base64字串給user一個txt
06/16 12:20, 37F
文章代碼(AID): #1WlcE-26 (GameDesign)