D言語を始める
芝が生えるゲームは、D言語で書かれています。ということで、芝が生えるゲームを(気合入れて)改造する場合は、D言語がビルドできる環境を用意する必要があります。
D言語って
JavaとC++を足して割った様な言語。「ガベージコレクタのあるC++」「ネイティブで走るJava」とか。まあ、そんな感じ。
JavaかC++の経験がある人なら、すんなり使えるんじゃないでしょうか
ソースコードの拡張子は .d 、文字コードは UTF-8 です
※注意※
D言語は現在、stableな「1.0系」と開発が進行している「2.0系」があります。お互いに互換性が微妙にありません。
芝が生えるゲームは「1.0系」で作られています。
芝が生えるゲームのアーキテクチャ紹介
ビルドできる環境を作る(Windows
ダウンロードページ
http://www.digitalmars.com/d/download.html
から「1.0系」のdmd.1.030.zipとdmc.zipをダウンロードして、展開。
dmd.1.030.zipからはdmフォルダとdmdフォルダが、dmc.zipからはdmフォルダが展開されるはず。
なので、c:\dmdとかにdmフォルダとdmdフォルダをコピーする。
dmフォルダは一方を他方へ上書きコピーすればおk。
必要に応じて、c:\dmd\dmd\binとc:\dmd\dm\binにパスを通しておく。
芝ゲーの中のbuild.batをたたいて、ちゃんとゲームがビルドされて動けば、環境は一応完成です。
dmdがないって言われた場合、パスがあってないです。build.batを適宜書き換えると良いかもしれません。
備考
- koke_080806.zipはlibが付属してない為(?)、そのままではコンパイルできないので注意。
koke_080227.zipにあるlibフォルダを、srcフォルダの中にコピーすればおk。
- dmdフォルダとdmフォルダを混ぜて環境構築する時は、dmc.zipのdm\bin\sc.iniでdmd.1.030.zipのdmd\bin\sc.iniを上書きしないように注意。
- 「改造してみるwを改造してみる」の場合、build.bat内でのPATH記述がちょっと違う(c:\dmdではなくc:\に環境構築した場合になってる)ので、build.batを書き換える必要があるかもです。
- バージョン上がっててコンパイルできない場合は、change logのページから古いのが落とせる。
- というかD1.041だとコンパイルが通らん。自力で直してもいいけど。
- D1.030でコンパイルできることを確認したリスト(他は知らん):
- koke_080227
- koke_080806
- kokekai_080519
- kokekai_080527
- てきとーに書いたので誰か加筆修正よろ
見通し的な話
ゲームの基本設計
- ゲームはフレームを基本単位として処理します。
- フレームは基本、一回の更新処理 と 一回の作画処理 から成ります
- ※フレームスキップことエコノミー状態や、ksk中はこの限りではありませんが。
- 更新処理は update や move といった関数名で書かれてます
- 作画処理は draw といった関数名で書かれています。
- マップやキャラクタは個々に扱ってては面倒ですから、
- マップにはMapChipとMapの階層があります。MapChipの群れをMapがまとめる感じです
- キャラクタにはCharacterとCharacterPool。Characterの群れをCharacterPoolがまとめています。
- gamecore.dのclass GameMain : GameStateを見てみましょう
- かなーり肥大化してますが、move()とdraw()があることがわかるはずです。
- そこから
- move()なら map.update() マップの更新処理、charpool.move() キャラクタの更新処理を読んでいます
- draw()なら、map.draw() マップとキャラクタ作画処理
- ※マップ&キャラの作画は作画順(ソート)の関係で、一括処理になってます
- だいたいそんなかんじ
改造の指針
主にゲームに直結してくる上位のコードはこのへん。
gamecore.d
- ゲームシステムの大元
- メニューボタンとか運営レーザーとかはここ
- チャートも無理やりだけどここに
character.d
- ゲームキャラクタ(動くもの)
- ニコ厨、うp主、ソワカちゃん、あらし、爆風エフェクト といったものはここ
- class Characterがキャラクタ周りの振る舞いをしているので、その辺に手をいれるといいのでは
map.d
- マップに依存するもの
- 芝、動画、仕切りなど
- class MapChipとかだったはず
下位のモジュール。上のサポートをしてるようなもの
config.d
boot.d
state.d
- 状態遷移まわり
- ゲームの大枠の状態遷移。タイトル->ゲーム本編->エンディングとか、を管理してます。
- 芝ゲーではそういった状態管理はないのでほぼ未使用。流用ですからー
clickable.d
actor.d
- キャラクタの基底クラスとか、キャラクタプールとかのテンプレート
vector.d
keypad.d
- ゲームパッドの入力とかをまとめてる。
- マウスのリプレイレコーダ/プレーヤーとかついてますが、使ってません。流用ですからー
Dhellライブラリ・ポーティングほか
hell2.d
- SDLとopenGLのラッパライブラリ
- 作画とか、音再生とかの汎用関数があります
- 以下のポーティングに依存
opengl.d
openglu.d
- OpenGLのDポーティング。shinhさんのものを使ってます。
SDL/フォルダ以下すべて
- SDLのDポーティング。同じくshinhさんのものです。
リンク
コメント
- 何か加筆されてる気がする。 -- kaikai (2009-03-20 23:08:07)
- sowakaが出てこないw -- 名無しさん (2009-11-14 17:18:55)
最終更新:2009年11月14日 17:18