「コロッコトロッコ」難しいステージのヒント

コロッコトロッコ、いろんな方にプレイしていただいてありがたい限りです!

いたちじっけん室が総力をあげて情報収集した結果、難しすぎるステージがいくつかあって、そこから先に進めずクリアをあきらめてしまう人も結構いらっしゃるようで、せっかくなら最後までクリアしてもらいたいと思い、ヒント(攻略)コーナーを作ってみました。

以下のリンクをクリックするとヒントの画像が表示されます。

ステージ9:「シーソーでノリオ君飛ばし」のヒント
ステージ11:「2つ目の天秤」のヒント(というか答え) (2015/9/15追記)
ステージ13:「ノリオ君運び」のヒント
ステージ14:「大ジャンプ」のヒント

他にも難しくて先に進めないステージがありましたら、コメントくださいませ!

コロッコトロッコのダウンロードは↓こちらからどうぞ。

 Android app on Google Play

Flashのシンボル変換時のルーチン作業をサポートするコマンド

最近はUnityを使う時間も多くなりましたが、なんだかんだで一番使う時間が多い開発ツールはFlashという状況です。

1年程前に作ったFlash IDEのコマンドが何気に便利で、もうコレなしじゃ無理!っていうくらい使いこんでいるので紹介してみようと思います。

どういうコマンドかというと、下記画像のようにシンボル「top」内にあるシンボル「top_head」、さらにその中にある「top_head_base」というようなシンボルの階層に沿ってシンボル名を付けていく作業、つまり「親シンボル名_○○」という名前を付ける作業をサポートするコマンドとなっています。

【使い方】
下記画像はシンボル「top_head」の編集画面です。
この画面でシンボルに変換したいオブジェクトを選択します。

ここからシンボルに変換するには普段なら「F8」キーを押して「シンボルに変換」を実行するところですが、今回は代わりに紹介するコマンドを実行します。
『シンボルに変換_「親シンボル名_○○」』という名前のコマンドです。
(キーボードショートカットも登録しておくと便利です。)

シンボル名を記入するダイアログが出るので、今回は「base」と記入してOKを押します。

次にシンボルの基準点を決めるダイアログが出ます。

7:左上 8:中上 9:右上
4:左中 5:中中 6:右中
1:左下 2:中下 3:右下

と表示される予定だったのが、収まり切れずに省略されています(笑)
実際は1~9まで対応しています。
テンキーの位置で見ると分かりやすいです。

数字を記入後、OKを押します。

すると下記のようにシンボル「top_head_base」が出来ました。(赤線箇所)
親シンボルがフォルダに入っている場合でも親と同じフォルダ内に作成されます。
ついでにインスタンス名にも今回命名した「base」が設定されています。(青線箇所)
便利ですね~。もう手放せないですね~。

コマンド(jsfl)のダウンロードは以下からお願いします。

シンボルに変換_「親シンボル名_○○」.jsfl

※動作確認はWindowsでのみ行っています。
※jsflの設置方法が分からない方は「flash jsfl」等で検索してみてください。

スマホ用ゲームアプリ「コロッコトロッコ」をリリースしました



石ころの「コロッコ」が、通勤中に道草ばかりしているのんびり屋の「ノリオ君」を会社へ運ぶ無料のコロコロ物理アクションゲームです。

登場キャラクターはみんなボーっとした表情でちょっとゆるめのゲームとなっております。

是非、スマホでアプリをダウンロードしてお楽しみください!

コロッコトロッコ on App Store  コロッコトロッコ on Google Play



【難しいステージのヒント】
ヒントの記事を追加しました。 (2015/9/15)



【受賞】
当アプリが賞をいただきました!
(カッコ内はこのページに追記した日です)

ニコニコ自作ゲームフェス2016 敢闘賞(アニメーション美術賞) (2016/4/9)



【レビュー記事】
当アプリを以下のサイトでご紹介いただきました。
ありがとうございます!
(カッコ内はこのページに追記した日です)

