MeTech’s diary

趣味でやってるアプリ開発の活動記録と備忘録を書いてます。

GameplayKitの経路探索システムの基本的なデモ「Pathfinder」を動かしてみた

swiftだけでゲームが作れると聞いて興味があったので公式のサンプルコードを触ってみる。

普通はunityとかを駆使して作るイメージがあったけどそんな必要もないらしい。

今回動かしたデモ

Pathfinder:GameplayKitの経路探索システムの基本的なデモ

デモ結果

実行環境
Swift4,Xcode9


Pathfinder_ BuildTest

概要

  • GameplayKitは、iOSOS X、およびtvOSでゲームを構築するための基礎ツールとテクノロジーのコレクション
  • 洗練されたゲームを構築、進化、維持するには、十分に計画された設計が必要
  • GameplayKitは、最小限の労力でモジュラーでスケーラブルなゲームアーキテクチャを設計するためのアーキテクチャツールを提供している
  • 優れたゲームを作成するには、一般的なゲームの仕組みの問題を解決する複雑なアルゴリズムを導入する必要がある
  • GameplayKitはこのようなアルゴリズムの標準実装も提供

GameplayKitでのゲームの作り方

GameplayKitは高レベルのゲームエンジン技術とは独立しているため、これらのテクノロジと組み合わせて完全なゲームを構築できます.
以下の組み合わせが推奨されている。

GameplayKitの機能

ランダム化

 これらの堅牢で柔軟な標準アルゴリズムの実装を、多くの種類のゲームの仕組みのビルディングブロックとして使用します。

エンティティとコンポーネント

 このアーキテクチャをベースにして、再利用可能なゲームプレイコードを設計します。

ステートマシン

 このアーキテクチャーを使用して、複雑な手続き型コードをゲームプレイデザインで解き放つことができます。

Minmax戦略家

 最適な動きを計画するためにモデルを使用するターンベースのゲームとAIプレーヤーオブジェクトのモデルを作成します。

パスファインディング

 ゲームの世界をグラフで表現し、GameplayKitがゲームキャラクターに最適なルートを計画できるようにします。

エージェント、ゴール、ビヘイビア

 このシミュレーションを使用して、ゲームキャラクターが高レベルの目標に基づいて動き、周囲に反応するようにします。

ルールシステム

 ゲームデザインのサイクルをスピードアップするため、またはゲームに現実的な動作を追加するためのファジーロジック推論を実装するために、実行可能コードからゲームデザインを分離します。

サンプルコード

  • Boxes:GameplayKitエンティティコンポーネントの基本
  • ディスペンサー:GameplayKitステートマシンの基礎
  • Pathfinder:GameplayKitの経路探索システムの基本的なデモ
  • Maze:エンティティとコンポーネント、ステートマシン、パスファインディング
  • FourInARowは:相手AIのためのGameplayKit MINMAXストラテジストを使用
  • AgentsCatalog:GameplayKitのエージェントシステムの使用
  • DemoBots:SpriteKitとGameplayKitを使用したクロスプラットフォームゲームの構築

Vision.frameworkで静止画像を顔検出するサンプルを作りました

Vision.frameworkの顔検出ができるサンプルアプリを作成しました。

最近Vision.frameworkを使ったアプリ作りをしたんですが、その時は感覚で使っていた部分もあったので改めて勉強してみました。

備忘録としてサンプルコードもGithubにあげてみたので参考いただけたら幸いです。

機能

カメラロールで選択した静止画像から顔検出します。

デモ

f:id:samuraikid520:20180902221703g:plain

動作環境

  • swift4
  • xcode9

参考にした記事

今回のサンプルは以下の素晴らしい記事を参考に実装しました。

・顔検出
[iOS 11] 画像解析フレームワークVisionで顔認識を試した結果 | Developers.IO

・カメラロールから写真を選択
[Swift3]カメラロールから写真を選択する

iOS11のVision.frameworkで遊ぶときに詰まったことメモ

iOS11のVision.frameworkで遊んで見た。

結構導入まで色々手こずったことがあったので備忘録として残しておく。

環境

・swift4
・xcode9.4.1

サンプルコードの解説

今回は上記のサンプルコードを取り込んで遊んでみることにした。
使い方や解説については以下の記事が参考になる。
iOS11のVision.frameworkを使ってみる

やったこと

資材をダウンロードして展開して、xcodeで開いて見ました。

詰まったこと

ファイルを開いてビルドすると以下の警告と異常が表示される。

インストールして開くと

警告2件
・swift4に変換してね
・ユーザーセッティングを推薦のものにアップデートしてね
異常1件
・学習モデルが読み込めないよ

「学習モデルが読み込めないよ」

なぜかCoreMLがimportされていなかったので以下を追記する。

import CoreML
「swift4に変換してね」

xcodeが自動でfixを提示してくれるのでそれに従う。

「ユーザーセッティングを推薦のものにアップデートしてね」

素直にユーザーセッティングをアップデートする。

上記をやってもでるエラー

<その1>

以下のコードだけは手動で変更が必要

×  guard let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) else { return }

○ guard let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)  as Optional else { return }
<その2>
<span style="color: #ff0000">The use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please address deprecated @objc inference warnings, test your code with “Use of deprecated Swift 3 @objc inference” logging enabled, and then disable inference by changing the "Swift 3 @objc Inference" build setting to "Default" for the "ターゲット名" target.
</span>

以下を参考にして解決
Swift 4で@objcに関するwarningが出たときの対処


これで導入できた!

スマホアプリ開発用ブログはじめました。

ここ半年間ぐらいスマホアプリ開発に関する勉強を少しづつやっていく中で、日々のやったこととか備忘録を残したかったのではじめて新しくブログ作りました。

今までやっていた雑記ブログに書いても良かったのですが、他の記事とのカテゴリが全然違うので別でやっていくことにしました。

良かったら雑記ブログにも遊びに来てください。

www.kimuson.com

TwitterYuta Kimura(@kimuson3)さん | Twitter