EGOスタンプリプライ機能リリース準備:テスト、スプレッドシート処理を別スレッドで実行、gitstashチャレンジ/習作デザイン依頼準備/習作開発進める:ポイント処理修正、敵に見つかるORぶつかったらゲーム停止【181日目】(2019/01/24)
https://gyazo.com/3f3ceb2a0da75f6c9b98735a77127d7a
Porin.icon今日はカラメルカラムの業務の作業記録だよん!
◆作業記録の目次
1. 振り返りと考え事たいむ
2. EGOスタンプリプライ機能リリース準備:テスト、スプレッドシート処理を別スレッドで実行、git stashチャレンジ
3. 習作デザイン依頼準備
4. 習作開発進める:ポイント周りの処理を修正、敵に見つかるORぶつかったらゲーム停止
◆作業時間のタイムトラッキング結果
https://gyazo.com/3a041d508458c0b04467edee9f1468b3
https://gyazo.com/8832949de70be483d50b5cc39b232e82
https://gyazo.com/ea38e8d40023a4d62a667463b859b1d4
Carcol.iconここからはカラメルカラム 業務内でやったことの記録だよ! 1. 振り返りと考え事たいむ
◆前日の振り返り
▼ 前回の業務の作業記録
▼ 振り返り内容
人に仕事を頼むって大変なんだな...
デザイン頼もう!って思った時にどうしたら伝わるかなと、自分のイメージをテキスト化したり参考画像探したりとかしてて思った
ぼっちでやることが最近は多かったから忘れてた感覚
日々仕事を依頼してる人ってすげえな...
ゲームの動きとか実装の順番とか悩むなあ
プレイヤーキャラの移動に関してだけでも、左右移動ありにして、時間経過とともに後ろの道が崩れていくとかしてもどれなくするのありだなとか
そうした場合スマホで上下左右移動操作はどういう風にするのがいいのかなあとか
けどそういう細かいところはどんどんでてくるので一旦ミニマムで形にしてプレイしながら考えた方がいい気がする
作りながらの感覚よりも、普通にプレイしたときの方が絶対にイメージつきやすいだろうし
できないことやわからないことに目をそらさないで自覚してやっていきたいな〜
最近よく考えること
できないこととかばっかりでたまにひええってなるけど、それよりも自分はひよっこなんだからどんどん学んでけばいいさって気持ちでやってこ
◆本日やりたいこと
/icons/done.iconエスBOTスタンプリプライリリース準備
/icons/done.icon習作デザイン依頼
/icons/done.icon習作開発進める
https://gyazo.com/ea38e8d40023a4d62a667463b859b1d4
2. EGOスタンプリプライ機能リリース準備:テスト、スプレッドシート処理を別スレッドで実行、git stashチャレンジ
◆ やること
https://gyazo.com/a0ff407c2bebfa03f8545980205d0abf
◆ 色々テストする
スプレッドシート上でデータを埋めてもらったので、データを反映させるスクリプトを実行
コードのテストケース実行
LINE上で最終チェック
LINE上でのチェック項目
https://gyazo.com/5de14a6687b67b8c3c16cf1ebec4c3a7
◆ スプレッドシート処理を別スレッドで実行
リファクタした影響で、シートにアクセスするのがリプライ処理の前になり、リプライが遅くなってしまっていたので並列タスク処理として実行する
LINE動作テストしてて気が付いた
code:create_reply_content.py
def create_payload_to_text(event, replys):
・・・
・・・
payload = create_payload_to_chat(replys, line_text)
# シートに雑談として受け取ったテキストを保存
# シート処理に時間がかかるので、レスポンスを早めるためにスレッドで実行
with ThreadPoolExecutor(max_workers=3) as executor:
future = executor.submit(
Process.append_value_to_sheet, line_text, sheet_name)
・・・
このままだとエラーが起きてもわからないので、実行先のメソッドで例外を吐くようにする
code:process_data.py
@staticmethod
def append_value_to_sheet(text, sheet_name):
# スプレッドシートを扱うための情報
# スプレッドシートID
try:
sheet_id = '1SmKuqC9-uX67b3Kgm5_QyHKLzYbmqAgWBxFnGdAzrnY'
# 扱うシートを開く
sheet = Sheet(sheet_id, sheet_name)
worksheet = sheet.open_worksheet()
# テキストをシートに書き込む
worksheet.append_row(text) except:
# シートアクセスに失敗があったら例外を吐いてSlackに通知
raise Exception
◆ 余談:git stashチャレンジ
▼ 背景
rebase -i したいけど未コミットの変更があってできない...!ってときにgitからのメッセージでにstashしてみれば?って言われたのでやってみた
code:terminal
Cannot rebase: You have unstaged changes.
Please commit or stash them.
▼ 参考
▼ やったこと
code:terminal
# 変更を一時退避
$ git stash save
# rebase -iでコミット履歴を変更
$ git rebase -i HEAD~2
# 退避させてたものを確認
$ git stash list
# 退避させてたものを取り出す&一覧から削除
$ git stash pop 0
https://gyazo.com/ea38e8d40023a4d62a667463b859b1d4
3. 習作デザイン依頼準備
◆ 素材ごとの概算サイズ決定
調べてみたらここらへんでだいぶ調整できそうではある
だいたい今使ってるサンプルからだいたい以下くらいで試してみよう
プレイヤー:500×500px
ブロック:プレイヤーより少し大きめ(プレイヤーが隠れられるくらい)
アイテム:300×300px
死神:600×600px
スイッチ:500×500px
各素材の大きさのバランスはこんな感じのイメージ
https://gyazo.com/2b093669283ea2c3db0bad7f42b5d0d3
◆ 素材一覧を作成
Dropbox上でエクセルファイルが作成&編集できることに気が付いたので、備考つきで一覧を作成してアップロード
https://gyazo.com/65b774305dd61a7098797396a9b8ee3d
https://gyazo.com/ea38e8d40023a4d62a667463b859b1d4
4. 習作開発進める:ポイント周りの処理を修正、敵に見つかるORぶつかったらゲーム停止
◆ ポイント周り修正
▼ やること
ライフゲージなどライフ周りのものを削除
当たりアイテム取得でポイント増加、外れアイテム取得でポイント減少
ポイント取得状況をウォッチ(エンディング判定用)
ポイントの初期化メソッドを作成
ポイント増減に伴いプレイヤーの色を変えてみる
▼ 当たりアイテム取得でポイント増加、外れアイテム取得でポイント減少
code:ItemDirector.cs
public void CountUpPoint()
{
currentPoint += changeAmount;
}
public void CountDownPoint()
{
currentPoint -= changeAmount;
}
▼ ポイント取得状況をウォッチ
列挙型で管理(列挙型わかりやすいから好き)
code:ItemDirector.cs
public enum POINTSTATE
{
NORMAL = 0,
GOOD,
BAD,
NUM
}
public POINTSTATE pointState;
public void SwitchState()
{
if(currentPoint <= -thresholdPoint) { pointState = POINTSTATE.BAD; }
else if(currentPoint >= thresholdPoint) { pointState = POINTSTATE.GOOD; }
else { pointState = POINTSTATE.NORMAL; }
}
▼ ポイントの初期化メソッドを作成
code:ItemDirector.cs
void InitPoint()
{
currentPoint = initialPoint;
thresholdPoint = changeAmount * 2;
pointState = POINTSTATE.NORMAL;
}
ちなみにパラメータはひとまずこんな感じに
https://gyazo.com/f667e3b45f5e12382691b00befea53d4
▼ ポイント増減に伴いプレイヤーの色を変える
今までどれもこれもpublicにしてたけど、外部スクリプトで使用しないものに関してはこれを使ってみた
各アイテムとの接触時に色を変える処理を実行
カラーパレットを見ながら調整してみて、とりあえずRGBのうちGとRを少しずつ変化させることにした
code:PlayerController.cs
Renderer playerRenderer;
private readonly float colorChangeAmount;
void Start () {
playerRenderer = GetComponent<Renderer>();
}
private void OnTriggerEnter2D(Collider2D collision)
{
Color currentColor = playerRenderer.material.color;
switch (collision.tag)
{
case "GoodItem":
itemDirector.CountUpPoint();
itemDirector.SwitchState();
// 色を変更
playerRenderer.material.color = new Color(currentColor.r, currentColor.g + colorChangeAmount, currentColor.b + colorChangeAmount);
Destroy(collision.gameObject);
break;
case "BadItem":
itemDirector.CountDownPoint();
itemDirector.SwitchState();
// 色を変更
playerRenderer.material.color = new Color(currentColor.r, currentColor.g - colorChangeAmount, currentColor.b - colorChangeAmount);
Destroy(collision.gameObject);
break;
case "Switch":
StartCoroutine(Goal(collision.gameObject));
break;
default:
Debug.Log("unknown collider");
break;
}
}
こんな感じに(確認用だからガンガン動かしてるけどほんとはこんな動き方しない)
代わり具合とかはまた素材が本番用になってからアップデートする
代わりかたももうちょっと滑らかにしてもいいかも
https://gyazo.com/b7fb226240f2a077cd0c95206db981e6
◆ 敵に見つかるOR敵にぶつかったらゲーム停止
▼ 敵に見つかるOR敵にぶつかったらゲーム停止
当たり判定でコライダを敵にアタッチすると、レイキャストがそこで止まってしまうので、距離を求めて判定することにした
code:EnemyController.cs
private void Update()
{
// 敵に見つかったらゲームオーバー
if (hit && hit.collider.CompareTag("Player") && playerController.isInStage)
{
Attack();
}
// 敵にぶつかってもゲームオーバー
if((player.transform.position - transform.position).magnitude < playerController.playerRadius * 1.5f)
{
Attack();
}
}
・・・
void TurnRight()
{
hit = Physics2D.Raycast(transform.position, Vector2.right);
}
・・・
void Attack()
{
playerController.isInStage = false;
Debug.Log("game over");
}
◆ 攻撃の流れ考える
参考になりそうなもの探す
攻撃系のエフェクトとかがあまり思いつかなかったのでどうやろうかな〜と動画を漁ってみる(途中から普通にみるの楽しんでしまった)
攻撃流れ(仮)
瞬間移動
プレイヤーに亀裂(半月のマスクとか?)
プレイヤー点滅
薄くなってプレイヤー消える
物足りなかったらパーティクルつけてみる?
▼ 瞬間移動
プレイヤーの発見位置のベクトルから、プレイヤーの上下左右どこの方向に出るか決める
雑メモ
https://gyazo.com/abc234d7aa0a84aa6fa1055a06b71410
(了)
https://gyazo.com/ea38e8d40023a4d62a667463b859b1d4
感想や指摘などあったらどしどし連絡ください!!
もし万が一、気が向いたりして何かコメントをもらえたら超絶喜びます!!Porin.icon