AppLibrary (2015/8/7)
テクジョ (2015/8/7)
あぷまがどっとねっと (2015/8/7)
GameCast (2015/8/10)
暗黒社 (2015/8/10)
Appliv (2015/8/11)
週刊アスキー (2015/8/13)
アプリゲット (2015/8/18)
AppLink (2015/8/19)
iPhoroid (2015/8/20)
BoomApp (2015/8/21)
Axel Games (2015/8/31)
APPREVIEW (2015/9/1)
アンドロイダー (2015/9/3)
ケータイ Watch: アンドロイダー出張所 (2015/9/10)
もぐらゲームス (2015/9/19)
AndroidView (2015/9/25)
4Gamer.net (2018/1/5)
dメニューゲームナビ (2018/2/16)

iTunes Connect にアプリをアップしたら「バイナリが無効」表記がでる

Unity 4.6 で制作したアプリを iTunes Connect にアップするところでハマってしまったので、メモしておきます。

順を追っていくと、Unity 4.6 でビルドしたXcode用データを使って
Xcode 6.4 の Organizer でVlidate成功。
Xcode 6.4 の Organizer で「Submit to App Store」でアップロード成功。
ところが
iTunes Connect > マイApp > バージョン > ビルドに「+」マークが付かない。
iTunes Connect > マイApp > プレリリース > ビルド を見るとアップロードしたデータのステータス欄に「バイナリが無効」という文言発見。
エラー内容を特定するメッセージさえないので遠い目でブラインド越しに夕日を眺める。
試しに ApplicationLoader 3.0 でアップロードするとまたもやプレリリースで「バイナリが無効」となってしまったのですが、直後Appleからメールが来て、下記のエラー内容が書かれていたので色々調べる。

The app references non-public selectors in ○○○: _activityFunctionImage:, _activityImageForApplication:

Unity のSNSシェアに使う Social Connector が怪しいということで、Social Connector のバージョンを 0.2.9 から 0.3.5 に変更したら解決しました。
※0.2.9じゃないと直接Twitter投稿画面とかを出す PostMessage が使えないのですが、申請できなければどうもこうもないので PostMessage はあきらめました。

Flash・Unity・openFrameworksの計算速度比較

普段使うツールで計算速度が速いのはどれっていうのは、頭の中でなんとなく序列ができていますが、実際の数値でどれくらい差があるんだろうと思い、各ツールに似たような計算をさせて計算時間を計ってみました。

