#untitled note

私的な考えとかメモ、その他トラブルシュート

Touch Keyboard and Handwriting Panel Serviceが稼動状態の時ストVがアプリ落ちする

Steam版ストVでネット対戦をしているといきなりアプリごと落ちた。

切断は今まで一度もしたことがなかったが、意図せず切断してしまった結果結構厳しいペナルティがあるようで、LPが-500された。

それが2回続いて流石にキレた結果、どうもアプリのバグではなく他の依存関係にありそうだと思って調べた。

続きを読む

Ruby on Railsで外部キー作れなかった理由わかった

一つ前のエントリでmigrationでforeignkeyが適用されない理由がわからないって書いてたけど、やっとわかった。

 

unote.hatenablog.com

 

SQLiteサポートされてない…

あらゆる使い方説明のページでSQLiteはサポートされてないよってページは2件ぐらいしかなかった。

2.5 外部キーのサポート

マイグレーションDSLで外部キーの追加・削除がサポートされました。今後は外部キーもschema.rbダンプされます。現時点では、外部キーがサポートされるのはmysqlmysql2、およびpostgresqlアダプタのみです。

Ruby on Rails 4.2 リリースノート | Rails ガイド

 

MySQLにして解決

qiita.com

 

さあやっていくぞ

ruby on rails難しい

退職して時間が有り余っている(真っ当に就職活動をしていないとも言う)ので、学生の頃にちょっとかじっていたプログラミングをもう一度やってみようと思い、楽しいと噂のRuby on Railsを勉強している。

 

今かなり困っているのは、どうやってもmigrationで外部キー制約を追加できないこと。

環境はcloud9にforeignerを追加してこれをそのままやってみたけど、.shemaでテーブル確認しても全くFOREIGNとかない。

b.pyar.bz

一体何が間違っているのかまるでわからんまま既に18時間ぐらいTry&Errorしている。

誰かヒント教えて…

なんとなく思いつきでダイアリーからブログに移行した

移行しました。
ダイアリーの方は自分で作ったCSSを前提にしたエントリだったからちょっと見にくいかもしれない。
何で移行したのかって言うと、完全に何も考えずに「移行してみよう」と思ってやった。

Call of Duty InfiniteWarfare(CoD:IW)が起動できなかった原因がわかった

CoD:IWをSteamで購入して起動したところ、何故かゲーム画面が表示されず、全くプレイ出来ずに居た。

Steamのフォーラムでnot launchとかで検索しても解決してないか、症状が違うか、大抵がアンチウイルスソフトの問題じゃないか、という話で終始していたが、そのどれもが違う。

いくらググってもあまりにも情報が無いので1週間ぐらい放置していたのだが、やっぱり情報が出てこないのでキレて原因を追い詰めた。

そのおかげでゲーム画面を全く見てないのにプレイ時間が既に1時間もある。



症状

  • 起動してもスプラッシュスクリーンが表示されずゲーム画面・音が全く無く、何も表示されない。
  • バックグラウンドプロセスにiw7_ship.exeは存在するが、タスクバーにCoD:IWが存在しない。
  • タスクマネージャから強制終了は可能。
  • 起動する度にCoD:IWのインストール先フォルダに__iw7_ship(拡張子なし)という謎ファイルが出来ていた。
  • 起動するとビープ音(メッセージボックスが表示された音)がする。
今考えると下2つはおそらく現象発生時にプロセス強制終了したことによるセーフモード起動の為のフラグファイルと、セーフモードで起動するか否かを聞いてくるメッセージボックスだったようだ。

試したこと

  • ゲームキャッシュの整合性を確認(2回試した):意味なかった
  • ゲームデータの削除→再インストール(2回試した):意味なかった
  • アンチウィルスソフト(Avira AntivirusPro))のスキャン除外設定(2回試した):意味なかった*1
  • アンチウィルスソフト(Avrira AntivirusPro)のReal-Time Protectionの停止(2回試した):意味なかった
  • マルチディスプレイ→シングルディスプレイへの変更:意味なかった
  • ディスプレイ解像度の変更(1920x1080→1280x1024):意味なかった
  • 片っ端からバックグラウンドプロセスの停止:意味あった

