製作日誌。(7月17日〜9月4日)

2001年

7月17日

クラスの再設計、完了。

やっとクラスの再設計が、ひととおり終わる。 新たに地形クラス・建築物クラス・生き物クラスの三つが加わった。 またThread系統にも、おおきく改変を加えてみた。 ほかに今まで適当につけていたクラス名や変数名などをJavaの規約にしたがったものに修正した。 「Java Code 規定 index」

戦略画面・行軍画面。

これでナポレオン戦記の行軍画面や、三国志の戦略画面をつくることができる。 とりあえず前記の3クラスを用いて地図を書いてみた。 モデルはナポレオン戦記っぽい架空の戦場。 用いた地形クラスは深い川(-4)、浅い川(-3)、沼沢地(-2)、低地(-1)、平地(0)、高地(1)、丘陵地(2)、山地(3)、高山(4)。 建築物クラスは首都、都市、道路。生き物クラスは赤軍・青軍の軍隊。「ナポレオン戦記みたいなやつ」の行軍画面

絵が改良されるかも。。。

あとあと、この日は、もうひとつ、とっても嬉しいことがあった。 これでチープなグラフィックが大きく改善されるかも。v(=∩_∩=)いぇい
なにがあったかは、まだひみつ。とりあえず、あとでメールかこっと♪

7月19日

戦略画面・行軍画面。(つづき)

おとといUPした「ナポレオン戦記みたいなやつ」の行軍画面。 Unitクラスのメソッドに一箇所不備があったため軍事ユニットが、うまく動いてくれなかった。 きょうは、その原因を調べあてて問題を修正。

これで後は戦闘画面と組み合わせれば 「ナポレオン戦記みたいなやつ」は、いちおう完成ということにしてしまおう。 もちろん、ほんとはCreatureユニットの自動操縦のときのアルゴリズムをもっと練ったり、 効果音をつけたり画像や操作性をよくしたりなどの作業が必要なんだけど。…ま、いいや。

7月22日

CIMAたんちゅきちゅきvvv

17日にメールもらったCIMAたんから、まず騎兵たんの画像がとどく。めちゃくちゃかっこいい…。 いったい、どうやったら、こんなかっこいい画像が描けるんだろう。 ちなみにCIMAたんのサイトは、こちら。ゴルラァン堂

足が5本ないほうの騎兵たん画像。

上をむいた騎兵たん(青軍) 右をむいた騎兵たん(青軍) 下をむいた騎兵たん(青軍) 左をむいた騎兵たん(青軍) 上をむいた騎兵たん(赤軍) 右をむいた騎兵たん(赤軍) 下をむいた騎兵たん(赤軍) 左をむいた騎兵たん(赤軍)

7月26日

クォータービュー。

そんなわけで、さっそくCIMAたんからいただいた画像をもとに、 「ナポレオン戦記みたいなやつ」の下にクォータービュー画面をつけてみた。 ゆくゆくは、クォータービューだけでユニットをコントロールできるようにしたいな。

戦闘画面と行軍画面がひとつに。

また、この日、行軍画面と戦闘画面が、ついに組み合わさった。 行軍画面上の青軍のユニットと赤軍のユニットが衝突すると戦闘画面となる。

7月27日

クォータービュー画面の修正。

菱形の桝目を表示してみると桝目が重なる。。。 どうやらY座標の計算をまちがえていたらしい。 あらためて計算しなおすとY座標の間隔が半分になっていたことが判明。 どうりでY座標だけ、へんに過密だったわけだ。さっそく、それを修正。

弓兵たん、王様たん

あとあと、この日の夕方。CIMAたんから弓兵たんと王様たんの画像もとどく。しばし見とれて、うっとりする。

かっこいいほうの弓兵たん画像。

上をむいた弓兵たん(青軍) 右をむいた弓兵たん(青軍) 下をむいた弓兵たん(青軍) 左をむいた弓兵たん(青軍) 上をむいた弓兵たん(赤軍) 右をむいた弓兵たん(赤軍) 下をむいた弓兵たん(赤軍) 左をむいた弓兵たん(赤軍)

足が5本ないほうの王様たん画像。

