ラベル モグラたたきゲーム の投稿を表示しています。 すべての投稿を表示
ラベル モグラたたきゲーム の投稿を表示しています。 すべての投稿を表示

2007年8月27日月曜日

モグラたたきの改造(効果音)

前回に引き続き、モグラたたきゲームを改造します。

手順としては一つ飛んで、「3.効果音を入れ替え」を行います。

1.効果音の入手
フリー素材もしくは有料素材を探します。探して分かったのですが、フリー素材/有料素材どちらも「著作権」自体を放棄してはいません。そのため、商品の一部として音素材を使用することは難しい場合が多いです。

有料素材であっても、購入者の趣味の範囲では使用OKだが、商品の一部に使用するのはダメ(別途、使用料を払う)とかです。

今回、Windows(Xbox 360)版はこのまま商品となることはないのですが、SL(セカンドライフ)版は商品となる可能性があるので、このあたりを気をつけて探しました。

結果、ザ・マッチメイカァズ が見つかりました。その他のフリー素材は商用利用が厳しいか、商用利用可能な有料素材はとても高額です。

2.音のイメージ
今回のモグラたたきゲームのイメージは以下となります。
●製作したのは下町の小さな工場
●若い従業員が余った鉄板を利用して製作した
●腕のいいオヤジさんがアドバイスした
●ハンマーも鉄でできている
●ハンマーが重すぎてうまくたたけない
●ハンマーが当ると致命傷

3.効果音の選定
●スタート音楽
重くたちこめるようなアラーム → alarm00.wav
●町工場の環境音
鉄を打ち加工しているループ音 → loop000.wav
●ハンマーを振り下ろす音
重いものを振り回す音 → swing10r.wav
●プラスヒット音(悪モグラをヒット)
重衝撃音 → hit_p03_a.wav
●マイナスヒット音(良モグラをヒット)
金属音が混じった重衝撃音 → mecha25.wav
●エンド音楽
治安の悪い場所で緊急を伝えるアラーム → alarm01.wav

4.効果音の入れ替え
効果音入れ替えにプログラムを修正する必要はありません。
●まず、上記効果音ファイルを「Sound」フォルダにコピーします。
●次に、「Sound」フォルダの中の「wav」ファイルの名前を修正します。
●「F5」キーでデバッグビルドすると実行可能となります。

以下、ファイル名の修正
●alarm00.wav → m_start.wav
●loop000.wav → m_main.wav
●swing10r.wav → e_hammer.wav
●hit_p03_a.wav → e_plus.wav
●mecha25.wav → e_minus.wav
●alarm01.wav → m_end.wav

2007年8月25日土曜日

モグラたたきの改造(画像)

モグラたたきゲームを改造したいと思います。

以下の手順での改造を計画しています。
1.画像の入れ替え
2.ゲームロジックの改造
3.効果音等の入れ替え

まず、モグラたたきゲームの画像を入れ替えてみます。



画像元はセカンドライフでの「体感型モグラたたきゲーム」です。アバターが中に入って穴から頭を出したり引っ込めたりします。

ここで、セカンドライフとは、3次元オンラインゲームの一種です。セカンドライフではユーザーがが独自に3次元物体を制作することできます。また、スクリプト言語で物体を動かすことができます。

すなわち、セカンドライフでゲームを制作することができます。しかし、各種制約から本格的なゲームは制作することはできません。

セカンドライフからWindows(Xbox 360)ゲームがプレイできたらよいと思います。

両者をシームレスにする試みとして、セカンドライフ画像を使用しました。
















画像を入れ替えたので、画像表示に関するプログラムを修正する必要があります。

プログラムの修正については次回以降で記述したいと思います。

2007年7月5日木曜日

モグラたたきゲーム(2)

前回に引き続き、モグラたたきゲームを「写経」(プログラム手入力)しました。

Microsoft Visual C# は、いわゆるVisual 環境というか統合環境が洗練されていて、「写経」している最中に「スペルミス」を発見してしまいます。また、入力補助機能で想定されるコマンドを選択表示してくれるので、プログラムを入力するのがとても楽です。

何か「写経」の醍醐味が薄れたようで・・・(贅沢!)

ただ、写経の効果は健全で、プログラムを打ち込んでいく内に何をやっているのかが大筋で分かりました。

F5 キーで「デバッグ開始」すると、エラーが4個だけでした。当然、マジックナンバー(100 とか 50 とかの数値)の入力ミスは残っているはずです。


初期画面がオープニングミュージックとともに表示されますが、Xbox360 用コントローラーがないとこれ以上先には進めません。

キーボード操作可能に改造
改造と呼べるほど大げさなものではないのですが・・・

キーボード入力に関するHow to があるのでそれを参考にしました。Microsoft Visual C# 2005 Express Editions のヘルプの中にあります。
[XNA Game Studio Express]-[Programming Guide]-[Input]-[How to: Detect Whether a Key Is Pressed]

ゲーム画面が少しずれていますが、これは私の写経ミス(修行不足)によるものでしょう。


操作方法
「X」キー:Start
「B」キー:Exit
「→」「←」「↑」「↓」キー:照準移動
「A」キー:ハンマー

