Hatena::ブログ(Diary)

A Day In The Life RSSフィード Twitter

2015-03-02

Androidでui::ScrollViewの背景が緑色になる時の対処方法

Cocos2d-x(3.4 Final) の ui::ScrollView クラスを使うとAndroidで背景色が緑色になる現象が発生しました(iOS ではこの現象は発生しません)。

こちらのページに載っている方法で解決することができました。

具体的な解消法は proj.android/src/org/cocos2dx/cpp/AppActivity.java に以下の行を追加するだけです。

public class AppActivity extends Cocos2dxActivity {
  :
  :  省略
  :
  @Override
  public Cocos2dxGLSurfaceView onCreateView() {
    Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
    // 追加する
    glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
    return glSurfaceView;
  }
}

OpenGLの設定がどうやらだめだったぽいです。

参考

2015-02-27

Cocos2d-xのゲームの構造がどのようになっているか紐解いてみる

Cocos2d-xでゲームの開発を始めてそろそろ5ヶ月たちます。とにかく作ってみるといった感じで基礎知識があるかもも怪しいまま(Scene と Layer の違いがわからんとか)開発を続けていました。最近になってiOS/Androidとのネイティブ連携ではまったり、iOSだと問題なく動くのにAndroidだとクラッシュしたり、BGMの制御うまくいかなかったり、まあいろいろと問題が出てきました。というわけでここらで一度Cocos2d-xとちゃんと向き合ってみるかというわけで過去に書いたこちらの記事「iOS アプリの構造がどのようになっているか紐解いてみる」と同じノリでCocos2d-xで作ったゲームの構造を紐解いてみたいと思います。

前提とする Cocos2d-x のバージョンとかもろもろ

Cocos2d-xはiOS/Androidはもちろんのこと、その他多数のプラットフォームに対応したゲームエンジンです。この記事ではスマホゲームを前提にしますのでiOSAndroid上でゲームを開発することを前提に書きます。

この記事で対象とするCocos2d-xやiOSAndroidのバージョンは以下の通りです。

シーンとレイヤーが1つの単純なゲームの構造

シーンとレイヤーが一つでスプライトもなにもなく、ただ真っ黒な画面を表示するだけのゲームがどのような構造になっているのか見てみましょう。以下クラスの関係を図にしたものです。

Cocos2d-xクラス図

iOSAndroidの違いを吸収しているのが Application(Application-Android) クラスと GLViewImpl(GLViewImpl-Android) クラスです*1。図の中の赤色のクラスです。この2つのクラスがプラットフォームごとに用意されています。プラットフォーム固有のクラスが多いだけでCocos2d-x自体は割とシンプルなつくりだというのがわかると思います。

図の中の各クラスは以下のように4つに分類できます。

  • プラットフォーム固有のクラス
  • Cocos2d-x が各プラットフォームのために用意している拡張クラス
  • Cocos2d-x がプロジェクト作成時に自動生成するクラス
  • ゲームエンジンクラス(プラットフォームに依存しないクラス)

それでは分類ごとにクラスの説明をしていきます。

プラットフォーム固有のクラス

UIApplicationDelegate インターフェース(iOS)
UIViewController クラス(iOS)
UIView クラス(iOS)
Activity クラス(Android)
FrameLayout クラス(Android)
GLSurfaceView クラス(Android)
GLSurfaceView.Renderer インターフェース(Android)
SurfaceView クラス(Android)

Cocos2d-x が各プラットフォームのために用意している拡張クラス

CCEAGLView クラス(iOS)
Cocos2dxGLSurfaceView クラス(Android)
Cocos2dxRenderer クラス(Android)
Cocos2dxActivity クラス(Android)
nativeInit 関数(Android)
Application クラス(クラス名共通、実装別)
GLViewImpl クラス(クラス名共通、実装別)

Cocos2d-x がプロジェクト作成時に自動生成するクラス

AppController クラス(iOS)
RootViewController クラス(iOS)
AppActivity クラス(Android)

ゲームエンジンクラス

続きます...。

参考

*1:クラス図の性質上同じ名前のクラスを作成することができないため便宜的に名前を変えています。実際は iOS/Android ともに同じクラスです

2015-02-05

Cocos2d-xでTwitterプラグインを使ってみる

Cocos2d-xにはプラグインという仕組みがあり、それを使えばTwitter連携やら広告表示なんかが割と簡単に使えるようになります。

Cocos2d-xのプラグイン導入の方法は以下のサイトが参考になりました。

自分の環境だと上記の手順に加え MediaPlayer.framework と Security.framework の追加が必要でした。

Twitter連携については以下のサイトが参考になりました。

Twitter連携プラグインを使うには SystemConfiguration.framework の追加が必要でした。

割とめんどくさかったですがいちど設定してしまえば便利ですね。

2015-01-24

ストーリーメーカー 創作のための物語論

結構前に読んだストーリー作りのための本です。

ストーリーを作るためのテクニックについて書かれています。著者はただ闇雲に物語を書くのではなく、セオリーに則ってストーリーを組み立てると未経験者でもそれなりのストーリーを作ることが出来ると主張しています。

この本に載っているストーリー作りのテクニックの1つが以下の図です。

ゲーム制作でもストーリー作りはかなり重要なのでこういった本があるととてもたすかります。

2015-01-20

プロの力が身につく iPhone/iPadアプリケーション開発の教科書が発売されました

1月17日に「プロの力を身につける iPhone/iPadアプリケーション開発の教科書」の改訂版が発売されました。改訂内容は以下の通りです。

よろしくお願いします。

本書の特徴

昨年の12月から Swift に対応した本が次から次へと発売されています。多くの本が400ページを超える大型本です。400ページを超える本はとても丁寧に細かく沢山のことが説明されているもののすべてを読んで理解するのに時間がかかります。

本書はページ数を350ページ程度に抑えコンパクトに読める内容になっています。これだけの短いページ数で Swift の構文から UI 構築、データ永続化、課金まで説明している本は他にないと自負しています。iOS アプリ開発を効率よく学びたい方はぜひとも本書を手に取って読んでみてください。また Swift の構文説明は Objective-C と比較しながら解説しているのでこれまで Objective-C を使って開発されていた方にも読みやすい内容となっています。