1月のうちに! 今年の抱負!

今年の抱負
 ・朝型人間になる
 ・ゲーム開発の基礎を身に付ける
 ・筋肉をつける
 ・イラスト向上
 ・本を沢山読む。

 

朝型人間になる対策は、1月10日から色々試してて、

一応、今日まで成功を収めてる。

来週中に記事にしようと思います。

時間を作ったら、今度は、「あれをやりたい、これもやりたい」となって大変です・・・

”やること”の管理方法も色々試して、自分に合ったやり方に落そ~

 

2Dゲームの2Pカラーを簡単に作る方法

今回作った子は、8方向x1方向20枚=160枚
この子の2Pカラーを数分で一気に作成しちゃいましょう!
 1つ1つ色を変更していたら、何時間かかるかわからない作業を数分に短縮できました!
作業環境は、CLIP STUDIO PAINT EX
使った機能は、色域選択、色相・彩度・明度、オートアクション、一括処理
この機能を組み合わせると次のGIFのようになります。

f:id:NazzTea:20160922212930g:plain

 

クォリティはこんな感じです。
左側が元の色、右側が2Pカラー

f:id:NazzTea:20160922212855j:plain

 

大まかな手順
<一括読み込み>
 
一括読み込みを行うと次の画像のように表示されます。

f:id:NazzTea:20160922223711j:plain

 

<キャラクターの一部の色をまとめて変更>
 ・[色域選択]を使う。 許容誤差は30.00(※製作物や個人の感覚による)
 ・キャラクターから色の選択。 自分は対象の1影を選択したら上手くいきました。
 ・OK(変化してほしい部分が範囲指定されていない場合は、リセット)
 ・[色相・彩度・明度]を使う。
    色相を欲しい色に変化させる。
 ・保存(Ctrl+S)
   保存に時間がかかる画像なら省いた方がいいかな。
 
 
<上記の内容をオートアクションに登録>
 ・オートアクションタブを開く
   自分はクリスタのレイヤータブの2つ隣にありました。
 ・下の隅にある[現在のオートアクションセットに新しいオートアクションを追加します]を押して新規作成
 ・上記の手順を実行
  (※色域選択は"RGB"を指定しているので心配なし)
f:id:NazzTea:20160922221408j:plainf:id:NazzTea:20160922221410j:plain
 
 
<メニューのファイルの一括処理でまとめて変更>
 ・メニューバーのファイルから一括処理を選択する。
 ・実行の部分でオートアクションを開く
 ・作ったオートアクションを実行

f:id:NazzTea:20160922221853j:plain

 

 

<発見>
もう1回一括処理で実行するとライトグリーンで出力された。
3Pカラーとしていけるかなと思ったんだけど、青い時には目立たなかった
色域選択で取り切れていない赤色の点々が目立ってました。
3Pカラー用には色相の値を変えるのと、作る色の順番を考えるのが必要ですね。

もう1つ、オートアクションって便利!!
今回初めて使ってみたんですがかなりいいですね。
同じ手順でできそうな作業を見つけたらどんどん自動化していきたい。




『暁の航路』の開発延期と2D版の制作開始のお知らせ

◆開発延期の原因は2つ。
 1つ目は、自分とプログラマさんのスキル不足。
 2つ目は、「暁の航路」の共有プロジェクトが壊れて復旧に時間がかかる。

◆2D版制作について
 試行錯誤しながら、UE4で開発していく予定でしたが、1つのことを試すのにも時間がかかりすぎる。 なので、DXライブラリを使って、2Dで開発しながら色々試す。
 遊びながら、面白いを見つけていこうと思います。

◆3D版制作再開予定は来年の1月頃の予定です。
 

 

雑記
 2人で勉強しながらプロトタイプを作りながらで、仕様がふわふわしてると、開発はなかなか進まないですね。 仕様を確定させてからとりあえずの完成まで持ち込む。

 そこからやりたいを追加していこう。(理想)
 来年の1月頃に再開予定ですが、その頃には、自分の開発スキルやマネジメントスキルなどがぐーんとあがってるはずです。

