忍者ブログ
目標: 月1回以上更新すること
> ホーム <
1 2 3
というわけで3Dゲームの開発を始めた俺。
だが、最初の山場は環境構築だった

まず、3Dエンジンとして定評のあるIrrlichtを使うことにした。読み方は知らん。マルチプラットフォームとか、Quake3形式のBSPに対応してるとか、処理が速いとかのメリットがあるようだ。

使い方はIrrlicht A Go GoチュートリアルとかIrrlicht Unofficial Docsあたりが分かりやすいかな?
ただし、これらのチュートリアルは全てVC++2005が前提のようだ。俺の場合は、MinGW(GCC)で開発を試みることに…

1 MinGWのインストール
とりあえずK-na TechNotes MinGWのインストールを参考にしてMinGWをインストールする。MSYSは、UNIX向けのソフトをコンパイルする際に、擬似的にUNIX環境を供給するもの。今回のように1からソフトを作るなら特に必要なさそう。

2 Dev-C++のインストール
いままでBCC Developerという統合開発環境を使ってた俺だが、GCC向けの環境はないものか、と思ってたら、Dev-C++なるものを発見。これが、ツールバーのアイコンとかの見た目が似てるので楽に乗り換えできそうw
Dev-C++は、DevC++JPプロジェクトから日本語化されたのが配布されている。が、俺は英語でも困らないので本家からDL。ていうかこのソフト多言語対応で中国語韓国語が標準で使えるのに…日本語のバンドルはいつになるのか

3 Irrlichtのインストール
まあ、GCCの環境が整ったので、IrrlichtをダウンロードしてCドライブの直下に展開。マイドキュメントには置きたくない。よくファイル整理して移動させちゃうから:-)

4 Dev-C++のプロジェクト設定
さて、Dev-C++を起動し、新規プロジェクトを作成。File->New->Project、次にConsole Applicationを選択し、Name欄に名前をつけて[OK]。
Irrlichtチュートリアルの通りにプログラムを作ってコンパイルしたら、予想通り失敗。

失敗と対処法は後編にて。ちなみに、GCCで開発する場合、Direct3Dは利用できず、OpenGLのみとなる。

PR
Vipper Cityの開発を止めて休眠してたが、やはりゲームが作りたい…
ちなみに、Vipper Cityの開発をやめた理由はまあ4つぐらい

1. CGIゲームの衰退
巷ではSecond Lifeが話題だが(遂にVIPにもスレが…)、リアルタイムに活動できない仮想空間なんて作る意味があるのか。ちなみに俺のPCではセカンドライフは動かない。
セカンドライフより手軽に遊べれば十分じゃないか、という意見もありそうだが、それなら「BARギコっぽいONLINE」がある。

2. サーバーがない
BARギコに対抗してリアルタイム化をするのは、技術的には簡単だ。Flex2を使ってFlashベースにすればいいだけだし、サーバースクリプトもCGIよりは楽だろう。しかし、手ごろな価格でソケット通信ができるサーバーなんて殆どない。

3. 仮想世界の秩序維持
掲示板でさえ荒らしやスパムを防ぐのは難しい。今現在セカンドライフでいろいろと問題が起こってるんだから、Vipper Cityの管理は困難を極めるだろう。突撃とかうpとかしてる人々を呼び寄せて大丈夫なのだろうか…

4. バグ
実は、バグが取れないから匙を投げてしまった、というのが正直な理由だったりする。

というわけで、そろそろ3Dゲームの開発を始めようか。
開発環境など詳細は次回
ホームページでBGMを流す方法を列挙してみます。
bgsoundタグ
IEでしか再生できない
再生、停止の制御ができない

Quicktime, Media Playerなどのプラグイン
起動に時間がかかる
フリーズすることもある

Flash
MP3しか再生できない
プレーヤを自作しなければならない


この3つのうちどれがベストだろうか?
回線の容量さえ気にならなければFlashを使うのが無難でしょうか。Flashはブラウザの影響を受けにくいという利点があります。また、曲を途中から再生したり、音量をいじったりというのも比較的楽です。
最近はYouTubeなどで、動画プレーヤとしてもFlashが多用されてますね。

Flashで音を鳴らす際に面倒なのがスクリプトの自作でしょう。でも今時FlashなMP3プレーヤなんて大量にありますから…
でもJavaScriptから制御できるもの、となると、SoundManagerぐらいしか見当たりません。ただ、これ自体の完成度は高く、JavaScriptから音量の制御ができたりもします。

俺はFlashなBGMプレーヤにある可能性を感じています。それは、切れ目のないループ再生
従来のどの方法も、ループ再生をすると必ず音が途切れます。もちろんFlashもそうです。
しかし、Flashがスクリプト側で、リアルタイムに音量をいじれる、ということは、クロスフェードを使って擬似的に途切れのないループ再生ができるかも…
ということです。すでにこの手のFlashは存在するんですが、JavaScriptから操作できるのは見当たらないですね

