2009/03/12

今日の引っ越し

・日記引っ越し

これまでの日記をはてなダイアリーに引っ越し。前々から、Bloggerが不便だと感じるようになっていて、Bloggerでの記録を移行する方法を見つけたので思い切って移行してみた。この情報が書かれたときから、Bloggerのフォーマットの設定の項目が変わっていて、それを合わせるためにDでごにょごにょとやっていた。

と、いうわけで引っ越したので、これからも生暖かく見守ってください。

2009/03/11

今日のカーソル

・卓球製作開始
折角XNAの本を買ったので、XNAを使って卓球の制作を開始。タイトルロゴやマウスカーソルを作ったり、表示したりしている。3Dの描画は必要な部分を本で読んだところで、まだコードは書いていない。OpenGLで3Dをやったのに比べてだいぶ複雑な印象を受けた。
XNAを初めてまともに使っているわけだが、なんとなく落ち着かない。その理由を分析したら、VisualC#がVisualC++よりもやたらと親切すぎること。それと、XNAの枠と自分が今まで使ってきたプログラムの構造とが違って、XNAの枠にあわせて作ろうとしていること。言語の違いはほとんど意識することなく使えている感じ。

2009/03/10

今日のクロックアップ

・シューティング作成

・スクリプトいじり

第2回3時間コンテストということで、「アイテムをとってゲームスピードを上げて、早くクリアすることで得点を荒稼ぎ」というコンセプトの横STGを作ってみた。しかし、まともなシューティングの土台を作るのに1.5時間以上かかって、まともにゲームとして成立しなかった。コンセプト的にもあまり自分の趣味に合わないのでお蔵入り。ランクを能動的に調整できて、それに毛が生えたという程度。

復讐のスクリプトをいじっていた。だいぶいい実装が出来そうになったのだが、最後の壁として型情報が立ちはだかって詰んだ。型の情報を保存する型、というものでもあればよかったのだが見つからない。sizeofやstringofプロパティが取れるのに、型は型ではないというのは、型とはいったい何なのか。Phobosで型情報を触っているモジュールがあり、それを参考にして、テンプレートとaliasとを組み合わせて乗り越えられるか、と思ったが越えられず。stringofプロパティを利用してコンパイル時にコードを生成する、というようなことも考えたのだが、ややこしかったのでやめた。

それで結局妥協して、関数を呼び出すためのラップ関数を一つずつ作って、それへのデリゲートを連想配列に格納する、という方法での実装にした。ラップ関数を作った労力のリターンとして、関数を呼び出すときに引数をどうするのかを意識せずとも使えるようになったので、これで妥協。その実装の進行具合は、構文解析のあたりで機嫌が悪くなっていて、ごく単純な命令しか実行できないという状況。

2009/03/09

今日の下絵

・絵
特に何かやったと言うわけでもないが、ドット絵の本を図書館から借りてきた。やはり下絵のデザインもちゃんとしていないと厳しい、と思ってみたり。

ゲームの画面サイズは小さいと情報量が減って不快だと思ったので復讐の画面サイズをやはり640*480にしようかと思い始めている

2009/03/08

今日の霧

・フォグ夢現
フォグがあると画面の見栄えがだいぶ変わるな、と思って、蘇生のパーティクルを改良してフォグを作ろうという計画を立てていた。フォグだと粒子の数が多くて、いちいちドットを打つ関数を呼んでいたら速度に響くだろう、と思ってグラフィックメモリを直接操作するという計画を立てた。しかし、それを実装しようとしたらDXライブラリにグラフィックメモリをロックして直接操作する方法がなかった。ライブラリのソースを見たら内部的に使っているものはあったのだが使い方がわからない。SDLでは当たり前のようにあったので、当然あるものとして思っていたので予想外だった。
で、どうするかは考え中。素直に「重いけれどきれいになります」という感じにするのが妥当か。

2009/03/07

今日の混迷

・スクリプト

・XNA

テンプレートと可変個引数の項目を読んでみたら、昨日当たりかと思ったのは別に使えなかった。それでもう少しコードを書きながらいろいろと試してみたりもしたのだが、やはり手段がなさそう。

それで仕方なくコードを手書きしていくことにしたのだが、それがまた混迷している。さすがに一つ一つの関数ごとに愚直に書く様なことは避けたいので、引数の数ごとに関数を分類する、ということをやっている。そのときに関数の引数として任意の型の関数ポインタを渡すようにしているのだが、それをどう渡すかで詰んでいる。Phobosにもそのようなことをしているものがあって、それを参考にしてはいるのだが上手くいかない。テンプレートで何とかしたいのに上手くいかない。あんまり上手くいかなくて憂鬱。

 

XNAの本を買ってきた。飛行シューティングを作る前に物理ゲームが大量の壁として立ちはだかっていたことを思い出して、それもまた憂鬱の種。Poseidonが不機嫌なのも憂鬱の種。

