2012-01-02
■[徒然]書き殴り
ついったーでぶつぶつ言ってたら気分が盛り上がってきたのでまとめて書き散らす。
コミケ終わっていくつかシューティング買ってきて遊んでいて、自分は弾遅い弾幕とか複雑な操作のゲームが苦手だなと再認識したわけだ。
弾遅いのが苦手なのは、CAVEシューとか弾速めのSTGばかり遊んでいるうちにそれに適応して自機を見なくなったから。弾が速いものは自機の周りを広く見て弾道予測して避けるというのが基本で、普通は弾の密度低かったり方向がまとまってたりするので当たらないスペースに余裕があり、予測誤差があまり問題にならない。弾が遅いものは弾の密度が高かったりいろいろな方向から飛んできたりするので当たらないスペースが狭く、正確に弾の軌道を把握しないとならない。そのため自機を、ひいては自機当たり判定を睨みながら避けることになる。そういうわけで弾速いのと遅いのとでは求められる能力がだいぶ違うのであるまる
複雑な操作が得意な人というのはそもそもいるのか不思議なところ。複雑なシステム、複雑な操作を扱いこなせば俺SUGEEE感が出るから採用するのだろうが。操作が複雑で、かつそれを使いこなせないとまともに遊べないゲームというのは言うまでもなく敷居が高い。その敷居を越えさせるためには何度もプレイして慣れてもらう他ないが、まともに遊べないゲームを遊ぶのは基本的に苦痛である。基本的に、とつけたのはまともに遊べない中でも少しずつ先に進めるようになっていて、かつ進むごとにプレイヤーを魅了できれば慣れの過程も楽しいからである。複雑な操作を求めるゲームを作るのであれば、最初は何も分からなくてもなんとか遊べるようにし、そこから段階的に慣れていけるようにするのがよいのだろう。
2011-09-19
■[徒然]現状報告
何かの慣習みたいな感じで、自分にとってはもはや区切りでもないんだけど区切りがついた気分なので久しぶりに日記を。そんなことなくとも、もっと更新するべきなのかもしれないけれど。
現在開発中のものは3+1本。
一つ目は「紅白弾合戦3」。 地味にシリーズっぽいナンバリングタイトルになってきている。斑鳩のco-opプレイをちょっといじったら対戦ゲーにならないか、という発想で作り始めた対戦ゲー。大体のベースは斑鳩で、どうシステムを調整していくかが鍵。狙撃と連射という現代っ子が失ったものを要求するものにするつもり。進捗状況は20%ぐらい。
二つ目は「Cyber Fighter」。U-20プロコンに出そうと思って作り始めたけど、結局やる気やら何やら足りなくて間に合わなかった。こちらはシューティングを知らない人でも楽しめるような、破壊の楽しさを重視した易しめのゲームにするつもり。あと無駄に全編3D描画。システム自体は概ね書き上がっているんだけど、肝心な破壊の演出を全然書いていないので進捗状況は50%ぐらい。
三つ目は「M」。ただ弾幕を避けるだけのゲームで、STGの被虐的楽しみだけを取り出したので"M"。現代っ子向きな弾速遅めな弾幕をたくさん作って20秒ぐらい1プレイで詰め込む予定。作りがシンプルなので今月13日に作り始めて既にほぼ完成状態。あとは適当にいじって見栄えを良くしたらただひたすら弾幕を書きまくるだけ。ここ数年弾遅い弾幕を書けない体になっているのが懸念点か。
そしてもうひとつ。そんなにバラしていいのかなー、ということであまりバラさないことにする。終りと始まりの作品。
みんな完成期限は大体2ヶ月後なので結構余裕がある。
あとなんかHaskellを勉強するとかAndroid開発を勉強するとか3Dモデリング勉強するとか小説書くとか言う話が出ているらしい。
satsumaimo
2011/09/20 01:26
大味でもよければ何かに曲をつけさせて欲しいです。
2011-06-24 インストーラーの作り方
■[XNA][リリース]
ClickOnceインストーラー作るのに結構苦戦したのでメモ。使った環境はVisual Studio 2010 Pro + XNA Game Studio 4.0だけど新しめのVSだったら大体同じはず。
XNA使ってゲームを作ったのだけど、ランタイムのインストール難易度が高かったのでClickOnce使ってインストールできるようにしたかったのがそもそものきっかけ。
まず特に何も設定をいじらずにプロジェクトのプロパティの発行タブから発行をやったら、自作スクリプトのコードがインストーラーのパッケージに含まれなかった。そこでコンテンツとしてスクリプトフォルダを入れて、各スクリプトファイルのプロパティを「ビルドアクション なし」「出力ディレクトリに 新しい場合はコピーする」に設定してビルドしたらちゃんとContentsディレクトリ内にスクリプトが入って、発行をやっても問題なくできた。
そこで次の問題が浮上。XNA標準だとXBoxのコントローラー(それも使いにくい公式ドライバ)だけしか対応していなかったので、SlimDXというライブラリを通じてDirectInputを使用する自作ライブラリを作ってそれを参照設定に入れてゲームで使っていたのだが、インストールするとSlimDX関係でよく分からないエラーが出る。使っていたSlimDXはMarch 2011版で、既にClickOnceに公式で対応していたはずなのだがその説明通りにやってもうまくいかない。なのでその説明に逆らって以下のようにした。
まずゲーム本体の参照設定にSlimDXを登録する。そのプロパティで「ローカルコピー」がFalseになっているのをTrueに変更。プロジェクトのプロパティの発行タブにある「アプリケーションファイル」にSlimDX.dllが「含む(自動)」になっているのを確認して発行。
これでめでたくインストーラーが動くようになった。が、またまた別の問題。マニュアルやコンフィグツールなど、ゲーム本体と直接は関係がないファイルをインストーラーに忍び込ませる方法が分からなかった。これはソリューションエクスプローラでプロジェクトのファイルとして、忍び込ませるファイルを追加して、そのファイルのプロパティを「ビルドアクション コンテンツ」「出力ディレクトリに 新しい場合はコピーする」と設定すればOK。後から考えればスクリプトもこの方法で構わなかった。
だがまだこれでは終わらない。ClickOnceでインストールされたアプリケーションは普通に探しただけではインストールされたディレクトリが分からないようになっている(実際インストールされているディレクトリ名はカオスなので人が開くことを想定していなさそう)ため、せっかく忍び込ませたファイルが見つからない。そこでランチャを作って必要なものを開けるようにした。
だがClickOnceインストーラでは本体のアプリケーションへのショートカット(普通のショートカットファイルとは別物みたいだが)を作ることしかできなかった。そのためランチャを本体のアプリケーションとして発行しようとしたが、ゲーム本体をファイルに追加するときにカオスったので断念。なので仕方なく、ゲーム本体のアプリケーションを起動すると最初にランチャが開いてそのままゲーム本体を開始するか、マニュアルを開くか、などと選べるようにした。
最初はランチャをゲーム本体に組み込もうと思ったので、本体のプロジェクトにFormを追加してプログラム起動時にそれが開くようにしてみたのだがメッセージ処理関係で何か駄目なようでうまくいかない。そういうわけで、ゲーム本体のアプリケーションを起動→ゲームウィンドウが開く前に別個のランチャアプリケーション起動→ランチャアプリケーションの戻り値を使ってゲーム起動ボタンが押されたか判断してゲームのウィンドウを生成、ゲーム開始、という流れに。
以上でやりたかったことは全部解決したのだけど、インストールされたディレクトリが分かりにくい&カオス、という仕様があるからプレイヤーがセーブデータをバックアップするときとか困るだろうなぁ。
あとこの成果としての制作物は以下(本末転倒)。