Tuesday, June 24, 2008

找不到game...

最近ladder變難找了,每次都要5min
剛才按下去還出現這個...


Saturday, June 21, 2008

reduce custom game latency(二)

對原理沒興趣直接看reduce custom game latency(一)



以下轉錄自sitos在PTT魔獸爭霸所回應文章
文章代碼(AID): #18NFFRON (WarCraft) [ptt.cc]


以下我先翻譯 Dota-Client 首頁的一段文字。

Warcraft III 的區域網路連線在遊戲中並不是透過 UDP 封包來傳輸的,
Warcraft III 的區域網路遊戲和在 Battle.net 的遊戲,
是用一模一樣的方式在進行。唯一的不同只有在尋找遊戲與加入遊戲的機制。

WC3 的區域網路,透過 UDP 廣播來找尋區域網路當中的遊戲,
並取得由主機所送出的遊戲資訊。一旦收到這些資訊,用戶端將會建立 TCP 連線,
連接到主機,並加入遊戲。這個加入遊戲的動作和在 Battle.net 是相同的。
唯一的不同是,在區域網路遊戲中,每個遊戲會有一個獨一無二的代碼,
這個 32-bit 的值會由主機透過描述遊戲的 UDP 封包送給用戶端。
但在 Battle.net 當中,這個值會被設成 0 。
(譯註: Battle.net 的遊戲列表由 Battle.net Server 直接送出,
在顯示遊戲時也有某種機制避免重覆顯示已經出現的遊戲。)

唯一不同的地方很簡單: WC3 在區域網路當中的同步時間間隔是 100ms ,
而在 Battle.net 遊戲中的時間間隔是 250ms 。 Listchecker (另一個軟體)
用了某些小技巧讓在使用 B.net 的 WC3 自以為在區域網路中,
使它會以每 100ms 的時間單位作同步的動作,而非 250ms 。
(譯註: 這件事譯者在本版 #169j3p-2 也已經提過, Listchecker 的構想我也想過,
不過沒有動手去實行,因為有更有趣的目標。 Dota-Client 的做法,
應該和 Listchecker 是類似的,或許是強迫修改某個紀錄同步時間的記憶體值。)

中略三段,主要是在講為啥 100ms 比 250ms 快。基本上這很直覺,
如果有興趣可以參考 #169j3p-2 ,我認為意思是差不多的。

當你將同步時間從 250ms 降到 100ms ,你將會看到重大的改變,
主機優勢只剩 100ms (譯註: 本來是 250ms),而不可避免的延遲也減到 100ms 。
但是,要在不影響用戶的情況底下掉封包或封包變慢可容忍的時間,
也只剩下 100ms (譯註: 這裡應該是講 TCP 的 retransmittion)。
這會使得主機在要送 2.5 倍的封包情況下,變得更糟,
使得封包更有可能在傳送當中遺失。這個方法的確有它的好處。
但是否值得,可以參考論壇當中的討論。

http://forums.dota-allstars.com/index.php?showtopic=154464&st=0&p=1918905

譯文到此為止。

其實 Dota-Client 的首頁已經給這個方法作了很清楚的說明,
不管你要調怎樣的 latency ,你必須要承擔它的後果,而且是正回饋的後果。
把 latency 從 250ms 調到 100ms ,封包量就要變 2.5 倍。
如果進一步調到 50ms 封包量是原本的五倍。封包量變大,但延遲容忍度降低。
原本一個封包要超過 250ms 沒送到,才會有感覺,但現在只要 100ms 就有感覺了。
更慘的是,封包量變大,直接導致 queuing latency 增高,增加封包延遲的情況,
另一方面也使得封包會掉的機會更大。

在這種情況底下,如果隨意調短 latency 卻沒有足夠的網路頻寬,
特別是主機的上傳頻寬(他要傳給遊戲中的其它人),就會出現嚴重的延遲。
以先前 GGC 給的建議值為參考基準的話, 100ms * 10 人的遊戲,
上傳所需是 640kbps ,如果降到 50ms 則會成為 1280kbps 。
而且依據 queuing theory ,頻寬使用量與延遲的關係是指數成長,
因此在網路情況不良的狀況下,縮短同步時間反而可能是一件不好的事。

