2015年12月22日火曜日

Amazon Androidアプリストア 一万円ギフト券プレゼントキャンペーン

Amazon Androidアプリストアのアンケートに答えると一万円のギフト券がもらえます。

アンケートに答えると一万円のギフト券プレゼント画像
一万円のギフト券
アンケートは期間中にアマゾンストアに新規アプリを登録するとメールで送られてきます。

実施期間

2015年11月11日(水)00時00分~2015年12月31日(木)23時59分
new 期間が延長されました
1アカウント最大3アプリ分(3万円)のアンケートに答えることができます。

手順

アプリを登録して3日ほどでアンケートのメールがきました。
メールにはアンケートサイトへのリンクがあります。
アンケート回答後一週間ほどでギフト券が配られるとの記述でしたが、
ギフト券が届いたのは一月後でした。
アンケートに答えるだけで1万もらえるのは破格ですね。
ストアを充実させたいのでしょう。

アンケートで1万もらえるクーポンコードは

AMAZON
です。このコードは開発者全員に配られています。
入力しないと1000円のギフト券になってしまいます。
三万円分のギフト券があればAmazonで買い物し放題ですね。

2015年11月7日土曜日

アプリストア登録に必要な画像サイズ一覧

Unityの場合はアイコンをサイズごとに作る必要がなくて便利です。
ストアの登録には以下の画像が必要になります。

iOS

1024x1024 png jpg アルファ無し
スクリーンショット
iPhone4S 960x640 同上
iPhone5 1136x640
iPhone6 1334x750
iPhone6 plus 2208x1242
iPad 1024x768
ipad Pro 2732x2048 New

Android

512x512 png アルファ有り
1024x500 png jpg アルファ無し
320x180 同上
180x120
スクリーンショット
320以上3820以下

サイズを合わせた画像の作成が面倒です。
とりあえずサイズさえ合っていれば審査は通ります。

2015年10月30日金曜日

Unityスプライトの回転と反転

  Unityでスプライトやオブジェクトを回転されるサンプルコード。
単純に向きを変える場合を想定しています。

    private GameObject go=回転対象;

回転

  private void Kaiten(){
        Coms.SetZRP (go.transform90f);

    }


左右反転

    private void Hanten(){

        Coms.SetYRP (go.transform180f);
    }


    public void SetZRP(this Transform transformfloat x)
    {
        Vector3 newPosition = 
            new Vector3(transform.localRotation.x,transform.localRotation.ytransform.localRotation.z+x);
        
        transform.Rotate(newPosition);
    }
    public void SetYRP(this Transform transformfloat x)
    {
        Vector3 newPosition = 
            new Vector3(transform.localRotation.x,transform.localRotation.y+xtransform.localRotation.z);
        
        transform.Rotate(newPosition);
    }


反転はキャラクターの向きを左右に切り替える時に使用します。
Unityのトランスフォーム操作はゲッタセッタを使用する場合とイコールで代入する場合がありややこしいです。


2015年10月29日木曜日

Unity 時間差をつけて音を鳴らす

Unityで時間差をつけて音を鳴らしたい場合のサンプルです。
MonoBehaviourを継承しているクラスから使用できます。
引数は(this、オーディオソース、待ち時間秒)です。

以下サンプル

  public void Jikansa(MonoBehaviour mb,AudioSource ad,float time) {
        //ループコルーチン
        mb.StartCoroutine(JikansaMati(ad,time));
    }
    private IEnumerator JikansaMati(AudioSource ad,float time) {
        yield return new WaitForSeconds(time);
        Narasu(ad);
        
    }
    private void Narasu(AudioSource ad){
        if (isMute == false) {
            ad.Play ();
        }
    }


MonoBehaviourを継承していないクラスからのStartCoroutine使用を想定しています。
UnityのオーディオソースはOnAudioSetPositionやOnAudioReadなどの開始や変更のコールバックはあるのですが、終了のコールバックがありません。
audio.clip.lengthをタイマーにしてコールバックの代わりに使うなど工夫が必要です。

Unity複数のスプリプトをセット化するRequireComponent