WordPressからお引越し

これからどんどん更新していこうというなか、WordPressは使いづらいという点がいくつもあったので、お引越ししました。

色々いい勉強になった。

 追記
 上を書いてから4時間が経過。
 独自ドメインを先に切り離して査定に送ったので、Wordpressにログインできない、記事を引き出せない事故が発生。
 コンフィグファイルの書き換えに、もう1つある独自ドメインを利用しようとしたり、デフォルトを指定してみたりして、やっと復旧できました。
 そして、記事はほぼ全部移動させました。 エクスポート便利。

ゲーム作りの合間に息抜きのゲーム作り パート8

ただいま製作中のゲーム! UnrealEngine4で『暁の航路』制作中(メインプログラマー:GAISUTO) Unityで『(タイトル未定)』制作中(メインプログラマー:ざわわ) UnrealEngine4で『大旗取合戦(仮タイトル)』(息抜き&学習用)

本職に影響がでないように製作するので結構スローペースになります。 原稿の合間に落書きを描いて、ゲーム作りの合間に息抜きでゲームを作って、仕事の合間はゲームをして息抜き。

——–本日!——–

NPCユニティちゃんの数を増やして試してみたところ、かなり重くなったので、AIを軽くする方向でもう1つ作ってみました。 パート7で作ったのが、全体探索のレベル上全フラグクラスを探索するAI 新たに作ったのが、全フラグの場所と色情報だけを持ったものを検索するAI

結果は、あまり変わらなかったです。

ただ、もう1つAIを作ったおかげで、FPSを大きく下げる原因を見つけることができた。 LineTraceByChannelのラインを表示させていたのが原因みたいです。 これがあるときに40体ぐらいだしてると、FPSの通常が70ぐらいで、団子が大きくなったあたりで30ぐらいまで落ちてた。 LineTraceByChannelを切ったら、通常が90~100、団子が大きくなってもあまり変化なし。

こんな感じでテストしてました。区切りはあまり意味ないです。 20160605221320

処理がちょっとごちゃっとしたので採用しなかったけど、とりあえず作ったので備忘録だけ残しておく。 20160605221015 20160605221217

 

NPCVTTask_FlagSearch_BTの中身。 フラグの位置と色の情報は、位置配列と色配列でゲームインスタンスに持たせるようになってます。 配列の番号で紐づくようになってます。

~流れ~ ・自分の位置を保持。 ・AIContorollerにキャストして、自分のチームカラーを取得。 ・Targetの位置を初期化 ・ゲームインスタンスにキャストして、全フラグの色配列と位置配列を取得。

色配列でループをまわす。(Elementを使ってすぐに旗の判別ができる) ・色配列ループのIndexを使って、位置配列から位置を取得。 ・自分の色と違うなら真の処理にすすむ。 ・初期化された直後なら真にすすむ(1つ目に来た位置情報をTarget候補にする) ・TargetVectorの位置情報が入っている(2つ目以降のループ)なら位置を比較して、 ・自分から近い方をTarget候補にする。 ・Target候補と自身の距離、ループで回ってきた位置情報と自身の距離を比較。 ・X座標Y座標Z座標を絶対値にして足して比較しています。 (数学の3次元の距離計算をすると処理がえらいことになるので簡略化してます。)

ループが終わった後の処理。

・Targetが決まったら、FINDで位置配列からTargetのインデックスをとってくる。 ・そのインデックスで色配列から色情報をとってくる。(自身が立っている場所が敵のフラグで、一旦離れなければ旗を取れないときの処理に使います) ・Targetが初期状態の場合、偽にすすみ、3秒待って、もう一度ループ(取れるフラグがない時) ・Targetが決まっている場合、ブラックボードに位置情報を書き込む。(これをビヘイビアツリーでMoveToに渡して、移動してもらいます。)

