現在日記を改良中です
まずは日記の表示部分の改良です。
何しろ汚くて冗長なコードでありまして、それに表示のみ考えたコードなのでHTMLキャッシュとかに流用が利かなかったりして機能追加したら追加しただけますます汚くなるわけでありまして、現在コードを洗浄中というわけであります。
まずは日記の表示部分の改良です。
何しろ汚くて冗長なコードでありまして、それに表示のみ考えたコードなのでHTMLキャッシュとかに流用が利かなかったりして機能追加したら追加しただけますます汚くなるわけでありまして、現在コードを洗浄中というわけであります。
う~む……。
スクリプト講座に書いたこと……。
行き当たりばったりで書いたので、ちょっと……。
間違えただけなら訂正すればいいんですよ。
だけど、ちょっと方向性を間違えたかな、という気がするんですよ。
もしかしたら何回か分を丸ごと取り消すかもしれません。
それでも考えた軌跡として何らかの形で残すことにはしますが。
というより第10回以降はもうこっちの世界に入っちゃってるのでプログラミングのコンテンツとしての有用度はがた落ちなんですが。
ところで昨日の記録の話の続きですが、じゃあ自分のソフトではどんなことを記録すべきでどんなことを記録せざるべきなのか、そんなことを考えていました。
私の場合は基本的に記録しなさ過ぎるほうに偏っているような気がするのですが。
特に今作っているのはRPGであり、言ってみればデータの固まりなんです。
基本的にゲームの進行度や手に入れたアイテム、主人公たちの強さのパラメータや健康状態などは考えるまでもなく全て記録すべきなのですが、例えば進める必要の無いイベントや取る必要の無いコレクションアイテム、ゲームをより奥深くする様々なパラメータなどは記録すべきなのか、すなわち登場させるべきなのか、そのあたりが問題なのです。
特に思いつくままたくさんのイベントを作ってしまいましたからね、どれを入れてどれを削るべきなのか、あるいは全部入れて苦痛にならない工夫を頑張るか、そのあたりが考えどころです。
ゲームって、楽しければいいですよね。
だけど、ゲームをやっていて楽しくないことも多々あるんです。
それが、単なる記録作り。
コレクション要素をひたすら集めたりとか、主人公をひたすら強くしたりとか。
なんでそんな要素ができちゃったんだろうと考えてみます。
私はゲームをやった後急に虚しさがわきあがってきたり激しい後悔が生まれたりすることがあります。
自分は何を一体無駄なことをしているんだと。
その時その時は楽しくてもやめればもう楽しくない、後に何も残らない感じが嫌なのです。
じゃあ、後に何か残せばいいじゃないか、という発想がここで出てくるわけです。
ゲーム記を見てわかるように、ゲームのいろんなことを記録として書き残しています。
後で見てその時を思い出して感慨に耽るときもあります。
そんなことだから、ゲームそのものの、得点とか、集めたものとかも、それはもう大切なのです。
きっとそういう人が多かったんでしょうね、そうでなくても少なくとも開発者は記録の大切さを感じていたのでしょうね、ゲームにセーブ機能がつけられるようになると本当にいろんなことを記録するようになりました。
初期は得点、時期が進むにつれてゲームの進行度、ハイスコアを出したときのリプレイ、本編とは関係ないお楽しみ要素、本当にいろんなことを記録するようになりました。
記録されると終わった後も楽しい、もっと記録するともっと楽しい、そんな連鎖でどんどん記録するようになったんだと思います。
だけど、同時に記録があまりにも増えすぎたために、記録のためにのみプレイすることができるようになってしまうのです。
ハイスコアをひたすら求める程度ならば、テクニックを磨いたりこり高い得点法を考え出したり、張り合いがあるものですが、しかし、近年増えてきた「記録のための記録」のような記録のためのプレイであると、記録更新されなければただ苦痛だし、更新するためには張り合いの無い反復作業を延々と続けさせられることも少なくありません。
ゲームの記録って、たくさんあるから、とか、すごい記録だから、とかじゃなくて、楽しんだ結果だから、記録する、というのが、健全だと思うのです。
そう思ったのです。
プログラミングコーナーのスクリプト講座を書いてます。
いよいよ次からはパーサ作りに入ります。
予定としては、いつでも好きに拡張できるようにパーサを作っておいて、まずは数式だけ認識できるパーサを作って、後から細かい言語仕様を考えながらパーサやスキャナを拡張していく、という方式にしようと思っています。
Bomber丸World、C#で作るかC++で作るかということを考えていましたが、やはり今まで通りVC++6で作ることに決めました。
今まで作ったものの資産が多少なりともありますし、手馴れている分C#よりも速くできそうな気がしますし、今やっているスクリプト作成講座はずばりこのゲームのためですし。
それでも、最後までVC++6で作るということが完全に決定したわけではないので、C#に移行する場合の労力が最低限になるようにできるだけC#との違いが少なくなるようなコードを作ろうと考えています。
コレクションの要素全てにアクセスするときはただ単純に短くなるだけだし、テンプレートがジェネリックになったり、deleteが不要になったり、形式的な違いが大半だと思うので、アルゴリズムの方面では多分大丈夫だと思うのです。
もっとも、WindowsAPIやDirectXを直接(とはいっても現状YaneSDK経由で)扱うプログラムとC#での.NETプログラミングとでは手法がかなり違うので、そのあたりはかなり厄介です。
括弧の中にYaneSDK経由と書いたのですが、.NETのYaneSDKはVC++6のものとは全く、というよりもはや根本から構造が違うので、今まで楽してた部分をそっくり自分で書かなければいけない可能性があるのです。
もちろん、YaneSDKの中にはC++という言語と標準ライブラリの不足を補う部分が数多くあるので、言語機能と標準ライブラリが強力なC#ではそれらの面倒ごとをある程度は補ってくれるのでしょうが。
ナマライザの開発を進めてます。
フィルタ機能はひとまず置いといて、エクスプローラ型表示を作ろうと試みています。
エクスプローラ型表示というのは、つまり、どのファイルにどれだけアクセスがあったのかというのを、視覚的にわかりやすく階層構造で表示するというものであります。
ディレクトリアイコンをクリックするとそのディレクトリから下の階層へのアクセス状況が見られるようになります。
さらに、特定のファイルをクリックするとそのファイルへのアクセスを詳細に解析した個別表示のウィンドウが開きます。
で、それらがまだできていないわけです。
ナマライザのフィルタ機能を作ってました。
フィルタ機能というのは、前の簡易アクセス解析で言う詳細検索機能であり、フィルタ条件を決定した時点で最適なフィルタを生成するので、無駄な条件分岐が発生して激しく遅いということがありません。
よって、簡易アクセス解析にあった単体での検索機能は廃止し、フィルタに統合します。
フィルタをかけるとフィルタ条件全てにマッチするログが選び出され、自動的に開いている全てのウィンドウを更新して解析結果を最新に保ちます。
もっとも、このウィンドウ自動更新機能は遅い場合は廃止する可能性がありますが。
ただ、この機能を実現するに当たって少し問題がありまして。
それは、フィルタの設定をするダイアログの構成です。
フィルタのリストにどんどんフィルタを追加してゆくという形なのですが、フィルタの種類によって使うパーツが異なったり、そのパーツの見せ方をやりたいようにやろうとすると難しくはないけど面倒なプログラムを組まないといけなかったり、だからといって作りやすいように作れば使い勝手が悪かったりして、どうにもうまくやるのに時間がかかりそうなのです。
まあ、適当に、頑張ってみます。
FNチェンジャーに不具合が見つかったので修正してアップしておきました。
リネーム条件に当てはまらない場合リネーム前とリネーム後の名前が同じになりエラーとなっていましたのでそれを直しました。
一応アップしておきましたが、詰め合わせのほうは更新してません。
ごめんなさい。
弟がSIMPLE2000のTHE地球防衛軍を買ってきました。
2じゃないほうです。
これを見るといかに2が簡単に作られたものかというのがよくわかりますね。
音楽使いまわし、画面使いまわし、システム使いまわし、敵使いまわし、主人公使いまわし、ステージ使いまわし、ミッション使いまわし、2は新作というよりは新バージョンといった感じだったんですね。
どうでもいい話ですが、秀丸のバージョンが6になって機能拡張されたのに伴ってPHPの書き方も変更しました。
以前は、
// コメントだったのですが、
function 関数() {
関数の中身
}
にしました。
function 関数() // コメント
{
関数の中身
}