2016/03/04

東方シリーズクリア難易度一覧

ゲームネタです。

東方シリーズの難易度をまとめてみました。

難易度は10段階表記。
  • クリア目的でプレイ
  • バグマリ等のバグ利用はナシで
  • 中〜強機体を利用
  • だいたい自分の感覚

紅魔郷


タイトル 難易度グラフ
紅魔郷E ★☆☆☆☆☆☆☆☆☆
紅魔郷N ★★★☆☆☆☆☆☆☆
紅魔郷H ★★★★★☆☆☆☆☆
紅魔郷L ★★★★★★★★★☆
紅魔郷Ex ★★★★☆☆☆☆☆☆

Windows版第一弾。
ランダム弾が多く、パターン化が難しいです。
当たり判定が若干大きいこのゲームでは、運次第では詰むことも。スカーレットマイスタとかどうすればいいんや……。
また、残機が少なく、ボムを抱えると致命的なので、チキン作戦でいく必要があります。
弾幕量は少ないですが、安定させるのが見た目以上に難しい作品です。

妖々夢


タイトル 難易度グラフ
妖々夢E ★☆☆☆☆☆☆☆☆☆
妖々夢N ★★☆☆☆☆☆☆☆☆
妖々夢H ★★★★★☆☆☆☆☆
妖々夢L ★★★★★★★☆☆☆
妖々夢Ex ★★★☆☆☆☆☆☆☆
妖々夢Ph ★★★★☆☆☆☆☆☆

弾幕は濃いです。 しかし、固定弾だらけ。したがって、パターン化すると一気に楽になります。
「森羅結界」というサポートシステムも、一定時間被弾を無効化&弾を全消しというボム以上の強さで、苦手な弾幕を飛ばせるのも大きいですね。
全体的に弾幕が綺麗です……が、やっている間は見ている余裕がないです。

永夜抄


タイトル 難易度グラフ
永夜抄E ★☆☆☆☆☆☆☆☆☆
永夜抄N ★★☆☆☆☆☆☆☆☆
永夜抄H ★★★★☆☆☆☆☆☆
永夜抄L ★★★★★★★☆☆☆
永夜抄Ex ★★★★☆☆☆☆☆☆

システム的に喰らいボムがガンガン出るので、抱え落ちが少ないです。 弾幕難易度は高いものの、それを上回る自機の強さがポイント。
また、スペカを練習できるので苦手な弾幕のパターン作りが楽ちん。
差し引きすると難易度は低めに落ち着きます。遊べる機体が12と多く、おまけも充実していて楽しい!

風神録


タイトル 難易度グラフ
風神録E ★☆☆☆☆☆☆☆☆☆
風神録N ★★☆☆☆☆☆☆☆☆
風神録H ★★★★★☆☆☆☆☆
風神録L ★★★★★★★☆☆☆
風神録Ex ★★★☆☆☆☆☆☆☆

ボムゲー。 弾幕は濃いし速いし多いし、避けるのは大変です。特に4面は悪夢です。
ただし、ボムがパワーと共用で、やたらと強いです。 ボムを撃ったら倒した敵からボム分のパワー回収、なんてこともしょっちゅう。
無理に避けようとしないで、チキンボムしまくっているだけでもクリアにぐっと近づきます。
ラストスペルがすごく楽しいよ!

地霊殿


タイトル 難易度グラフ
地霊殿E ★★☆☆☆☆☆☆☆☆
地霊殿N ★★★★☆☆☆☆☆☆
地霊殿H ★★★★★★☆☆☆☆
地霊殿L ★★★★★★★★☆☆
地霊殿Ex ★★★★★☆☆☆☆☆

純粋に難しいです。濃い弾幕や初見殺し、ランダム弾など。 ノーマルですら他の作品のハードに匹敵する難易度。
ただし、スペルを取れば残機が出る仕様上、慣れると加速度的に楽になります。ノーマルに慣れる頃にはハードも圏内に入る感じですね。
5面までは難しいものの、ラスボスがそれほど強くないのが救い。6面到達時に残機0で、クリア時に残機2なんてことも。
飛び抜けた難易度の弾幕がないため、慣れると一番ノーボムやノーミスクリアしやすいと思います。