2009/03/06

今日の事前

・XNAさわり
・スクリプト
XNAを触っていた。頂点としてベクトルの配列を指定してそれを描画する、というクラスを実装しようとしていたら既に存在していた。XNAは何かやろうとすると既にそれが準備されている、という感じがして変な気分。慣れれば便利なのだろうけど。

スクリプトの課題となっている、関数の呼び出しらしきものがD言語のページに書かれていることに気がついた。問題は、まだろくに使ったことのないテンプレートや可変個引数がコアに使われていて、そのコードの理解が上手く行かないこと。

2009/03/05

今日の入力

・飛行ゲーム考察
昨日から考えている飛行ゲームの入力について考えていた。少なくとも上下左右の舵と、加減速のキー、それと攻撃をするためのキーが最低限必要で、それをやるには普通の2Dシューティングのキー配置では出来ない。かといってアルファベットのキーに色々役割を振り当てるのは自分の好みではなく、テンキーを使うことも考えたが、ノートPCにはテンキーがないことがほとんどなのでそれも出来ない。残る手段としてマウスがあるのだが直感的に分かりやすい操作体系がなかなか浮かばない。ジョイパッドを使えばいいのだろうがジョイパッドが好きではない。Wiiリモコンなんかは舵の操作にかなりよさそうだがそれだと遊べる環境がほとんどない。
やはり、全ての軸に自由な3Dゲームを作ろうと思うとどうしても入力の面で壁にぶつかる。分かりやすい3D用入力装置が普及すればPCゲームの世界は大きく広がるのではないか、といつも思う。

2009/03/04

今日の束縛

・スクリプト
・作りたいもの
スクリプトを作るうえで、ホスト側のプログラムの関数をどう呼び出すかが一番の課題となっていて、それについて考えていた。昨日書いた、関数ポインタを連想配列を使って選択するというのは悪くないと思っているのだが、それにどうやって引数を渡すのかが問題になっている。Phobosにbindというモジュールがあって、それとタプルを組み合わせれば上手く行きそうだと思って試してみたのだが、bindモジュールにバグがあるそうで使えない。タプルを上手く使えばbindなしでいけないか、と解決法を模索しているところ。
上手く行かなくても、関数ポインタの型ごとに関数呼び出しをラッピングする関数を一つ一つ作っていけば、難しく考えなくても済むし、実用的にも現在想定している範囲内において問題は発生しないのだが、それは美しさ的に納得できないので行き詰るまでは粘ってみる。

小説を読んでいて飛行機にあこがれたので、この頃無性に作りたくなっている横スクロールSTGと組み合わせて妄想してみたり。発想して、すぐに作れる時間が無いことは不幸。

2009/03/03

今日の危険

・絵
・スクリプト関数呼び出し作成開始
大量の裏紙が提供されたので紙を贅沢に使って色々な絵を試していた。主に目の表現。その成果で目に感情をこめることが少しずつ出来るようになってきた。しかし相変わらずネックとなるのは髪の毛。

スクリプトについては今日はほとんど考えていなかったのだが、プログラミングがしたかったので、とりあえず考えてる実装が可能であるかの実験を行った。関数のポインタをBox型の、スクリプトでの関数の名前の文字列をキーとする連想配列に登録。Boxから直接関数ポインタ型へのunboxが出来なかったので、一旦voidポインタとして取り出してそれをキャストして関数を呼び出す。この手法でスクリプト上から引数1つでのwritefln関数の呼び出しに成功した。

昨晩よさそうな短編小説のネタを思いついたのだが、そのネタを生かす枠組みをどう構築するかがなかなか浮かばないので保留。そのうち書く。

2009/03/02

今日のトップダウン

・スクリプト設計

・復讐キャラ設定妄想

関数を実装する前に、ちゃんと言語の設計と実行の仕方は決めておくべきだと思って細かい設計を考えていた。大体のことは決まったが、まだはっきりしない場所が残っているので完全に固まるまでは実装しないつもり。

あとは復讐の主要キャラの設定をいろいろと妄想。ご都合主義的な流れになる気配が少なからずあるが、ご都合主義となることの正当な理由をゲーム中に盛り込めば許される、と思う。もしくはストーリーの時間的広がりを大きく拡張して、天文学的な確率が当たるようにするとか。

2009/03/01

今日の括弧

・トップ絵更新

・スクリプト構文解析

先日まで描いていた絵を日記の2000Hit記念と言う名目にして公開。復讐では全主要キャラにあんな感じの立ち絵が付くかもしれない、付かないかもしれない。

スクリプトの構文解析を作った。ソースを一つ一つの式にツリー構造を持たせて分解。次にやるべきは、式の解釈と制御構文の実装。