Fake BLACK ONYX 制作ノート
2006.5.1
あいかわらず、遅々としながらもモンスターのグラフィックを描いている。
前回のKoboldの顔が気に入らないので、少し直した。でもまだ不満。ゲーム完成までにもっと直すと思う。
ほか、Goblin、Ork、Troll、Batなど、おなじみのキャラクターを中心に描いている。当然出来、不出来がある。
2006.4.18
kobold前回のグラフィックも未完成のまま、モンスターのグラフィックも描き始めた。
コボルトがいっぱい。決して石立鉄男ではない。もっとニヤニヤしたイヤラシげな表情にしたいんだけど、むずかしげ。
表情をはっきりさせなければもっと渋い絵になるかな?
2006.4.16
絵を修正した。表情がきつかったので少し柔和に。ほんとはもっと宗教画っぽい神々しい感じにしたいんだけど、俺にはこの程度が限界。背景もまだまだいじるよ。
とりあえずは自分で満足いくクオリティに描けている。でもあんまり最初から凝っちゃうと、他のキャラもこれに合わせたクオリティにしないといけないから大変。
プロファイルの関係で、Photoshop上の絵とREALbasicで表示した際の色が違ってしまって困った。Photoshopでプロファイルを使わないようにして色調を補正した。
ちなみにこれがゲーム中の実寸大表示。どんな役割なのかはお楽しみ。
毎日コミュニケーションズから出てたApple][の本を買ってきた。WizardryやUltimaのことも書かれてて楽しい。モチベーションも上がる。

2006.4.14
コードばかり書いてるのも飽きたので、そろそろキャラクターのグラフィックを描き始めた。
今回描いたのはモンスターじゃない登場キャラなので、大きめのサイズで細かく描いている。まだ未完成だけど、結構いい感じで描けている。でももっともっと渋い雰囲気にしたいな。昔の画家の絵を参考にしてるんだけど、さすがにそこまで上手には描けない。
アニメ顔とか、萌えキャラとかにはしません。そういうの嫌いなの。大人っぽい雰囲気のゲームにしたいのだ。
最初はONYXを意識して8色程度で描こうと思ったけど、うまく描けなかったんで、フルカラーにすることにした。これなら中間色でごまかしやすい。
モンスターやプレイヤーのグラフィックはもう少しドット絵っぽくしようかと思ってる。目標はONYXとかPC-8801版Wizardryとかの渋い感じね。

ONYXはこちらの先制攻撃のときでもDEXが速いモンスターが攻撃してくるんだね。今までプレイヤーの攻撃が全部終わってから敵の攻撃にしてた。直そうかな?
モンスターのシードデータにアンデッドフラグを付けるのを忘れていたので、付ける。

2006.4.4
モンスターのシード(種)データのエディタを作っている。これで作ったデータを基準に乱数値をプラスマイナスして、実際のモンスターのパラメータデータを作るのだ。
階数ごとに出てくるモンスターが違うわけなので、たとえばGoblinが地下1〜2階に出るなら、地下1階用と2階用の両方を作るべきか迷ったが、同じシードをもとに作れる方法を考えついた。階ごとの出現率を持たせればいいんだね。Goblinは地下1階のモンスターの20%、地下2階なら10%として出現。地下3階以降は0%にしておけば出てこない。これなら地上に間違って出てくるWolfやZombieなんてのも再現できる。一緒に出現数も設定しておけば、階数ごとに出てくる人数も変えられる。
普通のNPCはもちろん悪人、バーサーカー、バーバリアンなんていう特殊なNPCもこれでOKかな。ところでONYXのバーバリアンって、どれくらいの確率なんだろう。1/1000くらい?
うちも、いろんな種類のNPC出そうかな〜?

ONYXがゲーム目的完了後も長く遊べた要素って何だろうと考えてみる。
・FIRE CRYSTALにそなえ、少しでもレベルアップ。
・バーバリアンを仲間にするため、迷宮を探しまわる。
・魔法のマントを重ね着するためのHider狩り。
・ワープや無限回廊のためにわかりにくいマップを完成させる楽しみ。
・わざと弱い仲間を一人連れて地下深くにいき、一気にレベルアップさせて楽しむ。

ONYXの欠点
・店や薬局でアイテムや薬の購入手続きがちょっと手間がかかる。
・パーティー内で金を出し合ってアイテムを買うことができない。
・キャラクターメイキング時に服装を選べるけど、ほとんど意味がない。
・NPCとの会話が「ONYXを目指してがんばりましょう」だけ。

2006.4.2
 
テキストファイルに書いてた設定ファイルを、バイナリーファイルに読み書きするようにした。
画面構成をだいたい決定した。右が移動中、左が遭遇中。
背景にグラフィックを置いてみた。なんかいい雰囲気になったな。
オニキスとムーンストーンのキャラは雰囲気を見るために合成したもので、まだキャラクター画像なんかは描いてない。敵キャラでかすぎるかな?
バックストーリーとか、登場キャラとかも早く決めちゃわなきゃな。
オニキス同様、あまりプレーヤーを縛るようなストーリーは設けず、長く遊べるようにしたいものだ。
2006.3.18
地上では星空を表示するのだが、建物の中に入っても見えてしまう点を修正した。ただ、現在地が建物なのかどうかで判断しているので、マップデータの都合上、建物の中 and 階段というケースが作れないのが残念。建物の中か外かを判別するビットをマップデータに仕込めばいいのだが、いまさらめんどくさい…。
オリジナルの敵のグラフィックを作る手前、これまでのONYX画像の流用でなく、テスト用画像を貼ってみた。64×64ドット、32×64ドットの2パターン作ってみた。実際はそれを縦横2倍に拡大表示するのだが、それでも少し小さいような気もする。画面右の迷路上に表示しようと考えているのだが、迷路と比べて小さいのでは迫力がない。
ONYX同様別のところに表示した方がいいだろうか? 画面構成含め、ONYXと違えなければいけないので、悩みどころ。迷路やパラメータバーの色使いも変えなきゃな…。
2006.03.16
しとめられたキャラを排除して戦闘を進める処理ができた。ちゃんとバグが取れてるかどうか不安。でも一山越えた感じ。
戦闘ルーチンのバランスも見直すが、こちらはまだまだ。
移動やビジュアルエフェクトの表示速度、デバッグ用の諸設定などを初期設定ファイルとして保存する機能をつけた。便利だ。
そろそろ登場させる敵モンスターなどの設定をしなければ。いつまでも仮のキャラではいけない。
そうなると、それに合わせて絵も描かなきゃ。とりあえずONYXのキャラを流用しててもいいんだけど、表示する大きさや配置なんかも検討しなきゃいけない。
2006.03.07
今日は、実際の戦闘ルーチンに取りかかった。打撃力+武器力-敵の防御力……なんて計算。細かいバランスは後々とるが、しとめられたキャラを排除して戦闘を進める処理が、頭がこんがらがってできなかった。
まあここまでできたら、あとはじょじょにやりゃいいか。
それ以前
 15年近く前の話で恐縮だが、自分のパソコン(Mac)上でBLACK ONYXみたいなRPGを再現したいと思っていた。でもMacって、当時はプログラムを組むのにOSのToolBox(API)をいじったりしないといけないので、素人がおいそれとプログラムできるようなマシンじゃなかったのだ。

 そこにHyperCardというものの存在を知った。今で言うオーサリングツールのはしりのようなもので、ほとんど素人の俺にもとてもやさしい開発環境だった。いろいろな制限もあったが、迷路内を移動するところまでは完成していた。それでもめんどくさがってノロノロしているうちに、HyperCard自体の開発が止まってしまい、このままHyperCard上で作り続けるのも面倒になり、開発熱も冷めてしまった。

 そこに今度はREALbasicというのが登場した。HyperCardほどやさしくないが、ToolBoxをいじらなくても普通のアプリが作れる環境なので、さっそく購入して作り出した。俺の悪い癖で、REALbasicの開発環境に慣れる前に見切り発車してしまったため、途中ずいぶんつまずいた。それでもHyperCard版と同様に、迷路内を移動するところまでは完成した。
 HyperCard版の迷路は基本的に、通路と通れない柱という単純なマップしか作れなかったが、今度はONYX同様、壁の概念を実現させることができた。おかげでビット演算が必要になったので、マップエディタを先に作ることになった。

 迷路の描画は、いわゆる疑似3Dというやつだ。マップデータを参照して、奥にある物(この場合は壁)を小さく、手前にある物を大きく描くだけだ。でもONYXやWizardryなんかを見ると、プレイヤーから見える範囲の壁だけ描画しているように思える。手前の壁に隠れている奥の壁は描かないので、処理が軽くなるのだ。専門用語で言うところの陰面処理というやつだ。
  だが、この陰面処理のやり方がわからない。ネットで検索してみても、そのアルゴリズムについて具体的に書かれているサイトは見つからなかった。厳密な3D計算をさせるわけじゃないので、そんなに難しいアルゴリズムではないと思うのだが、どうやるのだろう。誰かおせーて!!
 むろん、よほど細かく条件式を使えば可能だが、実用的ではない。そこでパソコンの処理速度にたより、奥から手前に順番に描いていくだけにした。描画途中を見せなければ気づかれることはない。

 つまづきながら進めてきたが、オブジェクト指向の環境で非オブジェクト指向の環境と同じことをどう実現するかで頭がこんがらがってしまい、めんどくさくなってまたほっぽり出してしまった。一番のネックはキー入力だ。Keydownメソッドでしかキー入力を拾えないので、for〜nextループ中でn回入力させるといったやり方がとれない。
 おかげでまた3〜4年開発がほったらかしになった。それでもまたふと思い立ってキー入力の問題を解決した。要はフラグを立てただけなんだけどね。もっとスマートなやり方がないだろうか…と欲張って開発を中断させる悪い癖を反省したのだ。今頃。
 世間のMacの環境はその間OS9〜OSXへと変化し、さらにはPowerPC〜IntelCPUへと変化した。HyperCardで作り始めた頃はまだ68030CPUだったことを考えると、ずいぶんと時代を逆に超越してしまったものだ。世間のMacは刻々と変遷を遂げているが、いまだに俺の開発環境はiBookG4(PowerPCG4)のOSXのClassic環境で動くREALbasic2.1だ。REALbasic5が出ているというのに。へたにバージョンアップしてまた中断なんてことになると嫌なので、とりあえず今の環境で完成させることを目標としたい。