HSP : Hot Soup Processor ver3.6 / onion software 1997-2020(c)

タイトル

HSP3.6 新機能ハイライト

  1. HSP3.6アップデート概要
  2. objcolor命令について
  3. rgbcolor命令について
  4. stick命令で取得されるキーの追加
  5. strexchange命令による文字列置き換えについて
  6. zipファイルの圧縮解凍サポートについて
  7. MUCOM88プラグインについて
  8. hspswプラグインについて
  9. hspinetプラグインの更新について
  10. 64bit(x64)版ランタイムについて
  11. HSPTVフォルダ素材について
  12. 英語版インターフェースの対応について
  13. HSP3Dishのスクリーンサイズ変更について
  14. viewcalc命令による座標変換について
  15. celbitmap命令による画像データ制御について
  16. HSP3DishのiOS,android版更新について
  17. HGIMG4の更新について

HSP3.6のアップデート概要

HSP3.6は、特に変更を意識することなく、HSP3.5と同様にお使い頂けます。 HSP3.6で変更された項目の概要は、以下の通りです。

標準命令の拡充

配置オブジェクトの配色を指定するためのobjcolor命令、24bitカラーコードを指定するためのrgbcolor命令など 多くの新機能を搭載しています。
また、Unicode文字を標準で使用する新しいランタイム、hsp3utf、hsp3_64などもアップデートされています。 いままでの機能はそのままに、ゲームだけでなく、ツール製作や手軽なプロトタイピングに役立つ機能を拡充しています。

プラグイン機能拡充

新規追加プラグイン「hspsw」(Steamプラットフォーム連携API)、「hspmucom」 (MML記述によるFM音源楽曲再生プラグイン)、「ZLibWrap.dll」(zipファイルの圧縮解凍)など 高度な機能拡張を同梱しており、すぐに利用可能です。

HSP3Dishの機能拡充

iOS/android/html5(WebGL)上での実行をサポートするHSP3Dishの各種機能を拡充しています。 最新の端末に対応できる新しいSDKへの対応や、各種センサー情報の取得、ネットワークアクセス、スプライト描画などの機能も拡充しています。 幅広いデバイスへの変換をサポートするHSP3Dish Helperツールも、より便利で手軽に利用できようになりました。

HGIMG4プラグインの更新

ハイレベルな3D表現を可能にするHGIMG4プラグインを大幅に更新しています。 システムの安定向上のほか、FBXモデル変換時の制約、複製時の制約など細かい使い勝手が向上しています。また、Unityからモデルやアニメーションをインポートする方法などもドキュメントで解説しています。
また、新しいHGIMG4ツールにより、fbxファイルを変換した後の3Dデータをより詳細に確認、編集できるようになりました。 マテリアル(.material)ファイルをGUIにより確認することが可能になっています。

新しいHSPTV素材

自由に使える素材として、HSPTVフォルダに多くの素材が拡充されています。 HSP3オフィシャルキャラクター "珠音(たまね)"を始めとして、プロ生ちゃんコラボ素材など ゲームを中心に幅広く活用することができます。 新たなサンプルスクリプトも同梱し、オリジナルの作品作りに活用頂けます。

HSP3.6で追加された新機能を手軽に試すことができるサンプルスクリプトが、「sample/new36」フォルダに含まれています。 ぜひ新しいサンプルでの動作を、実際に実行してお試しください。

objcolor命令について

配置オブジェクトの配色を指定するためのobjcolor命令が新規に追加されています。

	objcolor p1,p2,p3	配置オブジェクトの配色を指定する

		p1,p2,p3=0〜255(0) : 色コード(R,G,Bの輝度)
		

objcolor命令により、入力ボックス等の配色を設定することができます。
objcolor命令による配色を有効にするためには、あらかじめobjmode命令のオプションで 「objmode_usecolor」を指定する必要があります。

	objmode objmode_usecolor
		

mesbox、input命令による入力ボックスは、rgbcolorで指定した文字色、color命令で指定した 背景色が適用されます。
また、mesboxによるテキスト入力ボックスは、[ctrl]+[A]キーにより全選択できるよう 修正されています。

rgbcolor命令について

24bitカラーコードを指定するためのrgbcolor命令が追加されています。
従来、RGBそれぞれを「color 1,2,3」のように分けてパラメーターを記述していたものを 「rgbcolor $010203」のような形で記述することができます。
Web(html)等で使用する「#112233」のようなRGBコードと親和性の高い指定方法です。
実行される内容は、color命令も、rgbcolor命令も変わりません。色のコードを記述する方法が異なるのみになります。

stick命令で取得されるキーの追加

カーソルキーを始めとして、ゲームなどで使用されるキーの情報をまとめて取得するstick命令で、新しく[Z][X][C]、及び[A][W][D][S]のキー情報が追加されています。
追加された情報は、以下の数値として格納されます。

