忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/22 20:32 】 |
ngnix
起動コマンド

/etc/init.d/nginx start

/etc/nginx/sites-enable/以下

upstream appserver {
server localhost:3000;
}
geo $allowed {
default no;
202.32.47.0/24 yes;
219.163.197.64/27 yes;
221.186.216.16/29 yes;
202.143.92.128/26 yes;
61.197.167.128/28 yes;
122.208.122.144/29 yes;
10.0.0.0/8 yes;
122.132.171.175 yes;
219.109.218.130 yes;
210.122.209.56 yes;
210.122.209.124 yes;
210.122.209.230 yes;
}
server {
listen 80;
server_name otani1.bnr.bng.jp;

location / {
try_files $uri @proxy_to_appserver;
}
location @proxy_to_appserver {
if ($allowed = no) {
return 403;
}

access_log /var/log/nginx/otani1.bnr.bng.jp.access.log;
error_log /var/log/nginx/otani1.bnr.bng.jp.error.log;

proxy_pass http://appserver;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
PR
【2016/09/27 11:41 】 | サーバ | 有り難いご意見(0)
redisコマンド
sudo apt-get install redis-server
sudo apt-get install redis-doc



redisの起動
http://redis.shibu.jp/quickstart.html

redisの導入
$ sudo apt-get install redis-server
$ redis-cli

スケジューラの起動
$ cd game_server
$ bundle exec rake resque:scheduler RAILS_ENV=test

config/redis.yml

$ redis-cli
redisコマンド。キューが入ったか確認
> select 2
database 2 を選択
> keys *
すべてのredisキーを取得
1) "resque:queues"
2) "resque:resque_scheduler_master_lock"
3) "resque:queue:high"
> LRANGE resque:queue:high 0 999
指定のキーの0~999番目を取得

resqueの処理を走らす
$ QUEUE=* VVERBOSE=true rake environment resque:work RAILS_ENV=test


【2016/09/27 11:40 】 | サーバ | 有り難いご意見(0)
新規プロジェクトでfirebase周りが動かない時
https://codedump.io/share/BGfGS4xRt0XA/1/error-could-not-find-comgooglegmsgoogle-services10-when-adding-google-service-plugin-in-buildgradle-in-android-studio


【2016/08/13 23:34 】 | Android | 有り難いご意見(0)
Firebaseのクラッシュレポートを使う
以下のページが参考になる
http://llcc.hatenablog.com/entry/2016/05/21/130359


要点
・Firebaseコンソールから、プロジェクトのSymbolUploadサービスを有効化する
・秘密鍵を作成し、PCに保存
・RunScriptにコマンドを記述


なおAndroidは以下など参考
http://skys.co.jp/archives/4445
未対応
【2016/08/13 13:18 】 | iPhone | 有り難いご意見(0)
無題

SimpleAudioEngine.h
SimpleAudioEngine.mm
 playEffect
 static_playEffect
  単なる経由地
   ios,Androidはここから分岐

SimpleAudioEngine_objc.m
 SimpleAudioEngineクラス
 -(ALuint) playEffect:(NSString*) filePath loop:(BOOL) loop pitch:(Float32) pitch pan:(Float32) pan gain:(Float32) gain


bgmの場合
CDAudioManager.m
 CDAudioManagerクラス
  実際の処理。ロード、発音など
  configureの設定も効く

seの場合
CocosDenshion.m
 CDSoundEngineクラス





【2016/08/09 18:24 】 | cocos2d-x | 有り難いご意見(0)
cocos2d-xでSEが鳴らない
短いSEほど鳴らないことが多いようだ

preloadできないか調べてみると、できるようだ

audio/ios/CDAudioManager.m
-(int) bufferForFile:(NSString*) filePath create:(BOOL) create;

見てみると、通常の
playEffect
からも毎回呼び出されている

filePathは、SEのフルパス。

NSNumber* soundId = (NSNumber*)[loadedBuffers objectForKey:filePath];



すでに読み込んでいれば、ここでsoundIdが返ってくる(0以上の値)



SimpleAudioEngine_objc.m

-(ALuint) playEffect:(NSString*) filePath loop:(BOOL) loop pitch:(Float32) pitch pan:(Float32) pan gain:(Float32) gain
{
int soundId = [bufferManager bufferForFile:filePath create:YES];
if (soundId != kCDNoBuffer) {
return [soundEngine playSound:soundId sourceGroupId:0 pitch:pitch pan:pan gain:gain loop:loop];
} else {
return CD_MUTE;
}
}



audio/ios/CDAudioManager.m

-(int) bufferForFile:(NSString*) filePath create:(BOOL) create;

- (ALuint)playSound:(int) soundId sourceGroupId:(int)sourceGroupId pitch:(float) pitch pan:(float) pan gain:(float) gain loop:(BOOL) loop;





バッファがない場合、deleteBufferして再度ロードしてみようと思ったが、
deleteBuffer自体できなかった



スレッドの問題か?とも思ったが
正しく鳴る音と、正しく鳴らない音を入れ替えてアプリを動かしてみたところ
やはり鳴らない音は鳴らなかった。
つまり、発音する場所に依存するのではなく、音声データに依存している。


結局、音声データを新たに作成することで解決した
mp3を別の形式にしてもやはり鳴らなかったので、
mp3を流したものを録音して作った新たなmp3を使うことで、無事に鳴った

【2016/08/09 17:28 】 | cocos2d-x | 有り難いご意見(0)
NDKデバッグはできないのか
http://qiita.com/MovaCloud/items/ba79c33704101a662add
このページなどもあるが、どうも上手くいかない