星蓮船


タイトル 難易度グラフ
星蓮船E ★★☆☆☆☆☆☆☆☆
星蓮船N ★★★☆☆☆☆☆☆☆
星蓮船H ★★★★★★★☆☆☆
星蓮船L ★★★★★★★★★★
星蓮船Ex ★★★☆☆☆☆☆☆☆

難しい! ノーマルまでは並〜やや難し目ですが、ハード以降は世界が変わります。
残機やボムを補充するためには弾幕に突っ込むという危険なプレイが必要なのに、ミスが命取りという矛盾。
リソース管理が命です。 ラスボスも強いのなんのって。6面到達時に残機5でもクリアの保証はありません。

神霊廟


タイトル 難易度グラフ
神霊廟E ★☆☆☆☆☆☆☆☆☆
神霊廟N ★★☆☆☆☆☆☆☆☆
神霊廟H ★★★★☆☆☆☆☆☆
神霊廟L ★★★★★★★☆☆☆
神霊廟Ex ★★★★★☆☆☆☆☆

前作までとは打って変わって弾幕はかなり易しいです。
アイテム補充をするためには上部に行く必要があるため、ミスには注意。 残機も少ないので、欲を出すとクリアできません。 「欲」がテーマの作品らしい仕様です。
本編は簡単ですが、エキストラは難しいです。

輝針城


タイトル 難易度グラフ
輝針城E ★★☆☆☆☆☆☆☆☆
輝針城N ★★★☆☆☆☆☆☆☆
輝針城H ★★★★★☆☆☆☆☆
輝針城L ★★★★★★★★☆☆
輝針城Ex ★★★★☆☆☆☆☆☆

今までに見たことのないような特殊弾幕が満載。 特にステージ5はプレイヤーの操作を妨害するため、慣れるまでは厄介。
このゲーム、アイテム回収が大事なので、アイテムを取るタイミングをパターン化すれば楽になります。
また、機体の性能差が激しいです。咲夜Bがむごいほど弱く、難易度が★2個は増えます。
魔理沙Bは別ゲーで、エキストラで残機MAXクリアなんてことができてしまいます。

紺珠伝


タイトル 難易度グラフ
紺珠伝E ★★★☆☆☆☆☆☆☆
紺珠伝N ★★★★☆☆☆☆☆☆
紺珠伝H ★★★★★★☆☆☆☆
紺珠伝L ★★★★★★★☆☆☆
紺珠伝Ex ★★★★★★★☆☆☆

レガシーモードが今までどおりの残機制になります。
高速ばらまき弾や精密弾、一歩間違えると詰む弾幕など、変態弾幕が飛び交います。疲れきったところに、針に糸を通すような避けを要求するZUNはドSです。
ただし、残機やボムが多いです。また、グレイズが残機アップに繋がる仕様上、高難易度のほうが余裕があり、ガンガン弾幕を飛ばせます。
一方、エキストラはパターン化がしにくく、密度、弾速ともに過去最高。鈴仙・早苗でのルナティックより霊夢・魔理沙のエキストラのほうがずっと難しく感じます。

まとめ 

弾幕難易度にかかわらず、残機が少ない作品ほど難しい気がします。凡ミスが許されないのが問題でしょう。たとえば、ノーミスノーボムを狙うならイージーですら恐怖の弾幕になるはずです。


エキストラは覚えゲーなので、ランダム弾が多いほど難しくなる傾向にあります。

msys2にif_lua付きのvimを

msys2でif_luaが有効になったvimを入れる方法について。
  • migwは2015-02-05版、vimは7.4.1416、luaは5.3.2で確認済み
  • if_luaを有効にする
  • huge版をインストールする

まずは必要なライブラリを入れます(toolchainに関しては入っていることが前提)。

pacman -S ncurses-devel libcrypt-devel gettext-devel

luaはpacmanでインストールするのではなく、公式サイトからソースコードをダウンロードして利用します。
make mingw
make install

これだけ。

vimはmingw環境ではなく、msys2環境でログインしてインストールします。