試してみたのは下記のツールです。
 ・openFrameworks(C++)
 ・Unity(C#)
 ・Unity(JavaScript)
 ・Flash(ActionScript3)
 ・Webブラウザ(JavaScript)

実行したコードは後述しますが、主には配列へのアクセスと関数の実行を1億回行ったという内容です。
一番差が出る部分と思う描画関係のコードは一切なく、あくまで配列と関数の速度ですので「へ~」くらいに思いながら参考にしていただければと思います。

実行環境は全て同じPCで統一しています。

[実行環境]
 ・OS: Windows 8.1
 ・プロセッサ: Core i7-4500U

結果は以下のようになりました。

計算時間
(ミリ秒)
ツール 言語 内容
158 openFrameworks C++ v0.8.3 exe
244 Unity C# v4.3.5 PCスタンドアローン
497 Unity JavaScript v4.3.5 PCスタンドアローン
845 Flash ActionScript3 FlashPlayer13.0 スタンドアローン
2096 Webブラウザ JavaScript Chrome v36.0

Unityって、「C#」と「JavaScript」で速度が違ったんですね。初めて知りました。

後、テストしてみて一番驚いたのはWebブラウザでのJavaScript実行の速さです。
ツールごとの順番では一番遅くなっていますが、Webブラウザ用JavaScriptだけは配列の初期設定時にlengthの指定をしていません。
FlashのActionScript3でVectorのlength指定を省略すると計算時間が5000ミリ秒になってしまったこと考えると、Webブラウザ用JavaScriptは思っていたよりかなり早かったです。
かといってWebブラウザ用JavaScriptで配列の初期設定時にlengthの指定をすると8000ミリ秒かかってしまい逆に遅くってしまったので、ケースバイケースということでお願いします。(なにが)

以下、ツール別の内容です。

openFrameworks

ofApp.h

#pragma once
#include "ofMain.h"
#define MAX_NUM 100000000

class ofApp : public ofBaseApp{

	private:
		int time1;
		int time2;
		int arr[MAX_NUM];
		int testFunc(int i);

	public:
		void setup();
		void draw();
		void keyReleased(int key);
};

ofApp.cpp

#include "ofApp.h"

void ofApp::setup(){
	time1 = 0;
	time2 = 0;
}
void ofApp::draw(){
	if(time2 != 0){
		ofDrawBitmapString(ofToString(time2), 20, 20);
	}
}
void ofApp::keyReleased(int key){
	time1 = ofGetElapsedTimeMillis();

	for(int i = 0; i < MAX_NUM; i++) {
		arr[i] = testFunc(i);
		arr[i] = arr[i] + 1;
	}
	time2 =  ofGetElapsedTimeMillis() - time1;

}
int ofApp::testFunc(int i){
	return i;
}
計算時間
(ミリ秒)
ツール ver 言語 内容
158 openFrameworks 0.8.3 C++ exe
162 openFrameworks 0.8.3 C++ Visual Studio Express 2012
ローカルWindowsデバッガー(Releaseモード)
2721 openFrameworks 0.8.3 C++ Visual Studio Express 2012
ローカルWindowsデバッガー(Debugモード)

計算時間は毎回同じ数値が出る訳ではなく、158の場合もあれば260の場合もあったりで結構誤差があるので、ざっくりで見てもらえればと思います。

Unity

C#の場合

using UnityEngine;
using System.Collections;

public class IndexC : MonoBehaviour {
	private int time1 = 0;
	private int time2 = 0;
	private const int maxNum = 100000000;
	private int[] arr = new int[maxNum];

	void Update () {
		if (Input.GetKeyUp(KeyCode.Space)){
			time1 = (int) (Time.realtimeSinceStartup*1000);

			for (int i = 0; i < maxNum; i++){
				arr[i] = testFunc(i);
				arr[i] = arr[i] + 1;
			}
			time2 = (int)(Time.realtimeSinceStartup * 1000) - time1;
		}
	}

	void OnGUI(){
		if (time2 != 0){
			GUI.Label(new Rect(0, 0, 100, 30), time2.ToString());
		}
	}

	int testFunc(int i){
		return i;
	}
}

JavaScriptの場合

#pragma strict

private var time1:int = 0;
private var time2:int = 0;
private var maxNum:int = 100000000;
private var arr:int[] = new int[maxNum];

function Update() {
    if (Input.GetKeyUp(KeyCode.Space)){
		time1 = Time.realtimeSinceStartup*1000;
		for (var i:int = 0; i < maxNum; i++){
			arr[i] = testFunc(i);
			arr[i] = arr[i] + 1;
		}
		time2 = Time.realtimeSinceStartup*1000 - time1;
    }
}

function OnGUI() {
	if (time2 != 0){
		GUI.Label(new Rect(0, 0, 100, 30), time2.ToString());
	}
}

function testFunc(i:int):int {
	return i;
}
計算時間
(ミリ秒)
ツール ver 言語 内容
244 Unity 4.3.5 C# PCスタンドアローン
260 Unity 4.3.5 C# WebPlayer
htmlをFireFox v31.0で再生
497 Unity 4.3.5 JavaScript PCスタンドアローン
531 Unity 4.3.5 JavaScript WebPlayer
htmlをFireFox v31.0で表示
1311 Unity 4.3.5 C# Gameパネル
1468 Unity 4.3.5 JavaScript Gameパネル

Flash

package myproject{
	import flash.display.MovieClip
	import flash.events.MouseEvent;
	import flash.text.TextField;

	public class Index extends MovieClip {
		public var maxNum:int = 100000000;
		public var arr:Vector. = new Vector.(maxNum, true);

		public function Index() {
			stage.addEventListener(MouseEvent.CLICK,clickHandler);
		}

		private function clickHandler(e:MouseEvent):void
		{
			var time1:Number = new Date().time;

			for (var i:int = 0; i < maxNum; i++) {
				arr[i] = testFunc(i);
				arr[i] = arr[i] + 1;
			}
			var time2:Number = new Date().time-time1;
			var tf:TextField = new TextField();
			addChild(tf);
			tf.text = String(time2);
		}

		public function testFunc(i:int):int
		{
			return i;
		}
	}
}
計算時間
(ミリ秒)
ツール ver 言語 内容
845 Flash CC2014 AS3 FlashPlayer13.0 スタンドアローン
1044 AIR 14.0 AS3 AIRランタイム デスクトップ版
4350 Flash CC2014 AS3 FlashPlayer14.0
htmlをFireFox v31.0で表示
4063 Flash CC2014 AS3 プレビュー
5060 AIR 14.0 AS3 FlashDevelop 4.6.2
AIR 14.0 テスト再生
リリースモード
27292 AIR 14.0 AS3 FlashDevelop 4.6.2
AIR 14.0 テスト再生
デバッグモード

FlashDevelopのAIR テスト再生(デバッグモード)の圧倒的な遅さが気になったのですが、原因がよく分かっていません。

Webブラウザ

<html>
<head>
<script language="Javascript" type="text/javascript">
	var maxNum = 100000000;
	var arr = [];

	function clickHandler(){
		var time1 = new Date();
		for (var i = 0; i < maxNum; i++) {
			arr[i] = testFunc(i);
			arr[i] = arr[i] + 1;
		}
		var time2 = new Date()-time1;
		document.getElementById("timePane").innerHTML=time2;
	}
	function testFunc(i){
		return i;
	}
</script>
</head>
<body>
    <a href="javascript:clickHandler();">button</a>
    <div id="timePane"></div>
</body>
</html>
計算時間
(ミリ秒)
ツール 言語 内容
2096 Webブラウザ JavaScript Chrome v36.0
2184 Webブラウザ JavaScript IE v11.0
4576 Webブラウザ JavaScript FireFox v31.0

IEが以外と早いです。

※どのブラウザでもループの回数は1億回で試すとタイムオーバーか何かで処理が止まってしまっていたので、タイムオーバーにならない5千万回で出た計算時間を2倍にしています。

1 2 3 4 5 6 7 8 ... 12

ABOUT

MY APPLI

サッカーピープル
サッカーピープル

操作のしやすさ最優先の
自由自在なサッカーゲームです
iOS版 / Android版

コロッコトロッコ
コロッコトロッコ

石ころのコロッコを転がしながら
サラリーマンを会社へ運ぶゲームです
iPhone版 / Android版

CATEGORIES

ARCHIVES

TAGS

3Dプリント AIR ANE Arduino Away3D client work DIY Flash Funnel JavaScript Kinect LED openFrameworks PhotoShop Progression Qubicle Unity Xcode アプリ インターバル撮影 カメラ キャラ ゲーム制作 コロッコトロッコ スクリーンセーバー デバッグ フットサル ミニマル ランニング レーザーカッター 事務所 低山部 作品 動物 塗装 展示会 文字 料理 福岡てら子 美食家 街ぶらり 道具 鉄道 電子工作

FEEDS

SNS

--

Arduinoをはじめよう
Arduinoをはじめよう

電子工作が未経験の人にも
分かりやすい入門書

Arduinoをはじめようキット
Arduinoをはじめようキット

上の書籍の内容が
一通り試せるツールセット

Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ
Prototyping Lab

「Arduinoをはじめよう」より
深く掘り下げた内容の実践書

Make: Electronics
Make: Electronics

電子工作の基礎から実践まで