[程式] 网络游戏数据库开发问题(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