Last modified: 2010/05/14 01:59:15
実際にSTRアプリとして開発していることをつらつらと。
開発環境
- Emacs JDE 開発環境
- ant ビルドツール
STRで作成したタスク一覧
- ant midp
- ant doja
- ant sb
- ant ftp_shiken
- ant ftp_honban
Antは楽。
但し、以下はWindowsでないと無理ゲ。
- MLD変換
- SMAF変換
- iアプリエミュレータ
- MEXAエミュレータ
対象キャリア
STRでは対象キャリアを以下に統一しています。
- au:オープンアプリ搭載端末
こいつがベースになります。 総合的に仕様が一番貧弱なので、これに合わせれば大体いけます。
- DoCoMo:メガiアプリ端末
903iより前だと、画像等のリソースをスクラッチパッドで管理しないとすぐ容量オーバーになる。 が、面倒くさいので切り捨てました。
jarで一まとめにする方が便利だし初回通信要らないし。
- SB:3GC端末
SoftBankはよくわかりません^^
3キャリアに対応した携帯アプリを作る
iアプリはDo-Ja(Starプロファイルは放置)、 au, SBはMIDP準拠(但し音楽再生でSBはjblendライブラリ使用) なので、このキャリア依存の部分を抽象化してしまえば、以後普通に開発できるはず。
STR 3carrier Framework
いきなりそんな大それたものは作りたくないので、 STRではアプリを作成する度に抽象化を行ってキャリア依存クラスを成長させてます。
現在、メインクラスだけでこうなってます。
Main.java Main.java.i Main.java.s
アプリ起動とキャリア依存を担うクラス。 腹立たしいことにアプリ起動から何までDojaとMIDPが別なので。
antでどのMain.javaファイルを扱うか切り替えてます。
Main.java(au版)の一部
public class Main extends MIDlet { MainCanvas c = null; public Main() { c = new MainCanvas(this); Display.getDisplay(this).setCurrent(c); c.loadTitle(); (new Thread(c)).start(); c.init(); } } abstract class ModelDependenceCanvas extends GameCanvas implements Runnable, CommandListener { // キャリア依存系を書く。こんな感じ。 public void unlock() { flushGraphics(); } }
AbstractCanvas.java
ModelDependenceCanvasを継承した抽象クラス。 どういう携帯アプリを作るにしろこれは要るだろっていうメソッドを書いてます。
ひたすらループさせるあの有名なrun()メソッドはこのクラスにあります。 その中でdoActionという抽象メソッドを呼びます。
GameCommonCanvas.java
AbstractCanvasを継承した抽象クラス。
ポルドラ辺りから導入。
どういう携帯 ゲーム を作るにしろこれは要るだろっていうメソッドを書いてます。
これまでに作成したアプリを見比べて共通化できそうな所を持ってきた感じ。
MainCanvas.java
これが実際のメインクラス。
こうやって揃えておくと、新規アプリを作成してるとき、大体一発で3キャリア共動くアプリが作れます。
MIDIによる音楽再生
音楽再生は結構面倒です。
MIDIを軸とし、極力楽に幅広く3キャリアでBGMを鳴らす構成案。
au
ファイル形式
MIDI
必要なツール
midpのライブラリさえあればOK。
.midファイルがそのまま使用可能
http://appget.com/contest/au2007/lecture/lesson8.html
恐らく一番実装が楽。
DoCoMo
ファイル形式
MLD
変換ツール(.mid→.mld)
- PsmPlayer
http://www.ne.jp/asahi/phs/phs/psmplayer/index.html
出力形式
iメロディFM16和音作成(N)
Softbank
真面目にSMAFを使うと一番面倒なS!。
ファイル形式
SMAF-Phrase
必要なツール
- 音楽ファイル変換(.mid→.spf)
SMAF/Phrase オーサリングツール (ATS-SMAFPhraseL2)
http://smaf-yamaha.com/jp/tools/downloads.html#atsspl2
- MEXA SDK
(com.jblendパッケージを使用するのでライブラリが必要)
http://creation.mb.softbank.jp/
ここで無料会員登録してゲット。
MA-3音源が3GCで一番普及しているが、能力がゴミ。
MA-5音源が妥当だけどごく一部で対応してない機種があるので、 アプリでMA-5かMA-3か選べると良いかも。
#機種判定して音源を決定する方がエレガントですがSTRは面倒なので選択方式。
MA3はツール起動後 Option->Preference->AT Mode でL1(MA-3)を選択。 4チャネル毎にファイルが分かれる(0.spf,0_2.spf,0_3.spf)ので注意。 同期のさせ方とかはMEXA SDKのjavadocを読むと理解可能。
その他
個人設定
こんなelisp書いて M-x wtk から環境を整えてます。
(defvar *wtk-home* "~/program/WTK2.2/apps/") (defun open-wtk-project (project) (let ((project-path (concat *wtk-home* project))) (if (file-exists-p project-path) (progn (big-frame) (find-file project-path) (eshell) ;(split-window) (find-file (concat project-path "/src/com/strnet/game/main/MainCanvas.java"))) (message "project not found.")))) (defun wtk () (interactive) (let ((project (completing-read "Project: " (directory-files *wtk-home*)))) (unless (string= project "") (open-wtk-project project))))
