MagicaVoxelやBlenderなどのツールで3Dモデルを作るということに関しては、練習が必要なので。。。まぁ練習する方向で進めることにしました。
そして、練習の間にできることを進めていこうと考えています。
ちょいと調べて見たところ、作成しようとしているゲームは「SRPG」というジャンルのゲームが近い感じです。
できることは以下の3つ
- 今まで作成した仕様をプログラムに落とす
- まだ決まっていない仕様を作成する
- プレーヤーの使用するIMGを取り込んだ後の処理を考える
現状、一番気にしているのは3番の
「IMGを取り込んだ後の処理」に関してどのような実装にするか?
です。1、2に関してはある程度の見通しがついているので、問題ないのですが、この部分に関しては初挑戦な部分なので。。。
まずは調査
やはり「不明点」をそのままにするのはよろしくないと判断しました。
3に関して調べていこうと思います。
理想
理想としては、以下のような手順を考えています。
- プレーヤーが作成したIMGファイルをプロコンゲームサーバーに送信
- サーバーで受け取ったXMLファイルとIMGファイルを使用してプレーヤーを作成する
- バトルフィールド(マップ)を表示
- ゲーム開始
この手順で2の部分に関して、以下のように考えています。
- XML: プレーヤーのステータスを生成するのに使用
- IMG: プレーヤーの操作するキャラクター生成に使用
イメージするだけならいくらでもできるのですが、如何せん実現できなければ、話にならないので。。。
XMLを使用してのステータスは今まで考えてきたように実装するのは可能です。
Java ゲーム作成 〜ステーテス作成ロジック〜
しかし、IMGからアクションなど、「アップロードされたIMGを動かす」となると、また話が変わってきて、自分の経験にない分野の実装になるので調査、学習が必要になるわけです。
絵が描けない
絵が描けないので、今まで遠ざけて通ってきた部分ですが、今回はそうとも言っていられないのでやる方向で進みます。
まずは問題提起
ここで問題、疑問になることを明確にしておきます。
- 1枚のIMGファイルからアニメーションを作成することはできるのかわからない。
- マップ(ダンジョン)上のキャラクターを動かすのに2Dと3Dのどちらが適当か?
- 2.5Dというのもあるが、いまいち理解できていない
- ポイントは、攻撃、防御のアクションが見てわかるようにすることだが、どのような表現が良いか判断しかねている
IMGからアニメーションを作る
この部分に関しては調査してから勧めます。
可能か不可能か?これを明確にする必要があり、そうしないと作成するものがどの方向にススかわかりません。
シンプルに考えてみる
OpenCVを使用するのが無難かもしれない。。。
下のような手順でアニメーションを作成できないだろうか?
- IMGファイルを読んで、それをコピー
- コピーしたIMGを編集して背景を取り除く
- 画像を解析して、例えば足を動かした後の画像背を作成
- 2つの画像を切り替える形でアニメーションにする
やはり、3番がネックになるんだなぁ。。。
何か良い方法はないものか?
OpenCVの画像編集
大まかに以下の大まかに以下のような編集ができるようだ。
- リサイズする
- 回転する
- 平行移動させる
- 切り抜く(crop)
- 挿入する(ロゴ)
- モザイク処理をする
- ぼかす
- 画像をくっきりさせる(シャープ)
他にも、立体視差を使用した変換方法もあるようだが。。。
状況整理
とりあえずは、デフォルトプレーヤーIMG(or 3Dモデル)でゲームを動かしてみることにします。ラチがあかん(笑)
なので、はじめの問題部分に関しては保留にしますが、以下のように修正が効く方向で設計を進めたいと思います。
3Dモデルをアップロードすればいいんじゃね?
今この記事を書いていて気がついたのですが、無理してIMGを変換したりしなくても、3Dモデルをアップロードしてもらえば良いではないですか(笑)。
モデリングをするのに、色々と大変でしょうが、それも楽しみのうち。。。
しかし、ボーンアニメーションなどの方法があるが、これまたLWJGLの学習を深く進める必要あり。。。
修正が効く設計
一言で言うとオブジェクト指向の設計方法です。
キーポイントは下の部分です。
- プロコンゲームの起動時(Map生成時)に2D版と3D版を作ってみる(ここばっかりはどうしようもない。。。)
- XML、IMG(or 3Dモデル)の読み込み
- ステータス生成及び、プレーヤー(アバター)をゲームサーバー上に表示
- ゲームスタート
このような手順で処理を進めるとして、3の部分で部品を切り替えてやれば良いように実装します。※設計段階なので変わる可能性あり。。。
まとめ
とりあえずは、実装して動くものを作成するが、以下のパターン分けして実装する方向に進む
設計としては下のようなイメージです。
<パターン1> アップロードされた3Dモデルをコントロールできるように編集した3Dモデル。 <パターン2> プレーヤーのIMGファイル、アクションなどの実装イメージがつかない。 <パターン3?(考え中)> デフォルトアバターを使用する前提で実装するが、プレーヤー自作のアバターも使用できる方向にシフトするか?
それでも、残っている問題は2Dでのゲーム作成の方が実装が容易であるのに、3Dでの実装を考えているところです。
とりあえずは、できるところまで実装します。
ちなみに、テキストのみ、かつ戦闘シーンのみで、モノを作ってみた。
Java ミニゲーム ソース付き 〜テスト駆動開発:文言出力部品を作る〜
JavaFX Image エラー 〜java.lang.reflect.InvocationTargetException〜
Java ミニゲーム ソース付き 〜コンソールアプリからGUIアプリへ〜
しかし、中途半端になってしまう。。。何か良い方法は、無いものか、。。
でわでわ。。。
関連記事
- Java プロコンゲーム 〜プログラミングコンテスト向けゲーム〜
- Java プロコンゲーム 〜設計2画面の入力フロー〜
- Java プロコンゲーム 〜見た目の作成(SceneBuilderの使用)〜
- Java プロコンゲーム 〜FXMLを読み込んで表示する〜
- Java プロコンゲーム 〜Socket通信を設計する〜
- Java プロコンゲーム 〜Socket通信を実装する〜
- Java プロコンゲーム 〜プレーヤー生成のシュミレーション〜
- Java プロコンゲーム 〜プレーヤー生成のステータスについて〜