作者chocho1981 (o(.```.)o)
看板Web_Design
标题php+mysql开发多人线上游戏
时间Mon Aug 17 21:44:40 2020
我目前使用php+mysql开发像这样的一个游戏
https://i.imgur.com/nMQdwWb.jpg
我的角色是右边那个
左边头上有名字的是其他玩家
我要知道其他玩家目前在地图上的位置
我目前的做法是每1秒去捞一次资料库
位置有变动就更新其他玩家的位置
不过这样等於我的角色放在地图上挂网2小时
会产生7000多次的requests
感觉人一多,对伺服器也是个负担
请问各位先进,有没有其他更有效率的做法
可以提供给小弟参考呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.12.82.246 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1597671882.A.AEC.html
1F:→ frank910138: 用websocket08/17 21:46
2F:→ chocho1981: 感谢,我试试看08/17 22:14
3F:推 onininon: firebase08/18 13:03
看了一下介绍,感觉这东西超神奇的
不过这是不是要收费啊?
如果用到资料库监听功能的话
4F:推 menShow: redis,存玩家座标资料当cache,玩家移动时,侦测可视范围内08/18 14:13
5F:→ menShow: 的玩家发websocket通知这些玩家就好.08/18 14:14
※ 编辑: chocho1981 (101.12.82.246 台湾), 08/18/2020 20:08:32
6F:推 ctrlbreak: 你知道 一般这种RPG地图每秒钟每个玩家至少更新10次以08/19 03:24
7F:→ ctrlbreak: 上画面看起来才不会lag吗 XD08/19 03:25
嗯,不过我的问题不在这里
其他玩家有移动10秒
更新100次我也可以接受
但是若是其他玩家在地图上发呆2小时
我也得更新7000次,那就真的很没效率了
※ 编辑: chocho1981 (101.12.82.246 台湾), 08/19/2020 07:35:22
8F:→ swallowcc: 1,php不好做websocket 2,10秒更新一百次也不是好选择08/19 10:29
9F:推 kyoe: 比较少人用php做这个,效率跟资源比不上其他的08/19 13:55
除了php外,有比较好的建议吗?
我前端主要是用jquery
php主要是用来管理mysql的资料而已
※ 编辑: chocho1981 (101.12.82.246 台湾), 08/19/2020 15:06:47
10F:推 ctrlbreak: 先试着学习写常连线的server,这类型游戏php+db不好胜任08/19 20:18
唉~~这也是我现在烦恼的地方
本来只是想能不能用websocket
传一组其他玩家在地图上的数据
再用canvas画出来就好
这两天研究了一下Nodejs和io.socket
类似聊天室的功能做是做出来了
可是我目前完全无法应用到我之前的程式里
难道只有全部砍掉重练吗?
夭寿喔,我搞了快一个月的东西耶...
※ 编辑: chocho1981 (101.12.82.246 台湾), 08/20/2020 06:59:53
11F:推 swallowcc: 不砍掉重练你後面会遇到更多状况啦... 而且你有现成的 08/20 17:48
12F:→ swallowcc: code 可以 reference 了,商业逻辑部分也不用重想了 08/20 17:48
13F:→ swallowcc: 只是说练习新语言要花点时间,不然开发上不会太耗时 08/20 17:49
14F:推 f416720001: 我是认为早晚都要改的 08/27 20:59
15F:推 mohai: 非得PHP的话,swoole websocket 可以参考看看 09/03 05:21
16F:推 jjba310: 我也想做这个,做完验证帐密上来就看见这篇,推 09/04 22:33
17F:推 jjba310: 目前想php做其他事,入口网页及管理mysql 09/04 22:42
18F:→ jjba310: 在另外找工具及框架去做游戏本体去连结mysql 09/04 22:43
19F:推 jjba310: 另外想问原po,左边游戏画面是那个工具做的 09/04 23:40
20F:推 jjba310: *哪 09/05 11:53
左边的图全部都是从RPGMV来的
地图制作和人物制作 都是在软体上做好後
再弄成图片档做成网页
https://imgur.com/EbQZIFT
https://imgur.com/W1qUHHc
※ 编辑: chocho1981 (36.239.21.231 台湾), 09/05/2020 13:44:04
21F:→ laechan: 通常的做法是改成比方1分钟存一次+额外情况出现时存一次 09/27 11:32
22F:推 Isaea: 用两个资料表,一个存最後位置一个现在位置,现在位置的5 10/15 09:26
23F:→ Isaea: 分钟清空一次 10/15 09:26
24F:推 WeiMyWoW: 好有趣的专案,赞赞 11/09 03:55