ツクロウヤ

Unityによるゲーム開発記やUnity,3dsMaxのTipsなどを記載していきます。

【開発記】報告

えー... 情けない報告になります。
仕事的にしばらく忙しいということもありますが、今後アクションゲームを作っていくモチベーションが持てそうになくなり、このままだとまた長期的な開発の中断になりそうなため、明確に一旦終了することにしました。
モチベーションが高ければ、忙しくても実際やれているときもありましたが、今これをやるのは無理...
もしかしたら、今後アクションゲームを復活することもあるかもしれませんが、少なくとも半年はないと思います。

以下、理由という名の言い訳とじゃあ今後これらの学びから何をやっていくかについて

なんで?

色々と要因はありますが、以下の2つが終了しようと明確に思った理由です。

【今アクションゲームやるメリットが感じられなくなった】
 元々勉強のためにはいいよという感じでアクションゲームを作り始めましたが、しばらく前から会社でも似たようなアクションゲームの作成を始め、両方やることにあまり意味を感じなくなりました。(今回の開発経験はかなり活かせてる!)
 あと、作る上では色々な要素を考えて作成するので楽しかったですし、多くの学びを得られましたが、プレイヤーとしてはアクションゲームって今はそんなに好きじゃないかも... 子供の頃は好きだったのになぁ... 今はスマホではやる気にならない...

【これを完成させることへのメリットを感じられなくなった】
 勉強の他に、ポートフォリオとしての側面も持っていましたが、今のままだと完成しても、中途半端になり、ポートフォリオとして使えるクオリティには達しないだろうなというのもあります。
 また、一人でやっているため、当然興味のない箇所もあり、勉強やポートフォリオとしての側面だけでは、その部分にモチベーションを持ったり、割り切りではやりきれないなと思いました。

次の開発に向けて

じゃあ、今後どうしていくかというと個人開発に関しては忙しかろうがやりたい気持ちはあります。
なので、モチベーションを保ちやすい+仕事的感覚を入れてやっていこうと思います。

【プレイヤーとして好きなものを作る】
 自分の好きなゲームって何かなぁと思うと、以下のようなものが最近好んでプレイしています。
 ・SLGなどの思考や動作が任意に区切られたもの
  → 属性だけとかパラメータでぶっぱするRPGとかはあまり長続きしない
 ・放置要素
  → SLGでも常に時間を取りすぎることはしたくない
 ・多面的な要素から、それぞれの特性を活かして勝利していくもの
  → キャラ配置やマップ効果とかで多少の力量差があっても工夫でどうにかなる
 ・ゲーム内での目標が段階を分けて、常にあるもの
  → 進んでいる感なかったり、やることがないと感じたものはすぐやめちゃう
 この辺りから模索と深堀をしようかと思います。

【マネジメント要素を持たせる】
 改めて振り返ると思いますが仕事ってすごいなぁと、そこまで興味がなくても、ある程度割り切って淡々とこなせる。
 興味のない箇所は仕事感覚で、興味のある箇所は仕事的妥協はなしでやっていけたら理想的だなぁと。
 マネタイズが意味あるかどうかは分かりませんが、今のものはそもそも一人ではマネタイズ出来るようなものではないので、気持ちを切り替えるためにも、仕切り直してやってみようと思います。

【機能毎に完成形を明確にして動作を優先する】
 
仕事じゃなく、個人でやるんだからと、わざと作りながらこの機能を試してみたいやこういう方法はどうだろうと勉強を優先して、実装途中でも変更したり、完成したものの効率化を他の実装もあるのにやってしまっていましたが、これはまぁ分かってはいましたが進まない...
 次回は全体像だと思考に時間がかかりすぎるので、機能毎に一通り完成系を明確にさせてから、プレイ感からの動作改善を優先して行っていきます。
 勉強中ということもあり、最適だと思うものが、コロコロ変わっちゃうしね。

それでは今回はこの辺で
(´・ω・`*)ノシ

【開発記】進捗報告(5月:1回目)

進捗報告。
4月中頃より本業が忙しくなっていて、進捗が芳しくないですが、辞めないために一旦の報告。
しばらくはこの状態が続きそう...

前回の想定のものはほとんど出来ておらず、やったこととしては以下のことくらい。
・敵キャラの近距離、遠距離耐性+パラメータ整理
・打ち上げ攻撃の下準備

【敵キャラの近距離、遠距離耐性】
耐性値はキャラごとに種族を持たせて、種族毎に遠距離が弱点、近距離が耐性などを設定する形で実装。
現状、耐性値しかないけど、種族毎の特性などはここのパラメータで管理していく予定。
今の所のScriptableObjectの定義はこんな感じ。

f:id:ArtAwA:20180522232736j:plain

【今後について】
とりあえず前回からの持ち越しの
・打ち上げ攻撃、空中での行動
・敵キャラが距離を開くバックステップ
辺りを優先して作業していこうと思います。

それでは今回はこの辺で
(´・ω・`*)ノシ

