Tizenの下の宇宙でのシンプルな2DレースまたはTizen Associationハッカソンの勝ち方

FriedCroc Tizen Hackathon



先週末、モスクワでBersenevskaya Embankmentが開催されました。Intel、Samsung、およびFRUCTが組織したハッカソンは、10月にLightbox Studioで開催され、Tizenプラットフォーム用のアプリケーションの開発を目的としています。



私たちの若い(しかし非常に有望な!)FriedCrocチームがこの素晴らしいイベントに参加しました。 はい、受け入れられただけでなく、1位も獲得しました! このコミュニティについて話し、経験を共有し、プロトタイプのソースをレイアウトすることにしました。



私たちのプロジェクト



宇宙で2Dレースをする理由 少し前に、AppStoreにいくつかのゲームを投稿しました。 そのうちの1つは、農地からニンジンを盗むウサギに捧げられています。 ウサギは貴重な毛皮であるだけでなく、ニンジンを集めて小惑星をかわすために安全に宇宙に打ち上げられました。 その結果、誰もが自分のビジネスで忙しくなります。サムスンは地球人のためにTizenを打ち上げ、FriedCrocはウサギを宇宙に打ち上げます。



ハッカソン参加者にふさわしいので、野心的な計画がありました。 対戦相手とレースをしたり、ミサイルをアップグレードしたり、ピックアップブーストなどの面白いことをしたかったのです。 もちろん、私たちはTizen Storeにおもちゃを置く前にそれらを作成しますが、プロトタイプにはこれほど楽しいものはありません。 計画していましたが、効果音を作る時間すらありませんでした。



ティゼン



Tizenプラットフォームとの知り合いはハッカソン自体ではなく、その1週間前にYakhromaで開催されたMDDayハッカソンの決勝戦で行われましたが、そこでも参加しました(がっかりしたことには何も勝ちませんでした)。 Tizenプラットフォームはまだ湿っており、完璧とはほど遠い状態で、Yakhromaのいくつかの熊手を踏むことができました。 幸いなことに、サムスンはすべてのイベントに素晴らしいメンターを派遣し、何日もの間開発者の問題を解決する準備ができています。 彼らは解決策を見つけるまであきらめません。 しかし、問題はまともでした。エミュレーターが起動しなかった、テストデバイスの1つが機能しなかった(再フラッシュする必要があった)、プロジェクトのセットアップに問題がありました。 その結果、これらの問題の解決に約4時間を費やしました。 しかし、レッド10月のハッカソンでは、すでに完全に武装しています。



そのため、プラットフォームに少し精通していました。 既にテストデバイスがありました(Yahhromaでそれらを入手しました。完全に無料です。これらのデバイスを販売しないという義務に署名するだけで済みました)。 他にどんな困難が生じるのでしょうか?



EclipseとCLI



Tizen SDKは、開発環境としてEclipseを使用します。 彼らは、Eclipseがプラグインを簡単に作成できるという事実によってこれを説明しています。



すべてのFriedCrocプログラマーはEclipseを使用した経験があり、例外なくすべての人がEclipseにうんざりしています。 基本的には、バグがあるためです(環境を再起動するだけで処理されるファイルの構文エラーのマーカーを「ハング」させるだけの価値があります)。



そのため、Tizen SDKにコマンドラインからプロジェクトを操作するためのユーティリティがあることを知ったとき、これらのユーティリティを使用して開発することに決めました。 ただし、判明したように、コンソールツールはかなり生です。 たとえば、これらのユーティリティが生成するMakefileは、1つのディレクトリ内のすべてのソースの場所を必要とし、サブディレクトリをサポートしません。 さらに、このアセンブリの方法に関するドキュメントは事実上ありません。コンパイラフラグを追加する方法、ソースコードでディレクトリを指定する方法などは明確ではありません。



その結果、Eclipseプロジェクトを引き続き使用しました。サブディレクトリをサポートし、define'yおよびコンパイラの他のフラグを設定でき、コンソールユーティリティではできない多くのことを実行できます。



C ++ 11



ゲームはC ++で作成します。 さらに、C ++ 11でゲームを作成します。 この言語の最新バージョンには、コードの量を減らして開発を高速化する多くの利点があります。 さらに、すでに2014年であり、すべての主流のコンパイラーは既に、この標準の少なくとも80%のサポートを提供しています。