原因と詳細

先に結論を書いておくと、この現象はMacTypeサービスを自動起動している場合に発生する。
現象を回避するには、MacTypeを使わない・MacTypeを停止する・MacTypeのスタートアップ起動をやめて手動起動にする・MacTypeを互換性重視モードで起動する等すると発生しなくなる。

僕はMacTypeをサービスモードで起動するように指定していた為発生していたようだ。
これはサービス(services.msc)にMacTypeサービスを自動起動として登録してくれるが、このWindows起動時のスタートアップ起動の時だけこの現象が発生していた。
詳細は以下。

検証したMacTypeのVersion : 1.2016.904.0*2
一応検証のために他の起動モードでも試してみたが、結果が意外すぎた。そもそもMacTypeが適用されないケースが多すぎる。MacTypeが適用されないケースは馬鹿らしくなってCoD:IWの起動まで試していない。

モード 現象
レジストリモード そもそもMacTypeが適用されない。
MacTrayロード(独立モード/管理者権限あり) そもそもMacTypeが適用されない。
MacTrayロード(互換性重視モード/管理者権限あり) そもそもMacTypeが適用されない
サービスモード MacTypeが適用されるがCoD:IWが起動できない。一度停止してサービスを手動で開始すると、CoD:IWが起動できる*3
MacTrayロード(独立モード/管理者権限なし) MacTypeが適用されるがCoD:IWも起動できない。停止すると起動できる。停止→起動の後にCoD:IWを起動した場合はCoD:IWは起動できない。
MacTrayロード(互換性重視モード/管理者権限なし) MacTypeが適用され、停止しなくてもCoD:IWも起動できる。

※重要なのは、Windowsを起動してスタートアップでMacTypeがどういう状態で起動したか?ということのようなので、例えばMacTrayロード(独立モード/管理者権限無し)→MacTrayロード(互換性重視/管理者権限なし)に設定変更したところでCoD:IWは起動できない。MacTypeを再起動するか、PCの再起動が必要になる。

なお、MacTypeの設定でプロセス除外を指定できるが、除外指定しても意味は無かった。
(そもそもMacTypeはiw7_ship.exeに対して起動してなかったし、念のため除外設定をした後に試したが現象は発生した)

実行環境(おまけ)

必要スペックは満たしている。

環境 詳細 備考
OS Windows10 64bit クリーンインストールしたもの*4
CPU i7-4790 3.6GHz オーバークロックしてない
メモリ 16GB -
VRAM GTX970 4G =3.5G!
Steamインストール先 Cドライブ 十分な空き容量のあるSSD
CoD:IW install先 Fドライブ 十分な空き容量のあるSSD

*1:結果的に意味はなかったのだがやったことは書いておくと、Real-TimeProtectionとSystem Scannerの除外にCoD:IWのフォルダを指定した。除外設定を解除しても起動出来ているのでAviraの場合は起動を阻害しない。

*2:ここのものを使用https://github.com/snowie2000/mactype/releases

*3:ただしCRITICAL PROCESS DIEDが発生しやすくなってるっぽい?関係ない?1度起きた

*4:過去にWindows10をクリーンインストールしても何かの環境ファイルがバグっててKindleの書籍ダウンロードがめちゃ重かったり(普通1分そこらが20分かかる)、AviraのWebProtectionが定期的に落ちてネットから切断される等起きて居たが、今回ののコイツはそんなことが一切起きていないPC

依頼の仕方

仕事でメールで依頼メールを受けたとき、いちいち困るので何かを依頼するときには以下の内容を含めて欲しい。
大体の依頼メールは「何をして欲しい」だけしか書かれていない。

