たまにはプログラムの話でも 2001年2月12日
まぁたまにはこういうのもいいかと。

いつもアホな文章書いてると、たまにまじめな話をしたくなります。
今日は多分まじめな話です。多分。。。(ぉ

さて、RPGプログラム初心者の俺ですが
つい最近からRPGのプログラミングを始めました。

どんなプログラミングをするときでも何か課題があった方がいいと思ったので
思い切ってDirectXを使うことにしました。

というわけで早速(でもないけど)『VisualBasicDirectXプログラミング』という本を購入。
お値段はというと3,200円+税。。。なんでこんなに高いんだろ?

いろいろと読んでみると、確かに独学ではわからないことばっかり。買ってみるもんだ。(ぉ

本を見ながらなんとか画像転送の方法がわかったので
さっそくマップを歩くプログラムを組んでみました。















































げ、激甘でした。まさにボンカレー。(ぉ

どの辺りが甘かったのかというと、
マップをスクロールさせる際、マップチップを描画しようとするとき
マップの端を何故か描画してくれないんですよ。

なにがおかしいんだろう?どこかミスってるのかな?と思って
まったく同じやり方でDirectDrawをBitBltに置き換えてみると。。。





























ヘ(。Д、゜)ノできるんですよ。これが。

















あ〜。もうわけわかんない!!パソコンぶち壊すぞ!!(ヤリスギ
こんなことなら最初からBitBltつかってればよかったなぁ〜。。。(T-T)
かなりフラストレーションがたまっていたので思わずすぴかさんにヘルプを求めました。
そこでちょっとヒントをもらってピンときたんですよ。

マップをスクロールさせるということは、端の部分をはみ出して描画しなくちゃいけないですよね。
で、X座標が-5のところにマップチップを描画するだけのものを作って試してみると。。。

案の定、描画してくれませんでした。

BitBltならば何も考えなくてもいいところなんですけど、
DirectDrawではX座標またはY座標がオーバーしてしまうと描画してくれないらしいんです。

それさえわかれば後は簡単♪
スクロールするときにマップチップを転送する大きさを計算で変えてやればいいわけです。

。・。・。・。・。・。・。・。・。・。・。・。・。・。・。・。・。・。・。・。ヘ(。Д、゜)ノぼへっ

よし!完成!なんとか歩くことに成功しました!!(T-T)
あまりの感激のあまり10分間も何も無いマップを歩き回っていたことは内緒です。

さて、ここで俺は『ハッ!』と気づいてしまいました。





























ヘ(。Д、゜)ノ解像度640*480って俺の手に負えないんですけど

















別に隠すこともないので描いちゃいますけど、
とりあえず目標は『ブレスオブファイア2風』に仕上げていきたいなと考えています。(とりあえず描いてみました。)
となると、気になってくるのがやっぱり。。。





























ヘ(。Д、゜)ノ戦闘BGですよね

















ファミコンのドラクエのように背景が真っ黒ならいいんですけど、目標が目標なだけにそれはできません。
解像度640*480.。。。?でかいな。320*240にしてしまえ!!
と、こんな理由で急遽解像度を下げることにしました。





























ヘ(。Д、゜)ノそれがあだになりました

















移動のアルゴリズム、またもおかしくなったんですよね。
その理由は簡単。縦のサイズである240がネックになっているんです。

俺のマップチップは32*32ピクセルなんですが、縦のサイズを割ってみると。。。

240÷32=7.5

そう。普通に描画するときも7個と半分を表示しなければいけないんですよね。
これも、BitBltなら全く関係ありません。あくまでもDirectDrawの問題です。

さて、どうすればいいのか?と家庭科のテスト中寝ながら考えていました。(微
そこでなんとなく考えていたのが↓のアルゴ(かな?)です。

1.通常は縦に7個描画したら8個の半分まで描画させる

2.下に歩くということは、8個目の下半分と、9個目の上半分という中途半端な数を描画しなければならない。

3.歩くのとき、マップは8段階でスクロールしているので、1回目から4回目までは8個目の下半分を描画し、5回目から8回目は9個目の上半分を描画する。





























ヘ(。Д、゜)ノめんどい

















でも、これしかないわけですよね。(T-T)
最近風邪気味で頭がぼ〜っとして頭が働きません。(逃げ
というわけで今はとりあえずドット絵を描くことにしました。

別にフルカラーでもよかったのですが、あえて256色で挑戦することにしました。
そのせいで実はパレット作成に失敗して一度マップチップをすべて破棄しました。
今はとりあえずパレットを作ってがんばっています。
ちなみに↑の家の絵はパレットから使用している色だけを抽出しました。
なぜフルカラーではなく256色かというと。。。





























ヘ(。Д、゜)ノせっかくドット絵練習してるのにフルカラーになんてしたら泣けてくるんです

















確かにいいですよ。フルカラー。何色でも使えるので。
でも、せっかくいろんなサイトを見て描き方を練習して使わないのは悔しいじゃないですか。
まぁ、絵が軽くなるというメリットもあるんですが、そんなことは二の次です。(ぉ
自分の努力の成果を実らせるには、これしか方法がなかったんです!!
まぁ、プログラムの関係上パレットを統一しなければならないというのもありますが、その辺は置いときましょう。
やっぱりドット絵ツールでぷちぷちとドットを打っていくのは楽しいですね♪





























ヘ(。Д、゜)ノ調子に乗ってると変な絵ができてますけどね

















まぁ、そんなわけでプログラムの面でいろいろと悩みつつも
『Sun of the Midnight』はアリが歩くようなペースでちまちまと作ってます♪

一応専用ページはプロバイダのスペースに作ることにしました。
まだアドレスは出せませんが、(というより作ってない)なぜかバナーだけは作りました。

100*40サイズのバナー


200*40サイズのバナー


100*40サイズの方が俺のイメージにしっくり来ますね。
まだまだ公開する予定が無いのでとりあえずここに保存しておくという形に。(笑
うん。やっぱり速く公開したいですね。
10000Hit時に何か公開できればいいなと思ってますけど。。。多分無理ですね。(笑




あ〜あ。戦闘BGどうしよう。(素(笑












Back