Unityのiosとandroidのbuildをjenkinsで行う
概要
Unityでスマフォアプリ開発を行う場合以下の処理に時間がかかる
- Buildに時間がかかる
- (Android)毎回Keystoreにパスワードを入れる
- (ios)Xcodeプロジェクトの作成
- (ios)プロビジョニングプロファイルと認証キーの設定をしてappを作成しipaを作成する
- 実機確認等でUnityを使わない人にもアプリを渡す
そのため、今回はjenkinsを利用する事でボタンひとつでapk, ipaファイルを作成できるようにする。
開発環境
ソフトウェア | バージョン |
OS | OS X El Capitan 10.11.5 (15F34) |
Homebrew | 0.9.5 |
Jenkins | 1.601 |
Unity | 5.3.4p4 |
Xcode | 7.3.1 (7D1014) |
Android | Version 23 |
Google スプレッドシートでタスク管理/シートの作成3(カレンダー)
- 以下の記事の「シートの作成3(カレンダー)」
準備
以下のデータを複製する
Google スプレッドシートでタスク管理/シートの作成2(演算) - Google スプレッドシート
複製方法は以下の「別のシートに複製」を参考
Google スプレッドシートでタスク管理/シートの作成0(基礎知識) - yasuakiのめげないゲーム開発
目次
- カレンダーの範囲の作成と固定
- カレンダーに数値を入れる
- カレンダーの書式を変更する
- カレンダーに色をつける
- カレンダーに月の予定を記載する欄を作る
- カレンダーのスケジュール欄の作成
- カレンダーの日付を追加する
カレンダーの範囲の作成と固定
列Fを作成する
列Eを固定する
カレンダー用にサイズを変更
適当に60列くらい作る
カレンダーに数値を入れる
列F1に「2016/01/01」と入力する
列F1の右下の青い四角をクリックして右端まで引っ張る
3行作成する
カレンダーの書式を変更する
1行目は月
2行目は日付
3行目は曜日
以下のように変更される
カレンダーに色をつける
月ごとに奇数と偶数で色を分ける
=MOD(MONTH(F1),2)=0
=MOD(MONTH(F1),2)=1
土曜日と日曜日で色を分ける
=WEEKDAY(F3)=7
=WEEKDAY(F3)=1
以下のように色分けされる
カレンダーに月の予定を記載する欄を作る
各月の4,5行目のセルを結合する
アプリ申請とかリリース予定とか書くと良い
カレンダーのスケジュール欄の作成
はみ出ている灰色を消す
スケジュールへの記載設定の作成
w, d, c, nの文字を入れると自動的に色がつく
カレンダーの日付を追加する
列を追加する
青い四角をクリックして右に伸ばす
日ずけが上がっていく
カレンダーに月の予定を記載する欄を作りたい場合は4,5行を結合する
Unity GooglePlayGameServicesとGameCenterを利用する
概要
GooglePlayGameServicesとGamecenterを利用して
ランキングボードとアチーブメントを表示する。
play-games-plugin-for-unityをダウンロード
GitHub - playgameservices/play-games-plugin-for-unity: Google Play Games plugin for Unity
右側にあるDownload ZIPをクリックして、ダウンロード。
今回の記事の時の最終コミット
ストアからIDを習得する
ゲームセンターアイコン->実績->リソースを取得
アチーブメンント、ランキングボードの公開設定
公開してなくてもテストアカウントでみること見ることができます。
公開するとりせっとできないので注意
プロジェクトでID設定
Window > Google Play Games > Setup > Android Setup...
説明 | |
---|---|
directory to save constants | プロジェクトのどこにC#のIDスクリオプトを置くのか |
Constants class name | 作成されるIDリストスクリプトのC#のIDスクリオプト名 |
Resources Definition | さっきストアから取ってきたもの |
Web client ID | ゲームセンターアイコン->リンク済みアプリ->OAuth2 クライアント ID |
起動確認
以下をインポート
play-games-plugin-for-unity-master->samples->Minimal->Minimal.unitypackage
GooglePlayGamesPlatformSample.csを作成し、MainSceneのカメラにアッタッチする
gist.github.com
build
アチーブメントとリーダーボードの表示、送信
IOS
google play serviceを利用しないのでここにiOSの設定に以下を追加
(これを追加しないとXcodeでframeworkないとエラーでる)
NO_GPGS
itunesconnectの「達成項目ID」をgoogleと同じものを入れる
Unity5のバグ
アチーブメントが習得できないバグがあるので以下のURLから
GCNative.h, GCNative.m, GCNative_Bridge.h, GCNative_Bridge.m
を作成
[iOS]Unity5でGame CenterにAchievementを送れないバグに対処する - Qiita
アチーブメンント、ランキングボードの公開設定
GameCenterをサンドボックスにしておく事
参考
Google Play Game Services を使ってみた — Mobage Developers Blog
Unity Tutorial - Adding Official Google Play Game Services to your game FOR FREE - YouTube
Unity3D - Google Play Game Services - なにげにぷろぐらまーWiki
Unity Google Play Services まとめ - tetu式
Unityでゲームサービスを利用する for Android | Unity | nekosukoブログ
Leader BoardとAchievementの作成 - iOS Docs
[iOS]Unity5でGame CenterにAchievementを送れないバグに対処する - Qiita
毎日ログインボーナス スクリプト C++
概要
毎日ログインボーナスを実行するためのスクリプト
画像で説明
例1:「過去 < 更新1 <= 現在」が成り立つ
例2:「過去 < 更新0 <= 現在」が成り立たない
例3:「過去 < 更新0 <= 現在」が成り立たない
例4:「過去 < 更新0 <= 現在」が成り立つ
求め方
- 現在時刻を取得する。
- 現在時刻より過去の一番近いログイン更新時刻を求める。
- 過去にログインした時刻よりログイン更新時刻が未来であればtrueを返す。
$ ls DateUpdate.cpp $ g++ -o DateUpdate DateUpdate.cpp $ ./DateUpdate 読み込み失敗 ファイル LastLoginTime.txt が開けません。 0を返します。 Tue Dec 15 13:51:37 2015 現在時刻の表示 Thu Jan 1 09:00:00 1970 最後にガチャを行った時刻 Tue Dec 15 06:00:00 2015 年月日入り更新時刻 更新する $ ./DateUpdate Tue Dec 15 13:51:41 2015 現在時刻の表示 Tue Dec 15 13:51:37 2015 最後にガチャを行った時刻 Tue Dec 15 06:00:00 2015 年月日入り更新時刻 更新しない $ vim LastLoginTime.txt $ ./DateUpdate Tue Dec 15 13:52:02 2015 現在時刻の表示 Mon Dec 14 10:04:57 2015 最後にガチャを行った時刻 Tue Dec 15 06:00:00 2015 年月日入り更新時刻 更新する $ ./DateUpdate Tue Dec 15 14:12:08 2015 現在時刻の表示 Tue Dec 15 13:52:02 2015 最後にガチャを行った時刻 Tue Dec 15 06:00:00 2015 年月日入り更新時刻 更新しない
その他
バイナリで保存したい場合
ofs.write(( char * ) ¤tTime, sizeof( long ) );//バイナリ保存
while(!ifs.eof()) { ifs.read( ( char * ) &d, sizeof( long ) );//バイナリ保存 }
補足
以下の対策をすることを忘れずに
- 現在時刻習得時にサーバーを利用する。
- セーブデータを暗号化する
参考
C言語講座:現在時刻と年月日と曜日を表示
初級者の質問――time_tについて - C・C++ 解決済 | 教えて!goo
C言語 ミリ秒を日付に変換には - C・C++ 解決済 | 教えて!goo
C言語 struct tm構造体をtime_t型に変換 - time.h - [ mktime ] | 勇躍のゴミ箱
UNIXタイムスタンプ変換ツール
UNIXタイムスタンプ変換ツール
【C言語】符号なし型⇔符号あり型をキャストするときの注意
https://msdn.microsoft.com/ja-jp/library/e9s326kw.aspx
C言語講座:色々なデータ型の最大値、最小値
C言語(VC++)の関数で、関数宣言の引数の部分に、「&」をつけて... - Yahoo!知恵袋
バイナリファイルの読み込みと書き込み - インコのC++プログラミング
速攻で作れる OS別 リダイレクトURL QRコード 短縮URLも可能
このGitHubをCloneする。
github.com
以下、Android, iOS, その他のURLを変更する
redirect/index.html
... window.location.href = "https://itunes.apple.com/"; ... window.location.href = "https://play.google.com/"; ... window.location.href = "http://www.desunoya.sakura.ne.jp/product/panda/";
自分のgithubのURLにアクセスして確かめる
http://yourself-account.github.io/yourRepository
(例)作成したリポジトリがredirectなので
http://yasuakiohama.github.io/redirect
短縮URLとQRコードを作成する
Google URL Shortener
完成
http://goo.gl/4KakGZ
goo.gl/4KakGZ
Google スプレッドシートでタスク管理/シートの作成2(演算)
以下の記事の「シートの作成2(演算)」
yasuaki-ohama.hatenablog.com
準備
以下のデータを複製する
Google スプレッドシートでタスク管理/シートの作成1(タスクの記載) - Google スプレッドシート
複製方法は以下の「別のシートに複製」を参考
Google スプレッドシートでタスク管理/シートの作成0(基礎知識) - yasuakiのめげないゲーム開発
目次
- 「完了」した数をカウントする
- 達成率を求める
- 応用
「完了」した数をカウントする
B2に「完了」と入れる
COUNTIFを利用して「完了」した数を求める
COUNTIFは指定した範囲内で任意の文字列と同じものをカウントする
=COUNTIF(範囲,比較する文字)
- 範囲「B列の7行目から最後まで」
- 比較する文字「B2」
=COUNTIF(B7:B,B2)
完了したタスクが2と表示される
達成率を求める
達成率は
完了した数 / 全体
で求めることができるので
=COUNTIF(B7:B,"完了")/COUNTIF(B7:B,"*")
以下のように記載する