Re: [閒聊] 一秒多攻之攻防研究
我認為 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
06/22 22:08, 2F
推
06/22 22:15, , 3F
06/22 22:15, 3F
→
06/22 22:19, , 4F
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
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
06/23 01:36, 13F
→
06/23 01:37, , 14F
06/23 01:37, 14F
→
06/23 01:39, , 15F
06/23 01:39, 15F
→
06/23 01:40, , 16F
06/23 01:40, 16F
→
06/23 22:44, , 17F
06/23 22:44, 17F
→
06/23 22:44, , 18F
06/23 22:44, 18F
討論串 (同標題文章)
travian 近期熱門文章
PTT遊戲區 即時熱門文章
17
22
81
112