Flag3Count(これが一旦離れて旗を奪う処理です) 3回連続で同じフラグをTargetにしたら、Targetから少し離れてビヘイビアツリーにfailureを返す。離れてもすぐに次のTargetとしてこのフラグが選ばれるので、旗が取れます。 (最有力候補にあがるだけなので、離れた瞬間味方が奪うと、別をターゲットとします。)

・3Count配列に色情報がない場合は真へ進み3Count配列に追加。Successをビヘイビアツリーに返す。 ・3Count配列に色情報がある場合は、来た色情報と今持っているの色情報を比較。 ・違う場合は配列を捨てます。Successをビヘイビアツリーに返す。 ・同じ場合は追加します。 ・追加した情報が2つ目の場合はSuccessをビヘイビアツリーに返す。 ・追加した情報が3つ目の場合はTargetから少し離れた位置に移動します。 (チームによって移動する位置をずらそうとしてました。) (今気が付いたのですが、チームカラーが2、つまり青チームのとき動かなかったのって、ここのPawnをつなぎ忘れてたからか) ・配列を空にして、failureを返します。

20160605221238 2016060522105020160605221101 20160605221105 2016060522113520160605221141

レベルBPの中身。 フラグを作成する際に、位置情報と色情報を追加しています。 追加された配列の位置が位置情報と色情報を結びつけます。 ごちゃごちゃしているのは、AppendPrintStringを使って、自分がほしい形でデバッグ情報をだしているからです。 20160605221522 2016060522150020160605221505

AIConrollerの中身。 TeamTag(BlueTeamかRedTeamの文字列情報)をキャラクターのカプセルコンポーネントのタグから送ってもらって、番号に置き換えています。 ブラックボードを使う宣言をして、ブラックボードのTeamTagに取得してきたTeamTagを、TeamColorにさっき置き換えた番号をいれます。 この後で、ビヘイビアツリーが起動してます。

20160605221537 2016060522155620160605221601