Unityではゲームオブジェクトにスクリプト(クラス)を貼り付けてアタッチします。
その際にスクリプトをセットでアタッチしないといけない場合があります。
例えば、コライダーとリジットボディのような。
複数のスクリプトのアタッチを忘れないようにするのが
RequireComponentです。
以下の場所に宣言することでアタッチの際にスクリプトを自動追加します。
using System.Collections;
[RequireComponent(typeof(スクリプト名))]
public class ABC : MonoBehaviour{}
スクリプトからスクリプトをアタッチしているわけではありません。
デフォルトでゲームオブジェクトにセットされます。

2015年10月27日火曜日

unity アニメーターの遷移を自動で戻す

unityのアニメーターの遷移についてメモ。
デフォルトのアニメーションを起点にしてアクションを付ける場合。例えば

待機→攻撃→待機

など。攻撃動作が終わったら自動的に待機に戻りたい場合。
triggerを使用します。
    void Start () {
        anime = GameObject.Find ("オブジェクト").GetComponent<Animator> ();
    }
    
    public void ACT(){
        //anime.SetBool ("bool",true);
        anime.SetTrigger ("trigger名");
    }
}


triggerはSetTriggerで呼ばれた時に真になり、次のアニメーションへ遷移すると 偽になります。なので
待機→trigger→攻撃→適当なboolですぐに遷移→待機といった具合になります。
一度の攻撃アニメーションで元に戻ります。(最低表示時間を1アニメーションに)

2015年10月23日金曜日

Unity C# String二次配列からデータを検索するサンプル

unity用のルックアップ関数のサンプルソースです。
CSVを読み込んでString2次配列に入れるサンプルはこちら
unityでCSVを読み取るサンプル

    //探す文字、CSVデータ、探す列、返す列
    public string lookup(string name,string[,] str,int sagasu,int kaesu){
        string tmp = "";

        for (int i=0i<str.GetLength(0); i++) {
                        if (name.Equals(str[isagasu])) {
                                tmp = str [ikaesu];
                                i = str.Length;
                        }
                }

        return tmp;
        }


エクセルのルックアップ関数ってこんな感じでしたっけ?
GetLengthとlengthを間違えることがあるので覚書。
lengthは2次配列全ての要素数。GetLength(0)は[x、y]のyを省いた要素数。次元を一つ減らして数えるイメージです。

2015年10月19日月曜日

unity Could not fetch error messages from compilerInvalidOperationException

UnityでCould not fetch error messages from compilerInvalidOperationExceptionが発生しました。MonoDeveloperでファイルのディレクトリを移動したせいです。
以下エラーログ。
Could not fetch error messages from compilerInvalidOperationException: The process must exit before getting the requested information.
System.Diagnostics.Process.get_ExitCode ()
(wrapper remoting-invoke-with-check) System.Diagnostics.Process:get_ExitCode ()
UnityEditor.Utils.Program.get_ExitCode () (at /Users/builduser/buildslave/unity/build/Editor/Mono/Utils/Program.cs:104)
UnityEditor.Scripting.Compilers.ScriptCompilerBase.CompilationHadFailure () (at /Users/builduser/buildslave/unity/build/Editor/Mono/Scripting/Compilers/ScriptCompilerBase.cs:105)
UnityEditor.Scripting.Compilers.ScriptCompilerBase.DumpStreamOutputToLog () (at /Users/builduser/buildslave/unity/build/Editor/Mono/Scripting/Compilers/ScriptCompilerBase.cs:116)
UnityEditor.Scripting.Compilers.ScriptCompilerBase.GetCompilerMessages () (at /Users/builduser/buildslave/unity/build/Editor/Mono/Scripting/Compilers/ScriptCompilerBase.cs:98)
どうやらUnityとMonoDeveloperでのメッセージがやり取りできないとこのこと。

解決策

UnityとMonoDeveloperを再起動。

Unityリソースから動的にスプライトを変更

Resources/Spritesフォルダをあらかじめ作成してそこにスプライトを入れてください。マルチスプライトを使用する場合は配列で取得してマルチスプライト名をFinedで取得します。

リソースフォルダからスプライトを取得
    public Sprite getSprite(string name) {
        
        // Resources/Sprites/SpritesName 

Sprite sp = Resources.Load<Sprite>("Sprites/"+name);
        return sp;
    }

ゲームオブジェクトのスプライトを変更
    public static void SetSprite(this GameObject go,Sprite sp)
    {
        SpriteRenderer sr;
        sr = go.GetComponent<SpriteRenderer>();

        sr.sprite = sp;
    }

