GameplayKitの経路探索システムの基本的なデモ「Pathfinder」を動かしてみた
swiftだけでゲームが作れると聞いて興味があったので公式のサンプルコードを触ってみる。
普通はunityとかを駆使して作るイメージがあったけどそんな必要もないらしい。
今回動かしたデモ
Pathfinder: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にあげてみたので参考いただけたら幸いです。
機能
カメラロールで選択した静止画像から顔検出します。
デモ
動作環境
- 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件
・学習モデルが読み込めないよ
「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が出たときの対処
これで導入できた!