作者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/m.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