2012年2月11日土曜日

はじめに

すいません、元々図解していたのですが、図を表示すると乱れるようなので、図解は最小限にしました。

わたしが開発しているAndroid用ゲームの開発状況について書き綴っていきます。

これまで、Yahooのブログ(http://blogs.yahoo.co.jp/ysz_ym)の方で、ゲームの開発状況を書いていましたが、今後はAndroid用ゲームの開発をメインにしていく方向にしたので、それならGoogle系列の方が良いんじゃない?と思い、移行することにしました。
まずは、これまでの開発状況について、簡単にまとめておきます。

(1)目的
目的は、シンプルに「携帯端末用のゲームを作りたい」という欲求を満たすことです。
そうなると、選択肢はiPod touch/iPhoneかAndroid端末が妥当ですが・・・

iPod touch/iPhone: Mac導入が必須なのでNG
Macだと自作ツールの移行が面倒だし、外部調達しているツールが揃うか分からない。
恐らく、Windowsほどは充実していないのは確かな筈。
ちなみに、iPadはデカすぎるので、わたし的には「携帯端末」というカテゴリーから除外。

Android端末: Java専用だからNG
根っからのアンチJava派です。
Javaをメイン処理系にした意味が分かりません。
もちろん、石に依存したくないとか、その程度のことでしょうけど。
しかし、あまり大きなメリットは無いし、現時点ではリスクの方が大きい。
Javaが使えることは別に悪く無いけど、Javaメインというのはアーキテクチャとして微妙すぎる・・・

ということで、どちらも敬遠してました。
が、Android端末の場合、C言語も正式にOK(つまり、C言語で作っても正規のマーケットに流すことが出来る)ということを最近知り、とりあえずAndroid端末を導入。

(2)端末導入
当然、スマートフォンだろ?と、思いましたが、想像以上にランニングコストが高い。
携帯電話なら1ヶ月1,000円なのに、スマートフォンだと1ヶ月6,000円・・・
まだ、出始めなのでそんなもんかもしれません。
ということで、Wi-Fi接続のみで利用できる7インチのタブレットを導入。
ただし、スマートフォンで動かせるゲームを作りたいので、Androidは2.3のものを選択。
(本当は、2.2が良かったけど無かった)

(3)開発環境を導入
Android SDKとAndroid NDKを入手。
どうやら、C言語のみで開発する場合、Android 2.3以降限定らしいことを知る。
最低動作環境はなるべく低くしたかったので、仕方なくJava+JNIで作ることに。
しかし、「C言語のみ」とはいっても実はJVM経由で実行される事には変わらない模様。
若干、ダマされた感がある。(まぁ、「よく調べろ」ってことですが)

しかし、Androidのエミュレータがかなり遅い。
このままでは、まともなものは作れないと判断し、
・必要最小限の部分のみAndroid用に実装し、
・主要部分はWindowsで開発
というスタイルで開発できる環境(VG-Engine)の開発に着手。

(4)VG-Engineの開発 ← 今ココ
VG-Engine = Video Game Engineです。
ただし、日産の製品に同一名称のもの(VGエンジン)があるようなので、名前は後で変えるかも。
基本アーキテクチャは下図。
















krt(カーネル依存ランタイム)を用いて実装するVGE(Video Game Engine)とそれを操作するAPI(VGEAPI)から成り、主要部分(game)はカーネルに依存しない範囲のC言語ランタイム(crt)とVGEAPIのみ用いて実装するかたち。
VGEのみWindows用とAndroid用を作ればOKということです。

VGEAPIとWindows版のVGEは完成。
まだ、タイトル画面だけですが、昔造ったゲームをVG-Engineに移植中。

(5)VG-Engineの仕様 <暫定>
VG-Engineとは、要するに仮想VRAM機構を提供するエンジンです。
仮想VRAMは、8ビットカラー(256色)の2面構造。
BG面とスプライト面を持ちます。
・BG面: 一度描画(メモリ書き込み)した情報が保持(スタティックな性質)
・スプライト面: 描画情報は1フレームのみ表示(揮発的な性質)

とりあえず、VGEAPIとしては、
・独自形式の画像情報(パレットを含む)をスロット(0~255)にロードする機能
・スロット上の画像をBG面 or スプライト面に短径転送する機能(vge_put)
・図形描画機能(点、線、円、短径をとりあえず実装)
・BG面のスクロール機能
あたりを実装済み。
これから、ゲームを作りながら追加していきます。

(6)当面のTODO
・昔作ったゲームをVG-Engineに移植
・Android版VGEの作成
・完成したゲームをAndroidマーケットで無料で配布

とりあえず、こんなところです。
ちなみに、本業が忙しいので作業は土日が中心。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...