HSP : HSP3Dish / onion software 2012(c)
iOS版 HSP3Dishは、iOS搭載機種(iPhoneシリーズ,iPadシリーズ,iPod Touch)上で動作するHSP3Dishのランタイムです。
Windows版 HSP3Dishがサポートする機能をiOS上で再現することが可能です。
(iOS版 HSP3Dishは、Windows版のスクリプトを実行させることを目的としており、HSP3開発システムそのものをiOS上で再現するものではありません。)
このマニュアルでは、iOS版の利用方法、注意点などを説明していきます。
現状ではiPhone/iPadの実機上で動作させるためには、MacOSX環境及び開発ツールXcode、iOS Developer Program(有償)が必要になります。
ここまでに必要なプロセスは、通常のiPhone/iPadの開発と変わりません。詳しくは、iOS Developer Programのホームページなど各種資料を参照してください。
iOS Developer Program http://developer.apple.com/jp/programs/ios/
このドキュメントでは、Xcode4.2以降が実際に動作し、iPhone/iPadの実機にプログラムが転送できることを前提として、HSP3Dishの導入方法を解説します。
それまでの準備については、既存のマニュアル等をご覧ください。
使用するターゲットSDKのバージョンは、4.3以降を想定しています。
iOSフォルダには、HSP3Dishランタイム及びxcode用のサンプルプロジェクトが含まれています。
iOS上でスクリプトを動作させる場合には、最初にWindows上でスクリプトをCソースコードに変換します。
スクリプトエディタの、「ツール」メニューから「指定ファイルをCソースに変換」メニューを選択してください。
ツールの画面が起動するので、block3のスクリプトを指定して「変換」ボタンを押してください。
この時、「出力ソースをUTF-8に変換」のチェックをONにしておくのを忘れないでください。
※HSP3.3フォルダにある、hsp3cnv.exe(HSP3ソースコンバーター)を最新版にするのを忘れないでください。最新版はHSP3Dish(このアーカイブ)に同梱されています。
正常に終了するとスクリプトと同じフォルダに拡張子が.cppのCソースファイルが作成されます。 これでスクリプトの準備は完了です。
OSX上でXcode4を起動して新規プロジェクト(Create a new Xcode project)を選択します。 テンプレートの選択画面になりますので、「iOS Application」の「Empty Application」を選び「Next」を押してください。
オプション画面で、製品名(Product Name)入力します。
識別子(Company Identifier)は、作成者を識別する名前(メーカー名など)を入力します。
Class Prefixは空欄にしておいて構いません。
Device FamilyはiPhoneに設定し、3つのチェックボックスは、基本的には外しておいて下さい。
次に、プロジェクトのフォルダを作成する場所を設定します。これは任意の場所を指定して構いません。
正常にプロジェクトが作成されると、開発環境(IDE)が起動します。
メインウィンドウにプロジェクトの概要(Summary)が表示されるはずです。
デフォルトで、Deployment Target(対応OSのバージョン)が5.0に設定されているので、 幅広いターゲットでも動作するよう、OS4.3以降に下げておくことを推奨します。
作成されたプロジェクトのフォルダと同じ階層に、「iHSP15」フォルダを配置してください。 「iHSPxx」フォルダはアーカイブ内のiOSフォルダに同梱されています。
XCode上でプロジェクトに必要なファイルを追加してください。
Fileメニューから、「Add Files to〜」を選択し、「iHSP15」のフォルダ(下層も含む)を追加(Add)します。
さらに、Windows上で作成されたCソースファイル(拡張子が.cppのファイル)を追加(Add)します。
続いて、プロジェクトにフレームワークの追加を行ないます。以下のフレームワークを追加してください。
フレームワークの追加は、プロジェクトの「Summary」タブの「Linked Frameworks and Libraries」項目の「+」ボタンで行なうことができます。
正常に追加されると、ファイルナビゲーターは以下のような状態になります。
必要に応じて、プロジェクトのSupporting Files内にある、[プロジェクト名]-info.plistファイルにフルスクリーンの設定を追加します。
アイコンやデータファイル(画像やサウンド)がある場合は、「resource」フォルダを作成してプロジェクトに追加(Add)してください。
パッケージに含まれるPNGファイルの最適化(圧縮)を無効にします。これは、HSPが外部のPNG読み込みライブラリを使用するために必要な設定です。
以上で、hsp3dishのビルドを行なう環境が整いました。
実際にHSP3Dishを実行させる場合は、HSPランタイムの初期化コードをAppDelegateに組み込む必要があります。 プロジェクトの作成時に自動的に生成される、AppDelegate.mファイルをエディタで開き編集します。
冒頭の「#import "AppDelegate.h"」の下に以下のコードを追加してください。
(「iHSP15」への相対パス指定によりクラス宣言を読み込んでいます)
#import "../../iHSP15/Classes/HspView.h"
次に「- (BOOL)application:〜{」のあるブロック内の「// Override point for customization after application launch.」行の直前に以下のコードを追加してください。
(HSPの実行を行なうHspViewクラスを生成しウィンドウに設定しています)
//ビューの生成と追加 HspView* view=[[HspView alloc] initWithFrame:CGRectMake(0,0,320,480)]; [view startFrame:60]; [view clsMode:1 color:0xffffff]; [self.window addSubview:view]; [view release];
さらに「self.window.backgroundColor =」のある行頭に「//」を追加してコードを無効にします。
// Override point for customization after application launch. //self.window.backgroundColor = [UIColor whiteColor];以下のようなコードになっているか確認してみてください。
HSPランタイムを組み込む追加コードにより、いくつかの設定を行なうことができます。
HspView* view=[[HspView alloc] initWithFrame:CGRectMake(0,0,320,480)];
この設定により、左上(0,0)から(320,480)の範囲を描画フレームとしています。 320×480は、iPhone 3GSの設定に合わせてありますが、iPadなど他の解像度を利用する場合はこの値を変更する必要があります。
[view startFrame:60];
この設定により、タスクが実行されるフレームレートをコントロールすることができます。 通常は、60を指定することにより秒間60フレーム(fps)となっていますが、この値を変更することができます。 通常のHSPとは異なり、iOS版のHSP3Dishでは指定されたフレームレートを単位として実行を行なっています。 高いフレームレートを指定することも可能ですが、CPUにかかる負荷はバッテリー消費に影響がありますので、 できる限り抑えた値にしておくことを推奨しています。
[view clsMode:1 color:0xffffff];
この設定により、「redraw 0」による描画開始時に画面をクリア(消去)するかどうかを変更できます。
デフォルトの設定では、クリアは有効に、背景色は白(0xffffff)が指定されています。
「clsMode:0」にした場合は画面のクリアは行なわれませんので、自前でクリアする必要があります。
(自前で画面クリアを行なう場合に、重複してクリアすることを避けるためのオプション設定になっています。)
「color:0xffffff」は、クリアする色を指定するもので16進数によりRGBのコードを記述します。
タスク切替時には、HSPの実行を停止し処理を軽減させることを推奨します。 作成した「AppDelegate.m」ファイルの、applicationWillResignActive内に以下を追加してください。
HspView* view =(HspView*)[self.window.subviews objectAtIndex:0]; [view actMode:0];
次に、applicationDidBecomeActiveに以下のコードを追加してください。
HspView* view =(HspView*)[self.window.subviews objectAtIndex:0]; [view actMode:1];
既にサンプルには、これらのコードが含まれています。 iOSフォルダに含まれているAppDelegate.mファイルを上書きして頂いても構いません。
適切に設定を行なった上で、「Run」ボタンでビルド実行を行なってください。 HSP3Dishで作成したスクリプトが実行されるはずです。
新規プロジェクトを作成した場合は、デフォルトでビルドスキームがDebugになっています。 ProductメニューのEdit Scheme...の設定で、Build Configurationを「Release」に変更することで、最適化されたコードが出力され、より高速に実行されます。
iOS版ランタイムver1.1から、以下の機能が追加されています。
bsave命令により、変数バッファの内容をユーザーデータとして保存することができます。
(iOSではフォルダの指定はできませんので、ファイル名だけを指定するようにしてください。)
保存されたデータは、同じファイル名を指定することでbload命令により読み出すことが可能です。
bsave命令で、リソースにあるファイルと同じ名前で保存することはできません。
ユーザーデータは、アプリケーションごとに異なる領域に保存されます。異なるアプリケーション間でデータを共有することはできません。
また、bsave命令では、ファイルのオフセット指定(ファイルの一部だけを書き換える機能)は無効になっていますので注意してください。
Windows版(3.3a2)で追加されたgfilter命令をiOSでもサポートしました。描画時のフィルタリングモードを設定することができます。
マクロ名 値 内容 ------------------------------------------- FILTER_NONE 0 補間なし(NEAREST) FILTER_LINEAR 1 直線補間(LINEAR)
使用できる補間モードは、0(補間なし)と1(リニア補間)のみです。 標準では、補間なし(NEAREST)が設定されています。スクリプト中で「gfilter 1」のように設定した後の描画命令で、 フィルタリングモードが反映されます。
iOS版ランタイムver1.2では大幅な機能の追加は行なっていません。 hsp3cnvの更新に伴う対応により、スクリプト変換時の互換性が向上しています。
iOS版ランタイムver1.3では以下の更新を行なっています。
画像ファイル読み込みを内部API(QuartzCore)からandroidと同様のstb_imageに変更しました。
これにより、取り扱うことのできる画像ファイルの種類が変更されています。
また、従来発生していたPNGファイルのαチャンネル値が正しく反映されない不具合が修正されます。
リソースにdata.dpmファイルを追加することにより、複数ファイルがパックされたデータにアクセスすることが可能になりました。 ただし、音声ファイルやアイコンなどiOSのシステムがアクセスするファイルは含めることができませんのでご注意下さい。
ランタイムの更新により、grotate、gsquare、gradf、setreq、getreq命令がサポートされます。 また、不具合修正によりスクリプト変換時の互換性が向上しています。
iOS版ランタイムver1.4では以下の更新を行なっています。
exec命令でURLスキームを指定することにより、Safariブラウザを指定したURLで開くことができます。
exec "http://hsp.tv/",16
上の例では、「hsp.tv」のサイトを開きます。 Windowsの時と同様に、第2パラメーターに16(関連付けアプリケーション実行)を指定するようにしてください。
システムによるダイアログ表示をサポートしています。 タイプ0〜3のみをサポートしています。ただし、Windows版のような警告アイコン等は表示されません。 「はい」「いいえ」の選択肢を選んだ場合は、Windows版と同様の結果がシステム変数statに代入されます。
iOS版ランタイムver1.5では以下の更新を行なっています。
スクリプト中のwait,await命令で指定された時間待ちを正しく反映するように修正しました。
ただし、実行のタイミングはあくまでも [view startFrame:60] で指定されたフレームレートに従いますので、それ以上のレートにはなりません。
基本的には、フレームレートは60fpsを使用すれば問題ありません。
いくつかのマイナーな不具合修正を行なっています。 ローカルストレージ(ユーザーデータ)のbsave,bloadでオフセット値が使用できるようになったほか、mes命令のカレントポジション移動、line命令の座標ずれなどが修正されています。
タップした座標がmousex,mouseyに反映されます。 またstick命令により、クリック(タップ)のON/OFFを取得可能です。
celload、picload命令などで読み込まれる画像は、以下のフォーマットが使用できます。iOSでは、PNG形式が推奨されます。
celload、picload命令などで読み込まれる画像が、2^nのサイズ、つまり縦・横のサイズが1,2,4,8,16,32,64,128,256,512であることが推奨されます。正方形である必要はありません。 (2^nでないサイズ読み込み時には、内部で変換を行なうためオーバーヘッドが発生します) 1024,2048,4096などの大きなサイズの画像は扱えない機種もあるので、推奨されません。
拡張子が「.wav」「.mp3」「.caf」「.aac」のファイルに対応しています。 圧縮された音声ファイルについては、mmload命令で読み込んだ時点ですべての波形がメモリに展開されるため、多くの音楽を同時に読み込むことは推奨されません。 「.wav」「.mp3」については、Windows版のhsp3dishでサポートされている形式です。 「.caf」「.aac」形式は、Mac及びiOSでサポートされている形式です。
以下の機能は今後、上から順に高い優先度で追加される予定です。
バージョンアップの告知は、HSPオフィシャルサイトHSPTV!にて行なわれますので、随時ご確認ください。