「PsmStudioメモ」タグのついた投稿

今回はPSM用のMonoGamesの導入方法を紹介します。

PSM用のMonoGamesにはVisual Studioと違いインストーラーやプロジェクトテンプレートが無い為、自分でソースコードを落とした後にdllをビルドし、プロジェクトを作る必要があります。ですので今回はその導入方法を紹介します(主に布教の為)。

 

まずソースコードの落とし方です。ソースコードは下記のGitHubのページから落とせます:

https://github.com/mono/MonoGame

 

ダウンロード方法は2つあり、zip形式でダウンロードするのとgitかsvnでリポジトリを落とす方法です。

zipファイルを落とす場所はGitHubのページの”Download Zip”と書かれているボタンを押すと出来ます

 

github

 

もう一つのsvnで落とす方法を紹介します。

個人的には更新しやすいのでこちらの方がオススメです。

svnに付いての詳しい説明は省きますが、便利なので知っておいた方がお得だと思います。

 

今回はTortoise svn を使用して解説します。

先ほどのページで「Https」と書かれているテキストボックス内にあるアドレスをコピーしてください。

 

github2

 

アドレスをコピーしたら、そのアドレスからリポジトリをチェックアウトすればダウンロード出来ます。チェックアウトするには右クリックで”svn Checkout…”を選択すればアドレス指定ウィンドウが出るのでそこで保存先を選択してください。

 

checkout

後は完了するのを待つだけで終わりです。

 

次は実際にMonoGamesのdllを作成します。

え、Git?スミマセンナニカトラウマガガガ・・・

 

PSM用のMonoGamesのdllを作成するには、落としてたファイルの中から、”MonoGame.Framework.PSMobile.sln”をPsmStudioで開いてください。

 

プロジェクトの中にはMonoGamesとLidgrenのプロジェクトが入っています。Lidgrenはネットワーク用のライブラリなので、使用したくなったら使用出来ます。

dllのプロジェクトはそのままビルド出来るので、debug版とrelease版をビルドするだけです。

 

ide

 

製作されたdllは通常通りbinフォルダに入っているのでそこから自分のプロジェクトに追加すれば使用できます。自分場合は[D:\MonoGames\trunk\MonoGame.Framework\bin\PSMobile]に入ってます

 

それでは実際にMonoGamesを使用したプロジェクトを作成します。

まず、新しいプロジェクトを作成し、そこに先ほど作成したdllを追加します。

プロジェクトにソリューションツリー内の「参照」を右クリックし、「参照アセンブリの編集」を選択してください。ダイアログが出てきたら「.Net Assembly」タブを選択しMonoGamesのdllを選択してください。

選択後下の方にある「Add」ボタンを押し、そこでMonoGamesが右にある一覧に加えられているのを確認してください。

 

dialog

 

これでOKを選択したらdllが追加されます。

 

次にxnaを使うとき同様、エントリーポイントにGameを継承したクラスを生成します。

AppMain.cs内にまずxnaの名前空間を追加します。

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
using Microsoft.Xna.Framework.GamerServices;

後はエントリーポイントのMainメソッドに初期化と開始処理を加えます。

namespace MonoGameTemplate
{
public class AppMain
{
public static void Main (string[] args)
{
using (var game = new Game1())
game.Run();
}
}
}

 

Game1はGameクラスを継承したクラス名を入れてください。

次にGame1クラスを作成します。

まず、新しいC#ファイルを追加してください。その中にxnaデフォルトのGame1クラスの中身を追加すれば終わりです。

 

using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace MonoGameTemplate
{
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}

protected override void Initialize()
{
base.Initialize();
}

protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
}

protected override void UnloadContent()
{
}

protected override void Update(GameTime gameTime)
{
base.Update(gameTime);
}

protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
base.Draw(gameTime);
}
}
}

 

これを起動するとお馴染みのCornFlowerBlue画面が出ます。

 

blue

 

次に画像に関してです。

PSMでMonoGamesを使用する場合、Contentプロジェクトは作成せずそのままContentフォルダに画像等を追加します。ここで気をつけなければいけない事があります。自分がまだ見つけてないだけだとは思いますが、コンテントファイルの形式が.xnbでないと読み込まれないみたいなので、そこは注意してください。通常の.pngファイルなどの読み込みに関しては調査中です。

 

今回は以上です。

ざっくりとしか解説を載せていない上にぐだぐだな説明もあるので、何か質問があればコメントをください。

今回の骨組みのプロジェクトはそのうち何処かに上げる予定です。

結構時間は立ちましたがPSMゲームジャムでMonoGamesを使った際、音の再生で問題が有ったので音の再生に関してメモします (ドキュメントを見た方が早い気もしますが・・・)

 

今回は効果音の再生についてメモします。PSMではWave形式のファイルが効果音として使用されており、現在のバージョンでは他の形式はサポートしていないみたいです。

 

効果音の再生にはSce.PlayStation.Core.Audioネームスペース内にあるSoundクラスと、SoundPayerクラスが使用されます

 

Soundクラスは効果音自体を保持するクラスです。Soundクラスを生成するにはプロジェクトに追加している効果音ファイルのパスを渡すか、音データを表すByte型のデータを渡す事が出来ます。Byteデータの方はプログラム上で変換したり、別のファイル読み込みで獲得したデータを使う時等に使用できます。

 

Sound se = new Sound("/Application/SE/Select.wav" );

 

データを読み込みSoundクラスを作った後、今度は読み込んだ音を再生する為のSoundPlayerを作成します。SoundPlayerはSoundクラスのCreatPlayer()メソッドを呼び出す事で生成されます。

 

SoundPlayer soundPlayer = se.CreatPlayer();

 

後はSoundPlayerのPlay()メソッドを呼ぶだけで再生できます。

 

soundPlayer.Play();

 

ドキュメントにも書いてありますが、一つのSoundクラスから複数のSoundPlayerを作成する事が出来、それにより同じ効果音を別々に再生する事が出来ます。

 

再生する音の音量等はSoundPlayerクラスで調整できます。詳しくはドキュメントを参照した方が良いと思いますが、細かい調整意外で使用しそうなプロパティを書いておきます:

 

音量をの変更( 0.0f~1.0f の間。0.0fが0%で1.0fが100%)

soundPlayer.Volume = 0.75f;

ループ再生の切り替え

soundPlayer.Loop = false;

再生の状態( 停止中か再生中か)

// 停止中の場合は再生する処理
if ( soundPlayer.Status == SoundStatus.Stopped )
{
     soundPlayer.Play();
};

 

今回は以上です。

次回は多分BGMの再生をメモします。