19
Cocos Sharp でででででででででででで2015 で 10 で 3 で JXUGC#6 でで ででででででででででで でででで

Cocos sharpでゲーム開発してみました

Embed Size (px)

Citation preview

Page 1: Cocos sharpでゲーム開発してみました

Cocos Sharp でゲーム開発してみました。2015 年 10 月 3 日  JXUGC#6  東京   株式会社フロッグポッド 鈴木友宏

Page 2: Cocos sharpでゲーム開発してみました

自己紹介

鈴木友宏 (すずき ともひろ)

 株式会社フロッグポッドで働いております。

 業務アプリの開発者兼 SE です。 PHPer→C#er です。

 ゲーム開発は素人です(笑)

 鉄道、車とドライブをこよなく愛する逸般人一般人です。

2

Page 3: Cocos sharpでゲーム開発してみました

アジェンダ

• Cocos Sharp ってどんなもの

• Cocos Sharp でゲームを開発した経緯

• 事例(たんけんからだのなか)の紹介

• 実際開発してみてどうだった?

• Cocos Sharp  の使い方

• Cocos Sharp  の注意点、 TIPS など

• Cocos Sharp  のデモ

3

Page 4: Cocos sharpでゲーム開発してみました

Cocos Sharp ってどんなもの

.NET 環境向けの 2D ゲーム開発用クロスプラットフォームライブラリです。

Cocos Sharp は Monogame のラッパーであり、 Monogame のエンジンを Cocos2d,3d の API で利用できます。

Portable Class Library(PCL) に対応しています。

Shared Projects にも対応しています。

NuGet で取得できます。C# ユーザーであれば、 Xamarin  +  Cocos

Sharp で最短でクロスプラットフォームでのゲーム開発が

可能です!!

4

Page 5: Cocos sharpでゲーム開発してみました

Cocos Sharp でゲームを開発した経緯

2013 年、会社でこんな話がありました

「業務システムの開発だけでは幅が広がらないので自社で何か開発してみようよ!」

「じゃあ、 iOS 向けのアプリはどうかな?」 

「いいんじゃないかな!」