プログラム修正
修正箇所を以下に列挙します。 修正箇所はかなりありますが、修正内容はどれも簡単で読めばすぐに理解できると思います。基本的に、まずゲームパッド(Xbox360コントローラのこと)に関するコマンドをコメントアウト(行の頭にスラッシュ「/」を2つ追加)し無効にします。次に、そのゲームパッド・コマンドに対応するキーボード・コマンドを追加します。
-------------------------------------------------------------------
Game1 クラスの中
・・・「prevGPState」の宣言をコメントアウト
・・・その下に「prevKBState」の宣言を追加
// private GamePadState prevGPState;
private KeyboardState prevKBState;

・・・「gpState」の宣言をコメントアウト
・・・その下に「kbState」の宣言を追加
// private GamePadState gpState;
private KeyboardState kbState;

Update の中
・・・「gpState」の行をコメントアウトし、「kbState」の行を追加
// gpState = GamePad.GetState(PlayerIndex.One);
kbState = Keyboard.GetState();

UpdateMain の中
・・・バイブレーション設定の行をコメントアウト
// GamePad.SetVibration(PlayerIndex.One, 0.0f, 0.0f);

getInputMain の中
・・・「A」ボタン入力チェックの行をコメントアウト
・・・「A」キー入力チェックの行を追加
// if (gpState.Buttons.A == ButtonState.Pressed &&
// prevGPState.Buttons.A == ButtonState.Released)
if (kbState.IsKeyDown(Keys.A) &&
prevKBState.IsKeyUp(Keys.A))

・・・バイブレーション設定の行をコメントアウト
// GamePad.SetVibration(PlayerIndex.One, 1.0f, 1.0f);

・・・「A」ボタン入力チェックの行をコメントアウトし、「A」キー入力チェックの行を追加
// if (gpState.Buttons.A == ButtonState.Released &&
// prevGPState.Buttons.A == ButtonState.Pressed)
if (kbState.IsKeyUp(Keys.A) &&
prevKBState.IsKeyDown(Keys.A))

・・・バイブレーション設定の行をコメントアウト
// GamePad.SetVibration(PlayerIndex.One, 0.0f, 0.0f);

・・・「左」ボタン入力チェックの行をコメントアウト
・・・「←」キー入力チェックの行を追加
// if (gpState.DPad.Left == ButtonState.Pressed &&
// prevGPState.DPad.Left == ButtonState.Released)
if (kbState.IsKeyDown(Keys.Left) &&
prevKBState.IsKeyUp(Keys.Left))

・・・「右」ボタン入力チェックの行をコメントアウト
・・・「→」キー入力チェックの行を追加
// if (gpState.DPad.Right == ButtonState.Pressed &&
// prevGPState.DPad.Right == ButtonState.Released)
if (kbState.IsKeyDown(Keys.Right) &&
prevKBState.IsKeyUp(Keys.Right))


・・・「上」ボタン入力チェックの行をコメントアウト
・・・「↑」キー入力チェックの行を追加
// if (gpState.DPad.Up == ButtonState.Pressed &&
// prevGPState.DPad.Up == ButtonState.Released)
if (kbState.IsKeyDown(Keys.Up) &&
prevKBState.IsKeyUp(Keys.Up))

・・・「下」ボタン入力チェックの行をコメントアウト
・・・「↓」キー入力チェックの行を追加
// if (gpState.DPad.Down == ButtonState.Pressed &&
// prevGPState.DPad.Down == ButtonState.Released)
if (kbState.IsKeyDown(Keys.Down) &&
prevKBState.IsKeyUp(Keys.Down))


CheckGoMain の中
・・・「B」ボタン入力チェックの行をコメントアウト
・・・「B」キー入力チェックの行を追加
// if (GamePad.GetState(PlayerIndex.One).Buttons.B
// ==ButtonState.Pressed)
if (Keyboard.GetState().IsKeyDown(Keys.B))

・・・「X」ボタン入力チェックの行をコメントアウト
・・・「X」キー入力チェックの行を追加
// if (gpState.Buttons.X==ButtonState.Pressed)
if (kbState.IsKeyDown(Keys.X))
-------------------------------------------------------------------

2007年7月2日月曜日

モグラたたきゲーム(1)

書籍「できるプログラミング XNA Game Studio Express」 を入手しました。これは、特別版と記述されているように、市販品ではありません。申請するといただけるようです。


ただ、この本が手元になくても、XNA デベロッパーセンターにゲーム素材(画像・音源)とともにプログラムもありますので、それらを入手することができます。http://www.microsoft.com/japan/msdn/directx/xna/


大変貴重な資料なので、最初からプログラム手入力で学習しようと思います。

第1章の準備のところは終わっているので第2章からです。

第2章レッスン8から始めました。
レッスン12まで進み、サンプルプログラムに必要な画像と音源を、XNA デベロッパーセンターから入手しました。ソリューション・エクスプローラで画像と音源を追加します。

レッスン13で、アップデート処理と描画処理です。
いたって順調ですが、だいぶ疲れてきました。「描画・アップデート処理」が終わったので、この辺りで、デバック(ビルド)できるかな?

プログラムを打ち込んでいたので、動かないことは薄々知っていましたが、一応、F5キーで「デバッグ開始」してみましたが・・・
この辺りで一括りあるとうれしいです。

レッスン22まで行かないと、デバッグ(ビルド)できそうにないので、そこまでがんばろう!(自分にゲキをとばしてます)。

レッスン16がコントローラー操作に関するプログラム解説です・・・まだ、Xbox360用コントローラーが入手できないので、キーボード操作で動くようにする必要がありそうです。(Big Camera で、3,300円でした)