さくらんぼのlambda日記

lambdaちっくなことからゲーム開発までいろいろ書きます。

Lisp

Common Lispでゲーム用の状態遷移マシン 完成?

やっと、コード書く時間がとれたので、記録用に書きます。 singletonクラス作成用のパッケージ とりあえず、singletonをつくるためのパッケージを作成しました。 http://cadr.g.hatena.ne.jp/g000001/20081202/1228199756 この記事が超参考になりました。clo…

ゲームに使える状態遷移マシン

備忘録的に吸闘紀で採用している状態遷移マシンの設計と実装について書いておきます。 ゲームに必要な状態遷移マシン ゲームに使える状態遷移マシン。そこまで複雑な状態遷移マシンは必要とはなりません。 簡単に要件をまとめておきます。まず、各遷移する状…

Mac環境構築ガイド for 自分

MacBookPro(15インチ)を購入しちゃいました!! Apple MacBook Pro 2.2GHz 15.4インチ MC723J/A出版社/メーカー: アップル発売日: 2011/02/25メディア: Personal Computers クリック: 10回この商品を含むブログ (2件) を見る今後の備忘録もかねて環境構築ガイ…

全ゲ連で講演するらしいです

なにやら勢いで講演してみることにしました。第8回 全日本学生ゲーム開発者連合(全ゲ連) 交流会で発表します。 http://d.hatena.ne.jp/zengeren/20110120 Common Lispによる高速ゲーム開発入門編 講演者:さくらんぼ(さくら=卑猥乙=んぼ (lambda_sakura) o…

lispbuilder-sdlでウィンドウ表示