値(10進)値(16進)キー
1 $00001 カーソルキー左(←)
2 $00002 カーソルキー上(↑)
4 $00004 カーソルキー右(→)
8 $00008 カーソルキー下(↓)
16 $00010 スペースキー
32 $00020 Enterキー
64 $00040 Ctrlキー
128 $00080 ESCキー
256 $00100 マウスの左ボタン
512 $00200 マウスの右ボタン
1024 $00400 TABキー
2048 $00800 [Z]キー
4096 $01000 [X]キー
8192 $02000 [C]キー
16384 $04000 [A]キー
32768 $08000 [W]キー
65536 $10000 [D]キー
131072 $20000 [S]キー
HSP3Dishを含むすべてのプラットフォームでキー情報が追加されます。 従来のキー情報の値に変更はありません。上位互換として使用することが可能です。

strexchange命令による文字列置き換えについて

新規に追加された、strexchange命令はスクリプトに含まれる文字列データをすべてまとめて置き換える機能を持っています。 これにより、スクリプト内で使用する文字列を別な言語に翻訳したり、バージョンによってメッセージを差し替えるなどの処理が容易になります。
文字列置き換えは、3つのステップで実現されます。

実際のサンプルが「sample/new36/strex_test1.hsp」「sample/new36/strex_test2.hsp」として同梱されています。 最初のステップは、文字列データの作成です。strex_test1.hspのスクリプトは、strex_test2.hspに含まれる文字列を文字列データとして、strex_test2.strmapファイルに書き出します。 このファイルは、使用されている文字列とその管理情報(スクリプト内で使用されている位置を示しています)で構成されています。
テキストエディタ等でstrex_test2.strmapファイルを編集し、この中から置き換える必要がある文字列を書き換えます。 たとえば、「***こんにちは***」という文字列を「***Hello***」に書き換えることができます。文字列の長さは変わっても問題ありません。実際に書き換えたデータ「strex_test2en.strmap」もサンプルフォルダに同梱されています。
最後に、strex_test2.hspスクリプトの中で、自分自身の文字列を置き換えます。strexchange命令で文字列を編集した、「strex_test2en.strmap」ファイルを指定することで、スクリプト内の文字列が自動的にすべて置き換わります。

	strexchange "strex_test2en.strmap"
		

これにより、スクリプト内の文字列に手を加えることなく、別な内容に置き換えが可能です。置き換えのためのファイルを、複数用意することにより多国語に置き換えることもできます。
文字列の置き換えを適用せず、スクリプト内の文字列に戻す場合は、

	strexchange ""
		

のように空の文字列を指定してください。 置き換え文字列データのファイルには、元の文字列を示す数値(ハッシュコード)が含まれています。このコードと、スクリプト内の文字列をマッチングさせて、置き換えを行っています。 ですから、同じ文字列は同一のハッシュとしてまとめられてしまいますので注意してください。
また、あくまでもスクリプト内の文字列が対象となっているため、外部のテキストファイルを読み込んだり、文字コードから文字列を生成している場合には適用されません。
色々な場面で、翻訳やカスタマイズに威力を発揮します。ぜひご活用ください。

zipファイルの圧縮解凍サポートについて

ZLibWrap.dllライブラリを使用したzipファイル圧縮解凍をサポートしました。
シンプルな2つの命令で、スクリプトからファイルの圧縮、解凍を行うことが可能です。

	#include "zipfile.as"
		

を記述することで、以下の命令を使用することができます。 (実行の際には、ZLibWrap.dllファイルが必要となります。)

	ZipCompress "srcfiles", "zipfile"

		"srcfiles"で指定したファイル(ワイルドカード使用可)を
		"zipfile"で指定したファイルに圧縮して保存します。

	ZipExtract "zipfile", "path"

		"zipfile"で指定した圧縮ファイルを、"path"で指定したフォルダに解凍します。
		

詳しくは、それぞれの命令ヘルプ、サンプルを参照してください

MUCOM88プラグインについて

HSP3.6では、MML記述によるFM音源再生をサポートするMUCOM88プラグインを標準で同梱しています。
NECのパソコンPC-8801シリーズで動作していた、FM音源のドライバーを再現したMUCOM88 Windowsが持つ機能を コントロールすることができます。
MUCOM88プラグインを使用することにより、単純な音楽の再生から、MMLの解釈までスクリプト言語から 幅広く制御することができます。
FM音源(OPNA)6音+PSG音源(3声)+リズム音源+PCM音源の合計11チャンネルをMML言語により記述できます。 Windowsのサウンド再生処理は、DirectX8以降のDirectSoundを使用し、Windows XP以降の環境で、 追加のコンポーネントを用意することなく動作させることができます。
MUCOM88プラグインの詳細は、付属のマニュアル(docs/hspmucom.txt)それぞれの命令ヘルプ、 サンプル(samples/mucom88)を参照してください。

