Category: チュートリアル

cocos2d-iphoneからcocos2d-html5への旅

お盆の三連休のおかけて今はやっとすべての作業を終わらせました。本来は手軽な心得を書いって見たんですが始まってしまうと書きたいものがだんだん増えてきて、同時に偶然でrayのサイトでibooks authorよりE本を作るチュートリアルと出会って、読んでみたら自分もいっそのこと本を作っちゃおうと思って、結局本を書いちゃいました。

この本はチュートリアルと言うよりガイド見たいのものです。ほとんどの内容はオリジナルでネットでは絶対検索出せないものです。そして後半”ゲーム配置接入”の部分を分かりやすくさせるために極めて簡単なデモを用意し”配置接入”作業を最初から最後までやりながらスクリンショットをいっぱい取って本の中に入れました。

この本を読んであなたもcocos2d-html5に興味を持ち始めてもらいましたらこの本を書く目標も達成することになると思います(僕のことにも少し興味を持ってくれればなおさらいいですけど)。



[Part.2] EメールよりURLSchemes機能を活用してゲームレベルデータを送信する解決方法

3.アプリ内でメールを送信する

URLSchemes機能を使う前にアプリ内でメールを送信する機能を実現しなければならない。

MFMailComposeViewControllerより’簡単にできますからこのポストを参考してくださいね:

http://www.supersuraccoon-cocos2d.com/2011/03/29/send-e-mail-demo/

このプロジェクトとにとては一番重要な部分はメールの中身です、リンク内に先ほど生成したJSON文字列をこういう風に挿入すべきです::

NSString *emailBody = [NSString stringWithFormat:@”Launch Demo!!!“, jsonString];

これでアプリ内でのメールを送信する機能が完成しました、そしてメール内含まれたリンクにJSON文字列が付いてます。

次はこの文字列をURLSchemes機能利用してゲームレベルを送信する。

4.URLSchemesの使い方(送信・受信)

URLSchemesについての紹介と簡単な使いかたまずこのポストを参考してください:

http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html

このデモに使うURLSchemesはこちになります:”urlschemesdemo://”

一つ注意すべきことがあります、URLSchemesと一緒に出たを送信する時はエンコードしてからすることです:

[cc lang=”objc”] – (NSString *)encodeToPercentEscapeString: (NSString *) input
{
// Encode all the reserved characters, per RFC 3986
// ()
NSString *outputStr = (NSString *)
CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)input,
NULL,
(CFStringRef)@”!*'();:@&=+$,/?%#[]”,
kCFStringEncodingUTF8);
return outputStr;
}
[/cc]

もちろんデータが受信した後すぐデコードすべきです:

[cc lang=”objc”] – (NSString *)decodeFromPercentEscapeString: (NSString *) input
{
NSMutableString *outputStr = [NSMutableString stringWithString:input];
[outputStr replaceOccurrencesOfString:@”+”
withString:@” “
options:NSLiteralSearch
range:NSMakeRange(0, [outputStr length])];

return [outputStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
[/cc]

4.1 ゲームレベルデータを送信する:

ゲームレベルデータをURLSchemesの後ろに追加してユーザがそのリンクをクリクしてアプリを起動する時そのデータも一緒に送信されるんです:

[cc lang=”objc”] jsonString = [[GameDataManager sharedGameDataManager] encodeToPercentEscapeString:jsonString];
NSString *emailBody = [NSString stringWithFormat:@”Launch Demo!!!“, jsonString];
[/cc]

4.2 ゲームレベルデータを受信する:

受信の時は簡単です:

[cc lang=”objc”] – (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
if (!url) {
return NO;
}

[[GameDataManager sharedGameDataManager] processReceivedGameLevel:[url absoluteString]];

return YES;
}
[/cc]

これで先ほど送信したデータをちゃんと取りました、後は”processReceivedGameLevel”でそれを一回デコードし、解析してJSONファイルとして保存すればオーケです^_^

5.まとめ

ここまで完成したデモは以下すべての機能が実現しました:

1.”ゲームレベル”を生成してJSONファイルとして保存する
2.アプリ内メールで”ゲームレベル”を送信する
3.URLSchemesよりアプリを起動する、同時に”ゲームレベル”をアプリに送信する
4.URLSchemesから取ったデータを解析してまたJSONファイルとして保存する
5.送信と受信の”ゲームレベル”を再生する

後記:

1.デモじゃなくて本物のゲームを作る時、自動的にレベルを生成するではなく本格的な”ゲームレベル編集器”が提供すべきだ。

2.URLSchemesの長さ制限について僕は文章に書かれた具体的な値は見つからないんですがちょっとテストして見たところで10,0000はまだ大丈夫です^_^

デモスクリンショット:

To Download Page…

☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆

If you feel all the stuffs in this site helped you a lot and you would buy me a beer 🙂

Or get a game I made 🙂


☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆



[Part.1] EメールよりURLSchemes機能を活用してゲームレベルデータを送信する解決方法

僕のアプリでユーザを”自分のゲームレベルをデザインして友達に送信して遊べさせる”ような機能があったらいいなと思ったりしなかったかい?

マイサーバがありましたらそれは簡単に実現できます、或はopenfeintのチャレンジ機能とgamecenterを利用すればそれも実現できるのはず。(やったことがないんですけど−_−)

でも、これらの実現方法はそれぞれの要求を満足させなければならない、やっぱり、もっと簡単できそうな方法が欲しいです。

実はURLSchemesと言う機能をうまく利用すれば”自分のゲームレベルをデザインして友達に送信して遊べさせる”という機能も簡単に実現できます。

このチュートリアルには以下の内容が含まれている:

1.デモ用のシーン(CCScene/CCLayer)とクラスを用意する
2.JSONの使い方(読み込む・書き込み)
3.アプリ内でメールを送信する
4.URLSchemesの使い方(送信・受信)
5.まとめ



cocos2d-extension使い方について



一つのプロジェクトを同時にwin32、iPhone、Android対応する方法



cocos2dでビデオ再生する方(cocos2d-Extension CCVideoPlayer使用)



Macでcocos2d-x(iphone-android)及びIDE構築手順



CCProgressTo + CCMenuItemSprite 手軽な”クーリングエフェクト”



APP名ローカライズ方法