2007年9月の日記

<2007年09月 2007年08月>

RSSの前に独自形式

今日はRSS生成プログラムの更新情報管理部分を作っていました。
オブジェクト指向っぽくクラスに入れるべきか普通にすべきか無駄に迷っていたせいであまり進んではいませんが。
RSSを作成するヒントとなる独自形式のデータの形式はすでに決まっていて、独自形式のユーザー用の表示はすでに出来上がっています。
RSSとしての出力や、更新情報書き込みの方針もほぼ決まっていますが、まだプログラム作成には着手していません。

移植失敗

前のパソコンから一部ハードを移植してこようと思ったのですが、ケーブルが取り外せず、新しいほうにもケーブルを差し込めそうな部分が見当たらなかったので、断念しました。

そして今、RSS配信プログラムを作っているところです。

そういえばそれとは関係なく気になったのですが、VS2005上でデバッグしているプログラムは、Vista環境ではエクスプローラからのドラッグ&ドロップが効かないんですね。
リリースコンパイルしたものでは当然可能なのですが。

入力支援

掲示板に不具合報告フォームをつけました。
内容的には単なる入力支援に過ぎず、通常の文章に変換して投稿するだけなのですが、エラー報告にどのようなことを書けばいいのかわからない人のためにはなるかと思っています。

爆ボンのページの2ヶ国語化のためのスクリプトができたので、早速トップページから2ヶ国語化中です。

Bomber丸WorldをVC++2005でコンパイルしようと試行錯誤していたのですが、コンパイルが通った後に実行時エラーが出たところで力尽きました。
やっぱりたとえ互換性に問題があるといわれていようともVC++6でBomber丸Worldは開発しようと思います。
VC++2005を使うのは、今後1から作るプロジェクトだけ、ということにしましょうかね。

折りたたみメニューの改良

そんなわけで、爆ボン2ヶ国語化の前に、現在問題となっている、JavaScriptへのリンクで一部ブラウザが404エラーを出す現象の解消のため、JavaScriptを呼び出すリンク自体をJavaScriptで書いて、aタグのhref要素ではなくて、よく使われている、hrefを#にしてonClickで動作させる方式にしました。
そうすると中途半端な実装のブラウザだと失敗したときにページの先頭へ飛んでしまうので、それを極力抑えるために、href要素は実際にはそのリンク自身へのリンクにしてあります。
まあ、その代わりscriptタグに完全非対応、すなわちscriptタグの中身を非表示にすらしてくれないタグではおかしな表示になるようになってしまいましたが。
2ヶ国語対応のほうは、spanタグのinnerTextとtitleを入れ替えることで対応しようと考えています。

2ヶ国語対応へ

浮き沈みリンク集、タグの種類が増えてくるとタグ一覧が大きくなってきて邪魔になってくるので、コンボボックス方式を追加してみました。
これで見栄えのためにタグを減らして目的の情報が探しにくくなるということも少なくなるはずです。
もちろんこれはオプションで変更可能で、この改変をしたバージョンはまたそのうちアップする予定です。

爆ボンのコンテンツを本格的に英語対応にしようかと考えています。
今までも一応英語版のページを作ろうとしたことはあったのですが、別ページで作っていたためにうまく内容の対応が取れていなかったため、1ページに2ヶ国語分入れてしまおうというつもりなのです。
この対応には、JavaScriptか、またはCGIでも使ってみようかと思っています。

無題

学校でやっている勉強をWikiに書こうと思ったのですが、新しくWikiを作るときに間違えてLuaのデータをごっそりコピーしてきてしまったので、余計なデータを消すのに手間取ってました。
というか、頓挫しました。
また何もデータの入っていないWikiを持ってこようと思います。

カタマリの外

Qからの返事はまだありませんがメテオスもどき作ってます。
今日はカタマリの外に出た燃えカスの還元と、惑星パラメータの復元フォームを作りました。
あと、滅亡時の演出を微妙にですが改良したりもしています。

動作状況

どうやらVisualC++6.0も動くらしいです。
しかし、VB用のDirectXを使っているソフトはまったく動かないようです。
その割にはWindows3.1の16bitプログラムは動くようです。
でも、VB2のソフトはランタイムがなくて動かないそうです。
結局、動作自体は対応しているけど、必要なソフトがなかったり過剰なセキュリティに阻まれて動かないようなのです。
デュアルブートでXP入れたろかな…。

更新情報RSS化計画

VisualBasic起動したらなぜかいきなりOfficeのインストールが始まりましたよ。と。
従来式のヘルプが表示されなかったり、一部で文字化けが起こったりもしています。
また近いうちにVista対応状況でもレポートしましょうかね。

それはそうと、更新情報を普通のHTMLから、RSSに変更しようかと考えています。
私自身はRSSは特に使っていない(というより、あふれかえる更新情報についていけてない)のですが、しかしいちいちチェックしに来なきゃ更新があるかどうかわからないというのも閲覧者にとって面倒くさかろうということで、RSSの利用を考え始めました。
一応、情報を出しすぎて閲覧者を混乱させないために、コンテンツごとに別々のRSSを配信しようと考えています。

