2008-07-06
■[Prog][Techs] タクティクスオウガの HERMIT を考える
やっぱりこれに勝るゲームは無いと思ったので、もう少し頑張ってみることにした。
タクティクスオウガと言えばそのストーリーや戦闘システムもさることながら、
HERMIT と呼ばれるマップ構成システムが特徴として挙げられるであろう。
ストーリーや戦闘システムを考えるのもそれはそれで面白いが、とりあえず
HERMIT について考えることにした。アイデアは表現できなければ意味がない。
HERMIT のポイント
wikipedia によると、
マップは画期的な2Dで描かれた立体的なオブジェクトを配置する形で描かれており、
HERMITと称されたクエスト独自開発のツールを使用して構成されている。
これは、「高さ」や「パネルの種類」などの各種データから秒間19,000ブロックの
グラフィックを自動生成するもので、極めて少ないデータ量で三次元的なマップを作ることができる。
とある通り、HERMIT は "マップのグラフィックを作るモノ" である。
過去にいろいろと試した結果、疑似3Dのグラフィックを作るときにとりわけ重要なのは以下の 2点だと思う。
- 重ね合わせ処理
- アニメーション
どちらも今の PC のスペックであれば力業でどうにでもなるが、あれをスーパーファミコンの
スペックで実現しているのが凄い。原理が凄く気になる。
だから考えられるところまで考えてみることにした。
そういうわけで
叩き台のソース h01.zip
ちょっとキャラがでかすぎた。でも案外このくらいの大きさも捨てがたいかもしれない。
キャラのドットを描き直すのはかなりしんどいからマップチップの大きさを大きくしてみようか。
あと視点をもっと上にしたようなマップチップにしたほうがよさそうだ。
キャラクタについては ここ とか見るべき。まっこまっこりーん
ちなみにソースのライセンスは修正 BSD。アーカイブに入れるのを忘れていた。
叩き台の設計
ウィンドウへの描画は 3回行う。背景→マップ→ユニットの順。
マップのアニメーション用に 4つバッファを持っていて、それぞれマップがアニメーションしたときの
パターンをあらかじめ描いてしまう。
アニメーションのマップチップをウィンドウに対して毎回描き直す方法もあるが、
タクティクスオウガのようなマップチップは重なり合う部分が多いので無駄が結構あると思う。
上記の方法もメモリ的には厳しいが、実装が一番楽。富豪的な視点から見れば全然問題ない。
ユニットのアニメーションは特殊な処理は行っていない。
今後に向けて
マップとユニットが描けたので、いよいよ本題の重ね合わせを実装する。
- 4 http://images.google.cn/imgres?imgurl=http://www.wink.ac/~h-muro/p/sc03.png&imgrefurl=http://d.hatena.ne.jp/m107/20070505/1178362977&h=464&w=998&sz=85&hl=zh-CN&start=13&tbnid=ufVg8PZ6xJbq6M:&tbnh=69&tbnw=149&prev=/images?q=python+%E3%82%92+a
- 2 http://d.hatena.ne.jp/halo_w2/20050513/p1
- 2 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja-JP-mac:official&hs=2v5&q=opengl+文字+mac&btnG=検索&lr=lang_ja
- 2 http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox-a&rls=org.mozilla:ja:official&hs=G8R&q=OpenGL 文字&start=10&sa=N
- 1 http://209.85.175.104/search?q=cache:J67QHhJQYxEJ:d.hatena.ne.jp/m107/20051225+netbsd+macppc+xorg&hl=ja&ct=clnk&cd=29&gl=jp&lr=lang_ja&client=firefox-a
- 1 http://a.hatena.ne.jp/LazyCoder/
- 1 http://d.hatena.ne.jp/halo_w2/searchdiary?word=*[OpenGL]
- 1 http://r.hatena.ne.jp/XELF/
- 1 http://reader.livedoor.com/reader/
- 1 http://search.yahoo.co.jp/search?p=コンソールへの出力+VB6&ei=UTF-8&fr=top_ga1&x=wrt