雑草わんだほー

That's so wonderful♪

シャドウバース16連勝A0昇格ビショップ

最近ちまちまシャドウバースを遊んでます。

2014年春頃、元ネタのハースストーン……というかハンターの「飢えたハゲタカ」コンボにハマっていたのですが、久々に再開しようとしたら当然のように大幅弱体化されていたので意気消沈し、シャドウバースに流れてきた次第です。

ハンター在りし日の勇姿……

f:id:moroha_y:20160807002605p:plain f:id:moroha_y:20160807002555p:plain

ともあれ大量ドローで一発逆転は、カードゲームのロマン! そんな素敵なカードがシャドウバースにもないかなと探したらありました、ビショップの「ダークオファリング」です。

f:id:moroha_y:20160807004635p:plain

決まれば、盤面と引き替えに手札と体力の爆アド! ……ではあるのですが、展開が遅いビショップには使い所がかなり限られるようで、すぐデッキから外れる次第となりましたorz

でも、これも何かの縁とカウントダウンビショップをメインに据え、B2-3ランクで16連勝を決め、

f:id:moroha_y:20160807002016j:plain

そのあとデッキ弄りすぎて迷走しましたが、A0ランクに\昇格しました/

f:id:moroha_y:20160807010431p:plain

今のデッキはこんな感じです。とりあえずA0で4勝1敗なので、まだ上がれそう……?

f:id:moroha_y:20160807010740p:plain

現環境では、ビショップと言えばコントロールですが、私はミッドレンジ好きなので「テミスの審判」も「サタン」も外しました。「テミスの審判」は入れてなくても、勝手に警戒してくれるのでお得です(ぇ)

本当はできるだけカウントダウンアミュレットを主軸に据えたかったのですが、調整するにつれ減っていく哀しさ……。どうしてもアグロの存在が、序盤にカウントダウンまくスロースタートを許してくれないので、死なない程度にカウントダウン添えながら、終盤で回復して逃げきりフィニッシュを狙う流れです。

それにしても、カウントダウンアミュレット使っていて強く感じるのは、盤面の狭さですね。フォロワーとアミュレット合わせて5つしか並べられないのは、なかなかに厳しい。「祈りの集約」とか、ぱっと見は盤面爆アドなのですが……。まぁ単純に盤面広くすると、ロイヤルがさらにエグいことになりそうなので、難しいところです。

f:id:moroha_y:20160807020416p:plain

そんなわけでビショップ固有のカウントダウンが活かしきれない現状は何とももどかしいですが、まぁビショップ自体は我らが最強のハゲ鉄槌の僧侶」がいるかぎり戦っていけるはずなので、カードプールが増えるのを待つとしましょう……!

C++11のムーブは関数呼び出しのたびに明示する必要がある

先日、C++11のムーブセマンティクスを知って、パフォーマンスセルフチューニング狂のC++らしい新機能だと、少し感動していたりしていました。
それで利用を強いられている手元の古いコンパイラでも対応しているを確かめて、早速うっきうっきでコードを書きはじめたら、そこ右辺値参照効いてないよって突っこまれたので、実験してみたところ関数を通した型の扱いが普通の左辺値参照とは違うのですね。ポインタ渡しも含めて比較してみると、こういうこと(のはず)です。

ポインタ渡し 左辺値参照渡し 右辺値参照渡し
関数に渡す変数 T* T T&&
関数の引数宣言 T* T& T&&
関数内の扱い  T* T T


わぁややこしい。
手元で実験したなんちゃってコードはこちら。

#include<iostream>
#include<utility>

class foo {
public:
    void operator=(const foo& other) {
        std::cout << "lvalue" << std::endl;
    }
    void operator=(foo&& other) {
        std::cout << "rvalue" << std::endl;    
    }
};

static void func(foo&& arg){
    foo temp;
    temp = arg; // move するためには temp = std::move(arg) とfoo&&に再変換しなくてはならない
}

int main () {
    foo test;
    func(std::move(test)); // 標準出力にrvalueを出力するつもりがlvalueが出力されてしまう
    
    return 0;
}