如果離開理論,回到現實當中,高橋名人的極速是一秒 16 連打,
也就是每個動作之間是 62.5ms ,而一般人能作到 10 連打就已經很強了。
但 WC3 當中的 action 有時不是單純的一次按鍵,因此可達到的 apm 就更低了。
如果每秒都可以送出 10 個 action , apm 就是 600 。
但 apm 到達三百事實上就已經不常出現了。對 apm 300 的人而言,
平均每一個動作是 200ms ,sample frequency 只要是它的兩倍就很夠了,
也就是 100ms 正是 LAN game 的設定值,因此目前 LAN game 的效果大部份人都很滿意。

因此我們要問,真的有必要追求 100ms 以下的同步時間嗎?
為了效益並不明顯的延遲改善,而犧牲網路的頻寬與穩定性,
在不斷追求速度的同時,不要忘記 B 社在製作的時候,
為何選用這兩種數值,考量現實的網路狀況並作出合理的設定,
是相當重要的。上傳 > 2m 的人也許可以開個遊戲來造福大家,
但至少以我而言,連在 LAN game 我都不想作主機了。
反正我的手眼協調和神經傳導根本沒那麼快。






這篇是我寫的
文章代碼(AID): #18NIsiKP (WarCraft) [ptt.cc]


當初在ESM上發表3套reduce latency的軟體
dota client無法測試 (後來才知道1.8要用eesti)
令外兩套使用方式真的很麻煩,即使寫了詳細的說明
我也不覺得會有人願意使用,丟下一句有興趣的自己看說明吧 (我真的很懶是吧)

只提sitos沒講到的部份

對網路了解不多,以下是從網路上看來來 (本人不對內容真實性背書)

參考資料
sitos寫的文 #169j3p-2
TDA Community討論
http://forums.dota-allstars.com/index.php?showtopic=154464&st=0&p=1918905


從玩家的角度來看,影響遊戲有兩個因素 delay, spike

delay是玩家下一個指令後多久會生效,減少latency可以減少delay

spike發生時,玩家會感覺到畫面跳動,或是人物突然動作變很快
這是因為server(host)送給client的封包,有一部份沒在latency的時間內收到
client在收到封包後,要想辦法跟server同步,就得想辦法趕上
1) 直接跳畫面 2)加速跑完

TCP time-out最小是3秒 (遠大於250ms or 100ms)
如果這個封包沒辦法在latency時間內送到client,就會發生spike
如果spike不多,玩家是感覺不太出來的
一個spike畫面只會往前跳個250ms or 100ms
只有在server和client間連線狀況不穩定,連續spike出現才有明顯影響
連線的穩定程度指的不是ping值
在選latency時,必須要比玩家和host之間的ping值還大,否則就會有一堆spike發生
為了避免spike,猜想server會多送幾個同樣的封包出去
ogc anti-spike開了會耗用更大頻寬的原因所在?


ping怎麼看? 可以用這兩個程式
WC3Banlist
DotaRank


如果你在ogc開game能進行的很順,那麼使用dota client在Bnet上也可以辦到
也可能會有更好的結果,因為系統負擔比較小


至於我不提Dota Client Anti-Cheat的原因
作用原理跟Hollywood一樣,必需每個玩家都要開
你覺得這可行性有多大? 辦比賽再考慮吧


號稱可以減少delay是確定無誤的
只是為了宣傳,沒有提到可能增加spike的副作用
調整latency就是在delay和spike的trade-off,怎麼調自己斟酌吧

Wednesday, June 18, 2008

Applocale應用,右鍵menu

使用方法:存成.reg執行

執行檔
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\exefile\shell\日文執行]

[HKEY_CLASSES_ROOT\exefile\shell\日文執行\command]
@="C:\\WINDOWS\\AppPatch\\AppLoc.exe \"%1\" \"/L0411\""


chm file
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\chm.file\shell\open_zhcn]

[HKEY_CLASSES_ROOT\chm.file\shell\open_zhcn\command]
@="\"C:\\WINDOWS\\AppPatch\\AppLoc.exe\" \"C:\\WINDOWS\\hh.exe\" %1 \"/L0804\""

下載

Sunday, June 15, 2008

Custom Game查國家

第一選擇我會建議用WC3Banlist

第二個方法可用custom kick (多半都有查國家的功能),載點自己找吧

W3DR也可以使用/drc 查國家


WC3Banlist據說是去查線上的database(來源是哪邊我就沒研究了)

