作者cowbaying (是在靠北喔)
看板GameDesign
标题Re: [鲁蛇] 手机游戏多人连线相关问题
时间Wed Apr 22 10:54:59 2015
1F:→ drophead520: 我个人偏好想用c++自己写server,处理资料库连接写入 04/22 00:15
2F:→ drophead520: 取出和游戏逻辑和客户端server互传 server,无奈实体d 04/22 00:15
3F:→ drophead520: emo教学没有,犹如瞎子摸象 04/22 00:15
4F:→ drophead520: arcalet 书我有买,但cloud型的发展很难扩充其他系统 04/22 00:20
5F:→ drophead520: 请问我的方向是学c++ socket写server ,然後用客户 04/22 04:34
6F:→ drophead520: 端c#用tcp,udp互传游戏资料到这个c++ socket ,在用 04/22 04:34
到这里其实都没错
7F:→ drophead520: 这只socket写进和读取资料库和传到客互端,这样概念 04/22 04:34
这里
你提到读写资料库
所以我认为有必要提醒一下
8F:→ drophead520: 正确吗? 04/22 04:34
正常的做法
是不会对资料库做频繁读写
像是1秒读写入一次
或是客户端每做一个动作就读写入一次
资料库也有着资料同步的问题
所以写跟读是有先後顺序的
并非同时进行
就算只搜寻索引
DB还是会去对资料做hash检查
而资料库基本上是还是档案
读取跟写入的效能一样受限於档案系统的效能
如果远端的话
就受限於网路通讯的效率
不晓得你是不是程式底
看过很多开发者都是用硬干的
一笔一笔写入资料库
效能可想而知(根本科科)
所以请善用资料结构
使用超大阵列来提升效能
资料库的部分固定时间批次写入即可
资料库只是用来伺服器刚开机的初始化和资料备份
这是基本
除非你的游戏不是很即时
或者玩家人数不多
或是DB连线数开到数十万
亦或是将资料库分散
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.255.36.21
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1429671302.A.A92.html
※ 编辑: cowbaying (111.255.36.21), 04/22/2015 11:19:46
9F:推 LayerZ: 推这篇,DB读写非常耗效能 04/22 11:17
10F:推 drophead520: 谢谢你的回文对我帮助很大感谢 04/22 11:32
11F:→ bearkitten: 请爱用nosql, 而且现在大型资料库很少不切master-slav 04/22 20:52
12F:→ bearkitten: e, 只要前面自己再实作个排程即可,时代在进步,不需 04/22 20:52
13F:→ bearkitten: 要还一直用旧方法... 04/22 20:52
可能我把一些额外的东西浓缩在最後四行里
方法有很多
但都是从基本衍生出来的我想这点没异议
因为游戏还是需要考量到较强的资料一致性问题
所以还是从基本做起吧
※ 编辑: cowbaying (59.127.231.87), 04/22/2015 21:45:59