tasuwo blog

Yosemite + Lisp + Lispbuilder-SDL

| Comments

Motivation

以下の記事を読んだ.

OOエンジニアの輪!~ 第 21 回 川合史朗 さんの巻 ~
これがプログラミングの神髄だ! ファイナルファンタジーのプログラマーが明かす秘密とLispトークバトル!

なるほどね.なんだ,Lispでゲーム作れるんじゃん!
差し当たって,界隈では有名なpdfらしい以下を参考にして勉強している.

Common LispでSTGを作りますが何か

PDFでの学習内容には特に触れない.環境構築の際に色々つまづいたので,それについてメモしておく.

1. 環境構築

1.1 ライブラリのインストール

前回の記事より,Lispの環境はできているので, ゲーム作成に必要な以下のライブラリをインストールする.

  • Lispbuilder-SDL

冊子によると, ライブラリ間の依存関係等もあり色々ダウンロードしなくてはならないらしい.試しに色々検索してみると以下のサイトがヒット.

lispbuilder-sdl on mac
lispbuilder-sdlのインストール(SBCL編)
Unable to load sdl-gfx in quicklisp

先人の苦しんだ後が伺える. とりあえず必要なlispbuilderは以下とされている.

  • win32-lispbuilder-sdl-gfx-binaries-2.0.13.tgz
  • win32-lispbuilder-sdl-ttf-binaries-2.0.9.tgz
  • win32-lispbuilder-sdl-mixer-binaries-1.2.11.tgz
  • win32-lispbuilder-sdl-image-binaries-1.2.10.tgz
  • win32-lispbuilder-sdl-binaries-1.2.14.tgz
  • lispbuilder-sdl-ttf-0.3.0.tgz
  • lispbuilder-sdl-mixer-0.4.tgz
  • lispbuilder-sdl-image-0.5.0.tgz
  • lispbuilder-sdl-gfx-0.7.0.tgz
  • lispbuilder-sdl-0.9.8.1.tgz

OS指定のないファイルは, Quicklisp導入時点でダウンロードされているため必要ない. 自分の環境はMacOS X Yosemiteなので, 以下をダウンロード.

  • max-lispbuilder-sdl-binaries-1.2.14.tar
  • max-lispbuilder-sdl-gfx-binaries-2.0.16.tar
  • max-lispbuilder-sdl-image-binaries-1.2.10.tar
  • max-lispbuilder-sdl-mixer-binaries-1.2.11.tar
  • max-lispbuilder-sdl-ttf-binaries-2.0.10.tar

解凍後, READMEを読む.すると,~.frameworkLibrary/Frameworksへ移動すれば良いと書かれているので従う.

補足

正直, 環境構築に失敗して色々やりすぎて, どれが本当は必要で, どれが必要ないのかわからない.SDLパッケージはhomebrewでもダウンロード可能だが,うまくいかずに上記の方法で落ち着いた.一から環境構築する機会があれば試すことにする.

1.2 インストール後の確認

きちんとインストールできているか確認する.以下を実行する.

1
2
3
4
(ql:quickload "lispbuilder-sdl")
(ql:quickload "lispbuilder-sdl-examples")

(sdl-examples:mandelbrot)

サンプルが動けば成功. ちなみに(do-external-symbols (s :sdl-examples) (when (fboundp s) (print s)))とするとデモ一覧が見られるので, 好きなモノを実行してみると良いかもしれない.

あとは,PDFを参考にガシガシやっていけば良い.

1.3 トラブルシューティング

トラブル01

1
2
3
4
5
6
7
* (ql:quickload "lispbuilder-sdl-image")

...

debugger invoked on a LOAD-FOREIGN-LIBRARY-ERROR in thread
#<THREAD "main thread" RUNNING {1002C175F3}>:
  Unable to find framework SDL_image
1
2
3
4
5
6
7
(ql:quickload "lispbuilder-sdl-gfx")

...

Unable to load any of the alternatives:
   ("libSDL_gfx.dylib" (:FRAMEWORK "SDL_gfx"))
   [Condition of type CFFI:LOAD-FOREIGN-LIBRARY-ERROR]
1
2
3
4
5
6
(ql:quickload "lispbuilder-sdl-gfx")

...

#<THREAD "main thread" RUNNING {1002C175F3}>:
  Unable to find framework SDL_image

以上のようなエラーの場合, SDL_gfxやSDL_imageがLibrary/Frameworkにインストールできていない.

トラブル02

1
2
3
4
5
(ql:quickload "lispbuilder-sdl")

Unable to load any of the alternatives:
   ((:FRAMEWORK "cocoahelper") (:DEFAULT "cocoahelper"))
   [Condition of type CFFI:LOAD-FOREIGN-LIBRARY-ERROR]

上記のような場合, cocoahelperがmakeされていない.~quicklisp/dists/quicklisp/software/lispbuilder-20110619-svn/lispbuilder-sdl/cocoahelpercdし, makeを実行し, 再び以下を実行するとよい.

Unable to load sdl-gfx in quicklisp

2. 今後の課題

前回から続けて記事を書いている.これもまとめていたものを公開する形になる.
前回の環境構築はうまくいったがこちらでなぜか二日ぐらい潰れた(特に画像が表示されなかった)ので,自分と同じような人の参考になればいいと思う.Lispに関しては,(そのうち)実際に作ったものを公開していく.

参考文献

OOエンジニアの輪!~ 第 21 回 川合史朗 さんの巻 ~
これがプログラミングの神髄だ! ファイナルファンタジーのプログラマーが明かす秘密とLispトークバトル!
Common LispでSTGを作りますが何か
lispbuilder-sdl on mac
lispbuilder-sdlのインストール(SBCL編)
Unable to load sdl-gfx in quicklisp
Unable to load sdl-gfx in quicklisp
windowsでsbcl + lispbuilder-sdl

Comments