上をむいた王様たん(青軍) 右をむいた王様たん(青軍) 下をむいた王様たん(青軍) 左をむいた王様たん(青軍) 上をむいた王様たん(赤軍) 右をむいた王様たん(赤軍) 下をむいた王様たん(赤軍) 左をむいた王様たん(赤軍)

7月28日

クォータービュー画像、描画クラス

きのうまではクォータービュー画面は全ユニットを騎兵として表示していたので、あまりオブジェクト指向的ではなかったが、 CIMAたんから、あたらしく王様たんたちのグラフィックも届いたので、さっそくクォータービュー用の描画クラスをつくってみた。 いちお4月ごろの、さいしょの設計段階で2Dにもクォータービューにも、あるいは3Dにも対応できるようグラフィックエンジンはつくっていたけど、 じっさいに改造するとなると、これが、なかなかたいへん。でもどうにかお昼ごろには完成。 UnitGraphicsEngineAppQuarter.java

7月29日

歩兵たん

午前0時すぎ、歩兵たんの画像がとどく。 これでユニットの画像はぜんぶそろった。 CIMAたん、ほんとうにありがとう。☆⌒(*^-°)v Thanks!!

かっこいいほうの歩兵たん。

上をむいた歩兵たん(青軍) 右をむいた歩兵たん(青軍) 下をむいた歩兵たん(青軍) 左をむいた歩兵たん(青軍) 上をむいた歩兵たん(赤軍) 右をむいた歩兵たん(赤軍) 下をむいた歩兵たん(赤軍) 左をむいた歩兵たん(赤軍)

クォータービューでコントロール

クォータービュー画面だけでユニットをコントロールする方法を考え付く。 つまり描画するときは奥のスクウェアから手前のスクウェアの順で読み出して、奥のスクウェアから描画していたのを逆にする。 そしてユニットに高さのデータをもたせる。 マウスが現在、指してるx座標のスクウェア列のいちばん手前のスクウェアをまず読み出す。 そこにユニットがあれば、そのユニットの高さデータをよみだす。 そしてマウスの指すy座標が、そのユニットの範囲内なら、そのユニットの「クリックされたメソッド」をよびだす。 マウスのy座標外なら、さらにひとつ奥のスクウェアデータを読み出す。そこにユニットがあれば、そのユニットの高さデータを読み出し というふうに、いちばん奥のスクウェアまで、順々によみだしていく。

7月30〜31日

クォータービューで全ユニット

Archerクラス、Infantryクラスをつくる。画像の加工も終えて、 31日の未明には歩兵・騎兵・弓兵・指揮官の全ユニットを描画させることができた。 だが2D画面において、うまく矢が描画されない。。。原因はなんなんだろう。 それに、あとクォータービュー画面で矢を描画する方法もかんがえなきゃね。。。

8月1〜3日

Web上にアップ。

この数週間でクォータービュー画面がついたり行軍画面と戦闘画面がくみあわさったりアプレット自身も、おおきくさまがわりしたので、 それにあわせて操作方法などを記したHTMLファイルも、まとめてつくりなおす。 また7月17日に、ひととおり再設計がおわっていたソースコードも3日の早朝に、先のHTMLファイルといっしょにアップロード。 これを「アプレットβ.2.0」と名づけよう。

8月4日

午前

軍隊の兵士数。

いままでのバージョンにおいては、どんなに保有兵士数の少ない軍隊も、またあるいは多い軍隊も、 戦闘モードでは一律に歩兵1600人、騎兵1600人、弓兵1600人、指揮官(指揮官親衛隊?)100人を配置していたが、 ちゃんと軍隊の保有兵士数、保有馬数、保有弓数におうじて、各兵士を生成して配置するように改良。

しかし、まだ戦闘後の処理をおこなっていない。 ゆえに戦闘で、どれだけの兵士がへっても指揮官さえ倒されなければ軍隊の保有兵士数は戦闘前のまま。 こんどは、これを改良してみようかな。

午後

攻撃方向、防御方向。

Appβ.1.2(2001年6月27日)では、 ちゃんと背後から攻撃された場合、側面から攻撃された場合、前方から攻撃された場合で、 それぞれ与えられるダメージや、受けるダメージを変えていたが、 7月17日にクラスの再設計をおこなったとき、それを一時的にソースから削除していた。きょう、それを復活させる。