本当はこういうものを入れて欲しい

  • 概要:何をしてほしい(したい)のか
  • 詳細:目的を達成させるための手段が指定されているならそれも書く。どのように?が必要。
  • 目的(理由):なぜそれをして欲しいのか。
    ただの注文とかなら要らないが、人に何か作業をお願いする場合には必ず入れて欲しい、これがあると無いでは納得感が全く違うし、優先度の判断基準にもなる。
    また、そういうことなら違うアプローチができるという提案もできたり、逆にこれは不要か?これは必要か?というのも想像できる。
    殆どの場合これがないから再質問の手間がかかる。
  • 結果の出し方:テキストでいいのか、ファイルがいいのか、フリーフォーマットなのか、欲しい事項は?アウトプットを指定する。
    これが無いと、お願いした結果想定した結果が出て来ず、やり直しになる。なんてことが発生する。絶対に必要。
  • 期限:ASAP、なるべく早くはNG、ちゃんと期限を切る。当日とか明日だけ書かずに日付と時間を書く。その上で、可能ならなるべく早く欲しい旨を書く
    先に述べた目的を書いてあれば期限設定に説得感がでる。
1行でまとめると、目的があって理由があって詳細がある、アウトプットは何でいつまでに必要。 以上、宜しくお願い致します。*1

*1:上の文章はこれに沿っているかどうか考えずに書いたがまあいいか

格ゲー(ストV)してる時に気をつけること

ウル4の頃はただただ好きに動かしていただけだったが*1、セービングやEXセビキャンと言った
要素がなくなって誤魔化せなくなってしまったので、いよいよまじめに格ゲーやろう。と思って頑張った結果
キャラの強さもあるけど、ララでどうにかプラチナになれたのでメモ。

なので、ここでの話はストVに限る話。

攻撃編

1.基本コンボを練習する

後述する要素で多分一番重要。調べれば大体出てくる。

http://sfv-wiki.com/wiki/%E3%83%AA%E3%83%A5%E3%82%A6



2.強い技を調べる

wikiに書いてあればよかったけど、書かれていない。

でももし強いと聞いたことがあるなら、それは以下のうちのどれかの理由で強い。

候補 それが強いとどうなる?
小技で発生が早い 攻撃をガードしてる時の割り込み(暴れ)に使える ネカリの5小P等小P、小Kの類
威力が高く隙が少ない 差し返されにくいので、その技をブンブン振り回す事ができる かりんの大K
当たればダウン・またはコンボまでいけるが、ガードされても反撃をもらいにくい その技をブンブン振り回す事ができる かりんの2大K、ナッシュのムーンサルト
攻撃判定が強い 地上対空技に使えたり、置きにバラまいておくと相手の攻撃を潰せる ケンの2中P、ナッシュの2中P



3.相手が何に対応できてないのか見極める

見極めるといっても大層なことではない。

連携・セットプレイ・起き攻め・着地攻め・ブッパ・中段等特定状況のあとのこの行動は対応できてないか?というのを1回やってみて、通れば永久にそれを繰り返すし、通らないなら対になる択を試す。



ここで重要なのは勝手に相手と読み合いをしないこと(先読みをしない)。相手がアンサーを見せてからこっちが再回答を出すことが重要。

通るなら一生それをやること。自分と読み合いをせず、相手と会話をすること。



4.相手の暴れの癖を見極める

見極めるといっても大層なことではない。大体以下に分類して勝手に自分で決めつける。

タイプ 対策
ずっとボタンを押してるタイプ(ずっと暴れてる) フレーム的に絶対に暴れを潰せる攻撃を重ねる。暴れたら駄目だというのをわからせる必要がある。
ジャンプで逃げようとするタイプ フレーム的に絶対にジャンプを潰せる攻撃を重ねる。ジャンプしたら駄目だというのをわからせる必要がある。
バクステで逃げようとするタイプ フレーム的に絶対にバクステを潰せる攻撃を重ねる。バクステしたら駄目だというのをわからせる必要がある。
ずっとしゃがみガードしてるタイプ 中段連携で攻める、投げる、または投げを誘って近づいて潰す(前ステ後即バクステとか)
ずっと立ちガードしてるタイプ 固めて長めの中足で攻める、ガードさせて有利の攻撃をガードさせて前ステして投げ・再度攻撃、投げる、または投げを誘って近づいて潰す(前ステ後即バクステとか)
特定の技を見てから暴れてるタイプ (あれば)それを潰せる攻撃を出す、その技をしばらく出さず他の技で意識を散らす
昇龍暴れ多めのタイプ 昇龍をすかせる連携を出す、ちょっとだけガードを入れて様子を見る
それ以外(純粋にゲームがうまいタイプ) 何を見て・どうガードしてるのかを見て行動を変える。難しい


