Apple Watch用のゲームを開発した最初の経験

みなさんこんにちは! 私の記事では、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はまだサポートされていません。 したがって、私はより良い時間まで延期することにしました。



次に、ゲーム自体の画面( MainGameControllerSpriteKitシーン )の作成を取り上げました。







ここではすべてが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)のソースコードはこちら



All Articles