アニメーションリソース
マップにはたくさんのマップチップが敷き詰められるわけで、以前のシステムだとマップチップへのポインタを保持していたのですが、今回はリソース管理をマップ側でできなくした影響でちょっとメモリを余分に食いそうな気がします。
あと、ふにゃさんからゲーム画面録画機能を移植しようと思っています。
ちょっと見たところ思いっきりふにゃさん用にカスタマイズされていましたが、少し手直しすればそのまま持ってこられそうな気がします。
マップにはたくさんのマップチップが敷き詰められるわけで、以前のシステムだとマップチップへのポインタを保持していたのですが、今回はリソース管理をマップ側でできなくした影響でちょっとメモリを余分に食いそうな気がします。
あと、ふにゃさんからゲーム画面録画機能を移植しようと思っています。
ちょっと見たところ思いっきりふにゃさん用にカスタマイズされていましたが、少し手直しすればそのまま持ってこられそうな気がします。
Bomber丸Worldのマップシステムについて考えてました。
高さマップは廃止する方向だったと思うのですが、やっぱり演出上あったほうがよさそうな気がしたので、軽く取り入れてみることにしました。
全体的には旧マップシステムを取り入れる形で実装してみようと思います。
そろそろまたBomber丸Worldのほうの開発に移ろうかなと思ってます。
3年前にRPG作ろうとして挫折して、最近また作り直し始めたという人の動画を見て、同じことやってみたいなーと…あ、いや、こっちは別に頓挫したわけじゃないから、単純に制作過程を動画サイトにアップするのもいいかなと思ってたりしてただけなんですが。
で、紹介動画を作るために動画編集ソフトを探し回っていたというわけですよ。
本当に久しぶりに本家メテオスオンラインのほうのページを更新しました。
ルミオスのページ、本当はサービス終了前から画像は用意していたのですが、サービス終了告知の影響で精神的に作れる状況じゃなかったんです。
リニューアルを機に、手遅れながら、作ってみました。
本当はもっといっぱい書くことがあったような気がしますが、やっぱり実物がないことには…。
ちなみにもどきのほうのロケット噴射については、どうしてもうまくできないので、もう諦めてしまう方針です。
作りかけのオリジナル惑星も、背景とか、設定とか、いろいろ作ろうと思っていたのですが、こちらも諦める方向です。
そういえば2007年中にゲームとして成り立つくらいには作り上げるといっていたBomber丸World、Wiki見ても分かると思いますが、メテオンもどき開発開始のころからほぼ手をつけていません。
最近になって、状況を思い出すためソースを覗いてみたら、結局思い出したのはマップ処理の方針が決まらなくて開発停滞していたということ。
ちと年内にプログラム完成、年度内にデータも完成というのは無理そうです。
とりあえずキャラボックスの画像配置アルゴリズムが改良できたのでアップしてきました。
以前のバージョンだと縦長か横長かだけで配置方法を決定していたために、画面の大きさと画像の大きさの組み合わせによって、不必要に小さくされる症状がありました。
まあ、非常に微妙な部分ですし、表示部が完全に正方形ならバージョンアップしなくても何も問題はないのですが。
そうそう、Bomber丸World、忘れてませんよ。
でもゲーム本体の前に、ゲームエンジン利用の実践練習ということで、Bomber丸Worldのゲームエンジンを使って事前にいろいろミニゲームを作ってみようかと考えています。
楽しいのができるといいなぁ。
メテオンもどきを改良していました。
まず、旧形式のデータを投稿してもエラーが出ないようにしました。
そして、お試しプレイ前にデータ抽出してもちゃんとデータを取れるようにしました。
そうそう、VistaでのBomber丸World開発環境を整えました。
DirectX8SDKを入れてVC6を入れればそれで終わりだと思っていたのですが、ディレクトリ設定で優先するディレクトリを間違えて設定していたため、一部のライブラリが古いほうを使われ、リンクに失敗するということがありました。
もちろん今ではそれも直しましたが。
メテオンもどきでやることがないときはこっちのほうを開発しましょうかね。
掲示板に不具合報告フォームをつけました。
内容的には単なる入力支援に過ぎず、通常の文章に変換して投稿するだけなのですが、エラー報告にどのようなことを書けばいいのかわからない人のためにはなるかと思っています。
爆ボンのページの2ヶ国語化のためのスクリプトができたので、早速トップページから2ヶ国語化中です。
Bomber丸WorldをVC++2005でコンパイルしようと試行錯誤していたのですが、コンパイルが通った後に実行時エラーが出たところで力尽きました。
やっぱりたとえ互換性に問題があるといわれていようともVC++6でBomber丸Worldは開発しようと思います。
VC++2005を使うのは、今後1から作るプロジェクトだけ、ということにしましょうかね。
学校で工作実習でした。
溶接などの金属加工ですね。
フライス盤でガリガリ削ったりもしました。
今日はBomber丸Worldのマップ表示を作り始めました。
ウィンドウ内に表示することが前提なので表示対象の大きさに合わせて表示を調整したりもできるようにします。
マップシステムについて、だんだん思い出してきました。
マップチップとキャラをまず全部3D空間上に配置してZソートして奥から順番に表示、表示対象をCBWWindowにしても正常にクリッピングして表示、マウス操作対応のため見た目の座標と内部座標の対応、データ部と表示部のプログラムの分離、などなどなど…。
NeoMuplで、なんとなくランダムのくせに選ばれる曲が偏る気がしたので、スキップ率に加えて、時の重みというパラメータをつけて、最近再生されていない曲を優先的に選ぶようなオプションをつけました。
正直、100倍優先にしても数千曲の中だと焼け石に水のような気もしますが、なんとなく水なりの効果はあるような気がしてます。
メテオスもどきはシュートのおかしな挙動を少し改善しました。
ここのところメテオスもどきばかりだったので、久々にBomber丸Worldの開発を再開しようと思ったのですが、すっかり何をやっているのか忘れてしまいました。
たぶんマップ表示の再実装を試みるところだったと思うんですが、該当するプロジェクトを開いてもまだ作り始めてもいなくて、どのような方針で作るのかすらわからない状況でした。
そんなわけで、アニメーションやリソース管理システムをいじりました。
これでマップを表示するときにアニメーションをコピーしまくってもメモリエラーを起こさないのです。
マップ表示自体は一から作り直すことになったのですが、流用を考えて中身をチェックしていたおかげで問題点がいち早く見つけられたように思います。
そんなわけで、明日からはマップ表示を一から作り直します。
こっそりメテオスもどきを作ってやろうかと画策中です。
遠からず終わってしまうメテオスオンラインに最後の光を与えることができるか、それともQに喧嘩を売ることになるのか、はたまた燃えカス1個ほども影響がないのか、わかりませんが、何か思い出に作っておきたいんです。
う~む、マップシステム、アニメーションの扱いが根本的に変わっているので以前と同じアルゴリズムではうまく動いてくれなさそうです。
それどころかまたアニメーションやリソース管理システムもいじらなければならないような気がしてきましたよ。
メテオンのページのほうは料金のページに画像を追加しました。
どこでどのようにお金がかかるかなどですね。
まぁ、それでもメテオスオンライン初心者向けガイドは続けるわけです。
サービス終了まであと3ヶ月あるわけですし。
とりあえず金がかかりそうという不安を解消するためのページを作ってきました。
メテオスオンラインのことであまり沈んでいても仕方がないので、他にBomber丸Worldの開発なども再開しました。
とりあえずアニメーションを完成させて、マップ処理に取り掛かったところですが、やっぱり以前と変わっている部分は結構変わっているので、前のを流用せずマップシステム構築しなおすべきか、考えています。
そうするとまた少し時間がかかってしまうんですけどね…。
さて、いろんなところ(特にシナリオ関連のLuaスクリプト)から自由にアクセスできるゲーム中の状態を保持するグローバル変数が欲しいところです。
そこで、Lua変数と互換の、ゲーム全体で、つまり複数のLuaステートの環境をまたいで利用できるデータ構造を考えてみました。
まぁ、あまり複雑なデータ構造にするのもなんだから、単純に名前と実際のデータのペアのような形で実装することになりそうです。
アニメーションのスクリプト制御は出来上がったはずです…一応。
テストが済んでいなかったりというのもあるのですが、スレッドをC側から閉じるすべがないとはいえ、スレッドの終了をLua側に押し付ける形になったのが少し心残りでした。
スレッドを使わない方法なら別に良かったのですが、終了の責任を押し付けられてもやっぱりスレッドを使ったほうが楽そうな気がしましたので。
スレッドを終了し損ねてもそんなにむちゃくちゃメモリが食われることは無いと思うし…。
標準のアニメーション処理できました。
で、アニメーション処理自体はうまくいったのですが、描画エンジンの不具合でむちゃくちゃ拡大して表示されたので今日はさしあたりその部分を直していました。
原因は一部分の切抜きのときでも表示されるサイズを画像全体の大きさを基準に決めていたことでした。
後はスクリプト制御だけです。
アニメーションの動きの部分を作ってます。
とはいえ、この動作自体は以前に作ったものでほぼ完成されているのでデータの仕様変更に合わせる以外はほぼそのまま移植しています。
まあ、その仕様変更が結構いろんなところで効いてきたりもしているのですが…。
NeoMuplのスキップ率の挙動がどうにもおかしいような気がしたのでちょっとプログラムをいじってました。
どうにもプログラムを見た限りでは何の問題もなさそうだったので実際に動かそうと思ったのですが、今現在デバッグ用に入れてあるデータは無効なデータが多い状態だったので、スキップ率のことはとりあえず置いておいて、無効なデータを消しやすいようなエラー処理の拡張をしました。
Bomber丸Worldのほうは、アニメーションデータの要素の一つとして、アニメーションの動きがどの範囲で変動するかというデータが必要だったのでそれに対応するデータを追加しました。
マップ表示のためのアニメーション機能を作ってました。
プログラムで細かい制御したい!データを楽に作りたい!
とか考えていると、複数のフォーマットができてしまったので両方対応させることにしました。
一つはLuaスクリプトにより複雑なアニメーションができる方式。
もう一つは1コマ1コマのデータを指定するシンプルなアニメーション形式。
最後に実はもう一つ、もっとシンプルに一枚絵の形式。
あわせてこの3つです。
アニメーションの使い方は以前に作っていたものよりもずいぶんとシンプルになり、ファイル形式も冗長ながらよりシンプルな形式になりました。
ゼルダの伝セス(いつもながらとんでもない略し方!)ではおばちゃんのふるさとへ。
想像はしていたけど、やっぱり実際に見てみると圧巻。
…というほど凄まじい光景ではありませんでしたが。
上昇気流に乗って飛ぶ感じはロックビルを思い出させます。
Bomber丸Worldは、マップ表示関連のファイルを旧プロジェクトからコピーしてきて、新プロジェクト向けに書き直しているところです。
マップ表示に関わる部分といえば、マップそのものの表示、キャラクターの配置、アニメーション処理の3つなのですが、中には考え方自体が変化しているものもあるので、もしかしたら全部書き換え…ってことになるかもしれません。