ここで重要なのは、フレーム的に絶対に潰せるというのが超重要。暴れたら手痛いお仕置き待ってるけどまだ暴れるの?という的確なアンサーを返さないと相手はそれで攻撃をしのぎ続ける。

でもここに書いてあることをやると、オレの好きな(気持ちいい)攻めが出来ないな〜と思うんだけど、

実はこうして行くと、相手の行動を制限しているのと同じなので、だんだん相手の焦りとこちらの精神的優位から気持ちの良い攻めが出来るようになっていく。





防御編

1.確定を覚える

相手の必殺技をガードした時の一番痛い反撃を把握しておく。

通常攻撃をガードした時の確定はとりあえず後回しでもいい(大体2大K,2大Pには確定があるぐらい覚えておくと良い)



2.暴れどころを覚える(有利不利を理解する)

暴れに使う技はできるだけそのキャラの最速の技が良い。

基本は中攻撃以下をガードしたら手を出さない。なんか硬直が大きそうと思ったら最速の通常技をこすってみる。

最速の通常技は大体5小P、5小K、2小P、2小Kのいずれか。

より良いのは固められて困った行動に対して、その技が不利なのか、有利なのかを調べて行動を決めること。

フレームはググると出る。後の方でも少しだけ書く。



3.対空に使える通常技を調べる

昇龍拳を持ってるなら、一番良いのは昇龍拳だが、持ってないキャラは対空になる通常技を調べる。

全部の飛びをその技で潰せるというのはまず無いが、あるだけで全然違うので絶対に調べたほうが良い。

調べ方は普通にぐぐってもいいし、トレモでリュウにジャンプ大Kを覚えさせて、それに勝てる通常技を探すだけでも良い



この通常技はダメージが安くても全く問題ない。

例:ネカリの5小P、春麗の5小K、ララの5中P等



なぜダメージが安くても問題ないのかというと、相手の飛びを落とせるというのは以下のメリットが有るため。


  • 相手の攻めの機会を潰せる
    ジャンプ攻撃は非常に強力な行動で、当たれば最大コンボ、ガードされてもガードさせた側が有利に展開を進めることが出来る上、遠距離では近づきにくい相手でも一気に攻めることが出来るようになる。
    でも立ちコパン1発でその機会を潰せるならやらない手はない。
  • 執拗に飛びを落とし続けると相手が飛べなくなる
    相手のジャンプ攻撃を制限している状態になるということは今までジャンプ攻撃だけでどうにか飯食ってた相手は非常に困ることになる。
    強制的に地上戦に持ち込めるようになるので、ジャンプ攻撃ばかりしてくるような相手にはまず負けなくなる。
  • 小技で落とした後の着地攻めが出来る
    例に出したネカリ、春麗、ララ共に、ジャンプを地上対空で潰した後に前ステすることで表裏択+打撃重ねまたは投げ(コマ投げ)による着地攻めが出来るという非常に有利な状態になる。
    下手をすれば昇龍拳以上に大きなリターンを得ることが出来るチャンスを攻撃力30とかの小技から得ることが出来る可能性が生まれる。
4.手癖のジャンプ、暴れ、グラップ等をやめるように意識する。

幸いにしてストVは理不尽に見えない攻撃と言うのは少ない(結構ヤバそうなネタは徐々に出てきているが)

ならば、まずどっしりとしゃがみガードを固めて、相手の攻撃を見て、次のセクション5を実行したほうがいい。


5.起き攻め時、相手がなにで攻めたいのか傾向を掴む

こっちが攻撃するときに相手が何を対策できてないのか決めつけたのと同じように、相手はこちらが何に弱いのかを探っている。

