DirectX(hspdxfix)を使用してみたのですが、いくつか気になるバグもしくは仕様がありました。
- 画像をバッファに読み込んだ後
if stat=1 : goto *chack_error1
es_bye : wait 100
dialog "VRAMの容量が不足しています。",1 : end
という記述を入れないとエラー番号なしのエラーが出ました。
- mes や gcopy など多くの命令が使用できなくなり代わりにes_mes や es_copyなどが使用出来るようになっている。
- mes の代わりに使えるes_mes および es_fmes は自動で改行してくれない。
es_mes "こんにちは"
es_mes "おはよう"
などとやると文字が重なってしまいます。これはかなり不便だなぁ・・・。あえてこういう仕様にしているのだとしたら何かメリットがあるのかもしれませんが、今のところ分かりません。
- es_mesで変数の中身を表示させたいときには
es_mes hensuu × これだとエラーが出てしまう
es_mes ""+hensuu ○
まだまだ標準命令との違いに困らされそうです。ズームは一応出来たのですが、半透明合成に使うes_excopy のパラメータの挙動が意味不明なのでどうなることやら・・・。
DirectXに慣れるために大規模なゲームを作る前に小規模なものを作ってみようかと思うので、横スクロールアクションを作ることにしました。マリオやロックマンみたいなのですね。重力による落下や放物線なども使うから、物理学を使うことになるので楽しみです。キャラ画像は自分で全て描くことにします。アニメーションさせる必要があるので素材は使えないからです(加工という方法もあるにはあるのですが、うまくやれる自信がない)。前回スプライト機能は使わないと言ったのですが、使ったほうが簡単になるようだったら使ってみます。
背景は何枚も自分で書くのはきついので、同じ絵をループさせるか単純な背景にすることで何とかします。ズームは使おうかと思ってたのですが、DirectXに慣れてないので使えるかどうか分かりません。とりあえずDirectXを使ってゲームを作れるようになることを最優先です。
今のところ気になる問題点は
- 敵のAI
- スクロール方法(前回書いたスクロールと違ってキャラを中心としてやらないといけない)
- 半透明合成が出来るかどうか
といった所です。
シューティングを作った時の経験で、敵の出現方法や敵の攻撃パターンなどは何とかなると思います。敵のAIもいい方法が思いつかなければパターンを定義する方法でやってしまえばいいと思います。”仲間”も入れてみたいのですが(自分で戦わないで仲間に戦わせるのが楽しいのでw)敵以上にAIが難しくなると予想してるので、余裕があったら入れます。
今回の期限は4月22日とします。ボリュームは少なくするつもりですが、スクロール・DirectXが思ったより難しくなりそうなので小規模ながら2週間の期限にします(シューティングの期限きつかったし^^;)。期限になった時点で終了していなかった場合、動作が安定して動いている最新のものを完成品とします。