しかしこれを自作するのも面倒だ…当分はSoundManagerを使うことにしよう。
現在30%ぐらい完成した「Vipper City」。
そろそろ実際の運用についても考える時期じゃないかと…
そこで、このゲームをどのような形で公開するか候補をまとめてみました。

自分で運営をする
自分で運営する場合、最大のメリットはメンテナンス、改造が自由にできることです。保守だけでなく、新しい機能とかも一気に導入できます。

一方、私のような忙しい人間にとって、コミュニティサイトの運営は簡単じゃありません。このゲームも含めて、CGIゲームには掲示板が設置されています。掲示板を設置する以上は、荒らしやスパム、誹謗中傷などに随時対応しなければなりません。
個々の荒らしに1つずつ対処するのではきりがありません。

事前に荒らしを防ぐには、メールアドレス登録制などの、ある程度匿名性を犠牲にしたシステムが必要になります。しかし、個人運営のサイトでメールアドレスという個人情報を取り扱うのは気が引けます(普通にやってるサイトも多いですが)。また、sendmailが使えないレンタル鯖が多いので、実装するのも困難なように思えます。

上記の理由から、俺が1人で管理する形態だと、長期的な運営は難しいでしょう。

代理の運営人を頼む
かなり合理的な方法です。俺以外に運営人を募集し、荒らしに対処してもらう方法です。実は、Vipper Cityには、仮想通貨というシステムがあるので、運営人の募集が簡単になります。ゲーム内に「警察」という職業をつくり、そういった仕事をしてもらう代わりに仮想通貨を支給する方法です。

しかし、一般に、書き込み削除などの基準が運営人によって異なります。厳密な基準を作るのは非常に難しい作業になるでしょう。

スクリプトの配布のみ
無難な方法です。しかし、この高負荷ゲームを設置してくれる人なんているのでしょうか。しかもこの方法だと、後から新機能を追加することができません。
ゲームを設置した人がスクリプトを改造できるため(CGIゲームは改造して使うのが一般的)、俺の追加した部分と設置者が改造した部分が、思わぬ干渉を起こすかもしれません。


さて、どの方法がベストでしょうか
最近のWebアプリでは、グラフを描くツールやお絵かき掲示板など、ブラウザ上で簡単な図形を描くものが増えています。
これらのアプリの多くは、
 ・gifやpngの画像をサーバー側で生成するタイプ
 ・FlashやJavaでクライアント側で描画するタイプ

の2種類に大別できます。しかし、最近になって新たなる手法が広まりつつあります。
それが、<canvas>タグSVGファイルです。ちょい昔にVMLなんてのもありましたが消えつつあります。

<canvas>タグとは
<canvas>タグは、ブラウザ上に直線や多角形や画像を描画するキャンバスを生成するタグです。
詳しい使い方は、canvas の描画メソッド - WebOS Goodiesとかのページにあります。

これのメリットは、JavaScriptから直接ブラウザに図形を描けることです。
現状では速度面や描画の機能などでは、Flashに到底及びませんが、手軽に使えるのでCGIゲームのインターフェースには便利です。

なお、IEはこのタグに対応していません。しかし、Googleが開発したExplorerCanvasというJavaScriptをインクルードするだけでIEでも同等の機能が使えます。

ちなみに、Vipper Cityでも<canvas>を使ってマップを描画しています。
で、マップ上の建物をクリックすると情報を表示する、という機能をつけたのですが、IEで互換性の問題が起こりました。

通常、event.offsetXでマウスの座標を取得するのですが(詳しいやりかたは忘れた)、この方法では正しく取得できません。IEでは、canvasに画像を描画した場合、その画像の左上を基準とした座標が返ってきます。どうやら、canvasに貼った画像が要素として認識されるみたい。
そこで、event.xで親要素の座標を取得すると……、うまくいったぞ!

SVGファイル
SVG(Scalable Vector Graphics)は、ベクターグラフィックの規格です。ベクターグラフィックは、直線や曲線をベースにした画像のことで、ファイルサイズが小さい、拡大しても汚くならない、というメリットがあります。AdobeのIllustratorはベクターグラフィックを扱うソフトの代表格です。
でもIllustratorは素人が購入できるような価格ではありませんねw。

そこで、オープンソースで開発されているInkscapeというソフトがあります。俺はこれを使ってます。

しかし、現時点ではサーバーでSVGを生成して表示するサービスというのは、ほとんど見られません。多分IEで表示できないからでしょう…。IEでもSVGを表示するプラグインがあるのですがインストールが面倒ですね
ブログ内検索
カレンダー
03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
~*~*~*~
カウンター
最新コメント
[09/25 紗弥加]
[09/09 しょうこ]
[08/11 かおる]
[07/30 みなみ]
[07/22 純]
最新トラックバック
アクセス解析仕掛けてます
忍者ブログ [PR]