サイトのトップへ戻る

AndEngineドキュメント 日本語訳

ゲームチュートリアル完全版 - part 2 - Activityを作成する:

前の記事では、エンジンと物理拡張のダウンロードに成功し、ゲームのプロジェクトを作成し、エンジンのソースをリンクし、activityの新しい空のクラスを作成しました。 この記事では、このactivityの設定を行います。

私たちは、複数のsceneを持ったactivityを一つだけ使用します。以下に使用するscenesを表す小さな図があります:

Picture

ゲームを開始した後、以下の順番で処理が行われます:

  1. スプラッシュテクスチャを読み込み、スプラッシュスクリーンを作成し、スプラッシュスクリーンを表示。
  2. スプラッシュスクリーンを表示してる間に、メニューのリソースを読み込んでメニューシーンを作成する。
  3. メニューを読む込んだら、スプラッシュスクリーンの読み込みを解除して、メインのメニューシーンを表示する。
  4. ユーザーがメインメニューのシーンとサブシーン(例えば、オプション)の間を切り替えることができる
  5. ゲームのプレイシーンへ切り替える間、ローディングシーンをまず表示し、メニューテクスチャの読み込みを解除し、ゲームリソースを読み込んでゲームシーンを作成する。
  6. ユーザーはゲームからメニューシーンへ戻ることができる。ゲームリソースの読み込みを解除し、ゲームシーンを破棄し、メニューテクスチャを再読み込みする間、読み込みシーンを表示する。

ご覧の通り、とても簡単で難しいことはありません。これはあくまで私が使っている方法なので注意してください。 自分のゲーム要件に合わせて変更するかどうかは、あなた次第です。 あなたのゲームの複雑さにもよりますが、ほとんどのゲームではこのやり方で十分でしょう。



1. Game Activityを設定する:
先ほど作成したクラスを開いてください。私の場合、GameActivityと名前をつけています。 まず最初に、 BaseGameActivityクラスを継承してこのクラスを拡張しましょう。 eclipseによって、継承元スーパークラスの未実装のメソッドを追加するよう求められるでしょう。
package com.matimdev;

import java.io.IOException;

import org.andengine.engine.options.EngineOptions;
import org.andengine.entity.scene.Scene;
import org.andengine.ui.activity.BaseGameActivity;

/**
 * @author Mateusz Mysliwiec
 * @author www.matim-dev.com
 * @version 1.0
 */
public class GameActivity extends BaseGameActivity
{
    public EngineOptions onCreateEngineOptions()
    {
        return null;
    }

    public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback) throws IOException
    {
        
    }

    public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws IOException
    {
        
    }

    public void onPopulateScene(Scene pScene, OnPopulateSceneCallback pOnPopulateSceneCallback) throws IOException
    {
        
    }
}
様々な端末上で同じ速度でゲームを動作させたいので、次の手順では、独自のEngineを作成します。 そのためにLimitedFPSEngineクラスを使用します。 これはデフォルトのEngineを継承したサブクラスで、毎秒ごとの更新回数の目安を設定します。 そのためには、onCreateEngine を上書きしてEngineを戻り値として返します:
@Override
public Engine onCreateEngine(EngineOptions pEngineOptions) 
{
    return new LimitedFPSEngine(pEngineOptions, 60);
}
ご覧の通り、コンストラクタの秒指定パラメータには60の値を使用しています。 これは毎秒ごとの更新回数の目安を指定します。 それでは、cameraとEngineOptionsを作成します。EngineOptions内で、どのように動作するかをエンジンに指示します。 指示には画面の向き, フルスクリーンモード、解像度、カメラなどのような基本設定があります。
private Camera camera;
    
public EngineOptions onCreateEngineOptions()
{
    camera = new Camera(0, 0, 800, 480);
    EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(800, 480), this.camera);
    engineOptions.getAudioOptions().setNeedsMusic(true).setNeedsSound(true);
    engineOptions.setWakeLockOptions(WakeLockOptions.SCREEN_ON);
    return engineOptions;
}

今回はcameraを800 x 480ピクセルサイズで新規に作成しました (作成する画面の解像度を何にするかをはあなた次第です。800 x 400と言うのは最もよく使用されているサイズです)。 次に独自のengine optionsを作成します。フルスクリーンのパラメータをtrueに設定し、横向き固定画面を使用し、RatioResolutionPolicyを設定します。 (ゲームが異なる解像度上で使用され場合は、このエンジンは適切な縦横比を維持しながらゲーム画面のサイズを変更します)。 また、setNeedsMusicとsetNeedsSoundにtrueを設定したので、ゲームにいくつかの音源を使用することができます。



2. android のマニフェストファイルを編集する:
いくつかの権限と独自のactivityを定義するには、android のマニフェストファイルを開いて編集する必要があります。 以下は、私のマニフェストファイルがどのように表示されるかです:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.matimdev"
    android:versionCode="1"
    android:versionName="1.0">

    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
    
	<uses-permission android:name="android.permission.WAKE_LOCK" />
	<uses-permission android:name="android.permission.VIBRATE"/>
	<uses-permission android:name="android.permission.INTERNET"/>
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
	<uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <application
        
        android:label="@string/app_name"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/AppTheme">
        
        <activity
            android:name=".GameActivity"
            android:label="@string/app_name"
			android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|mcc|mnc"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

インターネットアクセス権限(アプリに広告を搭載したい場合などに使う)のような、最も重要な権限を有効にしています。 また、使用するactivityについての情報の提示します。 configChanges プロパティも含めています。

次の記事ではsceneマネージャとscene管理システムを紹介しているので、確認してください。

前の記事 次の記事