Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SPAJAMでやったこと

4,393 views

Published on

UnityFukuoka07

Published in: Technology
  • Login to see the comments

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

×