【開発記】進捗報告(4月:1回目)

区切りが付いたので進捗報告。

以下のようなことをやっていました。
・対話などのイベント処理実装
・特定箇所に到達した際のイベント実行
・遠距離攻撃の実装(モーション、エフェクト仮)
・その他バグ修正

【対話などのイベント処理】
何はともあれ今回はGIFを。

f:id:ArtAwA:20180414103643g:plain

イベント設定はScriptableObjectで作成しました。
メッセージ、キャラ、角度、モーションなどを指定出来るようにしています。
イベントは「戦闘前」「戦闘後」「戦闘中に特定場所に到達」で実行できる形に。

GIF見ていて思いましたが、背景のプレイヤー、エネミーは対話時は消せるようにしておいた方が良さそう。戦闘画面のカメラから除外してあげれば、簡単に行けそうな?

 【特定箇所に到達した際のイベント実行】
メッセージなどのイベント実装に合わせて、戦闘中に特定場所に到達時に何かのイベントを実行できるように改修しました。今の所、対話、敵の生成だけだけど。

 【今後について】
この後の作業としては、
・戦闘関連
 └敵キャラの近距離、遠距離への耐性(別敵も作らないとな...)
 └敵キャラが距離を開くバックステップ
 └打ち上げ攻撃、空中での行動
・保存、読み込みの雛形作成
などを実装していこうかと思います。

 それでは今回はこの辺で
(´・ω・`*)ノシ

【Photoshop】9スライス画像の作成ツール

今日は個人開発中に作ったPhotoshopツールの紹介です。
ゲームでよく2D素材の容量削減のために9スライスの画像を作成しますが、作成した画像を真ん中を切って、移動してというのが面倒なので9スライス画像を作成するツールを作成しました。

そもそも9スライスって何ぞや?という方はこちらの方がまとめられている記事などをご確認ください。

スクリプト概要

今回のツールでは9スライスで使用する画像を作成するツールです。
例えば以下のようなフレーム画像を9スライス画像として要らない中心部分を切り取る時に使います。
スライスする位置の判定にはグリッドを設定して、そこを基準にスライスするようにしています。
保存形式は現状「pngのみ」です。(UIなど2Dで透過情報がないことはほぼないので...)
ちなみに今回は特にウィンドウは開きません。

f:id:ArtAwA:20180313010500j:plain

使い方

スクリプトの準備】
Commonファイルを常に最新にするためにデータを分けていますので、両方のファイルを落とすようにしてください。

NineSlicer.zip - Google ドライブ

Common.zip - Google ドライブ

  1. 上記2つの右上にある「ダウンロード」ボタンからスクリプトをダウンロード
  2. zipファイルを解凍する
  3. スクリプト用のフォルダに「ArtAwA」のフォルダを格納
    ※フォルダの階層は変えない→念のため他のファイルと競合させないため

格納場所例:
 「Mac」/Application/PhotoshopCC2017/Presets/Scripts/
 「Win」C:¥Program Files¥Adobe¥Adobe PhotoshopCC2017¥Presets¥Scripts

スクリプトの実行】

  1. 9スライスしたい画像のpngを用意する
    ※psdを直接スライスするようには想定していません。
    (いちおうレイヤーを強制的にマージして書き出せるようにはしていますが...)
  2. スライスしたい箇所にグリッドを配置する
    例では横だけですが、もちろん縦だけ、縦横と設定できます。

    f:id:ArtAwA:20180313012242j:plain

  3. 「ファイル」→「スクリプト」→「NineSlicer」を選択
  4. 9スライスしたい画像と同階層に「export」のフォルダが作成され、そこに書き出される

今後の追加予定

・スライス位置を自動で判別

 この記事を書いている途中で思いつきましたが、グリッドを設定すらしなくていいといいなと思い...
 例えば横にスライスしたい場合は縦方向のピクセルを配列に格納してやって、横に何個が全く同じ配列があれば、その部分をカットするようにするとかすればイケそうな気も。

【4/4追記】
処理的には出来ましたが、ピクセルを取得して判定するのはかなり重くて100px*60pxくらいのものでも1分以上かかっていたので、役に立たない...
一旦はグリッドからスライスする現状の方式でということで。

さいごに

ファイルの共有方法についてはちょっと色々と検討中。
汎用処理(Common)も1つのスクリプトの中に書いてしまえば、独立したファイルとして上げられるけどブログ用に別途普段遣いと分けて書くのは、めんどくさ、ミスが起きそうなのであまりやりたくない。
しばらくは良い方法が思い浮かぶまではCommonを別途落としてもらう形で行こうかと思います。

それでは今回はこの辺で
(´・ω・`*)ノシ