マイナーRPGはlispで

マイナーRPGはlispで
自己紹介
プログラマーでした
零細企業から転職して、某部品メーカーに。今
は中国でソフトウェア開発をしています。
LISP好き。今も個人的なソフトはLISPで書いて
ます
Q社
4人の零細企業
一人が社長
DOSとCとASMしか知らない
工数計算やったこと無い
一人が事務・デザイナー
一人が自分
プログラマー
一人が手下
プログラマー
I社
ちょっと大きい会社
昔はフィルムの現像所、今はマルチメディアが
なんたら、かんたら
技術のわかる人が一人
技術がわからない映画監督が一人
「ゲーム作るけど、やる?」
かなりお気楽な乗りでスタート
もともとゲーム志望ではあったし、一本パッ
ケージもやっておきたいと思っていたので、
承諾。
「やりますよ。チーム作るから人入れてね」
ヒアリング
小説まがいの壮大過ぎるストーリー
自由度が高すぎるシステム
サブシナリオ
~を買ってきてね
~を取ってきてね
~をボコボコにしてやれ
全キャラクターが「生活」している世界
自由度のやたらと高い会話システム
条件
半年!
開発期間は
~
~まじですか?
スタッフは自分を含めて3人
パズルを作るディレクターの専門家
実質、2人
~人入れてって言ったじゃん~
今、工数を見積もってみると
システム作成 25人月
全体シナリオ 10人月
サブシナリオ 20人月
テスト工程 30人月
くらいか? かなり甘い見積もりだけど。
対策
じゃあ、どうするよ?
短期間、短コストって、根性だけでは埋まらな
い
とにかく、設計には時間がかけられない!
設計無しでどうにかするには?
データ構造とか考えている場合じゃない
~ Hash・Listの出番ですね
デバッグとか大変、仕様書書いてないからテス
ト工程事実上無し ~ インタラクティブ開発
メモリ管理とかやれるわけ無い ~ GC
繰り返しいろいろ書いている場合じゃない ~
マクロ
組み込み言語だろ? ~ フットプリント小さいやつ
いよいよ出番だ!
毎日使っているエディタに入っている
アレだ!
しかもどういうわけか、作りかけのア
レインタプリタが手元にある!
USI言語
Universal Symbolic Iなんとか(決めていない)
USI言語
xlispに触発されているけど、まったくのオリ
ジナル
カウンター式のGC。のちに循環リストに泣かさ
れたので、フツーのGCも実装
Integer、文字列、ベクター、ハッシュとか
レイヤー
シナリオ
キャラクター
サブシナリオ
GAME SYSTEM
USI
GUI
Cで書いたドライバー
開発続行
順調に開発進行
一転ピンチ!
シナリオを取り込む段階から分業開始
人手も時間も足りないので、クライアントにも
手伝ってもらうことにする
自分の手下も含めて、
「LISPわかんないー」
とか言い出した
シンタックスシュガー
というわけでシンタックスシュガー
PROC FUNC(ARG1, ARG2) {
VAR var1;
var1 = ARG1 + ARG2;
display(var1);
}
(defun func (ARG1 ARG2)
(let ((var1))
(setq var1 (+ ARG1 ARG2))
(display var1)))
とか書けるようにする。
その他の構文
HASHは VAR{“index”}
LISTはVAR[index]
とかとか。
不本意だが、仕方がない
開発は順調に進む
順調、順調!
結果
なんと、半年のディレイで完成することに成功
かなり複雑なシステムになったが、とりあえず
おっきなバグは出なかった
結果
売れなかったけどな!