php+mysql開發多人線上遊戲

作者: chocho1981 (o(.```.)o)   2020-08-17 21:44:40
我目前使用php+mysql開發像這樣的一個遊戲
https://i.imgur.com/nMQdwWb.jpg
我的角色是右邊那個
左邊頭上有名字的是其他玩家
我要知道其他玩家目前在地圖上的位置
我目前的做法是每1秒去撈一次資料庫
位置有變動就更新其他玩家的位置
不過這樣等於我的角色放在地圖上掛網2小時
會產生7000多次的requests
感覺人一多,對伺服器也是個負擔
請問各位先進,有沒有其他更有效率的做法
可以提供給小弟參考呢?
作者: frank910138 (frank)   2020-08-17 21:46:00
用websocket
作者: chocho1981 (o(.```.)o)   2020-08-17 22:14:00
感謝,我試試看
作者: onininon (萬)   2020-08-18 13:03:00
firebase
作者: menShow (The Show)   2020-08-18 14:13:00
redis,存玩家座標資料當cache,玩家移動時,偵測可視範圍內的玩家發websocket通知這些玩家就好.
作者: ctrlbreak   2020-08-19 03:24:00
你知道 一般這種RPG地圖每秒鐘每個玩家至少更新10次以上畫面看起來才不會lag嗎 XD
作者: swallowcc (guest)   2020-08-19 10:29:00
1,php不好做websocket 2,10秒更新一百次也不是好選擇
作者: kyoe (緣份‧不再)   2020-08-19 13:55:00
比較少人用php做這個,效率跟資源比不上其他的
作者: ctrlbreak   2020-08-19 20:18:00
先試著學習寫常連線的server,這類型遊戲php+db不好勝任
作者: swallowcc (guest)   2020-08-20 17:48:00
不砍掉重練你後面會遇到更多狀況啦... 而且你有現成的code 可以 reference 了,商業邏輯部分也不用重想了只是說練習新語言要花點時間,不然開發上不會太耗時
作者: f416720001 (Gemini翔)   2020-08-27 20:59:00
我是認為早晚都要改的
作者: 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分鐘清空一次
作者: WeiMyWoW (...)   2020-11-09 03:55:00
好有趣的專案,讚讚

Links booklink

Contact Us: admin [ a t ] ucptt.com