看到太多noob hosting不會過濾老外了...
開game時註明國家也可以避免一些老外

Monday, June 9, 2008

google page

http://koalafile.googlepages.com/

比起常爆炸的ESM,似乎是個不錯的選擇
檔案可以直接link很方便

可惜還沒open source的打算,否則丟上SF連mirror都幫你解決了

測試裝了很久從沒用過的scribefire

ggc bug/建議

依以前的經驗,回報的東西都常都會被忽略,記錄一下
回報的東西,官方不見得會回應,也沒個記錄
久久不修,我對ogc實在沒啥信心

favorite room
不能double click進入,要用右鍵menu不人性化
也沒有default room的設定,可以執行ggc就自動進入房間
如果一定要看公告可以在公告旁邊放個button按了就進default room

ping顯示不一致,user list是 || ,room chat是數字,也許給設定讓user選喜歡的
按下start game後,ggc裡面還是要自己按leave room旁邊的game list button
應該改成按下start game就自動在ggc中顯示game list才合理 (這好像我半年+以前回報過,一直沒改)

game list位置會一直往下跑

restrict single instance有bug,有時候可以跑多個ggc (應該把限制的code移到程式最前面就好了?)
login server沒反應,login button會被disable,只能重開
lan game放著太久,ggc會crash (一直沒變阿)
war3沒關,直接關掉ggc war3可能會crash (可能跟前一個有關,發生機率現在變低了,以前是100%)


還有一些2.4後才改濫的東西懶得寫
程式不知道是不是換人寫了,才會有這鳥種問題,以前有的功能某些消失了

Firefox 3 新功能介紹影片

http://www.mozillazine.org/talkback.html?article=23728

調整mp3音量 replay gain

replay gain的介紹
http://replaygain.hydrogenaudio.org/

為了避免不同mp3音量轉變過大 (突然變很大或很小)
這東西是在mp3加入meta-data記錄,所以不會對原始資料有任何影響
Winamp, foobar2000都有支援replay gain

使用時必須先用軟體分析後寫入gain (對mp3音量的調整)
之後使用支援的播放器才有效
作法可參考
http://www.freewebtown.com/logs/te/replaygain.htm

最近想到電視音量也有類似的問題
不知道哪時候才會解決

Saturday, June 7, 2008

ESM新管理員的素質不太好阿

ESM原文網址
http://tw.gg-game.com/forum/read.php?tid=180527

備份連結
http://koalafile.googlepages.com/ESM.rar

看到前3張圖
Hello World, dev-c++
腦中浮現的第一個想法 what the hell? 這傢伙來亂的嗎?

看到後面

10.vista用戶C++程式錯誤問題
http://tw.knowledge.yahoo.com/question/question?qid=1508031504408

這是vista用戶的專屬問題...

由我個人去網路所找到的解決方法

圖片教學在一開始的三張圖片



囧,這傢伙也太搞不清楚狀況了吧
如何寫C++跟如何執行C++程式完全不相干
自己沒看懂的文也敢貼,怪不得會有很多人對這位 奶xxx醬 有意見

BTW, 我認為以一位管理者的身份也不該取這種名字

Friday, June 6, 2008

IME切換會送WM_DESTROY

怪不得會有神秘bug出現
更神奇的是沒有使用者認為這是個bug (我沒收到任何相關的回報)

基本上沒人回報的bug,或是使用上的問題
如果對我沒影響,通常我都裝死,當做沒發現過

Bnet看到的地圖推廣法

game name放上地圖名,再加上下載點 (叫人去ESM下載)
autorefresh + WC3Banlist /nodl on
網路頻寬不夠的人想出的辦法吧?

Wednesday, June 4, 2008

ggc 2.3 mdata.ggz 密碼

既然2.4都出了,這東西也不用保留了
我只給答案,解法自己嘗試吧
給方法就沒解題的樂趣了

xC&V3s9vaUSmc@s

ggc 2.4

esm寫過的部份不重複
http://tw.gg-game.com/forum/read.php?tid=182871

game execute 只能設war3.exe了,如果把檔名改war3.exe可以騙過ggc,但是不能用
變成一定要從ggc裡面啟動war3
這次網路的機制做了修改,會在War3加入War3Hook.dll (Garena Socket)
如果不用ggc,可以把war3關掉重開,才可以清除War3Hook.dll