→ drophead520: 我個人偏好想用c++自己寫server,處理資料庫連接寫入 04/22 00:15
→ drophead520: 取出和遊戲邏輯和客戶端server互傳 server,無奈實體d 04/22 00:15
→ drophead520: emo教學沒有,猶如瞎子摸象 04/22 00:15
→ drophead520: arcalet 書我有買,但cloud型的發展很難擴充其他系統 04/22 00:20
→ drophead520: 請問我的方向是學c++ socket寫server ,然後用客戶 04/22 04:34
→ drophead520: 端c#用tcp,udp互傳遊戲資料到這個c++ socket ,在用 04/22 04:34
到這裡其實都沒錯
→ drophead520: 這隻socket寫進和讀取資料庫和傳到客互端,這樣概念 04/22 04:34
這裡
你提到讀寫資料庫
所以我認為有必要提醒一下
→ drophead520: 正确嗎? 04/22 04:34
正常的做法
是不會對資料庫做頻繁讀寫
像是1秒讀寫入一次
或是客戶端每做一個動作就讀寫入一次
資料庫也有著資料同步的問題
所以寫跟讀是有先後順序的
並非同時進行
就算只搜尋索引
DB還是會去對資料做hash檢查
而資料庫基本上是還是檔案
讀取跟寫入的效能一樣受限於檔案系統的效能
如果遠端的話
就受限於網路通訊的效率
不曉得你是不是程式底
看過很多開發者都是用硬幹的
一筆一筆寫入資料庫
效能可想而知(根本科科)
所以請善用資料結構
使用超大陣列來提升效能
資料庫的部分固定時間批次寫入即可
資料庫只是用來伺服器剛開機的初始化和資料備份
這是基本
除非你的遊戲不是很即時
或者玩家人數不多
或是DB連線數開到數十萬
亦或是將資料庫分散
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.36.21
※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1429671302.A.A92.html
※ 編輯: cowbaying (111.255.36.21), 04/22/2015 11:19:46
推 LayerZ: 推這篇,DB讀寫非常耗效能 04/22 11:17
推 drophead520: 謝謝你的回文對我幫助很大感謝 04/22 11:32
→ bearkitten: 請愛用nosql, 而且現在大型資料庫很少不切master-slav 04/22 20:52
→ bearkitten: e, 只要前面自己再實作個排程即可,時代在進步,不需 04/22 20:52
→ bearkitten: 要還一直用舊方法... 04/22 20:52
可能我把一些額外的東西濃縮在最後四行裡
方法有很多
但都是從基本衍生出來的我想這點沒異議
因為遊戲還是需要考量到較強的資料一致性問題
所以還是從基本做起吧
※ 編輯: cowbaying (59.127.231.87), 04/22/2015 21:45:59