Configureを以下のように設定する(Symbolの位置は不明)




で、一応新しいコンフィグとして選択できるようにはなるのだが
結局C++側コードのブレークポイントは効かない


Android.mk のソースファイルディレクトリをapp/jni/ 以下に変え、cocos compile で再ビルドもしたがダメ




公式ページにも当たってみた
公式

Downloadできる。
ndk-***
のツールがいろいろあり、この中の
ndk-gdb
を使用する。

samples/ ディレクトリは、Eclipse前提のものだったので役に立たず
(今もう一度探せばあるかも)

ndk-dbg ツールを使う方法について記述してあるが
これはコマンドラインツールなので使い勝手は良くない
と言うか、これをAndroidStudioが使っているはずなのでは?



いずれにせよ、また改めて本腰入れて調べる必要がある

【2016/08/08 18:34 】 | Android | 有り難いご意見(0)
NDKデバッグはできないのか
http://qiita.com/MovaCloud/items/ba79c33704101a662add
このページなどもあるが、どうも上手くいかない


Configureを以下のように設定する(Symbolの位置は不明)




で、一応新しいコンフィグとして選択できるようにはなるのだが
結局C++側コードのブレークポイントは効かない


Android.mk のソースファイルディレクトリをapp/jni/ 以下に変え、cocos compile で再ビルドもしたがダメ




公式ページにも当たってみた
公式

Downloadできる。
ndk-***
のツールがいろいろあり、この中の
ndk-gdb
を使用する。

samples/ ディレクトリは、Eclipse前提のものだったので役に立たず
(今もう一度探せばあるかも)

ndk-dbg ツールを使う方法について記述してあるが
これはコマンドラインツールなので使い勝手は良くない
と言うか、これをAndroidStudioが使っているはずなのでは?



いずれにせよ、また改めて本腰入れて調べる必要がある

【2016/08/07 16:33 】 | Android | 有り難いご意見(0)
Android+cocos2d-xで、画面が戻ってこない
アプリ内から動画広告を再生して、画面を閉じても
ゲーム画面が表示されなかった

printデバッグしてみると、cocos2d側のupdate系が呼ばれていない
つまり、cocos2d-xがresumeされていないようだ

Android側のコードを探してみると
Cocos2dxRenderer.javaの中に、
Androidからcocos2dxを呼び出しているらしきライフサイクル系のメソッド群があった

private static native void nativeTouchesBegin(final int id, final float x, final float y);
private static native void nativeTouchesEnd(final int id, final float x, final float y);
private static native void nativeTouchesMove(final int[] ids, final float[] xs, final float[] ys);
private static native void nativeTouchesCancel(final int[] ids, final float[] xs, final float[] ys);
private static native boolean nativeKeyDown(final int keyCode);
private static native void nativeRender();
private static native void nativeInit(final int width, final int height);
private static native void nativeOnSurfaceChanged(final int width, final int height);
private static native void nativeOnPause();
private static native void nativeOnResume();




さてnativeOnResumeは、

Cocos2dxRenderer::handleOnResume();
Cocos2dxGLSurfaceView::onResume();
Cocos2dxActivity::onResume();
MainActivity::onResume();


ちゃんと呼び出されている


というわけで、中の実装を見てみる

nativeOnResume()の実体は、

cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp
のファイル内に、それぞれの関数の実体が定義されていた



JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeOnResume() {
if (Director::getInstance()->getOpenGLView()) {
Application::getInstance()->applicationWillEnterForeground();
cocos2d::EventCustom foregroundEvent(EVENT_COME_TO_FOREGROUND);
cocos2d::Director::getInstance()->getEventDispatcher()->dispatchEvent(&foregroundEvent);
}
}



このif文が真になっていなければ、説明がつく
というわけで、applicationWillEnterForeground()が実行されているかというと
ちゃんとされていた。

ということは、EventDispatchができていないのか

Scene::update()は、iOSの場合

HomeScene::update(float)
cocos2d::Scheduler::scheduleUpdate(cocos2d::Node*, int, bool)::'lambda'(float)::operator()(float) const
cocos2d::Scheduler::update(float)
cocos2d::Director::drawScene()
cocos2d::DisplayLinkDirector::mainLoop()
-[CCDirectorCaller doCaller:]


と言う順序で呼び出される

まだ不明
【2016/08/07 15:14 】 | cocos2d-x | 有り難いご意見(0)
androidアプリをコードから終了させるとき
ドキュメント


moveTaskToBack()
これは、1つ前のアプリがフォアグラウンドになる。アプリを終了させる方法としては不自然


finish()
これが正しい


KeyEvent event = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HOME);
super.dispatchKeyEvent(event);
ホームボタンを押した時と同じ処理が走るかと思ったが、そうはならなかった。


finishAndRemoveTask()
試していないが、Android5.0からこのメソッドもある
ドキュメント



バックボタンとホームボタンは、挙動が違う。思想も違う

バックボタンは、現在のアプリを終了し、前のアプリに戻る。(正確にはアクティビティ)
アプリ内から別のアプリを呼んでいて、戻るときに押すのだからそうなるだろう

ホームボタンは、現状のアプリも含めて全部そのまま、バックグラウンドに置くだけ
ただ単にホーム画面を表示する


となると、バックボタンの場合はアプリを終了させ
ホームボタンの場合はアプリをサスペンドさせる発想になるはずだ


【2016/07/31 13:57 】 | Android | 有り難いご意見(0)
<<前ページ | ホーム | 次ページ>>