しろログ

日々巡り会ったものの感想・レビュー

Category: IT・コンピューター (page 2 of 15)

PHP7 + cake

なんとなくPHP7とcake phpを用意するだけのメモ

環境
CentOS 6.7
apache2系
mysql5系

ICU(intl用)

yum install libicu libicu-devel

PHP7

./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--enable-mbstring \
--enable-opcache \
--enable-intl \
--with-zlib-dir

composer(無い場合)

curl -s https://getcomposer.org/installer | php
cp /usr/local/src/php-7.0.0/composer.phar /usr/local/bin/composer

cake

composer create-project --prefer-dist cakephp/app /path/to/app_name

Apache Cordovaを試す

クロスプラットフォーム開発ツールCordova。前身はPhoneGap。

いわゆる側アプリ・ハイブリッドアプリと呼ばれるタイプで、アプリに埋め込んだブラウザ内でHTML5/CSS/JavaScriptを動かすよー、というものです。
出た当初は当然もっさり感しかなくて、使い物にならないという印象しか無かったのですが、その後も開発が続けられていて、パフォーマンスが改善してきたようなので、また試してみようと思った次第。
macで試します。

nodebrewのインストール

$ curl -L git.io/nodebrew | perl - setup
$ export PATH=$HOME/.nodebrew/current/bin:$PATH
$ source ~/.bash_profile

Node.jsのインストール

$ nodebrew install latest
$ nodebrew use latest

確認

$ node -v
$ npm -v

Cordova

$ npm install -g cordova
$ cordova -v

Cordova導入は以上でOK。

プロジェクトを作って、対応プラットフォームを追加(ここではAndroid/iOS/Webに対応。他にもFireOSなどいろいろ)

$ cordova create /path/to/projectDir/MyApp com.example.MyApp MyApp
$ cd /path/to/projectDir/MyApp
$ cordova platform add android
$ cordova platform add ios
$ cordova platform add browser

なお、androidなどは事前にSDKをインストールし、パスなどを通しておく必要があるかと思います。
cocos2d-xなどを導入していれば、このあたりは問題なさそう。

全部ビルド
$ cordova build
Androidだけビルド
$ cordova build android
リリースビルド
$ cordova build --release

iOSを、シミュレーターで確認したい場合は入れておく

$ npm install -g ios-sim

実行

$ cordova run android
$ cordova run ios
$ cordova run browser

プロジェクトディレクトリにある
platoforms/android
platforms/ios
の中が、Android StudioやXcodeで開ける構成になっているようです。
iOSなどは普通にMyApp.xcodeprojをXcodeで開いて実行すれば実機確認が可能。

この辺のテイストはcocos2d-xなんかともかなり似てますね。
2〜3年前と比べて手軽になったなぁ。

参考:
nodebrew で Mac の Node.js 環境をスッキリさせた
Macにnodebrew(node.js, npm)をインストールする手順
よく使うCordovaコマンド

Cocos2d-x – 無料でTexturePacker的な

なんとなく画像を連結してplistが欲しいだけなのに、TexturePackerを買うのはちょっと・・
という方向け。

libGDXのTexture packerを使って、連結画像とplistを作ります。
Cocos2d-JSでも使えます。

mac向けですが、javaとperlが動かせればwindowsなどでもOK。

libGDXのTexture packerについては、詳しいオプション含めて、
GitHub libgdx/libgdx – Texture packer
に書いてありまして、nightly buildでもrunできるんだぜ、みたいに書いてありますが、自分の環境では、

エラー: メイン・クラスcom.badlogic.gdx.tools.texturepacker.TexturePackerが見つからなかったかロードできませんでした

みたいな感じに・・

なのでreleaseビルドをダウンロードします。
libGDX – download
執筆時は libgdx-1.6.1.zip でした。

この中にある
gdx.jar
extensions/gdx-tools/gdx-tools.jar
の2つを適当なディレクトリにコピります。

あとはそこで

$ java -cp gdx.jar:dx-tools.jar com.badlogic.gdx.tools.texturepacker.TexturePacker 画像のディレクトリ [出力先ディレクトリ] [出力ファイル名]

を実行するだけ。

出力ファイル名を省略すると、pack.pngファイルと、pack.atlasというファイルが出来上がります。
このpack.atlasファイルを
libGDXのTexturePackerで作った.atlasファイルをcocos2dxで読み込める.plistに変更するperlスクリプト
で変換してやります。

具体的には上のページのスクリプトを convert-plist.pl などの名前で保存し、

$ perl convert-plist.pl /path/to/pack.atlas /path/to/output-dir

と叩くだけです。

これでpack.plistができます。

ついでにCocos2d-JSでの使用例も書いておくと、

resources.js内
var res = {
    ...
    pack_plist : "res/pack.plist"
};

scene.js内
cc.spriteFrameCache.addSpriteFrames(res.pack_plist);

var sprite = new cc.Sprite("#pack/元のファイル名.png");

