作者Cosmology (宇宙学型男)
看板GameDesign
标题[程式] 网路游戏资料库开发问题(Unity)
时间Tue Jun 8 02:21:48 2021
大家好
想请问一个网路游戏开发资料库设计的用法
我想开发一款小型的网路游戏(很小 可能就朋友间互相玩 我估计同时应该不超过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://webptt.com/cn.aspx?n=bbs/GameDesign/M.1623090110.A.086.html
1F:推 wix3000: 你都用 Unity 连线了,直接在 HostClient 写入数据不是比 06/08 04:57
2F:→ wix3000: 较实际吗。另外玩家数量不超过 50 的话,或许资料存成硬 06/08 04:57
3F:→ wix3000: 碟档案读写比较直接,也比较利於部署 06/08 04:57
4F:推 NDark: 各方法都存在作弊可能.伺服器记得验证.不让客户端知道细节 06/08 08:08
5F:推 meowyih: 除了作弊问题外,看不出有什麽做不到的,但是与其说技术 06/08 12:40
6F:→ meowyih: 不如说叫玩家自己记下云端存档的index的原因是什麽? 你是 06/08 12:41
7F:→ meowyih: 觉得玩家会着这个序号跨平台或换硬体玩? 为什麽不存在玩 06/08 12:41
8F:→ meowyih: 家游戏端就好? 如果我是玩家我会觉得又不是在玩老DQ XD 06/08 12:42
9F:→ meowyih: (红白机的DQ,没有实体存档,要自己记密码的年代..:>) 06/08 12:43
10F:推 NDark: 就算client存UUID,server还是存一份 06/08 13:42
11F:→ NDark: 手游要考虑换机的功能.所以才会有绑定社交帐号的系统. 06/08 13:42
12F:→ NDark: 如果不使用绑定社交帐号.那麽本机就要自己存UUID. 06/08 13:44
13F:→ NDark: 否则每次登入都是全新玩家. 06/08 13:44
14F:推 NDark: 甚至有些产品要想办法把ID存在玩家不能删掉的地方. 06/08 13:46
15F:→ NDark: 避免玩家刷首抽 06/08 13:46
抱歉不确定是不是没有讲清楚
假设我这游戏开局以後有多人同时玩
我想要的是"任何人"都可以在离开後继续回来玩
(假设游戏内所有人都离线登出 都可以再登入回来继续完成任务)
这样是不是就没办法单纯存到玩家游戏端?
假设存到A的local B玩家怎麽可能读的到?
用code主要是要换机换平台或不同登入帐号都不用担心
只要拿到这组code的都可以继续帮忙完成任务
用Node.js+MongoDB只是之前有做过比较熟悉
但是没用他串过游戏 所以想说问问看
※ 编辑: Cosmology (139.138.255.133 美国), 06/08/2021 14:01:26
16F:推 ctrlbreak: 每个人都拿同一个code来继续任务, 那回传的时候要以 06/08 14:06
17F:→ ctrlbreak: 谁的资料为主? 06/08 14:06
18F:→ Cosmology: 所以才想有没有可能由一个伺服器来统一管理这些数据 06/08 15:12
19F:→ Cosmology: 其他人CALL api就好 06/08 15:13
20F:推 ctrlbreak: 以你描述的玩法来看 把server开在client端是不行的. 06/08 15:57
21F:→ ctrlbreak: 你目前的想法一般是用在网路版的单机游戏, 多人不适合. 06/08 16:01
22F:推 madturtle: 其实就是玩家都下线後要一个table存放"任务进度" 06/08 16:15
23F:→ madturtle: 第一个进来的玩家从资料库抓进度重建世界。 06/08 16:18
24F:→ madturtle: 後续进来的玩家就遵循client-server model。 06/08 16:19
25F:→ madturtle: 应该没太大问题。 06/08 16:30
26F:→ ctrlbreak: 如果第一个玩家没有把资料回存呢(断线、闪退) 06/08 16:35
27F:推 SecondRun: 云端存档你就要开一个伺服器了 不然会很多问题 06/08 16:48
28F:推 newyellow: 其实要看游戏细节了 资料库够不够存 要看游戏内容 06/08 17:16
29F:→ newyellow: 以煮过头来说 他可以大家上线一起玩故事模式 06/08 17:16
30F:→ newyellow: 但任何人都可以在离线以後继续进度 感觉跟描述的接近 06/08 17:17
31F:→ newyellow: 煮过头的关卡资料非常简单 只有 过关/没过关 分数 06/08 17:17
32F:→ newyellow: 这样的资料 database table 的方式来就很好存 06/08 17:17
33F:→ newyellow: 然後煮过头的故事进度 每个人本机端都会存一个副本 06/08 17:19
34F:→ newyellow: 所以下次要由谁开局 (或他自己玩) 都可以 06/08 17:19
35F:推 throwaway: 简单,用Blockchain,每人都烧机。 06/12 03:12
36F:推 xxxxae86: 一定可以 06/14 12:39
37F:→ longlongint: 如果存档不复杂 直接转base64字串给user一个txt 06/16 12:20