D言語をはじめる

「D言語をはじめる」の編集履歴(バックアップ)一覧はこちら

D言語をはじめる」(2009/11/14 (土) 17:18:55) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

* D言語を始める 芝が生えるゲームは、D言語で書かれています。ということで、芝が生えるゲームを(気合入れて)改造する場合は、D言語がビルドできる環境を用意する必要があります。 * D言語って JavaとC++を足して割った様な言語。「ガベージコレクタのあるC++」「ネイティブで走るJava」とか。まあ、そんな感じ。 JavaかC++の経験がある人なら、すんなり使えるんじゃないでしょうか ソースコードの拡張子は .d 、文字コードは UTF-8 です ※注意※ D言語は現在、stableな「1.0系」と開発が進行している「2.0系」があります。お互いに互換性が微妙にありません。 芝が生えるゲームは「1.0系」で作られています。 * 芝が生えるゲームのアーキテクチャ紹介 SDL http://www.libsdl.org/ メディアハンドリング担当。マウス座標とったり、ウインドウ初期化したり、bmp読んだり、タイマーだったりはこのライブラリを使っています。マルチプラットフォーム SDL_mixer http://www.libsdl.org/projects/SDL_mixer/ 音担当。wavとoggが鳴らせます。 やっぱりマルチプラットフォーム OpenGL http://www.opengl.org/ 作画担当。GPUを使ってあんなことやこんなことができる これもマルチプラットフォーム * ビルドできる環境を作る(Windows D言語ゲーム開発入門 http://www5.atwiki.jp/yaruhara/pages/74.html ここを参考に。 ダウンロードページ 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が付属してない為(?)、そのままではコンパイルできないので注意。&br()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 -コンフィグ --config.iniを読んで解析する boot.d -エントリポイント --実行時に最初に呼ばれます state.d -状態遷移まわり --ゲームの大枠の状態遷移。タイトル->ゲーム本編->エンディングとか、を管理してます。 --芝ゲーではそういった状態管理はないのでほぼ未使用。流用ですからー clickable.d -ゲーム中のボタンUIの処理 --流用から、後々の拡張でズタズタになってますorz actor.d -キャラクタの基底クラスとか、キャラクタプールとかのテンプレート vector.d -ベクトルとかの基本演算。あまり使ってない keypad.d -ゲームパッドの入力とかをまとめてる。 --マウスのリプレイレコーダ/プレーヤーとかついてますが、使ってません。流用ですからー Dhellライブラリ・ポーティングほか hell2.d -SDLとopenGLのラッパライブラリ --作画とか、音再生とかの汎用関数があります --以下のポーティングに依存 opengl.d openglu.d -OpenGLのDポーティング。shinhさんのものを使ってます。 SDL/フォルダ以下すべて -SDLのDポーティング。同じくshinhさんのものです。 * リンク 公式(の日本語訳) http://www.kmonos.net/alang/d/1.0/ 標準ライブラリPhobosのリファレンスとか、言語仕様とかはここで調べるとおk D言語Wiki http://f17.aaa.livedoor.jp/~labamba/ 具体的なサンプルコードとか わかったつもりになるD言語 http://www.kmonos.net/alang/wnd/ D言語の周辺情報はここで * コメント - 何か加筆されてる気がする。 -- kaikai (2009-03-20 23:08:07) #comment
* D言語を始める 芝が生えるゲームは、D言語で書かれています。ということで、芝が生えるゲームを(気合入れて)改造する場合は、D言語がビルドできる環境を用意する必要があります。 * D言語って JavaとC++を足して割った様な言語。「ガベージコレクタのあるC++」「ネイティブで走るJava」とか。まあ、そんな感じ。 JavaかC++の経験がある人なら、すんなり使えるんじゃないでしょうか ソースコードの拡張子は .d 、文字コードは UTF-8 です ※注意※ D言語は現在、stableな「1.0系」と開発が進行している「2.0系」があります。お互いに互換性が微妙にありません。 芝が生えるゲームは「1.0系」で作られています。 * 芝が生えるゲームのアーキテクチャ紹介 SDL http://www.libsdl.org/ メディアハンドリング担当。マウス座標とったり、ウインドウ初期化したり、bmp読んだり、タイマーだったりはこのライブラリを使っています。マルチプラットフォーム SDL_mixer http://www.libsdl.org/projects/SDL_mixer/ 音担当。wavとoggが鳴らせます。 やっぱりマルチプラットフォーム OpenGL http://www.opengl.org/ 作画担当。GPUを使ってあんなことやこんなことができる これもマルチプラットフォーム * ビルドできる環境を作る(Windows D言語ゲーム開発入門 http://www5.atwiki.jp/yaruhara/pages/74.html ここを参考に。 ダウンロードページ 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が付属してない為(?)、そのままではコンパイルできないので注意。&br()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 -コンフィグ --config.iniを読んで解析する boot.d -エントリポイント --実行時に最初に呼ばれます state.d -状態遷移まわり --ゲームの大枠の状態遷移。タイトル->ゲーム本編->エンディングとか、を管理してます。 --芝ゲーではそういった状態管理はないのでほぼ未使用。流用ですからー clickable.d -ゲーム中のボタンUIの処理 --流用から、後々の拡張でズタズタになってますorz actor.d -キャラクタの基底クラスとか、キャラクタプールとかのテンプレート vector.d -ベクトルとかの基本演算。あまり使ってない keypad.d -ゲームパッドの入力とかをまとめてる。 --マウスのリプレイレコーダ/プレーヤーとかついてますが、使ってません。流用ですからー Dhellライブラリ・ポーティングほか hell2.d -SDLとopenGLのラッパライブラリ --作画とか、音再生とかの汎用関数があります --以下のポーティングに依存 opengl.d openglu.d -OpenGLのDポーティング。shinhさんのものを使ってます。 SDL/フォルダ以下すべて -SDLのDポーティング。同じくshinhさんのものです。 * リンク 公式(の日本語訳) http://www.kmonos.net/alang/d/1.0/ 標準ライブラリPhobosのリファレンスとか、言語仕様とかはここで調べるとおk D言語Wiki http://f17.aaa.livedoor.jp/~labamba/ 具体的なサンプルコードとか わかったつもりになるD言語 http://www.kmonos.net/alang/wnd/ D言語の周辺情報はここで * コメント - 何か加筆されてる気がする。 -- kaikai (2009-03-20 23:08:07) - sowakaが出てこないw -- 名無しさん (2009-11-14 17:18:55) #comment

表示オプション

横に並べて表示:
変化行の前後のみ表示: