ホーム > タグ > hsp3cnv
hsp3cnv
HSPで作るスマートフォンアプリ
※この記事は古い内容が含まれています。
HSPで作るスマートフォンアプリの詳細は、こちらにまとめられています。
HSPで作られたソフトは、今まで主にWindows上で動作していましたが、もっと多くの環境・機種で動かしてみたいという人も多いと思います。現在、HSPによって作られたソフトをiPhoneやiPad、iPod TouchといったiOS搭載機種で動作させるためのテストを行なっています。
以下は簡単なデモ映像です。
これは、HSP Dish(device interpolation shell)と呼ばれるシステム上で動作しています。既に発表しているHSP3ソースコンバーターによって、HSPの中間コードをC言語に変換した上で、HSPと同様の描画、制御用ライブラリをデバイスごとに用意するというものです。
もちろん、プラグインも含めたHSPのすべての機能をiPhoneで動作させることはできないので、HSP Dishの仕様として共通の枠組みを用意した上で開発する形になる予定です。HSPの標準命令や関数、マクロ、モジュール機能などのデバイスに依存しない機能については、HSP3ソースコンバーターが対応する範囲ですべて利用可能です。拡張プラグインについては、現在物理エンジン(OBAQ)を仮に対応させていますが、今後さらに追加の検討を行なっていきます。
HSP Dishでは、一度ネイティブコードに変換して実行されるため、モバイル端末など限られたCPUリソースの中でも、インタプリタ型よりも効率的に実行されます。iOS上でも、多くの場合は実行速度を気にする必要はないでしょう。
iOS版については、開発環境としてMacのxcodeが必要になることや、デベロッパーの登録が必要になるので、やや敷居が高いですがWindows上のHSPで開発したものを、AppStore等のマーケットに登録することができれば、HSPのソフト開発者にとって新しい発表の機会が広がっていくと思います。
また、これと並行してandroid OS搭載の端末に向けたHSP Dishの開発も進めています。android OSであれば、iOSよりも敷居が低く誰でも開発、登録などを行なうことができるようになります。
今後、普及が進んでいく携帯デバイス、そしてスマートフォンに向けたアプリを、HSPで手軽に開発するという道を、これから少しずつ整備していきたいと考えていますので、Windows版ともども宜しくお願いします。
- Comments: 22
- Trackbacks: 2
HSP3ソースコンバーター ver0.3
かなり前から、OpenHSP上でHSP3ソースコンバーター(hsp3cnv)の実験を行なっていて、少しずつ形になってきています。
hsp3cnvは、HSP3のコードを他のソースに変換するためのツールで、C++言語など他の言語及びプラットフォームに向けたソースの移行を可能にするためのツールです。現在のバージョンでは、HSP3のソース(.hsp)をC++言語のソース(.cpp)に変換することができます。これによりネイティブコード動作による高速化や解析に対するセキュリティ向上などが期待できます。
hsp3cnvは、OpenHSPからも最新版をダウンロードできますが、まとめたアーカイブをβ版としてここでも公開するとともに簡単な使用方法を記しておきます。
※注意
HSP3ソースコンバーターは、できる限りHSPのソーススクリプトを他のシステムで運用できるよう変換を行なうもので、すべてのHSPソーススクリプトの変換を保証するものではありません。このバージョンは、テスト版のため多くの機能が実装されていません。変換の流れや、システムの概要を知るための参考程度にお使い下さい。
ダウンロードはこちらからどうぞ。
hspcnv03.zip (234.6 KiB)
おおまかな利用方法は以下の通りです。
- 変換したいソースをスクリプトエディタで読み込み、オブジェクトファイルを作成します(HSPメニュー→オブジェクトファイル作成)。
この時、最初の行に「#cmpopt varname 1」を入れておくと変数名などがそのまま生成されるので変換後のソースが見やすくなります。 - ソースと同じフォルダに生成されたオブジェクトファイル(拡張子が.axのファイル)をソースコンバーターに渡します。コマンドプロンプト上でパラメーターを指定するのが正しい使用法ですが、axファイル(オブジェクトファイル)のアイコンを「hsp3cnv」にドロップするだけでも、同じフォルダにcppファイルが作成されます。(詳しくはドキュメントを参照してください)
- ここから先は、Microsoft Visual StudioのC++コンパイラが必要になります。ここでは、VS2005で検証していますが、基本的には2008や無償で入手できるExpressでも同様に使用することができるはずです。(2010での検証はまだ行なっていません)
Visual Studio上から、hsp3rtestフォルダ内にあるプロジェクトを開いてください。
- 最初にそのままプロジェクトをコンパイル(ビルド)することができるかを確認してみてください。正常にビルドされると、MIAさん作のレイトレーシング(raytracing.hsp)が起動できるはずです。
- ちなみにビルドの構成を「Release」にしていない場合は、実行速度は遅いままなので注意してください。
- 自分で変換したソースをビルドする場合は、hsp3cnvで変換したソースを「test.cpp」とリネームしてhsp3rtestフォルダ内にコピーするか、hsp3rtestプロジェクトに登録されている「test.cpp」を削除して変換されたソースに入れ替えればOKです。
Visual Studio上でビルドされたexeファイルは、Windows上でスタンドアロン動作するバイナリとなります。
C++言語上での、動作は以下の内容に制限されています。
・HSP3がサポートする基本命令、基本関数、システム変数
・int,double,str,label型の変数
・モジュール変数以外のモジュール機能(#module、#global)
・ユーザー定義命令、関数(#deffunc、#defcfunc)
・DLL及び、プラグイン呼び出し(仮対応)
以下の機能は、まだサポートしていません。
・プラグインによる変数型の拡張、コマンドタイプの拡張
・COMオブジェクト操作、COM型・Variant型変数
・モジュール変数
・varptr関数によるdll関数ポインタ取得機能
以下の機能は、このシステム上でのサポート予定がありません。
・run命令
サンプルで使用したMIAさんのレイトレーシング(raytracing.hsp)の場合、こちらの環境でテストした限りでは、1画面のレンダリング所要時間は以下のような結果になりました(環境により変動があります)。
HSP3.21実行時、17.429秒
hsp3cnvによるC言語実行時、9.655秒
hsp3cnvによるC言語最適化実行時、8.797秒
現状で、インタプリタ(通常)版のHSP3から2~5倍程度の速度になっています。(Debugビルドのままだと大幅に遅くなります)
VC++のPGO(Profile-Guided Optimization)を使用することで、さらに高速化を図ることができます。
HSP3ソースコンバーターの目的は、高速化やネイティブ化という面もありますが、C++など他の言語に変換することでWindows以外のプラットフォームでの動作につなげるという面も持っています。
特にスマートフォンやタブレット等のポータブルデバイスや、組み込み系の機器向けにライブラリを用意することで、Windows上で開発したものを手軽に移植するための環境として利用できます。
現在はまだ準備段階ですが、今後これからソースコンバーターを介して発展していく領域は限りなく広いと考えています。ぜひ、多くのユーザーに利用してもらえることを願っています。
また、OpenHSPではzakkiさんによりllvmを使用したJITコンパイラを搭載したバージョンも作成されています。こちらは、実行時にネイティブなコードを生成するもので、axファイルから直接コンパイルと同等の速度で実行を行なうことが可能です。詳しくは、以下のサイトをご覧ください。
peppermint.jp
http://peppermint.jp/
- Comments: 7
- Trackbacks: 2
Home > Tags > hsp3cnv
- Search
- Feeds
- Meta