忍者ブログ
目標: 月1回以上更新すること
> ホーム <
1 2 3
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

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

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

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

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

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

というわけで、そろそろ3Dゲームの開発を始めようか。
開発環境など詳細は次回
PR
ホームページで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を表示するプラグインがあるのですがインストールが面倒ですね
従来のサイトで、何かメッセージを表示したいとき、JavaScriptで
alert("hogehoge");
ってやってましたよね?

でもデザインに凝ったサイトだと、少しばかり見劣りがします。

ところで、最近のサイトにありがちなのが、写真のサムネイルをクリックすると派手なアニメーションをして拡大画像を表示するやつ。一般にLightboxとかのライブラリを使ってる場合が多いです。
(何のことか分からない人はとりあえずLightboxのデモページの画像をクリックしてみるべし)

俺の開発してる「Vipper City」でも、メッセージを表示するときに似たようなライブラリを使っています。俺が使ってるのはjqModalというライブラリ。jQueryのプラグインとして動作します。

一般には「ThickBox」とかのプラグインを使う場合が多いようですが、俺がjqModalを使ってる主な理由は、容量が小さいのと、JavaScriptからの呼び出しが楽だからです。
一般のブログでは大して恩恵はないのですが、Webアプリを作る場合は、「jqmShow()」って書くだけでいいってのは便利ですね。

(本来、この手のライブラリは、<A>タグだけで呼び出せるので、JSを知らない人にもお勧めです。俺の使い方はちょっと変w)

余談:
Vipper Cityぐらいalert()で十分じゃないかと思われがちですが(当初は俺もalert使ってた)、ダイアログに画像を載せたり文字色を変えたりするにはこうするしか…

jQueryのライブラリで似たようなのはたくさんあります。俺がjqModal使ってるのはただ単にスクリプトのほかの部分との相性問題ですねw
ブログ内検索
カレンダー
02 2024/03 04
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
31
~*~*~*~
カウンター
最新コメント
[09/25 紗弥加]
[09/09 しょうこ]
[08/11 かおる]
[07/30 みなみ]
[07/22 純]
最新トラックバック
アクセス解析仕掛けてます
忍者ブログ [PR]