大体lispbuilder-sdlの環境構築は前回と前々回書いてきました。 なんとなく、今回は実際にウィンドウ表示などでもしてみようかと思います。 lispbuilder-sdlウィンドウ表示するための最小限のコードは以下のような感じになります。 (sdl:with-init () (sdl:w…

lispbuilder-sdlのインストール(SBCL編)

ここではSBCLを使うひとのためのlispbuilder-sdlインストール方法について説明します。 lispbuilder-sdlのダウンロード まずは、lispbuilder-sdlの公式サイト(http://code.google.com/p/lispbuilder/)から、バイナリをDLします。 このリスト(http://code.goo…

lispbuilder-sdlとは?

ゲームを作るためには、マルチメディアの機能が必要となります。 マルチメディアの機能の例としては ウィンドウの表示 画像の読み込みと表示 音楽データの読み込みと再生 ゲーミングデバイス(ジョイパッドとか)の入力 などがあります。これらのマルチメディ…

WindowsでのSBCLとCLISPのインストール

SBCLとCLISPは公式のサイトにインストーラが置いてあります SBCL(http://www.sbcl.org/) CLISP(http://www.gnu.org/software/clisp/) インストーラを実行すると、適当な場所にインストールしてくれます。インストールが完了したら、コマンドプロンプトを起動…

lispbuilder-sdlのインストール(CLISP編)

続いてCLISPの場合について説明します。 CLISPではSBCLと違って若干手間がかかります。 ASDFのインストール CLISPではSBCLで標準添付のASDFというシステムが利用できないのでインストールします。ASDFはCommon Lispではデファクトスタンダートといって良いラ…

Lisp開発環境の構築

ゲームといえばWindowsな世の中ですのでWindowsを前提にして、Lispのゲーム開発環境の構築方法についてまとめます。 完成した環境は以下のようなものになります。 SBCL or CLISP lispbuilder-sdl quicklisp + 便利なライブラリ群 Emacs + SLIME

Common Lispゲーム開発環境構築(Lisp実装の選定)

Lispの実装(インタプリタ/コンパイラ)には複数の実装が存在しています。ゲームの開発には以下の2種類がお薦めです。 SBCL CLISP SBCLはユーザのシェアが大きい処理系です。特徴としては速度が早いのが特徴です。 CLISPはユーザのシェアがそこそこ大きく移植…

blackthorn-game-engineの2D描画部分を読んでみた!

blackthornというCommon Lisp向けのゲームエンジンの存在を最近知りました。MOONGIFTさんの紹介記事。 http://www.moongift.jp/2010/11/20101101100/これの内部を最近読んでいます。今回は2D描画をどうやって実現してるのかなと思って読んでみました…

LispでWindows用バイナリを作ったログ

はい。表題の通りです。 ゲームはいくらなんでもExe形式で配布したいので、Lispでバイナリを生成する方法について調べてみました。ただし、Windows 7 64bit環境でです。色々試しました。 CLISP in 32bit SBCL in 32bit CLISP in 64bit SBCL in 64bit Clozure…

Why Lisp for Game Development?

自分のためにどうしてゲーム開発にLispを選んでいるのかというのをまとめておこうと思ったのでまとめてみます。 前提 自分の場合であるので、他のひとに聞くと全然違う意見が返ってくると思います。 前提としてゲーム開発向けであることにも注意してください…

分かった

ジェネリック関数を定義するばあいには引数に互換性がないと困るようです。 on lispにもそんな感じの事が載っていました。 CLOSは名前が同じ全てのメソッドの引数リストが合同でなければならないと要求する.引数リストが合同なのは,同数の必須引数とオプシ…

CLOSの同名メソッドの扱いがよく分からない...

余りそういう使い方を想定していないのだと思いますが、自分の用途では必要になったのでメモがてら。C++だと同名のメソッドで引数が違うものを定義できます。 void funcA(int var1); void funcA(int var1 , int var2); こんなの。 まぁ、キーワード引数とか…

Ubuntu 64bitでも環境構築したよ!

さながらインストール厨のごとくインストールと設定ばっかりしてます...。さてUbuntuの64bit版を開発環境として構築してみました。とりあえず目標の環境 日本語化 Emacs + Slime + SBCL lispbuilder-sdl インストールの問題 特に問題なくインストールできま…

Shibuya.lisp Hackathon #1参加するよ!

なんか楽しそうだったので、Shibuya.lisp Hackathon #1に参加しようかと思います。ATND: http://atnd.org/events/7595Lispで何かつくろうとするモチベーションが最近下がりつつあるので、こういう場を有効に利用させて頂けたらなと思って参加希望してみまし…

ちなみに

lispbuilder-sdlは最近Mac用のバイナリがアップされているので、Macユーザにも親切になったみたいですね。

少し悲しかったこと

最近ゲーム開発の環境をLispに移行したのですが、その環境というのは以下のような環境です。 SBCL lispbuilder-sdl lispbuilder-sdl-mixer lispbuilder-sdl-image lispbuilder-sdl-gfx という非常にLispbuilder-sdlに依存した環境です。まぁ、それは良いので…

作業環境について

基本的にLispbuilder-sdlをつかって作業してます。この環境構築が意外と面倒でした。とくにMac OSXの環境に関してはどうもSDL自体の整備が今ひとつな感じなせいもあって苦労しました。 SDL.framework SDL_gfx.framework SDL_image.framework SDL_ttf.framewo…

Meadow のインストール

Meadowの最新版をダウンロードしてくる。 http://www.meadowy.org/meadow/dists/3.00/setup-ja.exe最低限のものをインストールすれば良い。 インストール途中でImageMagickのインストールが始まるので、一緒にインストールする。

SBCLのインストール

公式から1.0.29のインストーラをダウンロードしてくる。 http://jaist.dl.sourceforge.net/project/sbcl/sbcl/1.0.29/sbcl-1.0.29-x86-windows-binary.msi インストールするときは"C:\SBCL"のようにスペースを含まない場所にインストールする必要がある。~/.…

整数と浮動小数点を相互変換する(精度の変換)

これは先ほど紹介したfloor、ffloorなどで変換できますね。

乱数を生成する

randaomで! CL-USER> (random 10) 5 CL-USER> (random 10) 9 CL-USER> (random 10) 5

平方根を求める

sqrt関数で! (sqrt 9) 3.0

対数を計算する

log関数で一発です。 CL-USER> (log 2) 0.6931472 CL-USER> (log 2 2) 1.0 CL-USER> (log 3 2) 1.5849625 CL-USER> (log 10) 2.3025851

三角関数を計算する

これは、sin関数、cos関数、tan関数というものがあります。 ただ、いまいちな気がします。 2piを越えるとおかしいのかな。 (sin 0) 0.0 ;; うーんどうなってるんだろ。 (sin (* 2 pi)) -2.4492127076447545d-16 (cos 0) 1.0 (tan 0) 0.0

小数点を切り上げ・切り捨て・四捨五入するには

切り上げ、切り捨てにはfloor,ceiling,ffloor,fceilingが使えます。 四捨五入にはround,froundが使えます。 切り上げ 切り捨て 四捨五入 整数 ceiling floor round 少数 fceiling ffloor fround (ceiling 1.5) 2 -0.5 (floor 1.5) 1 0.5 (round 1.4) 1 0.399…

絶対値を求める

absを使いましょう。 (abs -1) 1 (abs 1) 1