Swift Code in Swift - 2日間でゲームを作ってみた

17,669 views

Published on

Swiftを使って2日間でゲームを作る話

Published in: Technology
0 Comments
45 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
17,669
On SlideShare
0
From Embeds
0
Number of Embeds
128
Actions
Shares
0
Downloads
44
Comments
0
Likes
45
Embeds 0
No embeds

No notes for slide

Swift Code in Swift - 2日間でゲームを作ってみた

  1. 1. 「Swiftでゲームを作ってみた2日間」   って話なんですけどね… 株式会社あくしゅ   代表取締役 山崎泰宏
  2. 2. 自己紹介 !   山崎泰宏   !   1977年北海道生まれ   !   株式会社あくしゅ 代表取締役   !   2006年登記、現在新宿南口から徒歩10分くらいのところ   !   従業員13名(2014年6月現在)    
  3. 3. 基本のドキュメンテーションは英語 会話は必要に応じて英語 Glocalized  Company
  4. 4. 職場の風景 出社時間決まってないから   朝は誰もいません
  5. 5. 開発環境はこんな感じ
  6. 6. 飲み会の時間には   みんな集まります
  7. 7. ゲームの時間も   出社してくれます
  8. 8. 今日はSwiftでゲームを作ってみた   って話しますけどね…
  9. 9. iOS  と全く関係ない   ソフトウェア技術会社です
  10. 10. クラウド基盤ソフトウェア   Wakame-­‐vdc
  11. 11. 仮想ネットワーク技術 OpenFlow  1.3を駆使し   物理ネットワークの上で   仮想ネットワークを   自由自在にオーバレイするもの
  12. 12. データセンターの仮想化を   目指している会社
  13. 13. • Open  Source  License  (LGPL3)   • Ruby  
  14. 14. 山崎の講演や執筆 !   NII  (国際情報学研究所)にてクラウド関連講義を担当   今年度からAIITでも非常勤講師になる予定   !   日経コンピュータ(2012/1~2012/3  計7回連載)   「今さら聞けないクラウドコンピューティング」   !   その他クラウド関連の記事を   多数執筆   ぜひご購入下さい!
  15. 15. とは言え、個人的には   ゲームとか作るのは好き(だった)
  16. 16. 大学時代 (16年前) 1年生の時から、   「ネットワーク」+「3次元」の技術に   没頭していた 1998年頃     1年目で作って   学内に公開した   通信対戦ゲーム
  17. 17. OpenGLに手を出す 暇人なのでゲームエンジンとか作ってた。 地味に表現力を上げて行きました 形状 材質 関節 最適化
  18. 18. 当時はまだプレステ1の時代
  19. 19. Virtual  Sound  Horror   House  (1999) 光と影の表現を加えて、やっとここまで来た…
  20. 20. しかも、Virtual  Realityっぽく (1)  HMDでぐるぐる見回せる (3)障害物に当たると   Hapticsな感じがする (2)  3Dサウンドが鳴る
  21. 21. 現実空間と融合した方が面白そう
  22. 22. 実際の展示風景 (2001年)
  23. 23. 物理的な動きで箱の中を表現
  24. 24. 遊び心も忘れずに
  25. 25. 某教授にそそのかされて
  26. 26. Swiftのセッション   やりませんか?
  27. 27. やりませんか?
  28. 28. ゲームプログラミングなんて 12年ぶりくらいだよ!
  29. 29. 残された学習時間は2日間   (延べだと12時間はある)
  30. 30. Swiftを真面目に勉強すると 絶対にバテて死ぬ
  31. 31. 生存戦略
  32. 32. とりあえずの方針 !   コードリーディングしまくれ!   !   Swiftの事なんて知らなくて良いんだ!   気になるところを改造したり、   まずはコピペできるコードを探せ!   自分の知識辞書を作れ!   !   読まないやつは大体書けない   ! FlappyBirdモドキのサンプルが素敵だった!   !   悩むな!コードを書け!   !   書きたくなってから文法を調べろ!
  33. 33. FlappySwift !   https://github.com/fullstackio/FlappySwift 神
  34. 34. FlappySwift !   単純なゲームではあるが、   コードは思っていたより短かった   ! SpriteKitと言うゲームエンジンを使っている   !   Objective-­‐C時代から存在していたものらしい   !   シーングラフとイベントベースの制御エンジン   !   アクションを巧妙に定義して   アニメーションやスクロールなどをさせている !   物理演算の機能を使って衝突判定をしている  
  35. 35. スクロール ① ② 戻す 戻す
  36. 36. コードにするとこんな感じ 画像のロード 画像幅分だけ 左へ移動 画像幅分だけ 左へ瞬間移動 これらの動作を   永遠に繰り返す 2枚以上の画像を並べ   それぞれにこのアクションを適用する
  37. 37. 衝突判定 各キャラクターごとにBounding  Areaを設定し、何と衝突検査するかを指定するだけ 衝突したらこの関数が呼ばれるので、   何と何が衝突したのかをif判定すれば良い
  38. 38. 移動と操作 このバカな鳥は、重力の影響を受ける 画面のどこかをタッチした瞬間に、   重力方向の速度をキャンセルし、   上向きの力積を与えられ、空中でジャンプする
  39. 39. Swiftって言うか   SpriteKitの使い方が分かった感じ。   とてもよく出来てる。
  40. 40. 良く言えば、   少なくともSwift読むのは超簡単。   理解できなかったのはSpriteKitの仕様の方。
  41. 41. 何を作るか? 左右に走り続ける不憫な男がいるので   タップしてジャンプさせる。     空中に浮いているブロックの乗って   どんどん上に登っていくゲーム。 ブロックを下からすり抜けて登れるよう にしたいので、物理演算に頼らず、自前 の衝突判定を入れた方が良さそう
  42. 42. さあ新規プロジェクトを   作るぞ!
  43. 43. ゲーム用のプロジェクトがあるので、 迷わず選択
  44. 44. 得意なOpenGLもある!   迷わず選択 ※ESはよく知らないんですが
  45. 45. スケルトンコードが出た!
  46. 46. …ん? 全部コメントアウトされてるように見える…
  47. 47. \(T_T)/ 動いてないのかよ! Metalも同じだった
  48. 48. 出鼻をくじかれ、   気分が乗らなくなってきた
  49. 49. ので、とりあえず絵を描こう!
  50. 50. 取り込んで…
  51. 51. バラバラにして…
  52. 52. 背景を抜いて…
  53. 53. 大満足♥
  54. 54. FlappySwiftのコードをパクって   参考にして、走るアニメを作成
  55. 55. ここまでで1日終了。   とりあえず翌日に完成したデモをどうぞ
  56. 56. シーンの構成要素 !   Man   !   走る人   !   Blocks   !   浮かんでいるブロック群   !   Background   !   背景
  57. 57. 前回処理時間との   差分を出す 基本的には、この差分時間を使って移動距離などを計算する
  58. 58. 衝突判定 •  Manのx座標がブロックの範囲内で、   y座標がブロック上面より上にあるとき、   移動先がブロック上面より下になる場合に   衝突したと判定する   •  衝突したらy座標を固定し、   •  落下のベクトルを0にする   実際はブロックの範囲を少し大きめに取って   判定している
  59. 59. 感想とまとめ !   とりあえずゲーム作るのは簡単だった   !   今回やらなかった物理演算も簡単で楽しそう   !   2日間でもそれなりのものが、すぐにできる   !   言語仕様   !   Rubyに近い感じがする   !   ?  が割りと良さ気   !   コンパイルとランタイムでのコードチェックの役割が   とても良い感じ   !   ゲームライブラリが良く出来てる  
  60. 60.

×