インディーズゲームの開発者の多くは、開発にSwiftを使ったことがありません。Swiftでモバイルゲームを作ってみましょう。このトークでは、Swiftでカジュアルゲームを作る方法を紹介します。SpriteKitやゲームのアルゴリズム、ツールについてもお話します。インディーズゲームの開発者になりましょう!
👾
iOS開発基盤エンジニア
Fastlane開発もしています
でも世を忍ぶ仮の姿で、インディーズゲームを作っています
去年AppleWatchでマリオをやったり、ハッカソンでタッチバーアプリを作ったりしました
興味を持ったら本を手にとって見て下さい
Swiftでゲームを作ってみましょう
Xcodeはゲーム開発ツールだったのです
Xcodeでワールドマップを作れます
学生時代からGlobal Game Jamに参加しています
48時間でゲームを開発します。開発環境は自由ですが、ことしはSwiftでやりました。
ボディービルダーが降ってくるので落ちないように組み合わせて下さい
PureSwfitで作っています
Game開発をしてみましょう。
GameKitは純正フレームワークで2Dゲームを開発できます。
クロスプラットフォームゲームを選択するとターゲットを作ってくれます
ゲームはシーン(ゲーム画面)とノード(シーンに描画されるすべてのもの)
UIViewControllerとUIViewのようなものかもしれません
様々なノードがあります。シーンのデザインは
コードでもシーンエディタでも作成できます。
Rikoを配置しました
テクスチャはImageAssetからアクセスできます。
IBOutletに相当するもんはありませんが、このようにアクセスできます
毎フレームアクセスされるUpdateがあります
UITouchを継承しているのでタッチを取得できます
座標をとって、タップした場所にRikoがいたら爆発させましょう
基本的な機能は説明したとおりです
3D用のSceneKit、ReplayKit、Gamekit。。。などがあります。
cocos-2dなどもありますがメンテナンスが止まっているしObjeCなのでオススメできません
使い方は似ています
アプリをつくれたらゲームも作れます
よくあるパターンをみていきます
GameplayKitによくあるやつが入っています。
サンプルコードもあって、かなり作り込まれています
Swift4でビルドできないので、現在の環境でビルドできるパッチを置いておきました
ゲームのデザインパターンについて学べるパーツを見ていきます。
まずStateMachineです
ゲームスタートや開始、追いかける、逃げるなどがあるかもしれません。 ゲーム中に登場する多くのものは状態遷移を持っています。
これらを実現するのがGKStateです。
繊維前、遷移後、updateを登録します。 シンプルですが協力です。
コンポーネント指向
GKComponentSystem
これらのロボットはグラフィックや当たり判定の特徴を持つ一方で、特定ロボットが持つ特徴(プレイヤーのロボットは操作できるべきなど)もあります
多重継承的な仕組みを実現するのがコンポーネント指向です。
機能をコンポーネント単位で実装し、それらコンポーネントを保持するのがエンティティです。
このデザインパターンで再利用性が高まります。
機能を細分化することで依存関係を排しつつ再利用性が高まります。
コンポーネント指向のアーキテクチャはゲームでしばしば用いられます。
他にもいくつか便利なアルゴリズム(経路探索)などが用意されています。
障害物を避けるような動きを簡単に作ることができます
例えば攻撃を受けた時にダメージを反映したい時、ゲージをBehabiorRelayにして勝手に反映させられるようになります。
よかったらスターを付けて下さい
もちろんWatch上でも動きます。
なぜゲームを開発しないのでしょうか。 それは移植性といえるかもしれません。
SpriteKitはWatch向けに最適ということがわかります
しかしSwiftで様々なプラットフォームにゲームを開発できるようにする試みはいくつか見つかりました
cocos-2D開発者がやっている
しかしここ半年開発が止まっています
今後の発展に期待しましょう
この発表がみなさんが神ゲーを作り出す一助となれば幸いです。 ご清聴ありがとうございました