Successfully reported this slideshow.
Your SlideShare is downloading. ×

SPAJAMでやったこと

More Related Content

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

SPAJAMでやったこと

  1. 1. 一泊二日でアプリ開発 GMO Pepabo, Inc. Imoto Hiroto 2015/6/28 Unity Fukuoka 07 SPAJAMでやった こと
  2. 2. 自己紹介
  3. 3. @adarapata
  4. 4. Imoto Hiroto > GMOペパボ WEBエンジニア > ロリポップ!開発やってる > 業務ではruby + php > 趣味でUnity > 八耐によくいる
  5. 5. 今日のおはなし > SPAJAMに参加してきたよ > こんなの実装してみたよ
  6. 6. SPAJAM
  7. 7. SPAJAMとは > 一泊二日(実質26時間)でスマートフォ ン向けアプリを作るハッカソン > 会場でお題が出されて、それに沿っ たアプリを作る必要がある > ゲームでも便利アプリなんでも OK(ゲームは少なめ)
  8. 8. 今回のテーマ 「食事の席で使える」
  9. 9. こんなの作った http://www.slideshare.net/hirotoimoto1/ss-49819225
  10. 10. ごちそうクエスト > QRコードを読み取ってキャラクター を手にいれる > 食事前にキャラクターを選んで冒険 スタート > 食事が終わったら冒険終了
  11. 11. 開発体制 > エンジニア3人 > - システム、UI、シーン繋ぎで分担 > デザイナー1.5人 > UIデザイナー1人 > git+bitbucketで開発
  12. 12. 自分の担当 > システム > 雑用&御意見番 ゲームのコア部分の開発。 クラス化して使いやすくして渡したり。 Unityのシーン触ったのが終了数時間前になってから。 他の人の手が回らなそうな細かいところをちょこちょこ。 git周りで問題が発生したら対応するお仕事。 コンフリクト解消おじさん
  13. 13. こんなの実装してみたよ > QRコードを読み取る機能 > ログを吐き出す機能
  14. 14. こんなの実装してみたよ > QRコードを読み取る機能 > ログを吐き出す機能
  15. 15. QRCode
  16. 16. > バーコードよりも多くの情報を格納 できるコード > ガラケー時代によく見た(体感) > QRコード生成するサイトとかもある ので手軽に用意できる > https://www.cman.jp/QRcode/ QRコードとは
  17. 17. zxingを使う > https://zxingnet.codeplex.com/ > QRコードのEncode,Decodeができ るライブラリ > Unityでも使える > サンプルコード
  18. 18. QRコード読み取り using ZXing; using ZXing.QrCode; public class Sample { public string Read() { var reader = new BarcodeReader(); Color32[] color = new Color32(); int width = 256; int height = 256; Result result = reader.Decode(color, width, height); return result.text; } }
  19. 19. カメラからとる場合 using ZXing; using ZXing.QrCode; public class Sample { public WebCamTexture cameraTexture; public string Read() { var reader = new BarcodeReader(); Color32 color = cameraTexture.GetPixels32(); int width = cameraTexture.width; int height = cameraTexture.height; Result result = reader.Decode(color, width, height); return result.text; } }
  20. 20. QRコード画像生成 public Color32[] Write(string content, int width, int height) { var writer = new BarcodeWriter { Format = BarcodeFormat.QR_CODE, Options = new QrCodeEncodingOptions { Height = height, Width = width } }; return writer.Write(content); }
  21. 21. QRコード画像生成 using ZXing; using ZXing.QrCode; public class Sample { public Texture2D texture; public void CreateQRCode() { var qrCodeColors = Write( hoge , 256, 256); texture.SetPixels32(qrCodeColors); texture.Apply(); } }
  22. 22. zxing便利! > 実装が簡単 > Unityサンプルが提供されている > とりあえずデコードできればテン ションあがる。
  23. 23. こんなの実装してみたよ > QRコードを読み取る機能 > ログを吐き出す機能
  24. 24. Logging
  25. 25. ログシステム > 放置ゲーム等である、ゲーム終了し てもゲームが進んでいるやつ > ごちそうクエストは開始後完全に放 置なので、一旦落として再起動して も時間通りに進んでいる必要がある
  26. 26. 考え方 > 戦闘結果は最初から全て終わってい る > 戦闘結果をどこかに保存する > 再起動時は、保存した情報を引っ張 りだして戦闘画面を再構築
  27. 27. どこか is どこ > PlayerPrefs > サーバに送る 一番簡単なデータ保存機能で、KeyValueで保存される Keyが重複すると上書きされるため、同じ種類の情報を 複数持つのには向いていない WWW使ってサーバにデータを送信する。 一般的なソシャゲだとこれが無難だと思うが 今回は時間が足り無さそう。
  28. 28. ごちそうクエストの例 > sqliteを使用して、戦闘ログをログ テーブルに保存 > ゲーム中は、ログを一定間隔で順番 に画面に表示していく > ログ表示のタイミングでキャラがア クションを起こす
  29. 29. System アニメーション! ログ表示! Logs DB ログ保存 バトルの流れ
  30. 30. System アニメーション! ログ表示! Logs DB ログ読込 バトルの流れ(再開時)
  31. 31. Logテーブルを作った 敵登場、攻撃、撃破etc キャラ名等 数値等 端末にpush通知する時間
  32. 32. ログテーブルに突っ込む > 戦闘結果を全てLogテーブルにinsertする > ゲーム開始orゲーム再開時にSELECT > Nattoというライブラリを使用してDBのや りとりを楽にした
  33. 33. public class Log : ActiveRecord<Log> { public override string tableName { get { return "log"; } } public int eventId { get { return GetInt("event_id"); } set { this["event_id"] = value; } } public string params1 { get { return GetString("params_1"); } set { this["params_1"] = value; } } public string params2 { get { return GetString("params_2"); } set { this["params_2"] = value; } } public float createdAt { get { return GetFloat("created_at"); } set { this["created_at"] = value; } } public string notifyTime { get { return GetString("notify_time"); } set { this["notify_time"] = value; } } public int characterId { get { return GetInt("character_id"); } set { this["character_id"] = value; } } public Dictionary<string, string> parameters { get{ Dictionary<string, string> lists = new Dictionary<string, string>(); if(params1 != null) lists.Add("p1", params1); if(params2 != null) lists.Add("p2", params2); return lists; } }
  34. 34. メッセージ表示 こんな感じでメッセージテンプレートを作っておく event_idで任意のメッセージを引っ張り出して表示
  35. 35. public class EventMessage : ScriptableObject { public int eventId; public string message; public string GenerateEventMessage(Dao.Log model) { string generateMessage = message; foreach(var p in model.parameters) { generateMessage = generateMessage.Replace("$" + p.Key, p.Value); } return generateMessage; } }
  36. 36. ロギング便利! > ソロプレイゲームならとりあえず sqliteでよさそう。 > メッセージとかもDBに持っていけそ う。
  37. 37. まとめ > QRコード読み取りはzxingライブラ リを使おう > 放置ゲー作るならログ機能作ろう
  38. 38. おわり http://example.com/image.png

×