Help us understand the problem. What is going on with this article?

Common Lisp + OpenGLでSTGを作った

More than 3 years have passed since last update.

Common LispでSTGを作った

こちらの記事に触発されて、以前からいろいろ調べてたCommon LispとOpenGLである程度まとまったものを公開しようと思って作ってみました。
こちらはSDLではなくOpenGLを使っています。

GitHubで公開しています。
若干(かなり?)コードは汚いですが、サンプルになるところもあるかなと思います。
MITライセンスですので煮るなり焼くなりお好きにお使いください。

動かし方

GitHubのREADMEにも一応書いてありますが。

cd ~/quicklisp/local-projects/ministg
(ql:quicklisp :ministg) 
(ministg:main)

[追記]
guicho271828さんがRoswellスクリプトを書いてくれました。

ros install singy15/ministg
ros exec ministg
# ~/.roswell/binにパスを通してある場合は以下のようにしても実行できる
ministg

screenshot.png

こんな画面がでればOKです。
初回起動時はちょっと時間かかります。
操作はWSADで自機移動、Jで発射です。
なるべく簡単になるように作ってるので自機と敵機との当たり判定とかメニュー画面とかサウンドとかそういうのは一切なしです。(ミサイルは出来心です)

技術的なこと

開発環境・使用ライブラリ

  • Steel Bank Common Lisp 1.3.10
  • cl-opengl
  • cl-glut
  • cl-glu
  • cl-singleton-mixin

ASDF/QuickLisp

ASDファイルを作って、ASDFでファイルの読み込み順だったり他systemへの依存性の解決をしています。
QuickLispでライブラリ管理をしています。

SBCL + ASDF3 +QuickLispでプロジェクトの作り方

CLOS

CLOSを使い、OOP(?)なスタイルで書いています(つもりです)。
accessorは名前衝突が起きやすそうなので名前にキーワードを使っています

CLOSでaccessorとmethodの名前衝突を回避する
Common LispでSingletonなクラスを作る(CLOS)

グラフィックス

cl-openglを使いOpenGLで描画をしています。

cl-openglでグラフィックス
cl-openglで入力を拾う

kedama17
SIerやってます。 趣味でrubyとLISP(Common Lisp)を書いてます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away