Flagの中身。(パート4参考 パート4で作ったフラグの続きに作ってます。 Flag自身が自分の位置情報を使いゲームインスタンスの位置配列からインデックスと色配列を取得。 インデックスで色配列に変更を加えていきます。 新しい色情報で上書きできたらよかったのですが、見つからなかったので、新しい自分を追加して古い自分を削除するかたちをとりました。 20160605235436

2016060523545920160605235531

20160605235550

最後にちょっとだけ。 ランプ追加した。 20160605230017

ゲーム作りの合間に息抜きのゲーム作り パート7

ただいま製作中のゲーム! UnrealEngine4で『暁の航路』制作中(メインプログラマー:GAISUTO) Unityで『(タイトル未定)』制作中(メインプログラマー:ざわわ) UnrealEngine4で『大旗取合戦(仮タイトル)』(息抜き&学習用)

本職に影響がでないように製作するので結構スローペースになります。 原稿の合間に落書きを描いて、ゲーム作りの合間に息抜きでゲームを作って、仕事の合間はゲームをして息抜き。

——–本日!——– 『ゲーム作りの合間に息抜きのゲーム作り パート6』で作成したAIの振る舞いを変更せず、BPのみから、ビヘイビアツリー(以後、BT)とブラックボードを使う変更を行いました。

NPCBTTask_MoveはいろいろやってるうちにBTに用意されているMoveToを使うことになったので、破棄。 20160529221509

NPCキャラのBPのBeginPlayの後半を変更。 カプセルコンポーネントにいれているチームタグをNPC_AIControllerに送っているだけです。 20160529221608

NPC_AIControllerに送ったタグを変数にいれて、ブラックボードを使う宣言をして、ブラックボードにチームタグを書き込んで、ビヘイビアツリーを起動してます。 ブラックボードのチームタグはまだ使ってません。 今後どうするかは検討中。 NPCNPC_AI・ブラックボードの3つにタグの変数をたらい回しにしてるのがあまり気持ちよくない。 20160529221620

ビヘイビアツリーが起動されたら、シーケンスの左から処理をしていきます。 FlagSearchで全フラグを調べて、向かうFlagを決める。行く先が決まったら、MoveToで向かう、決まらなかったらずっと調べ続けるという流れです。 20160529221838

NPCBTTask_Searchの中でTargetFlagBTにセットした値をブラックボードのTargetFlag(Flagクラス)にいれてます。 20160529221859

BlackBoardKeyにTargetFlagをいれてます。 20160530001312

NPCBTTask_Searchの中身。 AIからタグと本体を持ってきてます。 処理の中身は前回と同じです。 20160529221704 20160529221740

全部のFlagをみて、行く先が見つかったら、Success! 目的地に向かいます。 行く先が見つからなかったら、3秒まってfailure! 目的地を探し続けます。 20160529221746

~今後~ ブラックボードに、変数をインスタンス全域で同期させるチェックがあったからここにFlagクラス情報を持たせて、レベル上を毎回全部チェックしなくていいようにできないかな。 ここの変数に持たせたクラスが参照だったら、レベルBPで最初に全部突っ込んでおいて、あとはここを見続けるだけでいいんだ。 そうでなかったら、フラグが変更されるたびにブラックボードの値を書き換えにいく。 レベルBPやアクターからブラックボードの数値を書き換えにいけるのかなぁ

NPCユニティちゃんが自動で生成されて、チームタグを召喚地点によって変化するようにしたいな。

ゲーム作りの合間に息抜きのゲーム作り パート6

ただいま製作中のゲーム! UnrealEngine4で『暁の航路』制作中(メインプログラマー:GAISUTO) Unityで『(タイトル未定)』制作中(メインプログラマー:ざわわ) UnrealEngine4で『大旗取合戦(仮タイトル)』(息抜き&学習用)

本職に影響がでないように製作するので結構スローペースになります。 原稿の合間に落書きを描いて、ゲーム作りの合間に息抜きでゲームを作って、仕事の合間はゲームをして息抜き。

——–先日!——– ぷちコン制作、UE4勉強会、アンリアルフェスなどなど大忙しの日々を過ごしてました。 やっと落ち着いて開発できる。平日は3Dモデリングばっかりで、UE4ももっと触りたい。

さて、大旗取合戦の仲間や敵NPCのAIを作りはじめました。 今回作成したのはこちら、全体探索型近く狙い

NPCキャラのBP  頭の上のアイコンのマテリアルインスタンスを作って、キャラのCapseleComponentのタグの0番目に青チームか赤チームの文字をいれているのでチーム分け。 頭の上のアイコンの色がここで変化します。 20160522204615

チームの色情報をNPC_AIControllerに送る。 20160522204634

ここからNPCのAI チームの色を保持して、Flagクラスを全部取得して全部見ていく。 2回目に呼び出されたとき、TargetFlagを持ってると困るので、ここで初期化。 これで空っぽにしてくれてるみたいなんだけど、こういう使い方って大丈夫なのかな。 20160522204709

TargetFlagが空なのでIsNotValidから出てきます。 20160522204721

マクロの中で、Flagが自分のチーム以外のものだったらこのFlagをそのままTargetFlagにします。 20160522204728

TargetFlagを1つ確保している状態で、他のFlagを見ていきます。 自身から一番近いFlagをターゲットにするようにTargetFlagを置き換えていきます。 GetDistanceToの上側で自身と他のFlagの距離を、下側で自身と確保しているFlagの距離を取得して、小さい方(近い方)をObjectで取得。 Flagにキャストして、TargetFlagにします。 20160522205501

全部のフラグを見終えて、TargetFlagがあったらそこに向かう。 無かったら3秒まってもう1回調べます。 20160522205509

ターゲットフラグに向かって走りだす! 20160522205521

このAIの問題点 ・旗の中にいるときに他の旗に変化すると一旦旗の外にでてから触らないといけない。  自分がいる位置が他のチームの旗なので取ろうとして動かなくなる。