8月15日

お昼

クォータービュー兵士の体力表示。

2D画面削除にむけて、クォータービュー画面の強化をはかる。 まず、その第一弾として、スペースキーの押下で クォータービュー画面においても体力バーを表示できるように改良。

矢の描画。

7月30〜31日の時点で矢が描画できなかった原因が判明する。 その原因は、じつに単純なミスでArcherクラスの攻撃メソッドを上書きし忘れていたこと。

そのため、せっかく作ったshotメソッドが呼び出されず、 さらにはshotメソッドが生成する矢オブジェクトも生成されなかったために、 当然、存在しない矢も描画されなかったということであった。。

あとあとクォータービュー版の矢は、けっきょく兵士たちの頭上に描画することにした。 いつか、ひまなときにでもz座標をもたせてアーチを描いて飛んでゆくように改造しよっと♪

8月16日

弓兵たん。

弓兵クラス、飛来物クラスなどについて、いろいろな改良をくわえた。 まず弓兵の索敵アルゴリズムを改良した。 これによって攻撃範囲内に目標ユニットがいた場合は、その目標ユニットを優先的に攻撃するようになった。

弓兵の攻撃メソッドにも改良を加えた。 いままでは弓兵が敵に対して直接、攻撃していたが、 このたびの改良によって(弓兵が作成する)矢オブジェクトを介して敵ユニットを攻撃するようにしてみた。

このたびの改良によって味方の放った、ながれ矢で味方が負傷したり、 放たれた矢が到着したときには、すでにそのスクウェアに敵ユニットがいないということを表現できるようになった。 ただし、いまはまだ矢オブジェクトの攻撃力算出ルーチンをいいかげんにしているので、 今回の改良で弓兵の攻撃力が、おおきく減少した。

8月20日

Canvasクラスの継承クラスが完成。

この数日間、いや正確には1週間くらいまえからだけどネットワークゲームをつくりたくてしょうがない。 で、16日に弓兵クラスの改良を終えたあと、その下準備としてクォータービュー部分を分離させて独立したクラスにしてみることにした。

つまりユニットの表示部分をCanvasから派生した独立クラスとする。 そして、このクラスをコンテナクラスから派生したサブクラスに所有させることにする。 いまはまだ、このCanvasクラスを所有するのはアプレットクラスなわけだが、 そのうち別のクラスが、このCanvasクラスを所有することとなるだろう。

で、今日どうにかQuarterViewerという名前のクラスを作成しおわったわけだけど、つかれた。 まず、いちばん手間取ったのはオフスクリーンを作成するcreateImage(int width, int height)の部分。

createImageは、コンストラクタメソッドのなかで呼び出しちゃいけないのね。 あるていど時間をおいて、つまり、なんらかの準備が整ってからでないとnullしか返さないみたい。 とりあえず、あしたは、このクラスにスクロールメソッドをつけてみよう。。。

8月21日

マウスでスクロール。

きのう、つくったクォータービュー表示クラスには、スクロール機能をつけていなかったので、 それを画面のはしをクリックすることでスクロールするように改良した。

8月22日

スクロールの微調整。

1クリックで1ドットのスクロールは使いづらいので、 クリックしつづければ、そのクリック時間に応じて大きくスクロールするようにしてみた。(最大10ドット) マシンのスペックに応じた細かな操作性への対応が、むずかしいな。。。

8月29日

未明

日記を分割。

いままで、ひとつのページに表示してきた日記をいくつかのページに分割させた。

9月3日

朝〜お昼

Canvasクラスの継承クラス(2D版)。

この日、ちょっと時間があったので 2Dグラフィックの表示部分もCanvas化してみることとした。 この2D部分はクォータービューCanvasが完成すれば削除する予定ではあるが。

9月4日

6時〜8時

Canvasクラスの継承クラス(2D版)の完成。

きのう、いいかげんに作った2D版のCanvasクラスを完成させる。 しかし途中、朝食をつくったり部屋のかたづけをしながらのコーディングだったのに、 たった二時間で完成しちゃったよ。実作業時間は30分ちょっと。これもオブジェクト指向や構造化の恩恵なのかなあ。 ありがたや、ありがたや。。。

名無氏物語@Mたんちゅきちゅき