我目前使用php+mysql开发像这样的一个游戏
https://i.imgur.com/nMQdwWb.jpg
我的角色是右边那个
左边头上有名字的是其他玩家
我要知道其他玩家目前在地图上的位置
我目前的做法是每1秒去捞一次数据库
位置有变动就更新其他玩家的位置
不过这样等于我的角色放在地图上挂网2小时
会产生7000多次的requests
感觉人一多,对服务器也是个负担
请问各位先进,有没有其他更有效率的做法
可以提供给小弟参考呢?
作者:
menShow (The Show)
2020-08-18 14:13:00redis,存玩家座标资料当cache,玩家移动时,侦测可视范围内的玩家发websocket通知这些玩家就好.
作者: ctrlbreak 2020-08-19 03:24:00
你知道 一般这种RPG地图每秒钟每个玩家至少更新10次以上画面看起来才不会lag吗 XD
1,php不好做websocket 2,10秒更新一百次也不是好选择
作者:
kyoe (缘份‧不再)
2020-08-19 13:55:00比较少人用php做这个,效率跟资源比不上其他的
作者: ctrlbreak 2020-08-19 20:18:00
先试着学习写常连线的server,这类型游戏php+db不好胜任
不砍掉重练你后面会遇到更多状况啦... 而且你有现成的code 可以 reference 了,商业逻辑部分也不用重想了只是说练习新语言要花点时间,不然开发上不会太耗时
作者:
mohai (墨海)
2020-09-03 05:21:00非得PHP的话,swoole websocket 可以参考看看
作者:
jjba310 (走走吧)
2020-09-04 22:33:00我也想做这个,做完验证帐密上来就看见这篇,推目前想php做其他事,入口网页及管理mysql在另外找工具及框架去做游戏本体去连结mysql另外想问原po,左边游戏画面是那个工具做的*哪
作者:
laechan (挥泪斩马云)
2020-09-27 11:32:00通常的做法是改成比方1分钟存一次+额外情况出现时存一次
作者:
Isaea (Isaea)
2020-10-15 09:26:00用两个资料表,一个存最后位置一个现在位置,现在位置的5分钟清空一次