Vimでできる脱出系パズルゲーム

この記事はVim Advent Calendar 2012の184日目の記事です。
183日目はLinda_ppさんによる一時ウィンドウを手軽に出し入れできる tmpwin.vim を作ったでした。

Vimでできる脱出系パズルゲームのvim-duzzleを作ったのでご紹介します。 タイトルのゲームジャンル名はよくわからないので適当です(笑)。

はじめに

先日ポータル2というゲームをプレイしたのですが、あまりにも面白くて 自分も何かゲーム作りたいと思い、 ノリと勢いで作ったのが本ゲームです。 ポータル2は本題ではないので、紹介は記事の最後にしますが、ほんとうに面白いので 未プレイの方は是非プレイしてください。

なぜVimでゲームを作ったかと聞かれたらそこにVimがあったからとしか答えようがありません。。。

本ゲームはポータルにインスパイアされて作ったものですが、ゲーム内容はポータルとは何も関連がありません。

なお、このポータルというゲーム上の、ポータルという仕組みを某thincaさんがVimに持ち込もうとしています!!!
おそらく、そのうちVim Advent Calendarで記事を書かれると思うので、ポータルファンは楽しみ&必見ですね!

インストール方法

ただのVim pluginなので、他のVim pluginと同じようにインストールしてください。 NeoBundleをインストール済みであれば以下の様な感じで行けます。

NeoBundle 'deris/vim-duzzle'

もちろん、.vim(vimfiles)配下にコピペでも構いません。

開始方法

インストールしていれば、以下で開始出来ます。

:DuzzleStart

注意点として、ゲームの操作性のために独自キーマッピング (というかいろんなキーをつぶしたり設定しなおしたり)しています。

:(コマンドラインモードに移行)も使えないようにしているため、ゲーム終了には:bd!を 割り当てたQを使うしかなかったりします。

また、本ゲームは今日やっと動いた程度のできたてホヤホヤのαバージョンです。 極力作業用Vimとは別で、ゲーム用にVimを立ち上げることをおすすめします。

ゲーム実行中に問題があって、編集中のファイルが飛んでしまっても、 一切責任を取れませんのでご注意ください。

(まぁ、Vimならswapファイル作るようにしておけば万が一のことがあっても 回復出来ますけどね:help swap)

何か問題があれば本記事にコメントいただけると助かります。
(特に色々キーマップを設定されている方は弊害がある可能性が高いです。)

ゲーム内容

簡単に説明すると、与えられたVimコマンドを使って閉じ込められた部屋から出口(g)まで たどり着くゲームです。

やっていただくのが一番手っ取り早いと思います。

イメージは以下のGIFアニメーションをご覧ください。

画像

本ゲームの目的は、各部屋ごとに与えられたVimコマンドを 使って閉じ込められた部屋から脱出する(gまでたどり着く)ことです。 各部屋で与えられたVimコマンド以外は使えません。 一応キーマッピングで無効化して使えないようにしていますが、簡単な無効化しかしていないので 頑張れば、他のコマンドを使うことが出来るかもしれません。 ただ、ゲーム性が皆無になるのでおすすめしません。
(そういうハックを楽しむことが目的のゲームではありませんw)

キーを無効化する都合上、:も使えないようになっています。 なので、ゲームを終了したい場合は、Qを押下してください。

現状はVim標準コマンドだけですが、モチベーションが続けば、 そのうちゲームの拡張でVimとは関係ないコマンドも用意するつもりです。

ゲームカスタマイズ

本ゲームは自分でパズルを追加するようカスタマイズ出来るようになっています。 ゲーム内で使えるVimコマンドは、現在用意されているものしか使えませんが 同じようなパズルなら作れます。

autoload/duzzle以下にあるファイルを見ればなんとなく ゲームの追加方法がわかると思います。

追加用の関数は以下のように引数2つで呼び出します。

call duzzle#add_puzzle(
  \ '実験名(拡張ごとにパズルセットに名前を付けられるようにしています。)',
  \ {'パズルの情報を辞書形式で(詳細は実際のファイル参照)'}
  \ )

興味がある方は是非作ってみてください。 pull requestもお待ちしております。

別プラグインを作って、そのautoload/duzzle配下に同じようにファイルを配置することでも可能にしていますが、まだ動かないかもしれません。

おまけ

Vimでできる他のゲームの紹介

Lingrでmanga_osyoさんに教えていただくまで知らなかったのですが、実は Vimで出来るゲームは結構あります。
紹介記事は以下の様な物があります。

Vimで動くゲーム
3D in Vim

私はテトリスくらいしか知りませんでした。

正直どれもレベルが高いです。 興味があればプレイしてみると息抜きになっていいかもしれません。

ポータル2について

冒頭でもお話しましたが、少しだけポータル2の話をします。

ポータル2は、ポータルというゲームの続編でWikipediaによると アクションパズルゲームとあります。 初期のポータルはもともとオレンジパックという5本セットのゲームの1つだったんですが、 人気のためか?後日単品で発売されたという経緯があります。 そのゲームの続編がポータル2です。

Wikipedia:ポータル
Wikipedia:ポータル2

ゲームの肝はポータルという穴をうまく使ってゲームをクリアしていくことです。 説明が難しいのでWikipediaから抜粋します。

プレイヤーは「壁に向かって撃つと穴(ポータル)ができ、もう一つの穴の方へ移動できるポータル銃」を使い、様々な仕掛けをポータル銃で突破しながら出口へ向かう。ポータルを作れるのは金属製ではない床と壁と天井。ポータルを使って自分が移動するほか、スイッチを押すのに必要なキューブや、その他のものをポータルに入れて別の場所へ移動させる事も出来る。

なかなか、このゲームの面白さを説明するのは難しいのですが、 難しいステージ(ゲーム内ではチェンバー)をポータルをうまく使ってクリアした ときの感覚が爽快なのです。

ゲームをプレイした時の感想(イメージ)

  • 「おい、このチェンバーまじかよ。。。こんなんクリアできんのかよ」
  • 「あ!そういうことか!スゲー!マジスゲー!このゲーム考えた奴どういう頭してんだよ!」
  • 「ヒ、ヒエェ。。。(ゲームをやった事ある人ならどの場面か多分分かるはず)」

ポータルもポータル2も面白いので是非どちらともやって見ることをおすすめします。
(ちなみに個人的にはポータル2のほうが好きです。)

私はXBOX360版でやりましたが、PS3でもWindows,Macでもできます。
Windows,Mac版はセットのやつがお得っぽいです。

ポータル2 (価格改定版)

ポータル2 (価格改定版)

EA BEST HITS ポータル2

EA BEST HITS ポータル2

[価格改定]ポータル1&2パック【日本語版】

[価格改定]ポータル1&2パック【日本語版】

まとめ

以上がVimでできる脱出系パズルゲームについての記事でした。

本題とは関係ありませんが、Vimレベルが上がるのでvimrc読書会に参加することをおすすめします。毎週土曜日23時からやってます。

それではVim Advent Calendar 2012の184日目を終わります。

明日のVim Advent Calendar 2012はcohamaさんです。