Re: [閒聊] 一秒多攻之攻防研究

看板travian作者 (影斯)時間15年前 (2009/06/22 21:54), 編輯推噓3(3015)
留言18則, 7人參與, 最新討論串17/18 (看更多)
我認為 ppack 提出的同秒攻擊, 插秒成功的事實是存在的。 示意表格,實際上可能是 c 的 struct。 CREATE TABLE "attack" ( 流水號 int, 攻擊秒 int, 攻擊村 int, 攻擊者 int, 防守村 int, 防守者 int, 兵種A數量 int, 兵種B數量 int, 兵種C數量 int, ... ); 在同秒攻擊時, 插秒唯一成功機率是防守者出兵的流水號 剛好在攻擊者的流水號中間。 如果流水號是從 0 到 2147483647 的話, 剛好攻擊者第一波是 2147483640, 攻擊 10 波。 如果中途沒有其他人的行動。 最後2波的流水號是 0,1。 防守者的流水號就可能是 1xxxx。 server 運算時先: select * from attack where 攻擊秒 is xxx; 再依流水號的大小依序執行動作。 此時攻擊者的最後兩波先到, 然後是防守者, 再來才是攻擊者的前8波。 如果流水號的範圍是 0 ~ 65535 或 0 ~ 32767 (2 bytes, 節省空間) 發生的機率更大一點。 以 10 波和流水號 3 萬來計算。 發生的機率是三千分之一,應該很符合現況。 需要用流水號的原因是 DB select 時, 不會依照存入的順序取出。 如果這個理論成立, 寫個程式跑1萬次, 應該就可以至少觀測到1次這種現象。 ===================== 另一種可能性: (機率低, 不過也有可能) 資料用 array 存放。 攻方 10 波: A01, A02, A03 ... A10 路人 2 波: K01, K02. 防守方 2 波: D01, D02 初期資料: A01, A02, A03, K01, A04, K02, A05, A06 ... A10 路人取消一波: A01, A02, A03, 空, A04, K02, A05, A06 ... A10 防守方正好插入: A01, A02, A03, D01, A04, K02, A05, A06 ... A10, D02 發生條件: 必須有人取消攻擊者行動中間的動作。 這比較容易實驗:先同秒攻擊15波,再取消正中間的5波, 看看是否防守者有機會插入。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.22.98

06/22 22:01, , 1F
看不懂= =可是好專業的樣子
06/22 22:01, 1F

06/22 22:08, , 2F
我C語言快被當了.....
06/22 22:08, 2F

06/22 22:15, , 3F
實驗過第二種情況....嘗試三次, 都沒有插到
06/22 22:15, 3F

06/22 22:19, , 4F
你的想法是合理,如果成立,應屬於程式的bug,但p大的想法
06/22 22:19, 4F

06/22 22:19, , 5F
是攻擊時間記錄至毫秒的想法,根本就完全不同。
06/22 22:19, 5F

06/22 22:22, , 6F
我的看法是每秒都有獨立的佇列,不可能全部事件混合在一起
06/22 22:22, 6F

06/22 22:23, , 7F
同一秒的事件要達到2^31,應該是不可能的。
06/22 22:23, 7F

06/22 22:25, , 8F
我強調的是事件而非攻擊,因為還包含了運送資源、建築完成
06/22 22:25, 8F

06/22 22:25, , 9F
產兵、生資等等各種情況,在同一秒發生時,也會影響攻擊
06/22 22:25, 9F

06/22 22:25, , 10F
結果。
06/22 22:25, 10F

06/22 22:51, , 11F
流水號只跟接收到的事件數量有關,跟時間無關.在推文中看到:
06/22 22:51, 11F

06/22 22:51, , 12F
常見防守方要插秒,結果第一個到.可見系統流水號最大值低。
06/22 22:51, 12F

06/23 01:36, , 13F
回2F 這應該是資料庫的語法
06/23 01:36, 13F

06/23 01:37, , 14F
資料庫取值還可以下指令sort...
06/23 01:37, 14F

06/23 01:39, , 15F
如果經過sort的中間就算有人取消, 順位還是沒變啊..
06/23 01:39, 15F

06/23 01:40, , 16F
那代表會插秒進去的也不用另一個取消動作
06/23 01:40, 16F

06/23 22:44, , 17F
流水號我覺得有可能 之前伺服器就有出現等待序列3萬多
06/23 22:44, 17F

06/23 22:44, , 18F
等排程排到 看誰先就先執行
06/23 22:44, 18F
文章代碼(AID): #1AFuqLjv (travian)
討論串 (同標題文章)
文章代碼(AID): #1AFuqLjv (travian)