ゲームライブラリ作成記 その2

アバター
lriki
記事: 88
登録日時: 14年前

ゲームライブラリ作成記 その2

投稿記事 by lriki » 14年前

夏期講習っていうものが持って行っちゃうの。私の時間を。

夏休みだからまとまった時間がとれる!と思ったらそんなものがありました。
あるのはわかってたけど、正直ナメてました。

だけどそんなものには負けたくない。ちゃんと完成させるんだ!

というわけで、授業中も時間をみて仕様の設計です。やや悪い子でございます。


・・・で、


やはり若いもんが出しゃばって設計なんてするもんじゃありません。
毎日が仕様変更だよ!昨日の自分はもう他人だよ!


実はわたくし、今回の講習で時間がとられることを見越して記事をいくつか書き置きしてました。

でも、じっくり設計してる間に何回か仕様が変わって、
書き置きした記事が使い物にならなくなってしまいました。

実際にプログラミング始める前の変更だからまだいいと言えばいいですけど・・・。

この日記も2、3日に1回くらいのペースで更新していければいいなーとか考えてましたけど、
それは難しくなりそうなのです。現実は非情なのです。



とりあえず、ここまでで考えたモジュールの構成なんかを張っておきます。

CODE:

namespace LNote
{
	// コアモジュール。システム(OS)に依存しない部分
	namespace Core
	{
		namespace Base		// エラー処理、型宣言、参照文字列型など
		namespace Math		// 算術。ベクトル、行列、クォータニオン、sin cosテーブルなど
		namespace Memory	// メモリ管理
		namespace Resource	// 埋め込みリソース
		namespace FileIO	// ファイル入出力。暗号化アーカイブ、非同期読み込み
		namespace Thread	// 今はwindowsのスレッド使ってるけど、後で boost でも実装したいところ
		...
	}

	// エンジン。アプリケーションレイヤーとかそんな感じの。システムに近いもの
	namespace Engine
	{
		namespace Audio		// ゲームオーディオ、3D音声など
		namespace Graphics	// 基本的な描画機能
		namespace Input		// (仮想)ゲームコントローラ、キーコンフィグなど
		namespace System	// ウィンドウの作成、メッセージ処理など
		...
	}

	// Core、Engine の上位モジュール
	namespace Utility
	{
		namespace Framework	// ライブラリ全体の動作管理 (時間管理もここ)
		namespace Scene		// Graphics の上位。スプライト、3Dモデル、ポリラインなど
		namespace Effect	// エフェクトエディタで作ったエフェクトを扱う。ウリのひとつになるかも
		namespace GUI		// GUIモジュール。ボタン、テキストボックスなど
		...
	}
}
以上が実装部分。
で、以下はこれらをもっと簡単に使えるようにしたもの。
ライブラリのラッパーみたいな感じ。

CODE:

namespace LNote
{
	// Base モジュール
	class LString
	class LWString
	class LList
	class LNodeList
	...

	// Audio モジュール
	class LAudio
	class LSound
	...

	// Graphics モジュール
	class LRenderer
	class LVertexBuffer
	class LIndecBuffer
	class LTexture
	class LShader
	...

	// Scene モジュール
	class LSprite
	class LPanel
	class LMesh
	class LSkinMesh
	...

	// Math モジュール
	class LVector3
	class LMatrix
	...
}
「L」プレフィクスを付けて、namespace LNote に全部入れてます。
これらは機能充実っていうよりもお手軽さを重視したもの。
さらっと使ってみたいのに LNote::Engine::Graphics::Texture とか長いもの書かせるのは忍びないことです。
とくに「C++ 勉強中!」っていう方に使っていただくのであればなおさらのこと。


結構な数ありますけど、Thread Input Audio Math あたりは殆ど前回までの
ライブラリのものを見直しながら持ってくるだけでよい感じだったり。
実質作りこむ必要があるのは Graphics と、その上位である Scene。

そんな感じなので、週末くらいにはグラフィックス機能以外(ェ・・・)を実装した
デモを配布できればいいなぁ・・・といったところです。




以下、余談です。

Dixqさんに触発されてDXライブラリの3D機能を勉強してみたところ、
結構いろんなことができることに驚きました。

3Dの機能はおまけ程度みたいな話を聞いたことがあり、
これまでずっとそんな感じなんだろうなーとか思ってましたけど、
これはなかなか充実の内容。すごい!

LightNote の方で対抗できる機能があるとすれば・・・
一番大きいのはゲームエフェクトの機能かなぁ・・・
でもコレ独自仕様強いしなぁ・・・
(付属のエフェクトエディタで作ったエフェクトをゲームで使える機能。詳しくは別の記事で書きます)

ってなると、ある程度の規模のゲーム開発をサポートしていく方向で作った方がいいのでしょうか。
ふむむ・・・

とりあえず pmd の読み込みと物理演算はサポートしたいなとか思ってみたり。

っていか、そもそもいち学生がそんなDXライブラリ様に挑もうとするのがおこがましいのでしょうか。
ふむむ・・・ふむむ・・・


でも作りたいんだもん!


さて、デモの作成をいそいそいそ・・・

コメントはまだありません。