LoginSignup
3
1

More than 1 year has passed since last update.

macOSでHSPを実行してみる

Last updated at Posted at 2022-09-25

ごきげんよう。皆さんはHSP(Hot Soup Processor)というプログラム言語をご存知でしょうか?Windowsで簡単にゲームを作れることが特徴ですが、Android/iOS/JavaScriptなどのプラットフォームでも実行させることができます。macOSではmachspwineを使った方法があります。この記事では、linux版をdockerで動かしてみます。

使い方

まずは X Window System をインストールします。

brew install xquarts
startx
image.png image.png
XQuartz が立ち上がったのを確認 設定から「ネットワーク・クライアントからの接続を許可」をチェック

インダイレクト設定を有効化します。

defaults write org.xquartz.X11 enable_iglx -bool true

このあと、macOSを再起動します。再起動後、環境変数 DISPLAY に何らかの値が設定されているのを確認します。

env | grep DISPLAY

Dockerファイルを用意します (そのうちどこかにホストしようと思います)

[追記] GitHub Packages にアップロードしました。下記でpullできます。
https://github.com/kijuky/docker-openhsp-linux/pkgs/container/hsp

docker pull ghcr.io/kijuky/hsp:3.6
Dockerfile
FROM ubuntu:22.04

# 必要なソフトをインストール
RUN apt update && apt install -y \
    curl \
    libgtk2.0-dev \
    libglew-dev \
    libsdl1.2-dev \
    libsdl-image1.2-dev \
    libsdl-mixer1.2-dev \
    libsdl-ttf2.0-dev \
    libgles2-mesa-dev \
    libegl1-mesa-dev \
    libsdl2-ttf-dev \
    libsdl2-image-dev \
    libsdl2-mixer-dev \
    && apt clean && rm -rf /var/lib/apt/lists/*

# ソースコードをインストール
RUN curl -L https://github.com/onitama/OpenHSP/archive/refs/tags/v3.6.tar.gz | tar zx -C .
WORKDIR "OpenHSP-3.6"
RUN make

ENV LIBGL_ALWAYS_INDIRECT 1

# /usr/bin にシンボリックリンクを作成
RUN cd /usr/bin; \
    ln -s /OpenHSP-3.6/hsed hsed && \
    ln -s /OpenHSP-3.6/hsp3cl hsp3cl && \
    ln -s /OpenHSP-3.6/hsp3dish hsp3dish && \
    ln -s /OpenHSP-3.6/hsp3gp hsp3gp && \
    ln -s /OpenHSP-3.6/hspcmp hspcmp

# デフォルトはエディタを起動
CMD ["hsed"]

ビルドします。

docker build . -t hsp:3.6

まずは例にあるようにコンソールアプリを作ってみましょう。

% echo 'mes "hello world"' >> test.hsp
% docker run --rm -it -v "$(pwd):/root" -w /root hsp:3.6 hspcmp -d -i -u test.hsp
#HSP script preprocessor ver3.6 / onion software 1997-2021(c)
#HSP code generator ver3.6 / onion software 1997-2021(c)
#use UTF-8 strings.
#Code size (20) String data size (21) param size (0)
#Vars (0) Labels (1) Modules (0) Libs (0) Plugins (0)
#No error detected. (total 170 bytes)
% docker run --rm -it -v "$(pwd):/root" -w /root hsp:3.6 hsp3cl test.ax
hello world

いい感じですね :tada: 次にエディタも開いてみましょう。

xhost +
docker run --rm -it -v "$(pwd):/root" -w /root -e DISPLAY=host.docker.internal:0 --ipc=host hsp:3.6
xhost -
image.png
エディタが開いた様子

ゲームも開いてみましょう(エディタの日本語が化けてますね...)

image.png
block3.hspを実行した様子

ただ、場合によっては、うまく動かないことがあるようです。dockerのログを見ると、X Window System関連のエラーが出ているようです。

X Error of failed request:  BadAlloc (insufficient resources for operation)
  Major opcode of failed request:  149 (GLX)
  Minor opcode of failed request:  3 (X_GLXCreateContext)
  Serial number of failed request:  90
  Current serial number in output stream:  91
X Error of failed request:  GLXBadContext
  Major opcode of failed request:  149 (GLX)
  Minor opcode of failed request:  5 (X_GLXMakeCurrent)
  Serial number of failed request:  165
  Current serial number in output stream:  165

まとめ

HSPをmacOS上で動かしてみました。コンソールアプリの場合は問題なく動きます。GUIアプリの場合、X Window Systemのエラーが厄介です。ただ、これも適切に解決すれば、ゲームを起動できるくらいには動かすことができました。皆さんもHSPのプログラミングを楽しんでみてください!

参考

追記

要望はこちら(Dockerfileも随時更新しています)

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1