でOK。(#pack/のところはlibGDXでの出力ファイル名次第で変わります)

詳しくはCocos公式も参照のこと。

Cocos2d-JS ドラッグでスプライトオブジェクトを移動

1本指ならまだしも、マルチタッチで移動って処理めんどいし、うまくいかん・・と思ってたら、簡単すぎる解答がオフィシャルであった。

cc.eventManager.addListener({
    event: cc.EventListener.TOUCH_ALL_AT_ONCE,
    onTouchesMoved: function (touches, event) {
        var touch = touches[0];
        var delta = touch.getDelta();

        var node = event.getCurrentTarget().getChildByTag(TAG_TILE_MAP);
        var diff = cc.pAdd(delta, node.getPosition());
        node.setPosition(diff);
    }
}, this);

A faster way to add listener to cc.eventManager

短くするならこうかな

    onTouchesMoved: function (touches, event) {
        var node = event.getCurrentTarget().getChildByTag(TAG_TILE_MAP);
        node.setPosition(cc.pAdd(touches[0].getDelta(), node.getPosition()));
    }

Google Play Game ServicesのLeaderboardsをリセットする方法

出、出た〜!自分のテストデータを残したまま、うっかり公開奴〜ww
でもまあ、簡単にリセットボタンとかでクリアできるだろうとか思って奴〜wwww

・・・

というわけで、主に自分のテストデータを残したまま、うっかり公開してしまったうえ、そう簡単に消せないと分かった時の対処法です・・。

なんかリセットボタンポチー、でできるのかと思いきや、これが意外に面倒でした。
ググっても中途半端な情報しかない。ので、一応まとめておくことに。

いろいろ方法があるかもですが、今回の結論としては、GoogleのOAuth 2.0 Playgroundで、リセットAPIを直に叩くことになります。

ざっくりした流れは
1.Google Developers ConsoleでPlayground用のOAuth2.0クライアントを作成
2.Google Play Developer Consoleの「ゲームサービス」から、そのクライアントとリンク
3.OAuth 2.0 Playgroundで、そのクライアントのClient IDとClient secretを用いてAPIを実行
です。

各ステップの詳細と、注意点は以下の通り。

■1.Playground用のOAuth2.0クライアントを作成
REST API事始め的なのが具体的な方法はこちらに書いてあります(Google Fitでの説明ですが、他のサービスでも同様かと思います)
必要なところ抜粋し意訳しますと、

1. Google Developers Consoleへ行きます
2. (リセットしたいLeaderboardsなどのある)プロジェクトを選びます
3. 左のサイドバーにある「APIと認証」の「認証情報」を開きます
4. 「認証情報を追加」をクリックし、「OAuth 2.0クライアントID」を選びます
5. アプリケーションの種類は「ウェブアプリケーション」です(Playgroundがwebサービスなので・・)
6. 承認済みの JavaScript 生成元には https://developers.google.com
承認済みのリダイレクト URIには https://developers.google.com/oauthplayground
をそれぞれ入力して「作成」を押してください

以上で、PlaygroundでAPIを叩くクライアントの、クライアントIDとクライアントシークレットが手に入りました。
(後で使うのでコピっておいてください)

■2.クライアントとゲームサービスをリンク
リンクすることで、そのクライアントがゲームサービスのデータにアクセスできるようになるようです。

まず、Google Play Developer Consoleに行き、左のサイドバーにある「ゲームサービス」からリセットしたいLeaderboardsなどのあるゲームサービスを選択し、さらにメニューにある「リンク済みアプリ」を選びます。

すでにAndroidなどアプリとのリンクはあるかと思いますが、そこでさらに「別のアプリをリンク」をクリックし「ウェブ」を選択します。
起動URLには https://developers.google.com/oauthplayground と入力し「保存して次へ」をクリックします。

すると「API コンソールでいくつかのアプリが承認されていることが判明しました。そのいずれかを追加しますか?」と表示されるので
「アプリを表示して選択」をクリックします。

すると、先ほど作ったクライアントが選択できるようになっているので、選択します。

これでリンクが完了です。

■3.APIを叩く
OAuth 2.0 Playgroundに行きます。

右のほうにあるギアアイコンをクリックし「Use your own OAuth credentials」をチェックします。

すると、「OAuth Client ID」と「OAuth Client secret」を入力できるようになるので、1で作成したクライアントのIDとシークレットを入力し、「close」を押します。

その後、左のところ、Step1で「Google Play Game Services Management API v1management」の「https://www.googleapis.com/auth/games」を選択し、そのまま「Authorize APIs」をクリックします。

Googleのアカウント選択(orログイン)画面になるので、自分のテストで使ったアカウントを選択しログインします。
認証を求められるので、許可します。

Playgroundに戻って少しすると、Step2が開くので、そのまま「Exchange authorization code for tokens」をクリックします。

また少しすると、Step3が開くので、いよいよリセット用APIを叩きます。
HTTP Methodは「POST」、Request URIは https://www.googleapis.com/games/v1management/scores/reset と入力し「Send the request」をクリックすると、めでたくスコアがリセットされるはずです。

特定のLeaderboardsのだけを消したりしたい時は、
https://www.googleapis.com/games/v1management/leaderboards/リーダーボードのID/scores/reset
などが使えます。

その他、全ユーザーのを消すなどのAPI詳細はAPI Referenceでも確認できます。

以上です。

# ってか、こんな方法あるんなら、Google PlayのDeveloper Consoleにリセットボタン置けばいいだけじゃん!

Older posts Newer posts

© 2018 しろログ

Theme by Anders NorenUp ↑