Last modified: 2010/05/14 01:59:15

実際にSTRアプリとして開発していることをつらつらと。

開発環境
対象キャリア
3キャリアに対応した携帯アプリを作る
STR 3carrier Framework
MIDIによる音楽再生
au
DoCoMo
Softbank
その他
個人設定

開発環境

STRで作成したタスク一覧

Antは楽。

但し、以下はWindowsでないと無理ゲ。

対象キャリア

STRでは対象キャリアを以下に統一しています。

こいつがベースになります。 総合的に仕様が一番貧弱なので、これに合わせれば大体いけます。

903iより前だと、画像等のリソースをスクラッチパッドで管理しないとすぐ容量オーバーになる。 が、面倒くさいので切り捨てました。

jarで一まとめにする方が便利だし初回通信要らないし。

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)

http://www.ne.jp/asahi/phs/phs/psmplayer/index.html

出力形式

iメロディFM16和音作成(N)

Softbank

真面目にSMAFを使うと一番面倒なS!。

ファイル形式

SMAF-Phrase

必要なツール

SMAF/Phrase オーサリングツール (ATS-SMAFPhraseL2)

http://smaf-yamaha.com/jp/tools/downloads.html#atsspl2

(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))))