我目前使用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分鐘清空一次