2015年10月14日水曜日

GooglePlayとiTuneStoreアプリの検索順位SEO比較

GooglePlayとiTuneStoreのアプリの検索順位の重点を比較してみました。

共通

ダウンロード数
評価数(3星以上の)

GooglePlay

アプリのページがGoogleのサーチエンジンと同じ評価方式。そのため被リンクが多くなるにつれて順位があがる。
 日本語での被リンクが増えるため日本向けに順位が高く設定される。
日本向けのアプリに強い。

iTuneStore(Apple)

iTuneConnectで設定したアプリ名とキーワードが優先される。
 言語に影響されないため、世界共通の順位になる。
外国向けのアプリが強くなる。

Can't add script component "script_name" because Unityエラーメッセージ

スクリプトをゲームオブジェクトにアタッチしようとしたら以下のエラーメッセージが。
Can't add script component "script_name" because
要するにスプリプトが見つからないとこのとです。
Unity上のスプリプト名とMono上のクラス名一致しない場合に起こるエラーです。
クラス名をXXXAPKと書いたつもりがXXXAKPになっていました。
unityとmonoは日本語入力に弱いため英数入力でファイル作成をしなければ入力がキャンセルされてしまいます。F10で半角にしてもだめです。

2015年9月29日火曜日

error CS1041: Identifier expected: `XXX' is a keyword

unityと実行しようとして偶に単純な構文ミスでつまずくことがあります。
構文エラーメッセージは以下です。
error CS1041: Identifier expected: `XXX' is a keyword
例えばusingに間違いがあると
error CS1041: Identifier expected: `public' is a keyword
といった風に。エラー箇所の近くを教えてくれます。
他にもカッコの合わせやセミコロンが付いているかなど、全般的なエラーメッセージです。

2015年9月22日火曜日

550円分のGoogle Playギフトカードがメールで無料配布

Googleから550円分のGoogle PlayギフトカードがGmailへ配られています。

受け取り条件


  • web版のGooglePlayの設定に「クーポンとニュースを受け取る」にチェックを入れている
  • ギフトカードの使用体験のために配られているため、購入歴がないこと

他にも、アカウントが関連付けられていると一つのアカウントにしか届かないかもしれません。以前にAmazonAppは全ユーザーアカウントに500円分配布してくれたけど、今回はクーポンコードでの配布なのでしかたないか。


2015年9月20日日曜日

猫用アプリ iPad用をリリースしました。

無料の猫用アプリ「猫用アプリ ボール版」をリリースしました。

iOS版のダウンロードはこちら

無料で広告無し。
猫の目に優しい、黒背景に緑ボールです。
ボールがランダムに動いて猫がじゃれます。
ボールは速度によって音量が大きくなります。
動画で使用している端末は4.3インチのスマホです。
iPadくらいのサイズなら猫が遊びやすいかもしれません。

2015年9月14日月曜日

Unity Replaceが機能しない。置き換わらない。

 C#とJavaの文法が似ているため時々勘違いをしてしまいます。
Javaの変数にはプリミティブ型とラッパー型の二つがあり、それぞれ値渡し、参照渡しのどちらかしかできません。
C#の変数は全て値渡しで、refやoutキーワードで参照渡しにすることができます。
 勘違いしやすいのが文字列操作です。
String.Replace()でString内の文字列が変更されると思いきや、変更されず。
String = String.Replace()と書く必要がありました。
Javaの場合はStringは全て参照渡し扱いなので動作が異なります。
関数の設計の際は注意をしないと。。

2015年9月13日日曜日

unity PCのローカルへファイルを保存するサンプル

pcのローカルへファイルを保存するサンプルです。
assetsフォルダと同じディレクトリにassets2フォルダをあらかじめ用意ししてください。

以下使用例

            FileSaveText ("/../assets2/pass.csv",datas);
            EditorUtility.DisplayDialog("Information""SYUURYOU !!! TEXT""OK");


//テキストデータの保存
    public void FileSaveText(string fileName,String fileData){
        StreamWriter sw;
        FileInfo fi;
        fi = new FileInfo(Application.dataPath + fileName);
        sw = fi.AppendText();
        sw.WriteLine(fileData);
        sw.Flush();
        sw.Close();
    }

//バイトデータの保存    public void FileSaveGazo(string fileName,Byte[] fileData){

        string path = string.Format("{0}/{1}"Application.dataPath , fileName);
        File.WriteAllBytes(pathfileData);

    }

2015年9月11日金曜日

猫用のスマホアプリ

猫じゃらしアプリ
android版の猫じゃらしアプリ「猫用アプリ ボール版」をリリースしました。
ダウンロードはこちら
無料で広告の無いアプリです。
黒地の背景と緑のボールで猫の目に優しいです。
ボールは触ると音を立てて逃げます。
ダブルタップでボールのサイズ変更ができます。

猫用アプリ ボール版

猫用の無料アプリ「猫用アプリ ボール版」をandroidとiosでリリースしました。
猫のじゃれた写真
ボールが動く様子
 緑色のボールが動き回ります。
ボールが転がる音はボースの速度で大きくなります。
画面をダブルタップするとボールのサイズを変更できます。
ダブルタップで猫の注意を引くカサカサ音がなります。
無料で広告無し。
猫じゃらしアプリシリーズ。


2015年9月10日木曜日

unityタッチイベント

unityのタッチイベント

    if (Input.touchCount > 0) {

            switch(Input.GetTouch (0).phase){
            case TouchPhase.Began:
                Debug.Log ("Began");
                break;
            case TouchPhase.Stationary:
                Debug.Log ("Stationary");
                break;
            case TouchPhase.Moved:
                Debug.Log ("Moved");
                break;
            case TouchPhase.Ended:
                    Debug.Log ("Ended");
                break;
            }
        }

2015年9月9日水曜日

unity c#:数値の符号を取り除く

三次元で座標や加速度を計算する際にプラスとマイナスが混ざって分かりにくいです。
unityでは符号を取り除く関数Mathf.Abs()があります。
以下のように絶対数を返してくれます。
Mathf.Abs(10.5f)=10.5f
Mathf.Abs(-10.5f)=10.5f
引数はintとfloatどちらも使えます。

unity2d:キャラクターを瞬きさせるサンプル

2dキャラクターの瞬きを実装するには、一定秒数間隔で動作するコルーチンを使用します。
以下の方法を使えば一定時間置きに動作させられます。

    void 瞬き開始() {
        //ループコルーチン
        StartCoroutine(loop());
    }
    private bool FLML=true;//終了フラグ
    private float fme=5f,MABATAKI=10f;//10秒間隔で瞬き
    private IEnumerator loop() {
        // ループ n秒間隔

        FLML = true;
        while (FLML) {
            yield return new WaitForSeconds(fme);
            onTimer();
        }
    }
    
    private void onTimer() {
        if (FLM) {
            目を閉じる
            FLM=false;
            fme=0.2f;//閉じている時間は短く
        } else {
            目を開ける
            FLM=true;
            fme=MABATAKI;
        }
    }


キーワード。コルーチン、タイマー

編集したmp3ファイルの先頭に無音部分が追加される

ゲームの交換音を切れ目なくループさせようとしたところ、Audacityで編集した音声ファイルの開始部分に無音部分が追加されていた
追加された無音時間は0.05秒。ノイズの効果音だと一瞬の切れ目が耳についてしまいます。

原因

mp3は圧縮の構造上無音部分が追加されてしまう。

解決方法

wev、ogg、accなどの形式で保存する。
Audacityならoggで保存できます。unityでもogg形式を扱えます。

2015年9月4日金曜日

amazon本日の無料アプリが終了

 amazonの日替わり無料アプリ配布が2015年8月26日に終了しました。
欧米では代わりになるサービス「amazon underground」が開始されています。
 「amazon underground」は有料アプリを無料で使用できるサービスです。利用者にとっては本日の無料アプリと同じです。※一日限りではなく常時配布されている。
 違いは開発者への見返りです。アプリの使用時間に応じてamazonが開発者へ代金を支払います。※今までは開発者には一銭も入ってこなかった。
 日本でのサービス開始は2〜3ヶ月後かと思われます。

2015年8月16日日曜日

Wimaxの帯域減少による速度計測2

Wimaxは9月いっぱいで帯域が4分の1になります。

今日の計測結果(室内)

  • あなたの回線速度
  • 6.919
  • Mbps


高崎は8月の時点では速度の変化はみられません。

2015年8月7日金曜日

unity 経過時間の取得

unity C#で経過時間と日数の取得方法。
ここに(dateOld)過去の日付を渡す。

using System;
//経過日数
    public int KeikaNissu(DateTime dateOld){
        DateTime no;
        n = DateTime.Now;
        o =dateOld;
        TimeSpan k = n - o;
        return (int)k.TotalDays;
    }

//経過時間    public int KeikaJikan(DateTime dateOld){
        DateTime no;
        n = DateTime.Now;
        o =dateOld;
        TimeSpan k = n - o;
        return (int)k.TotalHours;
    }

2015年8月1日土曜日

unity推奨されるデータの保存サンプル

iOSとAndroidでも使用できるunityのデータ保存のサンプルソースです。
保存データ用のクラスをシリアライズして保存しています。
確かunityの推奨している保存方法の一つだったと思います。
iOSnoバージョンが古いとエラーが発生するので旧式の端末ではテストできないかも?

//使用例
    private SaveDatas sd ;
    private string SAVE ="key文字列";
    private void DataSave2(){
        SaveKanri.Save(SAVEsd);
        PlayerPrefs.Save();

    }
    private SaveDatas DataLoad2(){
        SaveDatas data_str = SaveKanri.Load<SaveDatas>(SAVE);
        ifdata_str != null){
            return data_str;
        }else{
            return new SaveDatas();
        }


//管理クラス
using UnityEngine;
using System.Collections;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

public class SaveKanri : MonoBehaviour{
    
    public SaveKanri(){
    }
    
    public static bool Save<T>(string prefKey,T obj){
        MemoryStream memoryStream = new MemoryStream();
        #if UNITY_IPHONE || UNITY_IOS
        System.Environment.SetEnvironmentVariable("MONO_REFLECTION_SERIALIZER""yes");
        #endif
        BinaryFormatter bf = new BinaryFormatter();
        bf.SerializememoryStreamobj );
        
        string str = System.Convert.ToBase64StringmemoryStream.ToArray() );
        try {
            PlayerPrefs.SetString ( prefKeystr );
        } catchPlayerPrefsException ) {
            return false;
        }
        return true;
    }
    
    public static T Load<T>( string prefKey ){
        if (!PlayerPrefs.HasKey(prefKey)) return default(T);
        #if UNITY_IPHONE || UNITY_IOS
        System.Environment.SetEnvironmentVariable("MONO_REFLECTION_SERIALIZER""yes");
        #endif
        BinaryFormatter bf = new BinaryFormatter();
        string serializedData = PlayerPrefs.GetStringprefKey );
        
        MemoryStream dataStream = new MemoryStreamSystem.Convert.FromBase64String(serializedData) );
        T deserializedObject = (T)bf.DeserializedataStream );
        
        return deserializedObject;
    }

}

//保存するデータクラス
using System.Collections;
[System.Serializable()]
public class SaveDatas{
    [System.Serializable()]
    public class InnerClass{
        public string instr1;
        public int inint;
    }

    public string str1;
    public int[] int10;
    public InnerClass inClass;
    
}


以前までusing PlayerPrefs = PreviewLabs.PlayerPrefs;を使用して保存していました。最近どうもPreviewLabs.PlayerPrefsで以下のエラーが発生して他の保存方法に切り替えました。
以下がエラーログ
PlayerPrefs.Flush NullReferenceException Object reference not set to an instance of an object

2015年7月30日木曜日

Unity 日付型のチェック

Unityで文字列が日付型であるかをチェックするサンプル
C#だとout修飾 子が必要なんですね。

using System;
        DateTime dt;        string str ="2001/1/11";
        if(DateTime.TryParse(str,out dt)){}

関連エラーログ

 error CS1502: The best overloaded method match for `System.DateTime.TryParse(string, out System.DateTime)' has some invalid arguments
 error CS1620: Argument `#2' is missing `out' modifier
