= Open-MGL Wiki!
[[BR]]
== Open-MGLとは? ==
DirectXを利用した2D、3Dゲーム開発向けのライブラリです。[[BR]]
VC++用です。関数形式ではなくクラス形式で提供しているのでVBとかじゃ使えないかも・・・。
元々は自分のサイトにて公開していたものですが、一人で開発し続けるには余りに規模がデカく、[[BR]]
また自分の環境では起きないバグ等もあると思い、2007年02月09日 にSourceForge.jp上にオープンソース化しました。
[[BR]]
== 単なる”ライブラリ”からその先へ・・・ ==
※非常に長文になってしまったので別ページに分けました。
>[Next 単なる”ライブラリ”からその先へ・・・]
しかし、いざそのライブラリを使用してゲームを作ってみたものの、そのソースコードは非常に複雑で、汚く難解なものでした。[[BR]]
これを解決するには、恐らく、単なる呼び出し型のライブラリでは駄目。[[BR]]
テンプレート・プログラミングか、それともMix-inか・・・でも、それらを用いた所で、本当に綺麗で、真に分かりやすいプログラムが書けるようになるのだろうか・・・?
'''''・・・単なるライブラリでは限界があるかも知れない。'''''
ゲームのプログラミングは非常に複雑です。[[BR]]
例えDirectX関連の部分が簡略化出来たとしても、今度は”ゲームプログラミングとしての複雑さ”にぶち当たります。[[BR]]
確かに、テンプレート・プログラミングやMix-in、またはそれ以外の手法を用いることにより、ある一定量の成果は出せるかも知れない。[[BR]]
しかし、私はこのライブラリを作る過程で、どんなに仕組みを、設計を極めたとしても、ある一定の所で壁にぶち当たるのではないか。と思いました。
C++は非常に柔軟な言語であるため、それが”C++と言う言語の壁”だとは思いません。[[BR]]
私が思うに”プログラミング言語としての壁”にぶち当たるのではないかと思いました。
例えば、テンプレート・プログラミングにて上手く設計出来た(ように見えた)としましょう。[[BR]]
しかしその実、「Hoge<Hoge2,<Hoge3,Hoge4>>」のように非常に複雑なテンプレートであったり、もしくは継承関係が非常に複雑であったとしたら・・・
'''それは本当に「シンプルになれた」と言えるのか?'''
[[BR]]
恐らく、ここで「スクリプト言語」と言う道への選択を考える人も居るでしょう。[[BR]]
私も最初はそうでした。しかしある一定まで作った所で辞めました。
そこには、私がflex、bisonと言うコンパイラコンパイラを使うのが始めてであったため、非常にプログラムが複雑で難解になってしまった、と言うのもありますが、[[BR]]
しかし一番大きな理由は、結局、こうやってスクリプト言語を作っても、
それが[project:neptune Neptune]プロジェクトの始まりでした。
[[BR]]
== for Next Generation is "Neptune" ....
現在、Open-MGLを利用した上位アプリケーションとして「Neptune」と言うソフトを(別の SourceForge.jp プロジェクトとして)開発中です。
>[http://sourceforge.jp/projects/neptune Neptune]
Neptuneは2D、3Dゲームの統合開発環境(IDE)──というよりも'''「オーサリング・ツール」'''です。[[BR]]
単なる言語ライブラリでは限界があると判断し、2008年初めに開発を開始しました。
なお、これに伴いOpen-MGLの開発がとまったわけではなく、むしろNeptune開発中に'''[[BR]]
「こんな機能があるといいな」'''と言うのをどんどんフィードバックし、こちらも依然として開発を続けています。[[BR]]
(むしろこのフィードバックにより、以前にも増して開発が活発化しているとも言えます。)
{{{ comment
[[BR]]
== August Framework
8月フレームワーク───[[BR]]
JavaのSpring Frameworkをもじってと言うか、何と言うか、まぁ'''ぶっちゃけ適当な名前付け'''なんですけど。(何
MFCのように、メソッドをどんどんオーバーライドしていくことにより、機能を実装していくタイプのフレームワークです。[[BR]]
前処理や後処理が複雑大量であるDirectX開発では、やっぱりこの形がベストなのかなぁ、とつい最近気付きました。[[BR]]
このタイプのプログラミング手法は嫌う人も居ますが、開発者の負担を考えると、やっぱりこの形が最善です。
詳細は別ページに記載します。
>[August_Framework August Framework]
[[BR]]
== あ、そうそう。
実は'''ドキュメントが全然メンテナンスされていません。'''[[BR]]
なのでまぁ、ドキュメント書かれてないクラスとかは、自分でヘッダファイルとか見て解析してください・・・。[[BR]]
まぁ基本的にクラス名、メソッド名、変数名とはそのまんま分かり安めに書いてある筈なので、頑張って解析してちょ・・・!
[[BR]]
== MSL/MWL/MWLmfc
DirectXとは関係ない、且つ特にゲーム用途と言う訳でもないユーティリティ関数、クラス等を別に分離しています。[[BR]]
・・・んまぁパッケージ内のincludeとかでは一緒くたになってますけどネ・・・。
ちなみにそれぞれMSL=Myu Standard Library、MWL=Myu Windows Library、MWLmfcはそれのMFC部分、って感じです。[[BR]]
あ、そうそう。MGLは'''Myu Game Library'''の略です。
[[BR]]
== 3Dのサポートは・・・?
~~~ちょっと最近視野に入れ始めました。最終的にはサポートするかもです。~~~
本格的にTryし始めてみています。(ぉ
[[BR]]
== ライセンス
近々[http://sourceforge.jp/projects/opensource/wiki/licenses%2Fnew_BSD_license BSD License]から[http://sourceforge.jp/projects/opensource/wiki/licenses%2FMIT_license MIT License]へと変更する予定です。
BSD LicenseとMIT Licenseとでは、基本的に'''「著作権表示さえしていれば後は何をやってもOK」'''と言うスタンスは同じですが、
BSD Licenseの場合、三番目の条項として、
{{{
Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
(日本語訳: 特別の許可が無くては、このソフトウェアから派生した製品の推奨や宣伝に、<組織>の名前やその貢献者の名前を使用してはいけない。)
}}
と言う項目がある点で異なります。多分'''「このソフトから派生したソフトを宣伝するために、その謳い文句として組織名とか作者名を利用するのはやめてね。」'''という事を言いたいのだと思うのですが、それを制限する理由は特にないと思いますし、組織名(即ちプロジェクト名)を公表───'''「このソフトはOpen-MGLを使って作っています!!」'''みたいな風にして宣伝してもらうのはむしろ、このプロジェクトの存在を世の中により広く知ってもらうために良い事だと思うのです。なので、この第三条項のない、MIT Licenseへと移行しようかと思っています。(と言うかこの第三条項の存在意義がそもそも良く分かりません。「俺たちの名前を宣伝の引き合いに出すんじゃねー。自分の[http://d.hatena.ne.jp/keyword/%A5%CD%A1%BC%A5%E0%A5%D0%A5%EA%A5%E5%A1%BC ネームバリュー]の力のみで宣伝しろ!」ってこと・・・?詳しい人教えて!!)
[[BR]]
== ロードマップ
* [ロードマップ]
[[BR]]
[[BR]]
[[BR]]
[[BR]]
}}}
[[BR]]
== メニュー
* [August_Framework August Framework]
* [MXP MXP++]
* [Ageha AGH 2.0/Ageha]
* [AGH]
* [開発者募集要項]
* [IRCチャンネル]
* [開発環境の構築 ソースコードをコンパイルするには]
* [コーディング規約]
* [ロードマップ]
* [Memo]