./configure \
    CFLAGS="-march=native -O3" \
    CPPFLAGS="-I/usr/include/ncursew" \
    --enable-fail-if-missing \
    --with-features=huge \
    --with-tlib=ncursesw \
    --enable-multibyte \
    --enable-perlinterp=yes \
    --enable-rubyinterp=dynamic \
    --enable-pythoninterp=dynamic \
    --enable-luainterp \
    --with-lua-prefix=/usr/local \
    --without-x \
    --disable-cscope \
    --disable-athena-check \
    --disable-carbon-check \
    --disable-motif-check \
    --disable-gtk2-check \
    --disable-nextaw-check \
    --disable-selinux \
    --disable-smack \
    --disable-darwin \
    --disable-mzschemeinterp \
    --disable-tclinterp \
    --disable-workshop \
    --disable-gpm \
    --disable-sysmouse \
    --disable-gui

ポイントは以下。
  • --enable-luainterp=dynamicは指定しない
  • --with-luajitとしない
  • --with-lua-prefixにluaのインストール先を指定
  • ネイティブ版のpythonやrubyを使うならdynamicを指定。msys2版を使うならyesにする
  • 必要なライブラリが見つからず、機能が無効化されることもあるので、configureの出力を確認。windows7+64bitの環境でCPPFLAGS="-I/usr/include/ncursesw"が必要だった
  • CFLAGS="-march=native -O3"は環境依存の最適化なのでお好みで
あとはじっくりことこと煮こむだけ。


2016/02/11

基本コマンド





今までは入出力を扱ってきました。
今回はよく使われるコマンドの解説をしていきます。

ディレクトリ移動

シェルでは現在地が重要です。
ファイルを操作する前に、現在どのディレクトリにいるかを確認する必要があります。

現在地を確認

pwd コマンドで現在地を確認できます。 print working directory の略です。

$ pwd
/home/user/Desktop
位置のことを単に パス とも言い、現在地のことを カレントパス と呼ぶことが多いです。

現在地を変更

cd コマンドでカレントパスを変更できます。

$ cd /home/user
$ pwd
/home/user
$ cd Document
/home/user/Document
cd での移動方法には2種類あります。
  1. 現在地からの移動ルートを指定する(相対パス)
  2. フルパスを指定する(絶対パス)
/ 以外から始まっている場合
相対パスです
/ から始まっている場合
2 の フルパスが指定されたものとして扱われます

ファイル一覧

カレントパスのファイル一覧を表示するのが ls コマンドです。 list の略です。 利用頻度が非常に高いコマンドです。
ls   # カレントパス内のファイルを表示
ls には多数のオプションがあります。 ただし、=ls= は外部コマンドであり、OSやバージョンによっては使えないオプションもあるので注意が必要です。

ls -1A                                    # ファイル名だけを1行1つで表示
ls -ACF -lh                               # ファイルの詳細を色付きで一覧表示
ls --color=auto --group-directories-first # GNU用のオプション。Linuxなど特定の環境で




ファイル操作

ファイルの操作といえば、「コピー・移動・削除」です。それぞれにコマンドが用意されています。

cp

ファイルのコピーを行うコマンドが cp です。 copy の略です。

cp file1 file2 # file1 をコピーして file2 を作成
ディレクトリもコピーできますが、オプションが必要です。
cp -r dir1 dir2 # dir1 を中身ごとコピーして dir2 を作成
1つ目の引数がファイルで、2つ目の引数がディレクトリだった場合、ディレクトリ内にコピーが作られます。
cp file dir # dir内に file というファイルが作られる

rm

ファイルの削除を行うコマンドが rm です。 remove の略です。

rm file # file の削除
削除されたファイルは元に戻せません。危険なコマンドなので事前に確認することもできます。
rm -i file # 削除前に本当に消していいかどうかの確認を行う
rm -I file # GNUやBSD系で使える。まとめて複数のファイルを削除するときだけ確認を行う
ディレクトリをまるごと削除する場合は -r オプションを指定します。
rm -r dir  # ディレクトリ内のファイルを含めて全削除

mv

ファイルの移動を行うコマンドが mv です。 move の略です。
ファイルの移動というのは「コピーしてから元のファイルを削除」するのと同じです。 したがって、 mvcprm を合わせたものと考えることもできます。

