10年ぶりぐらいにMTGに復帰するかと思って、M15のプレリリース大会に行ってきた。地元じゃ12日にしかやってなかったが、大学時代からの友人から13日にもやってる店舗があるという事で誘われたので、急遽秋葉原のアメニティドリームへ。
フォーマットはM15のシールドで、参加時に選んだ色のプロモカード入りのパック1つ+残り5パックでの構築になった。俺は予約してなかったこともあり人気の黒なんかは無くなっていて、2/2先制攻撃で止まるプロモカードの入っている緑のパックを選ぶことになった。そんでそっから出てきたプールがこれ。
プールは悪くないどころか結構強いのではないかと思う。ただ除去とフィニッシャーが各色に散らばっているため2色だと若干手数が足りない気がしたので、メイン1色にタッチ2色かなあと思って、組んだのは以下の白青緑。
よくよく見たら3マナ域が物足りないプールだったので、じゃあ地上がっちりから召集でデカブツ出して、そのまま押しきるか膠着状態からアンブロッカブルと飛行で殴ればいいかなというプラン。いや10年ぶりなんで雑に殴るプランしか思いつかんかった。以下、スイスドロー5回戦の簡単な試合結果。
というわけで1-4で負け越し。その後別のデッキに組み替えて一緒に行った仲間と遊んでみたら、屍食いカラスに+1/+1カウンター乗せまくって勝ったりした。というわけで結果から言えばこれは構築ミスであった。並べて召集という戦略と回避能力持ちを生きているトーテム像などで強化という戦略は間違っていなかったと思うが、序盤の盤面が弱すぎてフィニッシャーが来ても相手が盤面整えすぎててどうにもならんというのが多かった。進化する未開地とかあるのに事故が多めだったのもあれだったが、事故らなかったマッチも落としているからな。逆にブン回ると圧倒的に相手を蹂躙できたので、召集でマナカーブ無視する戦略と緑中心の構築は悪くなかったのではないか。ただ均等三色に近くなったのはちょっと冒険だったか。あと1枚マナサポートか軽量ドローがあれば安定したかもしれない。
以下は使って、あるいは使われて強かったカード。
事後にいろいろ判った事としてては
というところから、以下のパターンのうち黒緑タッチ青をメインにして相手によって組み替えるのが良かったのかもしれない。
あと草タイタン入れとけば寛大な拷問者でアドバンテージ取られなかったなあと。
そんでまあ復帰したとはいえ時間とかあんまないので、まあカジュアルにやっていこうかと。下の環境はまず無理だし。
なんか検索したら大会やってたんで、松戸のホビーステーションのM15のシールドに行ってきた。参加者13人でスイスドロー4回戦。
カードプールは以下。
青と白に強烈過ぎるエンドカードがあるが、4マナが貧弱でそもそも生物が足りてない。ちょっと整理するとこんな感じ。括弧内はクリーチャー数で、トークン生成スペルはクリーチャーにカウント。0マナは1マナにカウント。
| マナ | 白 | 青 | 黒 | 赤 | 緑 | 他 | 合計 |
|---|---|---|---|---|---|---|---|
| 1 | 1(1) | 2(0) | 0 | 1(0) | 0 | 3(0) | 6(2) |
| 2 | 6(5) | 2(2) | 1(1) | 4(1) | 4(1) | 2(1) | 19(11) |
| 3 | 3(3) | 7(3) | 4(1) | 4(4) | 5(2) | 2(0) | 26(13) |
| 4 | 1(1) | 2(2) | 0 | 3(2) | 1(0) | 0 | 7(5) |
| 5 | 3(1) | 2(1) | 5(2) | 1(0) | 2(1) | 0 | 13(5) |
| 6 | 3(3) | 1(1) | 1(0) | 1(0) | 1(1) | 1(1) | 8(6) |
| 7 | 0 | 0 | 1(0) | 0 | 3(2) | 0 | 3(2) |
| 8 | 0 | 1(1) | 0 | 0 | 0 | 0 | 1(1) |
| 合計 | 17(14) | 17(10) | 12(4) | 14(8) | 16(7) | 8(2) | 84(45) |
赤の3マナ生物は2体壁なのでそこは考慮する必要がある。こうしてみると青白以外はクリーチャーの選択肢が乏しい。赤は壁ばかりあっても仕方ないし(シールドなんで飛行持ちがそこそこいるわけで)、緑は重すぎ、黒は生物がマジでいない。なので青白は確定、タッチするにしてもせいぜい赤のオーラをいれるか、さもなくば緑で帰化系かというところ。どっちにしろ事故率上げるだけかもしれなかったので採用せず。
最大の問題は4マナ域の薄さで、ここをどうにかして誤魔化す必要がある。幸いM15は召集がキーワード能力として採用されているので、一つ二つ程度上のマナ域のカードを召集前提で考える事で乗りきれる。はず。ちなみに俺のシールド戦の基本的な考え方は、rizer's answerで提唱されている「まずはミッドレンジ」に思いっきり影響を受けている。
そんなこんなで出来上がったのがこれ。
研究助手と予言で掘るのと重いカードがあるのとで土地18の41枚デッキ。光波の護法印か窮地の主か嵐潮のリバイアサンで大雑把に勝つか、飛行生物のいない相手の頭上をグリフィンとトークンと師範のサポートで殴るかというところ。青の貧弱な生物も、師範の+1/+1修正と飛行付与で2点クロックになる。そして6マナスペルのうち2枚は召集前提で4マナにカウントしたので、クリーチャーのマナカーブ的には。2マナ5枚、3マナ5枚、4マナ4枚、5マナ2枚、6マナ以上2枚と悪くない形ではないかと。まあ、パワー低めで線が細いんだが。
が、結果としては構築ミスだった。清められた突撃は一部のアタッカーに依存する戦略に噛み合っていないし、暴君の機械は起動マナが確保しにくい。束縛スリヴァーは少々重い。全部抜いて硬化2枚入れて、土地1枚とクリーチャーを交換すべきだったかもしれん。ってかヘリオッドの巡礼者で持ってこれるじゃん。除去がタッパー2枚と霊気渦竜巻という擬似除去3枚だけじゃキツい。あとやっぱ雲散霧消も入れるべきだったかな。シールドはドラフトよりもさらに遅い上に相手も爆弾レア持ってる事を前提にすべきなので、そこケアできる雲散霧消は入れても良かった。
以下は戦績。
というわけで2-2の5位。硬化入れておけば相手のクロック止まって護法印か窮地の主かリバイアサンで勝てたゲームもあったように思える。プレイミスやマリガン判断ミスもあったが、構築が不味かった。
あとはまあ、研究助手抜いて白の殴れる生物入れた方が良かったか。オレスコスの速爪に護法印付けば5点クロック×4ターンで勝てるわけだし。
10年ぶりにMTGに復帰して思うのは、なんというか昔はクリーチャーが弱くて呪文が強かったんだけど、徐々に呪文が弱体化されて行って(丁度俺が離れたオデッセイ〜オンスロートあたりか?)、それでクリーチャーの質が上がったんで昔とはクリーチャー主体のデッキとクリーチャーが少ないデッキの数が逆転してる感じ。まあこれは昔の方がバランス的にダメだったんだろう。
MTGは初期から4つのカテゴリが不当に強くて、それは土地破壊、手札破壊、ドロー、カウンター。各種の確定除去や赤の火力も強かったが、剣を鍬にと稲妻がブッチギリで強かったぐらいじゃないかな。で、それらの内土地破壊は露天鉱床がはるか昔に禁止制限され、俺はSinkholeのない時代にMTGを始められたことを幸運に思っている。手札破壊も精神錯乱が禁止制限を喰らっていて(何故か持ってたけど)、Hymn to Tourachは気の狂ったカード満載のレガシーでしか使えない。最序盤から土地を落とせるのはやはりマズいようだ。今では土地破壊デッキはかなり冷遇されていて、それに準ずるマナ拘束デッキもあまりないようだ。手札破壊は「情報的アドバンテージを取れるがテンポを失う」「カードアドバンテージを取れるがテンポを失う」の2種類に分かれている模様。
そんな中でドローは嘘か真かや蓄積した知識のようなドローが長く作られており、カウンターも対抗呪文が8版で落ちるまでは全体的にかなりのスペックだった。最近のカードを見るに、無条件での確定カウンターは3マナで青マナ2つ、不確定カウンターや条件付きカウンターは1〜2マナといった調整のようだ。軽くて無条件の確定カウンター呪文というのは要するにあらゆるカードにテンポを取れるわけで、今が適正かどうかはわからないが、少なくとも昔は適正ではなかったように感じる。
そういや「日本人が青が好き」という俗説があるが、単純に日本でMTGが広がり出したころには上記の不当に強いカテゴリのうち手札破壊と土地破壊が調整されていて、単純に残った不当に強いカテゴリを最大限に生かせる青が流行っていたというだけではなかろうか。確か日本語版のMTGが販売されたのは96年ぐらいで、そっから1年で露天鉱床が制限カードに入ってカウンターポストが作られて……という印象が俺よりも前の世代の人たちには強くて、それが延々と都市伝説みたいに受け継がれてたんじゃないかなあと。
とりあえずJavaFX回りの仕事は俺の手を離れてはいるのだが、今でもちょっと手伝う事があるので、JavaFXのパフォーマンスチューニング関連のメモを書いておく。今まで書いてきたことの繰り返しになる部分もあるが、まあまとめておくという事で。
4K2Kみたいな高解像度のアプリケーションを作る場合(そこまで行かずともMacBook Pro Retina見ると現実的に2K2Kぐらいはありうる)、VRAMの容量に注意すること。もしも何枚もキャンバスでレイヤーを重ねるような場合、VRAMが不足する可能性がある。VRAMの容量をオーバーした場合、NullPointerExceptionがJavaFXのかなり低レイヤーな部分で発生する。確かNGRegionを生成するところでコケるはず。
そうでなくともVRAMの容量不足でSystem.gc()が呼ばれてしまい、パフォーマンスが落ちてしまう事がある。その場合はVRAMの容量を増やすことで改善する可能性があり、それにはprism.maxvramで指定する。もしもGCのログを取って不審な動きがあったら、この値をデフォルトの256MBから増やすと解決するかもしれない。
JavaFXのパフォーマンスログは、-Djavafx.pulseLogger=trueと指定することで標準出力に吐き出される。吐き出される情報の詳細は以下の通り。ざっとコードを読んで解析しただけなんで、パフォーマンス的に重要でない部分は適当。
欠落している情報があったりイマイチ挙動のわからん部分が多いが、まあこの辺で概ね挙動とボトルネックはわかる。ただし、高負荷なアプリケーションをフルスクリーンにしたり、サブウィンドウを出したりしてるとPulseLoggerが死ぬので、その辺はまあPerformanceTrackerを使って気合で乗り切ること。
同時に描写するNodeの数に比例してパフォーマンスは加速度的に悪くなっていくので、そこがチューニングポイントになる。最悪、イベントを拾わないノードは全部キャンバスに描くという方法もある。
「キャンバスが重い」という人は多分、ノード数があまり多くないアプリケーションを作っているのだろう。先に書いた通り、業務によっては数万単位のノードがユーザの操作の度に描画されるケースがあるので、その場合に全部ノードでやってたらパフォーマンス的に破滅する。一方であらかじめ全部画像として作っておいてそれを張り付けて動かすみたいな場合、キャンバスはむしろパフォーマンスの足手まといになったりする。(再描画の時に全部描き直すので。)
とはいえ、ノードの数を減らすのが正攻法になる。setVisible(false)を指定したノードは描画処理の対象ではなくなるので、上手く利用するといいかもしれない。あとノードの大量生成は凄まじく時間がかかる。Sceneと関連付けられたノードの操作はJavaFXアプリケーションスレッドでしか行えないが、そうでなければ別スレッドで行えるはずなので、それを利用して遅延初期化をしていくのも手の一つと思われる。