とりあえず、 Xcode で開発を開始しました。(普段はほとんど C# での開発です。)

5

Page 6: Cocos sharpでゲーム開発してみました

Cocos Sharp でゲームを開発した経緯実際に開発を始めてみると…

「 Objective-C がとにかく使いにくい!」

「デバッグがやりにくい!文字列加工ですら大変!」

「 ARC, assign, retain  よくわからん!面倒くさい!」

…C#er  にはかなりハードルが高く、

2014 年 5 月、何とかゲームを 1 本完成させる

「すごく大変だった。なんかもっといい開発方法ないの?」

この時点では Xamarin の存在は知りませんでした。

6

Page 7: Cocos sharpでゲーム開発してみました

Cocos Sharp でゲームを開発した経緯

さらに、 2014 年 7 月、会社でこんな話がありました

「今度は、 iOS, Android ハイブリッドの自社アプリを作ってみよう!」

業務システムを開発する会社は、普段非常に地味に仕事をしています。

自社の技術の向上のため、また、子供向けに何かアプリをリリースする事で社会貢献になればという事で、オリジナルのアプリの開発を始めました。

「どうすればできるの?? 」

7

Page 8: Cocos sharpでゲーム開発してみました

Cocos Sharp でゲームを開発した経緯

「 Xamarin  を使えば開発できるみたいだよ!」

「 Xamarin かぁ。使った事ないなあ ~ 」

「何のアプリ作ろうか? ゲーム作ろうよ!」(ゲーム開発はまったくの素人)

「 Xamarin  ってゲーム作れるの??」

「 Xamarin だけじゃ無理だけど、追加で  Cocos Sharp っていうライブラリを使えばできるみたいだよ!」

「なるほど、よし作ろう!」(詳しい調査一切なし)

… とてつもなく難航する開発…

「ハァ…、ハァ…、何とかできたよ!!」

8

Page 9: Cocos sharpでゲーム開発してみました

事例(たんけん!からだのなか)の紹介

知育アプリで、口に入った食べ物が体をどう流れていくのか、また、インフルエンザやカンジダなど恐いバイキンについて学べます。

9

開発環境(リリース当時)Visual Studio 2013 Xamarin   3.11Cocos Sharp 1.4.0.0

Page 10: Cocos sharpでゲーム開発してみました

事例(たんけんからだのなか)の紹介

• 詳しくは下記をご覧ください。

• http://www.frog-pod.com/karadanonaka/

遊び方とってもシンプルで直感的。本体を傾けるだけでその方向にスーパーノヴァ号が進みます。

10

現在 3000 ダウンロード程度です。iOS, Android でプレイできます。

Page 11: Cocos sharpでゲーム開発してみました

実際開発してみてどうだった?よかった点

PCL 内にゲームロジックを押し込める事ができるので、コード共有率が非常に高い。おおよそ 90% 固有実装部分は、ブラウザ起動、モーションセンサーの値取得のみ

iOS, Android ハイブリッドのアプリを単体アプリの作成工数の 10%増程度で作成できた。

  iOS:開発期間  6ヶ月  Android:プラス 2週間理解しやすい API で、素人でもゲーム開発が可能。

サポートフォーラムのレスポンスがよく、質問に丁寧に答えてくれる。

( 64bit での当り判定動作不具合、日本語フォントの隙間が空く問題などフォーラムで解決)

11

Page 12: Cocos sharpでゲーム開発してみました

実際開発してみてどうだった?イマイチだった点・困った点

情報が少ない、完全人柱状態(笑)

まだ、枯れきっておらず、安定稼動させるには多少コツが必要。(バージョンがあがるごとに改善中)

 特にメモリの使いすぎ、また、リークしないように注意が必要

 (フレームレートが異常に落ちる。画面遷移、アニメーションが止まってしまう)

日本語フォントへ利用時の不具合がある(画像利用で回避可能、 1.6.1.0 では解消されている)

テスト環境の整備

 今回は、実機テストおよび Scirocco Cloud を利用。開発完了後、

  Xamarin Test Cloud がリリース。12

Page 13: Cocos sharpでゲーム開発してみました

Cocos Sharp  の使い方

ソリューションの構成

AndroidUI   Android 用プロジェクト

アプリケーションの起動、ブラウザの起動

AppCore   PCL  プロジェクト

ゲームロジック

iOSUI   iOS 用プロジェクト

アプリケーションの起動、ブラウザの起動

13

Page 14: Cocos sharpでゲーム開発してみました

CCScene A(mainWindow)

Cocos Sharp  の使い方画面の遷移

ReplaceScene ()CCLayerColor

CCScene B(newScene)

CCLayerColor(gameLayer)

var newScene = new CCScene(this.mainWindow);var gameLayer = new CCLayerColor ();newScene.AddChild(gameLayer);mainWindow.DefaultDirector.ReplaceScene(new CCTransitionFade(1.0f, newScene));

14

Page 15: Cocos sharpでゲーム開発してみました

Cocos Sharp  の使い方キャラを動かす CCLayerColor

Node

var superNova = new CCSprite(ImageFileNames.Default.SuperNova, null);superNova.Position = new CCPoint(1600f, 400f);// 左下からの位置

superNova.Tag = NodeTagType.Player;this.AddChild(superNova);var nodeSuperNova= this. GetChildByTag((int)NodeTagType.Player) as CCNode;nodeSuperNova.X += 10f;

15

Page 16: Cocos sharpでゲーム開発してみました

注意点、 TIPS など画面回転抑制は

iOS: AppDelegate.GetSupportedInterfaceOrientationsメソッドを定義

Android:回転抑制したい Activity ごとに RequestedOrientation プロパティをオーバーライドする。

モーションセンサー情報は PCL ではなくプラットフォーム依存プロジェクト内で行わないとセンサー情報が遅延する。

画像は 256色に減色しないと重くなる。

背景、メニュー画面などの解像度が大きい画像は 2 分割や 4 分割し、タイリングで表示させないと画像自体が表示されなくなる。

詳しくは下記をご参照ください。

http://xamtips.info/

16

Page 17: Cocos sharpでゲーム開発してみました

iOS9対応について

Cocos Sharp :  iOS9 対応、 1.6.1.0以上( 2015/9/18 リリース)

※CCTextField が動作しない不具合あり。

現在、「たんけん!からだのなか」の iOS9 対応バージョンは審査中です。

申し訳ございませんが、 iOS9 にバージョンアップ済みの方は、

新規ダウンロードしてもプレイできない状況です。

リリースまでもう少々お待ちください。

17

Page 18: Cocos sharpでゲーム開発してみました

Cocos Sharp  のデモ

多少デモを行います。

社内で Xamarin を導入するためのコツ

18

Page 19: Cocos sharpでゲーム開発してみました

ご清聴ありがとうございました。