HSPMUCOMは、Open MUCOM88プロジェクトの一部として公開されています。 Open MUCOM88プロジェクトについては、以下を参照してください。

	Open MUCOM88
		https://onitama.tv/mucom88/
		

Windows上で動作するMUCOM88 Windowsツール及びサンプルMMLが公開されています。
HSPMUCOM.DLL及びソースコードは、無償(非営利)である限りは自由に紹介、 複製、再配布することができます。その際には必ずドキュメントと ライセンス表記も含めるようにしてください。

hspswプラグインについて

HSP3.6では、Steamプラットフォーム用のAPIを呼び出すためのhspswプラグインを標準で同梱しています。
PCゲーム、PCソフトウェアをダウンロード販売するSteamプラットフォームで配信するアプリ上で、 ランキングや実績(トロフィー)、ステータスの読み書きといった機能をサポートすることができます。
hspswプラグインの詳細は、付属のマニュアル(doclib/hspsw.txt)、サンプル(samples/hspsw)を 参照してください。

	HSPSWプラグインマニュアル
		doclib/hspsw.txt
		

hspinetプラグインの更新について

hspinetプラグインのhttp/httpsリクエストで、 PUT/DELETEメソッドに対応したnetrequest_put、netrequest_deleteの 命令が追加されています。 これにより、より多くのWebAPIを利用することが可能になります。

	hspinetプラグインマニュアル
		doclib/hspinet.txt
		

64bit(x64)版ランタイムについて

64bit(x64)アプリとして動作するHSP3標準ランタイム(hsp3_64.exe)は、 標準でunicode(UTF-8)文字ベースで動作するものに変更されました。 使用する場合は、スクリプトの先頭に以下の行を指定してください。

	#include "hsp3_64.as"
		

動作の仕様は、HSP3UTF(UTF-8)版ランタイムと同様になっています。 64bit(x64)ランタイムは、64bit版のWindows上(Windows 7以降)でのみ動作します。

HSPTVフォルダ素材について

作品を発表する際に自由に使用することのできる画像と音のデータファイルとして、 HSPTVフォルダ素材を大幅に拡充しています。 手軽なライセンスで、HSP以外の作品でも使用することが可能です。 また、Web上でHSPのスクリプトを公開できる、「WebDishサービス」でも自由に参照することができます。 「HSPTVフォルダ素材」「WebDish素材」を活用して、多くの作品が作られることを願っています。

		HSP3.6 WebDish素材データ
		https://dev.onionsoft.net/seed/webdish_res.html
		

英語版インターフェースの対応について

Windows、及びLinux上のHSPランタイム実行時のエラーメッセージは、OS環境の文字コードをもとに日本語・英語を切り替えて表示します。
また、HSPインストールフォルダに、英語版スクリプトエディタを新規に同梱しています。
「hsed3_en.exe」を起動することで、メニューその他のインターフェースが英語になります。 HSP3本体の機能自体に変更はありませんが、英語版の環境で利用したい方はお試しください。
今後も、HSP開発環境の国際化に向けて準備を進めていきたいと考えています。

HSP3Dishのスクリーンサイズ変更について

HSP3Dish、HGIMG4のWindows版において、スクリーン(ウインドウ)サイズの動的な変更に対応しました。
いままでは、hsp3dish.iniファイルに記録されたサイズに従って起動時にサイズが固定されていましたが、 多くの方からサイズの変更とフルスクリーン対応の要望を頂き、修正致しました。 HSP3.6より、screen命令,bgscr命令によりスクリーン(ウインドウ)サイズを変更できます。

	screen p1,p2,p3,p4,p5,p6

	p1=0〜(0) : ウィンドウID
	p2=1〜(640): 初期化する画面サイズX(1ドット単位)
	p3=1〜(480): 初期化する画面サイズY(1ドット単位)
	p4=0〜1(0) : 初期化する画面モード
	p5=0〜(-1) : ウィンドウの配置X(1ドット単位)
	p6=0〜(-1) : ウィンドウの配置Y(1ドット単位)
		

p1のウインドウIDは、0のみとなります。 p4の初期化モードは、以下の値を指定することができます。

	  +4(screen_fixedsize) : サイズ固定ウィンドウ
	  +8(screen_tool)      : ツールウィンドウ
	 +16(screen_frame)     : 深い縁のあるウィンドウ
	 +256                  : フルスクリーン
		

p4に256を指定した場合は、指定された解像度のフルスクリーンとして初期化されます。
また、スクリーンサイズ変更時は、通常ランタイムとは異なり、それまでに読み込んだすべての画像バッファは失われますので注意してください。

