アドベントカレンダー初参加です。
はじめに
先日Vim 8.2がリリースされましたね。
早速ビルドしました。
Vim 8.2はポップアップウィンドウの実装とテキストプロパティこの二つが大きな新機能のようです。
www.vim.orgを見られた方なら気付いた方もいるかもしれませんが、KillersheepというVimプラグインがGitHubにアップロードされました。
開発はBram Moolenaar...つまりVimの開発者です。
Killersheepとは
Vim 8.2の新機能を使ったシューティングゲーム、と認識しています。
使われている新機能は以下の3つです。
詳細はヘルプを参照してください。
1. 音源再生機能 :h sound_playevent
2. ポップアップウィンドウ :h popup
3. テキストプロパティ :h textprop
インストール
Killersheepは普通のVim script製プラグインですので、プラグインマネージャ等にvim/killersheep
を登録することでインストールは終わります。README.md
によると動作の条件はVim 8.2
とのことですが、一部の8.1系でも動作します。ソースコードを見ると8.1.1705以降で動作するようです。
プレイする
インストールが正常に終わっているならば、:Kill
でプレイができます。
もし他のプラグインとコマンドが競合しているのなら:KillKillKill
コマンドも使えます。コマンド名が物騒ですね
動作に必要な条件を記しておくと、+textprop
でコンパイルされていること。
ターミナルが45行以上あること。です。
ところで、音がなります。気をつけましょう。
プレイ中の画像
キー | 操作 |
---|---|
x | ゲームの終了 |
s | ゲームの開始 |
h,l | 自機の移動 |
Space | 弾の発射 |
ソースコードを読んで
羊から出ている何かは羊さんビームのような生易しいものではなく普通にpoopでした。
私はVim scriptの知識がほとんどないので申し訳ないのですが、中で出てくる羊ちゃんやウ●コ、自機や弾は皆ポップアップウィンドウのようです。色付けはテキストプロパティを用いているのでしょうか。
昔のvimゲームプラグインはバッファを直接書き換えているよう?なのですが、こちらはポップアップウィンドウを使っています。新しい手法が増えたのでしょうか。
終わりに
このようなことができるようになったのはたくさんの人の作業があったからなんだろうなと思いました。自分も何かしら貢献できるようにしたいです。