Visual Studio on Vista

今日は本格的に開発環境をインストールしてました。
VisualC#は無難にExpressEditionにサービスパックを当て、VisualC++は6.0は使えないらしいのでやはり最新の2005Expressを入れ、VisualBasicは6.0でもVistaに対応しているらしいのでそのまま使おうとしたのですが、どうにもVB6のVista対応は「VB6で作られたソフト」についてだったようです。
まだ実際に起動はしていませんが、どうなることやら…。

クラシック表示

で、Vistaになったので早速エアロの設定をいじくろうと思ったら、設定項目が全体の色だけしかなくて、カスタマイズ性の低さに耐えかねて、特にタスクバーが黒いとか、最大化時のタイトルバーが黒いとか、そのあたりが嫌で、クラシック表示に戻してしまいました。
サービスパックでも何でもいいからもっとカスタマイズ性が上がってくれればエアロに戻そうかとも思ってるんですけどね。
セキュリティの警告が過剰で、セキュリティ=何かするときに解除するもの、という認識ができそうで怖いということも感じました。
ちなみに、ディスプレイは12年前に買ったパソコンのディスプレイを再利用しています。

ヴィスタ

父が今日新しいパソコンを買ってきました。
本当は明日私が一緒に行くつもりだったのですが、いつの間にか父が一人で買ってきていました。
で、そのままでは私は古いパソコンのまま…と思っていたのですが、新しいほうのWindowsVistaでは、父が使っていた大切な住所録ソフトが起動しないので、WindowsXPの私のパソコンと交換することになりました。
そのWindowsVista、買ったその日に早速フリーズしたわけですが。
というわけで、明日は新しいパソコンの設定をすることにします。

HIGHスペックとLOWスペック

メテオスもどき、JavaScriptによる惑星パラメータの設定ができなかったので、paramタグによるロード時の設定のみにしました。
パラメータの取得のほうはJavaScriptで何の問題もなくできたのでそのまま続けることにします。
また今回、メテオスオンラインのように、とまでは行かないまでも、HIGHスペックとLOWスペックをつけました。
HIGHスペックでは半透明やアンチエイリアスなどの綺麗なグラフィックで、LOWスペックではそれらを用いない軽快な動作でゲームができます。
他にもグリッドをつけるなど色々演出面での改善を加えたりしました。

フィールドシリアライザ

メテオスもどきの惑星パラメータの文字列による出力が出来上がって、今は文字列を入力として惑星パラメータを復元する部分を作っているところです。
ほかにも、描画システムを見直したりしてました。
まあ、結局もとのやりかた以外は全然うまくいかなかったため戻したんですけどね。

FieldSerializer

講座のみんなでバーベキューでした。
肉食いました。

どうにもメテオスもどきの惑星パラメータの出力に使おうと思っていたObjectOutputStreamというのは厳密にクラスのフィールドを書き出し、入力に使うべきObjectInputStreamは書き込んだ時点でのクラス構造を再現するらしくて、クラスの構造が変わってもそれなりに復元することを目的としたちょっといい加減なシリアライズを自前で作ることにしました。
可能な限り復元を試みますが、失敗したら無視して続けます。

文鎮を作りました

学校で工作実習でした。
溶接などの金属加工ですね。
フライス盤でガリガリ削ったりもしました。

今日はBomber丸Worldのマップ表示を作り始めました。
ウィンドウ内に表示することが前提なので表示対象の大きさに合わせて表示を調整したりもできるようにします。

ObjectOutputStream

卒業研究のテーマがやっと決まりました。
なんでも大型放射光施設SPring-8での観測結果をコンピュータによるシミュレーションを用いて評価するという内容のことみたいです。

メテオスもどきは、ObjectOutputStreamというのを使ってシリアライズしようと考えて調べているところです。
文字列で出力できたら一番いいんだけど…。

JavaScriptによる制御

なんだかJavaScriptから直接Javaアプレットの変数を指定しようとすると、配列や一部のクラスの仕様の違いからうまく動かないようです。
なので、極力いろんなオブジェクトにアクセスしたりしないように、アプレットそのもののメソッドをできるだけ少ない引数で、つまり一つの文字列で呼び出すようにすればうまく制御できるかなと思っています。
あと、使用中の変数の値をいきなり変えたりしたら、元の値であることを前提として動いているプログラムが誤動作を起こすこともあるので、前処理・後処理を入れるためにもメソッドを呼び出す方式がよさそうです。
Qから返事があるまでは地味なところの改良でもしていようと思います。

Q公認がつけばいいな

メテオスもどきの使用許可を得るためにキューエンターテインメントに問い合わせをしてきました。