mv file1 file2 # file1 を file2 に移動
cp file1 file2 # file1 を file2 にコピー
rm file1       # file1 を削除
また、ファイルの移動とファイルのリネームは実質的に同じです。 したがって、 mv はリネームコマンドとも言えます。

mv before after # before を after に改名
オプションは cp とほぼ同じです。

mv file dir         # file を dir 内に移動
mv -r dir targetdir # dir ディレクトリと中身を targetdir 内に移動

2016/01/31

ニコニコ動画、おすすめNG設定

ニコニコ動画のNG設定です。
何を登録したらいいのか迷っている方は参考にしてみて下さい。

※気分の悪くなる単語が出てきます

  • 5万件のコメントから単語リストを作り、不快なコメントでのみ出現率が高いものを抽出
  • 不快かどうかは個人的な判断です
  • 「荒れる」ではなく「荒」のように短い文字で多くヒットさせる
  • 動詞は揺れが大きいため、なるべく名詞を登録すると吉
  • 見る動画の傾向によって柔軟に変更を。コメントの中で一番多かったのは弾幕なので
一般NGワード27個
NGワード 解説
コメ 不快なコメントを大量に防げる。巻き込まれるコメントも、動画と関係がない。
ガキ 餓鬼 直接的ではない分使いやすいのか、非常によく出てくる言葉。
学生 「中学生の集まりかよ」「小学生でここ見ている人挙手」。これも非常に多い。
カス ゴミ 罵倒するためによく付け加えられる。おかげで目印になる。
クソ 糞 「クソワロタ」なども消えるけど、別にいらんよね。
マジレス 「マジレスかこわるい」「マジレスキモイ」。
信者 厨 レッテル貼り。「ゆとり」は全然見なくなった。
下手 カタカナの「ヘタ」はだいたい「クソ」に続くので、「クソ」ではじける。
つまん つまら 「(動画が)つまんね」「(コメントが)つまらん」。
いら 「ここいらね」「歌詞いらん」など。「おまいら」も消える。
NG NG 「NG余裕でした」「NG推奨」。
「荒れてるな」「荒らし」「荒らすな」等。
「黙れ」、「黙って見ろ」、等。
てろ 「〜してろ」の形。他の命令形とは違い、圧倒的に罵倒文の中で使われる率が高い。
← ↑ ↓ 非常によく使われる。動画には関係のないコメント。「→」は見ない。
お前 これも動画には関係のないコメントに大量に出てくる言葉。
んこ ○んこ。「てんこ盛り」とか「おまわりさんこいつです」とかは犠牲になった。
残りを埋める候補
NGワード 解説
all 修飾コメントを全部白文字にする。「NGコマンド」で指定。お好みで。
/ 「/倍速」等存在しないコマンド。未だになくならない。
うぽ 「うぽつー」「うぽっつ」。序盤のコメントが読みにくい。
888 拍手。終盤のコメントが読みにくい、というか読めない。
自己顕示欲の発現を見なくて済む。無害なものも多いのでお好みで。
ks ks クズ 「カス」「ゴミ」に比べると少ないが、見たくないなら登録する。「ksk」が消える。
死ね 直球過ぎてあまり使われない。「市ね」「氏ね」「タヒね」などバリエーションが多く、登録にしくい。
アンチ にわか レッテル貼りだけど、大きなコンテンツ以外には現れない。
あまり意味のなさそうなワード
NGワード 解説
時報 邪魔だけど遭遇頻度は少ない。他のワードに割きたいところ。
うざ ウザ 罵倒の意味で使われることは少ない。使われるとしても「下コメうざい」のように主語が入る。「ブラウザ」が消える。
飽き 「飽きない」がほとんど。
ゆとり 一時期に比べ全然見なくなった。ゆとり世代はとっくに大人。
ども 「ガキども」「クズども」など、他の中傷単語と一緒に使われるので、主語の方を登録する。
幼稚 「幼稚なコメ」のようにだいたい「コメ」が入る。

2016/01/08

bashとzshのオプション設定7 - コマンドと入出力


コマンドと入出力に関する設定です。

注意点

  • シェルのバージョンによっては存在しなかったり動作が異なるオプションがあります
  • マニュアルを元に実験した結果を載せています。ご利用は自己責任で!

オプション

zsh