あるいはお決まりの行動しかしないタイプがいる。

ではそれに対する対策は、手癖の行動をやめて、その傾向に対するアンサーをぶつけてやるしかない

タイプ 対策
投げスカさせてから攻めるタイプ 2中K,2大Kなどのリーチの長い下段で暴れる
投げ多めのタイプ (3F小技があれば)暴れる、グラップする
中段連携多めのタイプ 中段をガードして暴れる。中段ガード後は大体こちらの有利
打撃を重ね多めのタイプ ガード、中攻撃以上の攻撃をガード後にVリバーサル、相手の不利フレで暴れる
打撃重ね後、すぐ投げ多めのタイプ 2弱K等の早めかつちょっとだけリーチの長い攻撃で暴れる
特定状況の時の行動が毎回同じタイプ 昇龍ブッパ、スーパーアーマー技ぶっぱ、ガード安定等
昇龍読みのガードタイプ 何もしない



理屈編(フレームの話)

ガード時のフレーム

ストVはセービング等による誤魔化しが効かないゲームなので、有利・不利ぐらいは知っておいた方が良い。

本当に強くなろうと思ったら、どの技が何フレで〜と覚えた方が良いのかもしれないがそこまではしなくてもいい。

例外はいくつかあるが、大体こんな感じで覚えた。



弱攻撃はガードさせて有利が取れる。

中攻撃はガードさせて有利が取れる。

強攻撃はガードされると不利、確定がある。

レバー入れ攻撃は有利、不利がキャラによってバラバラ



あとはフレームアプリを見て、この技ガードした後に暴れたらダメなんだな。とか、

この後こっち微有利だから3F技擦ろうとか、そんな感じで理解した

これだけで不用意な暴れによる余計な被弾は格段に減った。



アプリは以下を使った。

VFrames - Google Play の Android アプリ
iPhoneは知らないけど、探せばあると思う。ググれば普通にWebページにも載ってる。


攻撃時のフレーム

攻撃時にもフレームを知っているのと知らないのでは大分差が出てくる。

例えばジャンプ攻撃を通した後、相手は近づかれたのでどうしても暴れたくなるとする。

結果暴れるが、暴れた時に「そこで暴れたらオレが勝つよ?」という連携を調べておくと強い。



僕はララ使いなのでララでしか説明出来ないが、例えば以下の例






Sが攻撃判定発生までのフレーム。
Aが攻撃判定の持続フレーム。
Rがよくわかんない。攻撃を外した時の隙?。
OnBlockがガードされた時の有利不利。OnHitが攻撃された時の有利不利。マイナスなら不利。


つまり、このs.LK(立ち小K)でガードさせた後、3F有利。その後s.MP(立ち中P)を出すと、
3F有利の状態から6F技を出すので、相手が4F技で暴れるとこちらが一方的に勝つ。
3F技で暴れようと、1Fでも遅れていればこちらが勝つ事になる。


この辺りの理屈、算数2勢の僕には慣れるまで意味がわからなかったのだが、これ書いててなんかそれっぽく理解できた。


○=発生までのフレーム(アプリ内のS)
●=ガードさせて稼いだ有利フレーム
▼=相手の動けない状態
A=攻撃判定

経過フレーム→ 1 2 3 4 5 6 7 8 9 10
5小Kを出す
5中Pを出す A
相手の暴れ4F小パン



5小Kで稼いだ有利フレームから5中Pを出すことで、相手の4Fまでの暴れなら確実に潰せるという連携だ。

じゃあガードしてればいいじゃんという話になるが、ララの場合5小Kからコマ投げに行ったりするので、そういった対になる連携を知っているとより有効になる



さて、最初にどの技が何フレで、等覚えなくていいと言ったが、こういった連携はフレームを覚えているというよりも、この連携なら潰せる、としか覚えてない。

フレームとにらめっこするのは、対策や強い連携を探す時だけで良い。とりあえずは。



ララ、おすすめです。

*1:PPは2500より上に上がったことはない