みなさんこんにちは! 私の記事では、Apple Watch用のゲーム開発の経験についてお話したいと思います。 ゲームはスペースビーバー(ビーバーとスペース)と呼ばれています。 iPhoneでも利用可能です。 しかし、この記事では、時計バージョンについての物語があります。 ソースコードは
こちらです。
アイデア:ゲームの本質は、矢印の方向に応じて素早く交換することです。 矢印の付いたブロックが競技場全体を埋めた場合、プレーヤーは負けました。
iPhoneでゲームを作成した後、Apple Watchに移植してみることにしました。 しかし、残念なことに、使用されたエンジン(Unity)はこのプラットフォームをサポートしていないことが
わかりました 。つまり、時計専用のゲームを構築することはできません(
unity roadmap )。 iPhoneのユニットゲームとApple Watchのアプリケーション(
watchkit-unity )の間の相互作用のためのサードパーティのプラグインがありますが、これは私が必要なものではありません。
開発:2016年、AppleはApple Watch用のSpriteKitをリリースし、Game Centerのサポートを追加しました(
ビデオ )。 そして、私はこれを利用することにしました。 ゲームは迅速に書かれました。 iPhoneまたはApple Watchがないため、シミュレータでテストされています。
最初に、新しいプロジェクト(シングルビューアプリケーション)を作成しました。 次に、新しいターゲットを追加しました(WatchOS-> Game App)。

2つのフォルダーがプロジェクトに追加されます。 メイン
ストーリーボードの最初のフォルダー。 SpriteKitシーンを備えたゲームコントローラーと、メニュー、ゲームセンター、ゲームエンド用の追加コントローラーが含まれています。 また、最初のフォルダーには、ストーリーボードのアイコンとリソースがあります。 2番目のフォルダー(Extension)には、SpriteKitシーンのソースコードとリソースが含まれています。
メインメニューのメインメニューから開発を始めました。

最初は、SpriteKitでUI全体を実行したかったのです。 しかし、SpriteKitでボタンを使用する便利な方法は見つかりませんでした。 そのため、WatchKitの標準要素ですべてのメニューを作成することにしました。
ソーシャルネットワーク(vkとfacebookにログイン)を接続して記録を再投稿したかったのですが、簡単な方法はありませんでした。 Iosには
Social Frameworkがありますが、WatchOSはまだサポートされていません。 したがって、私はより良い時間まで延期することにしました。
次に、ゲーム自体の画面(
MainGameControllerと
SpriteKitシーン )の作成を取り上げました。

ここではすべてがSpriteKitの標準でした。 更新メソッドは、プレーヤーのジェスチャに応じて、ブロックを移動および削除するためのコードを実行します。 ちなみに、私が使用したジェスチャは標準の認識機能でした。 ライブラリからストーリーボードまで、イベントをドラッグしてポイントします。 SKActionで間違ったジェスチャーのアニメーションを作成しました。
トレーニングを追加
-SKActionアニメーションも使用。
SKAudioNodeクラスを使用して音楽を追加しました。 ところで、音楽はSKAction.play()およびSKAction.stop()を使用して制御されます。
ゲームに触覚フィードバック効果(触覚フィードバック)を追加しました。 効果は、負けたときや間違ったジェスチャーで使用されます。 関数WKInterfaceDevice.current()。Play(。)(
WKInterfaceDevice )を使用しました。
メインゲーム画面で強制タッチを使用するときに一時停止を追加しました。
WKInterfaceMenu要素を使用し
ました 。 アイコンの代わりにアイコンを使用しようとしましたが、画像からアルファのみが取得されます。 背景色を変更することもできます。

ゲーム画面を作成した後、彼はゲームを終了するためのポップアップウィンドウ(
GameEndController )を開始しました。
ここではすべてがWatchKitの標準です。 スタックの一番上に負けたら、負けたコントローラーを投げ、リプレイボタンをクリックして、一番上のコントローラーを取り外し、戻る矢印ボタンでメインメニュー画面に移動します。 上記で書いたように、ソーシャルネットワークでレコードを共有するためのボタンを追加したかったのですが、便利な方法が見つかりませんでした。

その後、彼はゲームセンター(
GameCenterWatchController )を固定し始めました。 Appleには
ビデオがありますが、ターンベースのマルチプレイヤーについて説明しており、リーダーボードをゲームに接続する方法については何も言及していません。 したがって、テーブル(WKInterfaceTable)にコントローラーを使用することにしました。 GameKitHelper.sharedInstance.getPlayerScores()メソッドで記録を取得しましたが、ゲームセンターのテスト中はシミュレータでサポートされていません(GameKitライブラリはインポートされません)。 したがって、私はこの関数をそれほど正常にテストしませんでした。
リリースにはいくつかの問題がありました。1)メインゲームプロジェクトとは別に時計用のゲームを作成しました。 iOS用のゲームを構築するとき、Unity(5.5.1)はXcodeプロジェクトを作成します。 Apple Watchのターゲットをこのプロジェクトに追加しました。 ただし、(アーカイブ)アセンブリをアーカイブすることはできませんでした。 プロジェクトのビルド設定を少し試してみました:プロジェクトのビルド設定を設定します(Unity-Phone):サポートされているプラットフォーム-iOS、アーキテクチャ-標準アーキテクチャ。 ターゲットの場合:BeaverSpace:サポートされるプラットフォーム-iOS、アーキテクチャ-標準アーキテクチャ。 SpaceBeaverWatch:サポートされるプラットフォーム-watchOS、アーキテクチャ-標準アーキテクチャ。 SpaceBeaverWatch Extension:サポートされるプラットフォーム-watchOS、アーキテクチャ-標準アーキテクチャ。

2)ゲームは最初からアプリのレビューに合格しませんでした。 Apple Watchのターゲットをプロジェクトに追加し、別のプロジェクトからファイルをコピーしました。 しかし、同時に、時計のメインストーリーボードの各コントローラーのモジュールを変更するのを忘れていました。 修正後、すべてが正常でした。
結論として:Apple Watchのゲームに2週間を費やしましたが、同時に、空き時間で4か月間、iosのメインバージョンを作成しました。 一般的に、問題と不便さにもかかわらず、私は時計のために開発することが本当に好きでした。 AppleがWatchOSに対してSpriteKitをサポートしたことを嬉しく思います。 VKテーマグループでメインゲームと一緒に何時間もゲームを宣伝する予定です。 Apple Watchに関連するキーワードも追加しました。 これまでのところ、米国では「アップルウォッチゲーム」が541か所あります。
ご清聴ありがとうございました。
→ゲームSpace Beaver(BeaverとSpace)のソースコードは
こちら 。