残念なことに、Tizen SDKには非常に古いバージョンのGCCとlibstdc ++(4.5)が含まれているため、通常のC ++ 11サポートのような匂いさえありません。 このため、Yahkhromaでは、C ++ 98でプロジェクトを作成しました。



当然、この状況に我慢するつもりはなかったので、TizenでC ++ 11コードをコンパイルする方法を探し始めました。 まず第一に、Tizen SDKにはclangコンパイラも含まれていることは幸運です。 また、それは非常に古いものですが、たとえ定期的に地殻に落ちたとしても、C ++ 11を理解しています。 ライブラリレベル(Tizen SDKでは古いlibstdc ++)でのC ++ 11サポートの欠如の問題は、非常に簡単に解決しました。clangから新しいlibc ++ソースを取得し、プロジェクトに入れました。 いくつかの小さな変更を行い、いくつかのdefine'ovをプロジェクトに追加した後、libc ++は安全に一緒になりました。



画像



画像



画像



ところで、コードをC ++ 11モードでビルドするには、コンパイラは–std = c ++ 11フラグを追加する必要があります。 残念ながら、Eclipseでコンパイラフラグのリストを編集すると、次のビルド中に上書きされます(Samsungエンジニア、注意してください!)。 その結果、「その他の最適化フラグ」フィールドを使用する必要がありました。これは一般に、他の目的に使用するためのものです。 しかし、一方で、アセンブリ中に上書きされることはなく、フラグはコンパイラに到達します。



画像



Tizenについては十分です。プロジェクトについて話しましょう



物理学にはBox2Dを使用しました。 プロジェクトにはデバッグ描画があります(リリースビルドでのみ無効になっています)。 ボートに4つの「ホイール」があることに驚かないでください-インターネットから何らかのサンプルをベースとして、車がありました。



管理は非常に簡単です。画面は垂直に3つの部分に分割されます。 左側を押すと、左側に、右側に-右に曲がり、中央部分は使用されません。



ここでは、プレイヤーがコントロールしなくてもマシンが正しい方向に「試行」するときに、Angry Birds Goで実装されたアイデアが本当に気に入ったことに注目する価値があります。 したがって、おもちゃでは、ボートは助けられなければ、ルートをたどろうとしますが、あまりうまくいきません。



通常のOpenGL ES 2.0で絵を描きます。 目に見えないジオメトリも破棄しようとはしていません(これは結局ハッカソンです)。 幸いなことに、テストデバイスはこの非効率的なコードに対処し、再生可能なFPSを生成します。



ところで、ここに私たちが得たもののスクリーンショットがあります:



スクリーンショット1スクリーンショット2



デバッグレンダリングの場合:



スクリーンショット3スクリーンショット4



レベルエディター



ゲームのレベルは、単純なXMLファイルで記述されます。 ハッカソンの一環として、手で書かないように、Groovyで非常に簡単なレベルエディタを作成しました。 現時点ではソースを公開しませんが、急に興味をお持ちの場合は、書いてください。



リソースファイル



Tizenのリソースメカニズムに対処することはできませんでした。 リスクを冒さないために(ハッカソンの時間は非常に限られています)、リソースファイルをC ++配列に蒸留する小さなツールを作成しました。



ソースコード



ゲームソースはgithub: github.com/friedcroc/tizen_spaceraceで非常に自由なライセンス(MIT)で入手できますので、使用してください。 そこにあるコードは時々ハッカソンのもの(最小の最適化、いくつかのハードコードされたパラメーター、および同様の不名誉)ですが、非常に読みやすくなっています。 写真は簡略化された白黒に置き換えられますが、気分を害することはありません。



もう一度私たちについて少し



私たちは若く、進歩的で、前途有望で、まさにクールです! 私たちは本当にゲームを作りたいと思っています。 時にはモバイルアプリケーションも行います。



AppStoreで当社のゲームをご覧になりたい場合は、当社のWebサイトでゲームへのリンクをご覧ください。 そして、私たちのサイトは何ですか、あなたが推測できることを願っています。



シムのために私は私の休暇を取らせてください、あなたのすべての注意に感謝します!



All Articles