Saturday, May 24, 2014

DOA Terminologies

招式詳細數據:http://blueviolet.ninja-web.net/game/doa5lr/per/kokoro2.htm

:遊戲中的時間單位。現在的格鬥遊戲如 DOA、鐵拳等都是每秒 60 幀的畫面,所以在 DOA 的遊戲中,一幀就是現實中的 1/60 秒。

幀數:幀數就是從指令輸入直到招式發揮作用所需的時間。幀數愈低的招式速度愈快,速度快的招式壓制速度慢的招式,比如霞的 P 壓制巴斯的 P。當雙方招式在同一幀對上時,結果會看招式判定。判定高的招勝出,判定相同雙方會同時受到攻擊。通常上端攻擊比中段判定高,中段比下段判定高,下段又大多可以閃避上段攻擊,形成一個循環相剋的關係。

格鬥遊戲中都有硬直時間(硬直幀數)的概念,可以理解為收招時間或破防後的恢復時間。比如你發一招對手防住了或是被擊中,雙方都會產生短暫的硬直,硬直時間內輸入指令是無效的。加幀優勢幀的意思就是比對方更快從硬直中恢復,減幀劣勢幀就是比對手更晚從硬直中恢復。

比如你發一個防禦 -3 幀的招數,就是說被對手防禦會比對方晚 3 幀從硬直中恢復,但遊戲裡沒有發生幀數小於 3 幀的招數,所以這一招即便被對手防禦住,也不會有被立刻反擊的危險,這種招數就叫安全技。再比如你發一個防禦 +3 幀的招數,這招被對手防禦住後你會比對方早 3 幀從硬直中恢復,這種招數就叫做加幀技搶幀技。加幀技被防禦住後,攻擊方可以自主選擇要繼續追擊或是防禦對方返技。

再比如你發一招,這一招是防禦 -10 幀,意思就是這招被對手防禦後,自己會比對方晚 10 幀從硬直中恢復,那麼,這時如果對手出一個發生幀數小於 10 幀的招數,你就必中,這就叫確返。確返又分確投確打。投確投需要 1 幀(比如某招防禦後你有 5 幀優勢幀,這時只有 4 幀投能確投,5 幀投不能確投),確打需要 2 幀。因此確返時使用投技是比較有利的。

收招幀:收招幀指的招式打空或是被對手防禦住時,己方的劣勢幀。例如防禦 -10 幀的招式收招幀為 10 幀。每個招數有一個發出的幀數,幀數小的壓制大的,但是它也同時具備一個收招幀,如果收招幀大於對手投技的幀數,那麼它收招的時候就可以被對手確投。

自己角色常用招數的幀數要瞭解清楚,包括發出幀和收招幀,攻擊後是減幀還是加幀等,有的招數被防禦住還是可以加幀,這類招數就可以多練。

多擇:多擇就是一個技能的後段攻擊。比如說こころ的最強大擇 3K,3K 可以演變為 3KP、3K4K、3KK、3K2P ,這就表示她 3K 後面那一個動作打的可能是上中下任意一個部位。

起身:起身是這個遊戲的一個重頭戲,起身有很多方式,包括側向翻滾,後向起身,原地站起,特殊起身等,底下一個個解釋:
  • 後向起身:優點是不會被踩,如果對方踩的話我們會獲得一個絕對優勢幀,可以確投。也不會被掃地攻擊打中。缺點是不能起身攻擊,被對方貼緊時,可能站起來後是劣勢幀被繼續追擊。
  • 側向翻滾:優點是可以躲避一些掃地的攻擊,也可以起身踢獲得反擊機會。缺點是類似瑞秋的踩踏等倒地小攻擊可能躲不掉。
  • 原地起身:優點是可以起身踢。但是以上有的缺點原地起身都有。
  • 特殊起身:很多角色都有特殊起身,優點是可以攻對手措手不及。缺點是對方防禦住後容易確投。

Monday, May 5, 2014

Type Erasure in Scala and Java

  • Martin Odersky tried to introduce generics to Java without modifying the JVM by translating away generics source-to-source. He and others reworked a Java compiler based on this technique; their works eventually evolved to JDK 1.5.
  • Generics in Scala and JDK 1.5 (and later) has to use type erasure, because JVM does not understand generic types―specification of Java bytecodes does not allow defining parameterized type of variables. Any modification to the bytecode to support reified generics would break backwards compatibility.
  • While it is possible for Scala to compile to bytecodes that support reified generics, this comes at the cost of giving up interoperability with Java classes and this is the last thing the designers of Scala would do. 
  • On the other hand, C# supposes generics from 2.0. It does not have to use erasure because .NET started to accommodate generics since then. 

References

1. http://lampwww.epfl.ch/~emir/bqbase/2006/10/16/erasure.html
2. http://code.stephenmorley.org/articles/java-generics-type-erasure/