HSP

HSP3でマルチプラットフォームかいはつ

More than 1 year has passed since last update.

ドワンゴ Advent Calendar 2016

概要

現在HSPはjsやAndroid、iOSなど、複数の環境へビルドすることが可能になっています。
久しぶりにAndroid開発勉強しようと思ったら、ちらりとHSPの名前が出てきて、急に懐かしくなってしまいました。
せっかくですので子供時代を思い出しながら、適当なゲームを作ってビルドしてみたいと思います。

Version

この記事は、HSP3.4を利用しています。
また、ゲームは最新のChromeにて動作確認しました。

りんく

HSPのあどべんとかれんだーもありますよ。書いて、どうぞ

HSPの現在

かつては、事実上Windowsでしか動作させられなかったHSPですが、Version3となった現在は以下の環境向けにビルドすることが可能です。一応、JavaアプレットやCGIとして動作させることも可能ですが、昨今の状況から考えると実用的ではないでしょう。

  • Windows
  • iOS
  • Android
  • Web(js)

Unityのように野蛮で強力なエディタはもっていませんが、対応環境は意外と豊富です。
特にJSを出力できるという事は、やや手間ですがElectronでラップしてやればMacやLinux上で動かせるという事です。
ただし、DirectX等、各環境に対応してない命令や仕様を把握し、それらを使わないように書く側が配慮してあげる必要があります。

hsp do it!

JSとして出力できる点を利用し、jsdo.itのようにブラウザ上で書きながら実行できるHSP部屋というサイトがありますので、手軽に実験できます。
ぼくも今回はこのサイトを利用してゲームを作ろうと思います。Web上で動くなら大体の環境でビルドできるはず、という目論見からです。

Web上で動くげーむ

ニコマークを拾う簡単なゲームを作りました。こちらからプレイできます。
http://hsproom.me/program/view/?p=195
rnico.png

ソースコードはこちら
https://github.com/orzngo/nicorush

リソースをうpし、ソースコードを張り付けるだけで動きます。
実は制作もここのエディタ上でやりました。最初からWebやAndroidを意識するならこのフローはアリだと思います。Macでもできるし……

各環境へのビルド

Windows向けにビルド

HSPの本来の土俵であるため、エディタでポチポチ作業すると実行ファイル的なものが出来上がります。
ただ、筆者の環境では、実行ファイルを作成すると、pngのアルファが無効になるという現象が発生しました。
winico.png

エディタ上からデバッグ実行しているときは大丈夫なのですが、なんやねんこれは、、、

Web向けにビルド

公開するだけならHSP部屋で十分だと思うんですが、自分でビルドすれば、Electronできるので夢が広がるような気がします……しない?
http://www.onionsoft.net/hsp/v34/doclib/hsp3dish_js.htm

こちらの手順に従います。どうも、HSPのランタイムをEmscriptenかましてC++ -> jsに変換し、中間コードをjsに実行させているようです。
出来上がったものをDropboxにうpして公開しようとしたのですが、いつからか、HTMLを表示させなくしたようです。(ダウンロードが始まる)
仕方がないので、zipで固めたものを置いておきます。
https://dl.dropboxusercontent.com/u/30980641/nicorush_web.zip
まあ、最初のほうにリンクを張った、HSP部屋で遊べるものと同じものが遊べるだけです。
中間コードや画像ファイルなどをまとめたファイルをXMLHttpRequestで取得しようとするため、おそらくローカルで実行しても動かないと思います。

iOS向けにビルド

http://www.onionsoft.net/hsp/v34/doclib/hsp3dish_xcode4.htm

手順自体はここにあるのですが、間に合いませんでした。宿題にします。
Webでは動いたので、HSP3Dish準拠でコードはかけているはずで、プロジェクトの設定さえできれば、少なくともシミュレータ上では動きそうです。
通常のiOS向けアップリと一緒で、ビルドにはMacが必要になります。

まとめ

HSPで、共通のリソースから複数の環境へビルドしました。ソースコードに若干気を遣いますが、少なくともWebとWindows環境へ向けてはビルドできました。(アルファ情報が落ちたのが気になるけど)
僕が昔ゲームを作っていたころからは想像もつきませんが、今はHSPを覚えるとAndroidもiPhoneも守備範囲に入ってしまうわけです。すごい。
もちろん、関数の定義がクソ面倒だったり、goto loopでゴリゴリ書いたりと、原初の鼓動とでもいうべき懐かしさあふれる言語ではあります。
しかし、がりっと書いたらとりあえず動く、という単純さは、とっつきやすさという点ではまだ捨てたもんではないかなと思いました。
ScalaだのTSだの、日進月歩の仕様に疲れた方は、ふと手を止めて、初めてハローワールドした時のことを思い出しながら、HSPで年末年始を過ごしてみてはいかがでしょうか。

謝辞

開発の大部分を、HSP部屋でやらせていただきました。
作者のmjhd様にこの場を借りて御礼申し上げます。