Java ゲーム作成 〜イメージ(絵)からアニメーションを作るには〜

MagicaVoxelBlenderなどのツールで3Dモデルを作るということに関しては、練習が必要なので。。。まぁ練習する方向で進めることにしました。

そして、練習の間にできることを進めていこうと考えています。

ちょいと調べて見たところ、作成しようとしているゲームは「SRPG」というジャンルのゲームが近い感じです。

できることは以下の3つ

  1. 今まで作成した仕様をプログラムに落とす
  2. まだ決まっていない仕様を作成する
  3. プレーヤーの使用するIMGを取り込んだ後の処理を考える

現状、一番気にしているのは3番の

「IMGを取り込んだ後の処理」に関してどのような実装にするか?

です。1、2に関してはある程度の見通しがついているので、問題ないのですが、この部分に関しては初挑戦な部分なので。。。

まずは調査

やはり「不明点」をそのままにするのはよろしくないと判断しました。
3に関して調べていこうと思います。

理想

理想としては、以下のような手順を考えています。

  1. プレーヤーが作成したIMGファイルをプロコンゲームサーバーに送信
  2. サーバーで受け取ったXMLファイルとIMGファイルを使用してプレーヤーを作成する
  3. バトルフィールド(マップ)を表示
  4. ゲーム開始

この手順で2の部分に関して、以下のように考えています。

  • XML: プレーヤーのステータスを生成するのに使用
  • IMG: プレーヤーの操作するキャラクター生成に使用

イメージするだけならいくらでもできるのですが、如何せん実現できなければ、話にならないので。。。

XMLを使用してのステータスは今まで考えてきたように実装するのは可能です。
Java ゲーム作成 〜ステーテス作成ロジック〜

しかし、IMGからアクションなど、「アップロードされたIMGを動かす」となると、また話が変わってきて、自分の経験にない分野の実装になるので調査、学習が必要になるわけです。

絵が描けない

絵が描けないので、今まで遠ざけて通ってきた部分ですが、今回はそうとも言っていられないのでやる方向で進みます。

まずは問題提起

ここで問題、疑問になることを明確にしておきます。

  1. 1枚のIMGファイルからアニメーションを作成することはできるのかわからない。
  2. マップ(ダンジョン)上のキャラクターを動かすのに2Dと3Dのどちらが適当か?
  3. 2.5Dというのもあるが、いまいち理解できていない
  4. ポイントは、攻撃、防御のアクションが見てわかるようにすることだが、どのような表現が良いか判断しかねている

IMGからアニメーションを作る

この部分に関しては調査してから勧めます。
可能か不可能か?これを明確にする必要があり、そうしないと作成するものがどの方向にススかわかりません。

シンプルに考えてみる

OpenCVを使用するのが無難かもしれない。。。
下のような手順でアニメーションを作成できないだろうか?

  1. IMGファイルを読んで、それをコピー
  2. コピーしたIMGを編集して背景を取り除く
  3. 画像を解析して、例えば足を動かした後の画像背を作成
  4. 2つの画像を切り替える形でアニメーションにする

やはり、3番がネックになるんだなぁ。。。
何か良い方法はないものか?

OpenCVの画像編集

大まかに以下の大まかに以下のような編集ができるようだ。

  1. リサイズする
  2. 回転する
  3. 平行移動させる
  4. 切り抜く(crop)
  5. 挿入する(ロゴ)
  6. モザイク処理をする
  7. ぼかす
  8. 画像をくっきりさせる(シャープ)

他にも、立体視差を使用した変換方法もあるようだが。。。

状況整理

とりあえずは、デフォルトプレーヤーIMG(or 3Dモデル)でゲームを動かしてみることにします。ラチがあかん(笑)

なので、はじめの問題部分に関しては保留にしますが、以下のように修正が効く方向で設計を進めたいと思います。

3Dモデルをアップロードすればいいんじゃね?

今この記事を書いていて気がついたのですが、無理してIMGを変換したりしなくても、3Dモデルをアップロードしてもらえば良いではないですか(笑)。

モデリングをするのに、色々と大変でしょうが、それも楽しみのうち。。。

しかし、ボーンアニメーションなどの方法があるが、これまたLWJGLの学習を深く進める必要あり。。。

修正が効く設計

一言で言うとオブジェクト指向の設計方法です。
キーポイントは下の部分です。

  1. プロコンゲームの起動時(Map生成時)に2D版と3D版を作ってみる(ここばっかりはどうしようもない。。。)
  2. XML、IMG(or 3Dモデル)の読み込み
  3. ステータス生成及び、プレーヤー(アバター)をゲームサーバー上に表示
  4. ゲームスタート

このような手順で処理を進めるとして、3の部分で部品を切り替えてやれば良いように実装します。※設計段階なので変わる可能性あり。。。

まとめ

とりあえずは、実装して動くものを作成するが、以下のパターン分けして実装する方向に進む
設計としては下のようなイメージです。


<パターン1>
アップロードされた3Dモデルをコントロールできるように編集した3Dモデル。
<パターン2>
プレーヤーのIMGファイル、アクションなどの実装イメージがつかない。
<パターン3?(考え中)>
デフォルトアバターを使用する前提で実装するが、プレーヤー自作のアバターも使用できる方向にシフトするか?


それでも、残っている問題は2Dでのゲーム作成の方が実装が容易であるのに、3Dでの実装を考えているところです。

とりあえずは、できるところまで実装します。

ちなみに、テキストのみ、かつ戦闘シーンのみで、モノを作ってみた。

Java ミニゲーム ソース付き 〜テスト駆動開発:文言出力部品を作る〜

JavaFX Image エラー 〜java.lang.reflect.InvocationTargetException〜

Java ミニゲーム ソース付き 〜コンソールアプリからGUIアプリへ〜

しかし、中途半端になってしまう。。。何か良い方法は、無いものか、。。

でわでわ。。。

関連記事

  1. Java プロコンゲーム 〜プログラミングコンテスト向けゲーム〜
  2. Java プロコンゲーム 〜設計2画面の入力フロー〜
  3. Java プロコンゲーム 〜見た目の作成(SceneBuilderの使用)〜
  4. Java プロコンゲーム 〜FXMLを読み込んで表示する〜
  5. Java プロコンゲーム 〜Socket通信を設計する〜
  6. Java プロコンゲーム 〜Socket通信を実装する〜
  7. Java プロコンゲーム 〜プレーヤー生成のシュミレーション〜
  8. Java プロコンゲーム 〜プレーヤー生成のステータスについて〜


投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す