error CS1501: No overload for method `TryParse' takes `1' arguments

2015年7月29日水曜日

iTunesConnectが繋がらないTunes Connect is temporarily unavailable.

数時間前からiTunesConnectが繋がりません。
ブラウザは読み込み中のままになるか以下の表示になるかです。
Tunes Connect is temporarily unavailable.
特にメンテナンスの通知はありませんでした。単にサーバーの障害でしょうか?
Safariを使用しても同様です。
ツイッターでも同様の報告が上がっています。
appleは相変わらず黙りです。

2015年7月28日火曜日

Unity uGUIテキストボックスの値の取得と変更

UnityのテキストボックスはuGUIのinputfieldになります。
inputfieldには二つの子オブジェクトがあり、その一つのTextオブジェクトのTextスクリプトのtextフィールドが入力されたあたいになります。
訂正inputfieldのtextフィールドからしか書き込みができませんでした。
以下がテキストデータの取得と変更のサンプルです。

using UnityEngine.UI;

        Text txt;
        txt = GameObject.Find ("I
putfield/Text").GetComponents<Text>()[0];

        Debug.Log (txt.text);//現在の値を表示
txt.text="変更";

訂正

    InputField inp;
        inp = GameObject.Find ("Namae").GetComponents<InputField>()[0];
        inp.text ="inpu!";
        Debug.Log (inp.text);



この文法はよく使うので覚えておくといいです。GameObject.Find ("Iputfield/Text").GetComponents<Text>()[0];

2015年7月21日火曜日

Unity uGUI Image画像を動的に変更する

インスペクタから画像を設定して、適当なボタンに画像変更()を割り当てます。

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class スクリプト
 : MonoBehaviour {

    public Sprite 画像1;
    public Sprite 画像2;


    private GameObject obj;
    private Image image;

    void Start () {
        obj = GameObject.Find("image(imageオブジェクトの名前)").gameObject as GameObject;
        image = obj.GetComponent<Image> ();
    }

    public void 画像変更(){
        image.sprite = 画像2;
    }

}

Unity uGUI Textの文字がボケる場合のチェック

 uGUIのTextオブジェクトの文字がぼやけることがあります。
Unityのdpi制御が解像度に依存する仕組みだからです。
以下の原因かもしれません。

  • Gameウインドウの解像度がディスプレイの解像度より大きくなっている
  • campusオブジェクトのアスペクトを以下のように固定している

文字がぼやける設定
campus scaleに注意
GUIのアスペクト比を固定すると発生しやすい事象です。

2015年7月17日金曜日

google play開発者サービスで原因不明の問題が発生しました

スマホゲーム中に以下のエラーが発生しました。
ダイアログ「google play開発者サービスで原因不明の問題が発生しました
PCもスマホも定期的に初期化をしないと様々な不具合が発生します。
解決方法

  • GooglePlay開発者サービスをインストールしなおす。

GooglePlay開発者サービスのダウンロードは以下です。
https://play.google.com/store/apps/details?id=com.google.android.gms&hl=ja

端末固有の不具合の可能性もあるのでビューから自分の端末を選択して調べてみましょう。

2015年7月16日木曜日

Androidエミュレーターの比較一覧

Androidエミュレーターは幾つかあります。
今回はAndyとWindroyを使ってみました。
以前の記事にGenymotionとBlueStacksの比較
http://anndoroido.blogspot.jp/2015/02/genymotionbluestacks.html
というものもあります。

Andy


  • 設定いらず
  • WinとMacの両方で使用できる
  • モンストなどの一部エミュレーター対策アプリが動く

Windroy


  • 起動が早い最軽量エミュレーター
  • GooglePlayは自分でインストールが必要(apkをコピペするだけ)

Genymotion


  • 比較的軽い
  • GPS設定自由
  • 多重起動可能
  • ウインドウ感覚で画面サイズを変更可能
  • GooglePlayは自分でインストールが必要
  • WinとMacの両方で使用できる
  • Root済み

BlueStacks


  • 設定いらず
  • WinとMacの両方で使用できる
  • モンストなどの一部エミュレーター対策アプリが動く
  • GPSはハードウエア依存
  • 一定期間使用すると必要ないアプリのインストールを強制される

評価

Genymotionが多機能かつ軽い。しかし人気故か対策されているアプリも多い。
最近のゲームはRoot対策のほかにエミュレーター対策もされてきています。
AndyとBlueStacksはモンストなどの一部エミュレーター対策がされているゲームでも動きます。
 PCでスマホゲームをするならAndyがシンプルでいいかもしれません。Winタブレットでの使用ならBlueStacksを購入すると良い。

 格安のWifi運用実機(ヂュアルコアメモリ1G)を3000円ほどで購入できるので実機の購入も検討すると良いかも?ほとんどのゲームが快適に動く格安白ロムのおすすめは以下