[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ


Wikipediaにも解説がありました。

安全上の理由から、右辺値参照として宣言された名前つきの変数をそのまま右辺値として関数に渡すことはできない(そのような変数は左辺値となる)。std::move() を明示的に呼び出すことで、この制限を回避できる。

bool is_r_value(int&&) { return true; }
bool is_r_value(const int&) { return false; }
 
void test(int&& i)
{
  is_r_value(i); // false
  is_r_value(std::move(i)); // true
}
C++11 - Wikipedia


ええと、C++のマルチパラダイムな貪欲さ自体は素晴しいと思うんですけどね。文法の美しさだけが致命的に(以下略
ムーブセマンティクスなにそれ美味しいの?な方には以下のリンクを順に読んでいくことをお勧めします。

C++0x 標準ライブラリ完全解説 〜 No.02 std::move, <utility> - 野良C++erの雑記帳
move semanticsについて - joynote break;
std::vector::operator= - cppreference.com

ScalaでN-gramを一行で

重い腰を上げてScala触ってます。ということでN-gramなる簡単なテキスト処理を書いてみましたの巻。

  • おもむろにScalaのREPLを立ち上げて、お気に入りのページから元データを読み込みます。エッセイ巧いなぁ……。

店にねこ入ってきて疲れたしようじょも入ってきた - 24時間残念営業

val source = scala.io.Source.fromURL("http://lkhjkljkljdkljl.hatenablog.com/entry/2013/07/01/190816", "UTF-8")
  • 行ごとに読んでList[String]にします。BufferedSourceをcloseしなきゃなので、ここまではノーカン。。。
val lines = try source.getLines.toList finally source.close
  • 適当に日本語用の前処理してN-gramします。お、折り返して見えるかもだけど、改行してないから一行ったら一行!
lines.map(_.filter(_.toString.getBytes.length > 1)).flatMap(_.split(Array('、', '。', ' '))).flatMap(_.sliding(5).toList).groupBy(identity).mapValues(_.size).toSeq.sortWith(_._2 < _._2).filter(_._2 > 4).foreach(println)

(ようじょも,5)
(なりました,5)
(入ってきて,5)
(ねこ入って,6)
(女子小学生,6)
(こ入ってき,6)
(入ってきた,10)

    ∧,,∧   。・。゚・。 ゚・。゚・ N-gramできたよ〜
   ( ´・ω・)つ\_______/
広告を非表示にする

蒼穹のスカイガレオン『第2弾 インダス 輪廻転生』ガチャ回し

ホントに第2弾きたーーー!(マテ)
ということで、さっそくブロンズチケット2500枚分回して集計。

枚数 確率 種類
C 193 77.2% 18/18
UC 046 16.4% 18/18
R 009 03.6% 07/19
SR 002 00.8% 02/15 ☆ラクシュミ ☆ウルスラグナ
250 45/70

ま、まぁ2週間ちょっとで溜めた分ですし、こんなものですかね……。アプサラちゃん17枚(6.8%)もお迎えしたよ!
しっかしSRって15種類もあるのかよインダスやべぇ。と思って第1弾見たら、C/UC/R/SR比率同じでした。SRコンプはとうてい望まないとしても、それなりには揃えたいなぁ課金することを強いられているのかと、ぐぬぬすること数分。
そうですこのゲームには進化合成というシステムがあるのでした。ということで持てあましていたシルバーコインなど投入し、R5枚とSR3枚(☆サラスヴァティ ☆インドラ ☆ヴィシャヌ)作って、アルバム種類53/70となりました。うむ。



ひとまずRとかSRの能力流し見した程度ですが、これは環境がらっと変わりそうですね。色塗り、サーチ、性別行動……。あと使える低コストがぐっと増えた気がします。これからどういう系統のデッキが出てくるのかまだ想像つきませんが、とりあえずサラスヴァティが第一弾のAGゲーに終止符を打ってくれそうな気はしました。さてどれから育てますかねー。

蒼穹のスカイガレオン『第1弾 オリンポス 覇王覚醒』デッキ晒し

かつて初代カードヒーローにハマって以来、「いつでもさくっと遊べる戦略的なカードゲームがやりたいよぉ…でもリアルではカード高そうだし相手見つけるの面倒だしネットは切断されたら台無しだよふぇぇ…」な私にとって、iPhone/Android蒼穹のスカイガレオンは一目惚れに近く、これが私の『顧客が本当に必要だったもの』なのでしたハッピーエンド!という感じだったのですよね。

そんなわけで某中堅ユニオンの微課金やってます。限界突破なにそれおいしいの?
6月26日には第2弾が来て環境がガラッと変わる――はずなので、今使ってるメインデッキを晒してみたり。

カオス&ハデス+系

  • 理想的な勝利パターン
    • 1ターン:アポロンの支援を受けたカオス&ハデス+で相手のATダウン。
    • 2ターン:黒3枚が落とされないように癒しの黒風、カオス&ハデス+で敵何枚かのATを0に。
    • 3ターン:そろそろアポロン&アフラマズダが落とされる。ATダウンの仕事が完了したカオス&ハデス+は前進して攻撃に参加。
    • 4ターン:ハデス+の隠れ兜が発動して、生き残った黒3枚が攻撃無効状態に。
    • 5ターン:アルテミスの連続矢が発動して、即死2枚。さらにカオスの混沌の渦で全体ロック。
    • 6ターン:残っている敵を通常攻撃で着実に殲滅。
  • 敗戦傾向
    • ATダウンにもたつくと死ぬ。
    • 耐久回復な裁きデッキはATダウンの効果が薄くて、だいたい死ぬ。
    • 同コンセプトデッキとあたると、ATダウンされる前のAT基準でATダウンできる先攻が圧倒的に有利。
  • 改善ポイント
    • 黒威光的には赤いアポロンが不純。ただ中列ATアップ仕込んでおかないことには現環境きのこる先生。
    • 持ってないけどSRアフラマズダが係数成長次第では代替になるのかも。空いた4コスには無難に玄武でも入れとく?

クロノス&アルテミス+系


  • 理想的な勝利パターン
    • 1ターン:クロノス&アルテミス+のAGアップで確実な速攻体制を作り、アポロンの支援を受けた青龍アテナ+で全体攻撃。
    • 2ターン:同上。ささやかながら地味に効く前列ATダウンの仕事をした九尾の狐+が落とされる。
    • 3ターン:クロノス&アルテミス+が前列シフトして、確実な総攻撃体制。と同時に、復活の祈りによって後列で九尾の狐+が\大復活/ 死ぬことにより2ターン終了時のAGアップ効果切れ判定を免れているので、最速で中列クロノスに反射を貼る。ATアップしまくって全体攻撃とかしてくる相手を返り討ち。
  • 敗戦傾向
    • AGリセットされると死ぬ。そうです玄武&ヘスティア系です。
    • 九尾の狐+を1or2ターンで落としてくれないと復活の祈りが無駄になって、だいたい死ぬ。
  • 改善ポイント
    • いずれ前進するつもりとはいえ、AG操作に10コス費やすのはやり過ぎな希ガス
    • 九尾の狐+の反射対象となるクロノスが4ターン以降に生き残りやすいものの、前列クロノスは上下固定突進なので、オーラ発動するまで目の前の敵に一方的に殴られる哀しい展開に。
    • クロノスの代わりになる後列5コスが見つからなかった。持ってないけどガイアとか良いのかも?

第1弾雑感

アポロン依存がひどいw 国家対戦の対戦相手見てても、SRとSR+合わせると体感で9割方入ってる気がする。初ターンでアポロンのクリティカルでるかでないかで勝負が決まることもわりと……。
とくにアポロン&ゼウスorオデュッセウス&赤加護あたりのAT爆上げデッキには、最後まで対策が取れませんでした。第2弾ではATリセットか中列薙ぎなカードの充実を期待したいところ。ぐぬぬ
あとは青威光デッキと裁きデッキ組みそこねたのが心残り。育ててないですが、アジダハーカ+一点突破デッキもロマンあって好きです。尖ったコンセプトの方が勝っても負けても楽しいですからねぇ。

かがみこわい

最近になって自覚したのですが、どうも私は鏡で自分の顔を見ることが苦手みたいです。
容貌がどうとかいう話ではなく鏡をじっと見つめること自体がこわい。いや鏡に恐れなり畏れを抱くとか何時の時代の人間だよ、魔とか神の力でも宿っているのかよ、というわけで理由を考えてみたところ以下の二つが思いあたりました。

  1. ふだんは自分の表情を3DCGのワイヤーフレームのように認識しているものの、鏡を見るとテクスチャまで貼られているものだから、認識の齟齬が生じる。
  2. 自分を見つめる自分を意識してしまうことにより、再帰呼び出しが無限ループで以下略。

うん、たぶん両方ともですね。腑に落ちたので一安心。

広告を非表示にする

もう巡り会うことはない親友との忘れたくない旅

仮面を被って、音の響かせ方を知って。
初めは、その遠い人影を砂漠の蜃気楼かと思いました。なぜなら私とまったく同じ姿をしていましたからね。
でも私が右半分の仕事を終えると、その人は左半分の仕事を終えたようで、合流して同じ方向に進みはじめました。なるほど、砂の流れに見取れて失念していましたが、これは仮想世界での旅でした。つまりその人は、創造主が使わした私の良き相棒のようです。
それにしても、よく出来ていますね。付かず離れずの距離を保ちながら、追い越し追い越され共に進んでゆきます。どうやら最近の人工知能は、人間らしい揺らぎを備えるに至ったようです。なんともなしに音を響かせると、ときどき応えてくれますしね。
そうして坂道を気持ちよく滑走して風になってみて、ふと振り返ると相棒は視界から消えていました。もしかしたら先行しすぎてしまったのかもしれません。仕方ないですね、時間を稼いで待っててあげましょう。おおっ、慣性と摩擦のバランスが良い具合で、蛇行するのも中々楽し……。あれ、前方で音が響いています。しょうないことに夢中になっているうちに抜かれてしまったようです。「ここにいるよ、早くおいで」と、そんなことを言っているような気がしました。うん、本当によく出来ています。
それからというもの私の心には、だんだんと信頼感が芽生えてきました。ぶっちゃけ相棒の後ろをついていくだけで、どんどん先の風景に進んでいけます。この世界の創造主は、ちょっと親切すぎる気がしますよ。あ、なんか恐そうなのが登場してきました。びっくりした私は後ずさりしてしまいます。でも大丈夫、どんな時だって相棒の真似をすれば……。あれ、一緒に逃げ惑って、あれあれ、なんか二人してやられてしまいました。そっか、そう簡単にはいきませんよね。タイミングを見計らって走りだし合図をすると、相棒はおろおろしながらも私の後ろをついてきてくれました。今度は大丈夫そうです、ふぅ。
それからも息を合わせて手分け作業をしたり、交互に仕掛けを解いていったりして。いつしか向かい風は強くなり、並べた肩も触れあうくらいの近さで寄り添いながら歩んでいきます。でも私は視界の端に弱々しいのを見つけたので、気付いてなさそうな相棒を置いて道を外れ、音を鳴らしてそいつを奮いたたせました。でもすぐにふらふらと弱ってしまうから、また奮いたたせます。分かっていますとも、こういう本筋とは関係ないことを達成することで、創造主から賞賛を得られるのです。でも、そんな小賢しい読みは勘違いのようでした。だったらもうこの弱々しいのに用はありません。さっさと道に戻って旅の続きを、……と思いきや、相棒はそいつの横で必死に音を響かせていました。すでに諦めてしまった私の呼びかけも無視して。ああ、もしかすると、この無口な相棒は――


それが私にとって。その人が特別になった瞬間でした。
だから、二時間にも満たなかった巡礼の旅をできるだけ覚えておきたいと、その人の名を知った最後に思ったから。旅と同じだけの時間を掛けて記憶を辿りつつ、この文章を書いています。


PS3オンライン配信 : 風ノ旅ビト (Journey)

            • -


万人に勧められるゲームというものが、本当に存在するのならば。それは『Flowery』を措いて他にないと思っています。
とくに私は、ずっと奉じていた価値観が崩れさるような挫折にあるときにプレイしましたので、すいぶんと救われたところがありました。蔑ろにしていた心の大切なところが再生していくようで。だからthatgamecompanyの新作には期待していて、でもオンライン要素があると知ったときはちょっとがっかりしました。思いかえせば『DJMAX ONLINE』では一人部屋に引き籠もり、『デモンズソウル』で侵入メッセージがでるたびに大慌てし、友達に頼みこんで『Portal2』の協力プレイをオフライン画面分割するような私は、どうせ恩恵を受けないのだろうと。でも、それは悔しいからPSNサインアウトして遊ぼうかと、そんなふうにまで考えていたのですね。
まぁそんなことはすっかり忘れていたわけですが、それで正解でした。電子的な連絡手段が発達して、そう簡単には音信不通にならないこの時代に、これほど濃密な一期一会の体験を味わうことがあるなんて、思ってもいませんでした。この「親友」トロフィーは、ずっと大切にします。
ありがとう、さようなら。

初音ミク=ネットワーク

 君に伝えたいことが
 君に届けたいことが 
 たくさんの点は線になって
 全て繋げてく どこにだって

『Tell Your World』歌詞


二次元の点と線によって像を結ばれ、三次元のワイヤーフレームによって構築される彼女。
猥雑に彩られた有象無象を背負って、ノイズ混じりの世界観を表現する彼女。
世に出て五年に満たないながら、大勢の人々に使い親しまれててきた音声合成ソフトウェアのパッケージキャラクターは、ここに一つの神話として謳われたのだと形容せざるをえません。



可愛らしい3Dモデルが、遍くクリエーターの日常に分解されるように。
彼女を成す点は私たちのことで、私たちの心を繋いでいく線は作品のことで。その一つ一つは素晴しいものばかりではなくて、拙いものも下らないものも沢山あるのかもしれないけれど。初音ミクという共通の夢を見ているネットワークは、こんなにも美しいのですよね。
願わくば、この宇宙がもっともっと広がっていきますように。

            • -


Chrome CMの時は出遅れたので、今回の『Tell Your World』MVこそは褒め称えたい一心なのですけれど。(起床してYoutubeのリンク踏んでから、まだ一時間経ってないw)
いや本当に、わかむらP凄まじい。技術力もさることながら構成力が半端なくて、そのうえ合わせるべき音を完璧にキメてくるので、エンドルフィンに\溺死しろ/ってなもんですよ。とくに02:15~02:41のラッシュが、すぱーんって黄色い稲妻が、ですね。パーフェクトスターでパーフェクトスタイル過ぎて、もうどうすればいいのこれ。
あとPlexus(動画編集ソフトAfterEffectsプラグイン)、こうやって使うんですね。なるほど。

想い出の美化としてのアレンジ

ゲーム曲のアレンジが大好きです。公式/同人/ネット問わず。
これまで一番聴いたのはWAVEの『AVALON』でしょうか。今は『クリスマス・コレクションズ music from SQUARE ENIX』がマイブームです。
これらのアレンジを聴くとき私は音楽的な本質以外にも色々と読みとっているようで、だから幾重にも絡まった文脈に酔いしれるわけなのですけれど。それはどういうことなのかなと考えてみたところ、あぁこれは想い出の美化なのだなと思い当たりました。


もともとプレイしたことのあるゲーム曲というのは感慨深いもので、それはプレイ体験の想い出がそこに封じこめられているからです。恋人と一緒に通ったカフェでよく流れていた曲は特別、なんていうのと同じですね。これはもちろんアニメ/ドラマ/映画などの劇伴についても同じで、音楽には物語を閉じこめる力があります。
そして往々にして私は、原曲よりもアレンジを気に入ってしまって。体験と直接結びついているのは原曲のはずなのに、アレンジの方が輝いているように感じられて。なぜなら記憶の定着とともに美化されていく想い出を反映しているのは、アレンジの方だからなのですよね。さらに云うならば、そこに込められているのは私自身ではなくアレンジャーによる美化ですから、他人の物語解釈に触れることができるということで、それは物語世界を豊かにする行為です。
ですので作り手からすれば、うまくアレンジを提供していくことで受け手の想い出に干渉できる、すなわち過去作のブランディングに繋がりそうで、そういうことを『Love SQ』を始めとするSQ MUSICシリーズはやろうとしているのかなとか考えました。

Structure Synth 1.5 チートシート

文脈自由3DCGソフトStructure SynthJavaレンダラSunflowで遊びはじめました。
リファレンス整理して自分用のチートシート作ったので、貼っておきます。

◇Actions◇

set maxdepth   [int] : 再帰回数の上限
set maxobjects [int] : オブジェクト数の上限
set minsize  [float] : オブジェクトの最小長 
set maxsize  [float] : オブジェクトの最大長

set seed initial : ランダムシード初期化
set seed [int]   : ランダムシード指定

set colorpool  [scheme] : randomhue _ randomrgb _ greyscale _ image:[file] _ list:[color],*n
set background [color]  : 背景色指定


◇Rule modifiers◇

md / maxdepth [int]          : 再帰回数の上限
md / maxdepth [int] > [rule] : 再帰回数の上限を迎えると投げる

w / weight [float] : 確率重み付け(指定しなければ1)


◇Transformations◇

x  [float] _ y  [float] _ z  [float] : 移動
s  [float] _ s  [float]*3            : リサイズ
fx         _ fy         _ fz         : 反転
rx [float] _ ry [float] _ rz [float] : 回転
m  [float]*9                         : 3×3回転行列

h / hue        [float] : 色相 (0~360)
    sat        [float] : 彩度 (0~1)
b / brightness [float] : 明度 (0~1)
a / alpha      [float] : アルファ (0~1)

color random          : 色乱択
color [color]         : 色指定
blend [color] [float] : 色合成 (0~1)


◇Primitives◇

box _ grid _ sphere _ line _ point _ mesh

triangle : 例 > triangle[0,0,0;1,0,0;0.5,0.5,0.5]


◇Preprocessor commands◇

#define [name] [value]                          : 変数定義
#define [name] [value] ([type]:[value]-[value]) : 変数定義(スライダー付き)