aliases(default on)
エイリアスを使う。
clobber(default on)
リダイレクトでファイルの内容を削除したり、新しいファイルを作ることを許可する。
correct
コマンドに「もしかして」を使う。
correct_all
コマンド以外にも「もしかして」を使う。
run-helpなどでも確認が入るため、正直邪魔。
dvorak
Dvorak配列のキーボード用向けに「もしかして」のアルゴリズムを調整。
flow_control(default on)
C-sC-qキーによるフロー制御を有効にする。
邪魔くさい。
ignore_eof
EOFを無視し。C-d(linux)やC-z(windows)で終了しない。
interactive_comments
インタラクティブシェルでもスクリプトのようにコメントを書けるようにする。
履歴にコメントを埋め込んで検索キーにすると便利。
マルチバイトオプション付きでコンパイルされていたら日本語も大丈夫。
POSIX、ksh互換なのでぜひ。
hash_cmds(default on)
コマンドをハッシュテーブルに加える。
offだと毎回パス検索が入ってしまう。
correctがonの場合は挙動が変化する。
hash_dirs(default on)
コマンドをハッシュテーブルに加えるときにディレクトリ名も付加する。
hash_cmdscorrectがonの場合は何もしない。
hash_executables_only
ハッシュテーブルに加えられたコマンドが本当に実行可能かどうかチェックする。
有効にすべきかどうかは試行錯誤して決めてくれとのこと。
ファイル数が多いため時間がかかる(初回のみ)。
windowsでは死ぬほど遅い。
mail_warning
メールが2回以上チェックされたら警告。
path_dirs
パス付きのコマンドもパス内から検索する。
X11/xinitと指定したら/usr/local/bin/X11/xinitもチェックされるということ。
path_script(default on)
zshコマンドからスクリプトを実行する際、カレントディレクトリを自動指定する。
とのことだけどoffにしても挙動が変わっている気がしない。
onはPOSIXやksh互換なのでそのままにしておこう。
print_eight_bit
8ビット文字を文字として表示する。
問題なく表示できているならむしろonにしてはいけない。
print_exit_value
コマンド終了時、終了コードとPIDを出力する。
終了コードはプロンプトにも表示できる。行を節約できるのでそうしたほうがいい。
rc_quotes
''と書けばシングルクォート内でシングルクォートを利用可能にする。
しかし、デフォルトでも\'が使える。
rm_star_silent
rm *rm path/*で警告を出さない
POSIXやkshでも出ないのでzshのこの機能に依存していると危険。
rm_star_wait
rm *rm path/*を実行時に10秒間待ってやる。
short_loops(default on)
短縮形式のforrepeatselectifコマンドを許可する。
csh用のwhile; list; end形式は使わない
sun_keyboard_hack
バッククォートで行が終わっている場合、単体で現れているなら無視する。
キーボードが小さくて誤爆してしまうようなときに使うらしい。

bash

checkhash
ハッシュテーブルにあるコマンド名が実際に存在するかどうかをチェックする。
offのときはコマンドが見つからないと言われる。
onのときはパスサーチして探しに行く。
windowsでは死ぬほど遅い。
expand_aliases(default on)
エイリアスを使う。
インタラクティブシェルでしか展開されないので、スクリプト内では明示的に有効に。
interactive_comments(default on)
インタラクティブシェルでもスクリプトのようにコメントを書けるようにする。
mailwarn
メールが2回以上チェックされたら警告。

設定例

zsh

setopt correct
setopt interactive_comments
unsetopt flow_control
unsetopt rm_star_silent
Ctrl+Rで検索しやすいようにinteractive_commentsを有効化してあります。フロー制御はまず使わないのでoffで。rmに関する設定は、シェルが変わっても同じように動くようにしておいたほうが安全だと思います。alias rm='rm -i'みたいなのはかえって危険かと。

bash


.bashrc:
なし

.inputrc:
なし

デフォルトの設定を利用します。設定ファイルでは大丈夫ですが、シェルスクリプトではexpand_aliasesが有効にならないことに注意してください。

2016/01/06

pandocが日本語改行に対応した件

テキストコンバータpandocのversion1.16でeast_asian_line_breaksという拡張機能が追加されました。

これは今まで、
こんにち
は
という文字列をhtmlに変換すると、
こんにち は
という空白が含まれてしまっていたのが、
こんにちは
と日本語文字列の区切りを認識して余計な空白を削除してくれる機能です。

HTMLの規格上、改行が強制的に空行になってしまうのは仕方ないのですが(英語圏発祥だしね)、変換時に調整してくれるのはありがたい!

使い方は以下のように入力フォーマットにeast_asian_line_breaksを付けるだけです。

pandoc -f markdown+east_asian_line_breaks -t html5 -i test.md -o test.html

2015/12/30

Linux Mintにruby2.2を入れてみる

Linux Mintにruby2.2を入れてみた時のメモ。
ubuntuでも一緒のはずです。

debian提供パッケージのrubyは1.9.1系列と非常に古いです。
2.0もありますが、せっかくだから最新版を入れてみます。

幸いなことにppaがあるので、追加するだけでインストールが可能です。
sudo add-apt-repository ppa:brightbox/ruby-ng
sudo apt-get update
sudo apt-get upgrade

んで、ruby2.2をインストールすればいいのですが、ほかツールとの兼ね合いが面倒です。

私はvimをソースコードからコンパイルしているので、if_rubyのために開発パッケージが必要です。
ということでruby2.2-devを含めます。
sudo apt-get install ruby2.2 ruby2.2-dev

しかし、単にインストールしただけでは、古いままのrubyが呼びだされてしまいます。
$ ruby --version
ruby 1.9.3p551 (2014-11-13) [i686-linux] Brightbox

ということで、update-alternativesでリンクパスを指定します。
マニュアルのほか、erbやirbもリンクの設定が必要です(ほかにもありそう)。
sudo update-alternatives \
  --install /usr/bin/ruby ruby /usr/bin/ruby1.9.1  5 \
  --slave /usr/share/man/man1/ruby.1.gz ruby.1.gz /usr/share/man/man1/ruby1.9.1.1.gz
  --slave /usr/bin/irb irb /usr/bin/irb1.9.1 \
  --slave /usr/bin/erb erb /usr/bin/erb1.9.1
sudo update-alternatives \
  --install /usr/bin/ruby ruby /usr/bin/ruby2.2    20 \
  --slave /usr/share/man/man1/ruby.1.gz ruby.1.gz /usr/share/man/man1/ruby2.2.1.gz
  --slave /usr/bin/irb irb /usr/bin/irb2.2 \
  --slave /usr/bin/erb erb /usr/bin/erb2.2

sudo update-alternatives --auto ruby

これで、
$ ruby --version
ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-linux-gnu]

うまくいきました。

また、gemによるパッケージも更新します。
sudo gem update
sudo gem install rubocop nokogiri

ここまできて、vim+Syntastic+rubocopでエラーが発生することに気づきました。
理由は、以下の警告。
$ rubocop --version
warning: parser/current is loading parser/ruby22, which recognizes
warning: 2.2.3-compliant syntax, but you are running 2.2.4.
warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
0.35.1

警告が出るとバージョン文字列をチェックできず、Sytasticが動作を停止してしまいす。
ということで、付け焼き刃ながら、警告を捨てることにします。
要するに、
$ rubocop --version 2>/dev/null
0.35.1
となればいいわけです。

Syntasticのソースを編集します。
checker.vim137行目付近の --version--version 2>/dev/null にして警告をポイ。
diff --git a/plugin/syntastic/checker.vim b/plugin/syntastic/checker.vim
index 6569da6..4539538 100644
--- a/plugin/syntastic/checker.vim
+++ b/plugin/syntastic/checker.vim
@@ -137,7 +137,7 @@ endfunction " }}}2
 
 function! g:SyntasticChecker.getVersion(...) abort " {{{2
     if !exists('self._version')
-        let command = a:0 ? a:1 : self.getExecEscaped() . ' --version'
+        let command = a:0 ? a:1 : self.getExecEscaped() . ' --version 2>/dev/null'
         let version_output = syntastic#util#system(command)
         call self.log('getVersion: ' . string(command) . ': ' .
             \ string(split(version_output, "\n", 1)) .

よし、警告も消えた!
なかなか面倒な作業でしたが、無事にruby2.2を使えるようになりました。