viewcalc命令による座標変換について

HSP3Dish、HGIMG4において、描画時の座標変換を設定するviewcalc命令を追加しました。
viewcalc命令は、2D描画時のX,Y座標に任意の計算を適用することができる強力な機能です。 描画される表示物全体のスケーリングや移動、回転などを行うことができます。

	viewcalc p1,p2,p3,p4,p5

	p1(0)   : 設定モード
	p2(0.0) : パラメーター1(実数)
	p3(0.0) : パラメーター2(実数)
	p4(0.0) : パラメーター3(実数)
	p5(0.0) : パラメーター4(実数)
		

p1で指定する設定モードには、いくつかの種類があり多彩な変換を行うことが可能です。

	マクロ名            値   内容
	-----------------------------------------------------
	vptype_off           0   座標変換なし(デフォルト)
	vptype_translate     1   移動パラメーターを指定
	vptype_rotate        2   回転パラメーターを指定
	vptype_scale         3   スケールパラメーターを指定
	vptype_3dmatrix      4   4×4マトリクスによる座標変換
	vptype_2d            5   2D座標変換を設定
	vptype_3d            6   3D座標変換を設定
		

vptype_2dは、基本的な2D座標変換を適用するモードになっています。 パラメーター1〜3で、X,Yのスケール(倍率)、回転角度(ラジアン単位)を設定することができます。

	viewcalc vptype_2d, 2.0, 2.0, 0.0
		

のように指定した場合は、X,Y方向に2倍のスケールで表示、角度は0となります。
他にも色々なパラメーターを指定できます。詳しくは、viewcalc命令のヘルプを参照してください。

celbitmap命令による画像データ制御について

HSP3Dish、HGIMG4において、変数バッファの内容を画像データとして扱うためのcelbitmap命令を追加しました。
これまで、HSP3Dishではドット単位の画像データに直接アクセスすることができませんでしたが、この命令によりメモリの内容を画像データとして読み書きできるようになります。

	celbitmap p1,var

	p1(0)   : ウインドウID
	var     : イメージを置き換えるための配列変数
		

celbitmap命令を使用する際には、あらかじめbuffer命令により作成したオフスクリーンバッファと、置き換えるための変数バッファを初期化する必要があります。
オフスクリーンバッファは、buffer命令でscreen_offscreenのオプションを指定して作成してください。

	buffer 2,256,256,screen_offscreen
		

その後、バッファを置き換えるための変数バッファを作成します。
dim命令により、1次元配列を初期化して作成してください。作成するサイズは、オフスクリーンバッファのXサイズ×Yサイズになります。

	dim bitmap, 256*256
		

これで、celbitmap命令を使用する準備が整いました。
celbitmap命令により、オフスクリーンバッファのIDと配列変数を指定することで、変数バッファの内容がそのまま画像イメージとして適用されます。
変数バッファは、1要素あたり1ドットとなります。1ドットは、32bitの要素をA,R,G,Bそれぞれ8bit単位で格納されるARGB形式のデータとなります。 たとえば、「$ff204080」(16進数)を指定した場合は、A=$ff(255)、R=$20(32)、G=$40(64)、B=$80(128)となります。(カッコ内は10進数)
画像データの置き換えは、コストの高い処理になるため、大きなサイズのイメージを置き換える場合、フレームレートが下がることがありますので注意してください。

HSP3DishのiOS,android版更新について

HSP3DishのiOS,android版は、それぞれの新しいSDKに対応しています。

	iOS版	  : XCode9以降用 iOS13,64bit対応
	android版 : Android SDK 7.0 (API 24),64bit対応、
	            SDKr25、NDK r12以降、AdMob(Google Firebase)対応
		

iOS、android版ともに64bitバイナリの出力に対応しています。 それぞれ対応したバージョンのSDKや開発環境が必要となりますので、 詳しくは、マニュアルを参照してください。

	HSP3Dishマニュアルインデックス
		hsp3dish.htm
		
既存のプロジェクトが正しくビルドできなくなる可能性があるため、 既存のプロジェクトは、再度作成し直すことを推奨します。

HGIMG4の更新について

HSP3.6では、それまでのHGIMG4から大きく修正を行なっています。 より強力で使いやすくなるよう、各種機能を見直しました。 以前のバージョンからの上位互換で動作するよう設計されていますが、 一部の機能で動作が異なる場合がありますので、過去に作成したスクリプトを 動作させる際にはご注意ください。 詳しく使い方は、HGIMG4プログラミングガイドをご覧ください。

	HGIMG4プログラミングガイド
		doclib/hgimg4.html
		

追加変更された項目の概要は以下の通りです。

ONION software