アイデアは、3Dで実際の立方体の多数のシミュレーションを繰り返すのではなく、6つの面すべてが一度に見えるように平面上にスイープすることでした。
スクリーンショット
独自のXcodeが開発環境として選択され、Swiftが言語として選択されました。 その時までに、私はすでにこの環境と言語での作業の経験を持っていたので、コーディング自体は特別な困難を引き起こさなかったはずです。 ただし、アルゴリズムの性質のいくつかの瞬間は、それらを歩いて熟考する必要がありました。 次に例を示します。ユーザーの各ステップ(コース)で、キューブアセンブリを確認する必要があります。 問題を真正面から解決する場合、配列の要素を単純に実行し、それらの要素を比較することができます。
初期配列(ゲームの最初の段階でキューブが組み立てられます)は、次の形式で表示されます。
var Tnew = [ [[1, 1, 1], [1, 1, 1], [1, 1, 1]], // [[2, 2, 2], [2, 2, 2], [2, 2, 2]], // [[3, 3, 3], [3, 3, 3], [3, 3, 3]], // [[4, 4, 4], [4, 4, 4], [4, 4, 4]], // [[5, 5, 5], [5, 5, 5], [5, 5, 5]], // [[6, 6, 6], [6, 6, 6], [6, 6, 6]] // ]
アセンブリ後、次のように、任意の順序で行の順列を取得できます。
var Tnew = [ [[5, 5, 5], [5, 5, 5], [5, 5, 5]], // [[3, 3, 3], [3, 3, 3], [3, 3, 3]], // [[1, 1, 1], [1, 1, 1], [1, 1, 1]], // [[4, 4, 4], [4, 4, 4], [4, 4, 4]], // [[2, 2, 2], [2, 2, 2], [2, 2, 2]], // [[6, 6, 6], [6, 6, 6], [6, 6, 6]] // ]
しかし、この配置では、キューブも正常に組み立てられていると想定する必要があります。
市場でのタスクをよりよく理解するために、シンプルで安価なキューブを購入しました。 そして、創造性は、本当の立方体の研究から始まりました。 面には番号が割り当てられ、面の行と列には座標が割り当てられます。
この場合、行または列の動きは、それに関連する「行」または列を動かして設定する必要があります。 すべてが大人の立方体のようなものです-移動1-「隣人」も移動に関与しています。
しかし、%device%を使用する場合、それについて考えると、私たちは非常につかの間であり、あまり深くありません。 私たちにとって、これは世界の写真の一部であり、特に驚くことではありません。 もう1つは、ソフトウェアモデルです。 ここでは、すでに人工現実を作成する必要があるため、「現実」を完全に理解する必要があります。
数十枚のシートがペイントされ、落書きされました。 メモやアイデアは、手元にあるものだけに書き留めておかなければならない場合がありました。 そして、4月の初めまでに、プログラムの実際のプロトタイプが判明しました。 キューブを収集できました。 しかし、20から80(または30から70のバージョン)のルールが最大限に機能しました。 タイマーの構築、カウンターの移動、アセンブリの完了に関する何らかのアラーム、Game Centerへの接続など、多くのサービスの些細なことを完了する必要がありました。 収益化の可能性について考えてください。 それはとてもいいボーナスです。
その結果、5月中旬のどこかで、プログラムは開発者のデバイスだけでなくテストを開始できるようになりました。 開発者のアカウントに支払いが行われ、惑星のさまざまな都市や村から選ばれた数人がデバイス上でフラットキューブを「ねじる」機会を得ました(プログラムはTest Flightを介して配信されました)。
ローカリゼーションに関しては、私はすぐに画面に文字を刻まないことで、この問題から逃れることにしました。 これまでのところ、成功しています。
画面は非常にミニマルです。 ユーザーは、キューブの平面へのクラシックスキャンを十字の形で見ることができます。4つのボタン:キューブの収集、キューブの混乱、背景の変更、Game Centerの表示。 さて、上部には移動と時間の2つのカウンターがあります。 [混乱]ボタンをクリックしてから時間を開始します。 ユーザーが自分でキューブを混乱させてから組み立てた場合、移動のみが考慮されます。
「聴衆」におけるプログラムの印象
当然、私はいつもプログラムをテストした人の意見に興味がありました。 誰かがキューブを3Dで行うべきだと言いましたが、キューブのこのようなオプションはすでにAppStoreにあり、別のクローンを作成することに興味はないと答えました。 どうやら魔法の言葉「3D」自体がどういうわけか人々を引きつけ、彼らはそれが良いアイデアだと思った。 誰かがスイープのアイデアをすぐに理解しました。 しかし、テスターの観察によると、ほとんどの普通の人の「3D-> 2D」への移行は幻想的な困難ではないことが示されました。 実際の立方体を組み立てる方法を非常に簡単に知っている人でさえ、1つのファセットでさえすぐに正しく組み立てることができませんでした。 さらなるアセンブリは言うまでもありません。 ただし、誰でも自分で試すことができます。
Game Centerを見るのは面白いです。 より正確には、その中の新しいユーザーの外観のために。 このことは非現実的です。 GCで2つのテーブルを作成しました:ビルド時間と移動数。 キューブを完全に収集した人は誰でも完全に入り込みます。 そして、さらにアセンブリ中に結果が改善された場合、対応するテーブルに残ります。 かなり長い間、表には、名前の異なるさまざまなテスターのデバイスから記録された私の結果しかありませんでした。 そして、私はゆっくりと人間性に幻滅し始めました。 そして、少し前までは、私にはまったく知られていないキャラクターがテーブルに入ってきました。 最初は彼は両方のテーブルの一番下の行にいました。 それから彼は自信を持って上がり始めました。 約2日後、彼は両方のテーブルの一番上の行で1分40秒と80ステップという非常に素晴らしい結果を得ました。 ただし、彼の記録は、Flat Cubikの枠組みの中で誰にも負けていません。
そして最近では、25分01秒と254の動きでFlat Cubikを組み立てた2番目の(!)アセンブラーがいました。 そしてこれまでのところ、ランキングで6位になっています。 同時に、彼は彼の業績を改善することに固執していません。 少なくとも彼からの最良の結果は現れません。
現在および今後の計画
プログラムの最初のバージョンは、6月下旬にApp Storeに登場しました。
最初の間違いは、プログラムに1ドルの価格を付けることでした。 初日は6回の有料ダウンロードをもたらし、その後ダウンロード数は2に減少しました。
これは失敗とみなすことができますか? そのように思えます...その後、ゲームは無料になり、現在約200のダウンロードがあります。
どこにも広告はありませんでした。 iXBT会議での短いメッセージを除きます(MacLifeテーマの1つにあります)。
今後、AdMobバナーを追加する予定です。 ユーザーの移動を元に戻すというアイデアがありました。 移動を促すための特定のオプションもあります。 これまでのところ、ヒントがあれば、すべてが歩行と思考の同じ段階にあります。 キューブの組み立て方法を知っている人は、現在の状態から完全に異なる方法で組み立てることができることを理解しています。
はい、ここに少なくとも小さな例があります:3つのコーナー要素の再配置:22の動きのオプションと8の動きのオプションを知っています。 私は自分で8個のhodovkaを使用しています。
または、ここにビルド戦略自体があります:最も単純なものは階層化されています。 たとえば、白い十字、コーナー、2番目のレイヤー、3番目のレイヤーから始まります。 しかし、遅かれ早かれ、オプションに従って進むことを試みることができます:6つの十字(すべての面)、そして8つの角。 一般的に、多くの方法があります。
Android用のバージョンは現在開発中です。 さて、プログラムは完全に無料になり、iOS 10がインストールされているすべてのデバイスのAppStoreで利用できるようになりました。
PS:iOS 10は、Appleの内部ライブラリの問題を検索するために数日間を失った後に選択されました(それについては、別のメモを書きます)。 問題は10以降のiOSバージョンにはないことがわかりました。以前のバージョンのiOSの問題を回避しないため、Flat CubikはiOS10 +を搭載したデバイスで動作することが決定されました。
PS2:キューブアセンブリのデモ
ビデオ