お世話になっております。今回は相談したいことがあって連絡いたしました。
私は今、遠からずサービス終了してしまうメテオスオンラインを忍びなく思い、以下のURLにてメテオスオンラインに似せたJavaアプレットによるゲームを作っております。
http://tgws.fromc.jp/akiyame/meteonsim/
今回相談したいことというのは、このゲームの公開を許可してほしいということです。
私はこれによって利益を得るつもりはなく、キューエンタテインメント様に損害を与えるつもりもございません。
むしろこのような形でメテオスを体験できる機会を増やすことでもっとメテオスが広まってほしいと思っております。
最初は自分でプログラムを書いているので大丈夫だろうと思って作っていたのですが、メテオスというゲームの優れたルールはキューエンタテインメント様の発明であり、そのルールを使ったプログラムを勝手に作ることは好ましくないと思い、連絡させていただきました。
許可しないというのであればその理由を、許可してくださる場合は使用条件と使用可能な範囲を教えていただきたく存じます。
許可されなかった場合はファイルをサーバー上から撤去し、許可された場合は可能な限り条件に従いたいと考えております。
いずれの場合も、状況と結果の報告のためにこのやり取りは私のホームページ上で公開したいと思っております。
前向きなお返事を期待しております。

新しいアイコンですよ

掲示板にいずみさんとネコブラのアイコンを追加しました。
大きいほうの画像は既にできていたのですが、16x16のサイズの小アイコンを作るのが難しくて時間がかかってしまいました。

メテオスもどきのほうは今JavaScriptを使って惑星データのセーブ&ロードを実装しようと試みているところです。
これはこれで…色々とややこしいですね。
Qに送る文章も考え中です。

ツールの登録

DirectMusicツールの更新のときに書いた、「次の機会」のところを更新しました。
とはいっても、ほぼ定型文なので大した内容にはなりませんでしたが。
あと、ツールの作り方のページでのメッセージの扱いについて少し修正しました。

メテオスもどき、縦切り離し点火の特例ができたのでアップしてきました。
Qに送る文章も考え中です。
自分を正当化しつつ、相手にとっても損がないように、考えてるところです。

システムの復元

フォントを戻そうとすればするほどいろんなところが変になっていったので、結局システムの復元を使ってインストール前の状態に戻しました。
で、戻ったのはいいんですけど、一部の拡張子の動作が復元ポイントよりも更に前の状態になってしまいました。
まあ、全体としては、戻ってめでたしめでたしなんですけど…。

新しいフォント

WindowsUpdateでWindowsVistaに入ってるらしいフォントをインストールしたら表示が微妙に変になりました。
で、元に戻そうとして設定をいじったらますます変になったので微妙に変な表示に戻しました。
文字のバランスがちょっと悪い気がするんですよね。
「き」とか、一部の漢字とか。
う~ん・・・。

時の重み

マップシステムについて、だんだん思い出してきました。
マップチップとキャラをまず全部3D空間上に配置してZソートして奥から順番に表示、表示対象をCBWWindowにしても正常にクリッピングして表示、マウス操作対応のため見た目の座標と内部座標の対応、データ部と表示部のプログラムの分離、などなどなど…。

NeoMuplで、なんとなくランダムのくせに選ばれる曲が偏る気がしたので、スキップ率に加えて、時の重みというパラメータをつけて、最近再生されていない曲を優先的に選ぶようなオプションをつけました。
正直、100倍優先にしても数千曲の中だと焼け石に水のような気もしますが、なんとなく水なりの効果はあるような気がしてます。

メテオスもどきはシュートのおかしな挙動を少し改善しました。

忘れていた過去

ここのところメテオスもどきばかりだったので、久々にBomber丸Worldの開発を再開しようと思ったのですが、すっかり何をやっているのか忘れてしまいました。
たぶんマップ表示の再実装を試みるところだったと思うんですが、該当するプロジェクトを開いてもまだ作り始めてもいなくて、どのような方針で作るのかすらわからない状況でした。

ほぼ完成

メテオスもどき、落下メテオによる押し下げも実装して、ドッキング関係もきれいに書きなおして、あとはいくつかの不具合を直して演出をつければ単体としては完成ということになります。
なので、そろそろ本家の開発元のQに問い合わせてみようと思っています。
動画のときもファンサイトキットのときも終了告知のときもつれない返事ばかりでしたが…。

シュート!

久々に本家のメテオスオンラインをやって対戦を楽しみつつ色々調べてました。
タイムアクセル時のメテオの降りかたは通常時の4~5倍程度、シュートして上のカタマリにくっつけた場合はシュートしたメテオの速度などは考慮されない、カタマリ同士がドッキングした場合は下のカタマリのパラメータが優先される、などなど。
で、今日作ったのはシュートして固まりにくっつけたときの正しい挙動です。
つまり、下にくっつかずに中に入り込みます。

古いものを優先的に

今日はNeoMuplいじりました。
今回は、ランダム再生のとき、最近再生されていないものを若干優先するような変更をつけました。
最近なぜか同じ曲が短時間に何度も選ばれるということが起こっているので、それをある程度防ぐために確率に手を加えたのです。

還元もできました

メテオスもどき、ついに還元が実装できて、メテオスの基本ルールはあらかた網羅できました。
他には、メテオの移動可能範囲の表示、落下メテオやシュートしたメテオはつかめないようにする、打ち上げたメテオの内訳を表示する、などの細かい機能を色々つけました。
そして、最初手抜きで作っていた自然発火しないメテオの並びを探すアルゴリズムも改良して、得点もつけました。
あとは、細かいパラメータなどを実装するだけです。

<2007年09月 2007年08月>