segmegゲーム開発ブログ

segmegゲーム制作ブログ

ゲーム作りに挑んでいます

一ヶ月ゲーム開発 ⑫日目 自動ドット化

今日はゲーム画面の自動ピクセル化をしてみます。

 

作りたいのはピクセル調のゲームですが、エフェクトや敵キャラ等を全てドットで用意するのはとても大変なので、エフェクト等は自動でピクセル化する方法を調べていました。

画面全体を一括でドット描画する方法はありましたが、もともとドットにしたプレイヤーキャラ等まで描画処理されてしまうと、過度に荒いドットになってしまいます。

そのため選択的にオブジェクトをドット化できる方法を探していましたが、ようやく実現できるアセットが見つかりました(Upixelator)。

 

上がドット化適用前で、下が適用後です。剣のエフェクトを再生しています。

アニメーションが滑らかな上に劣化の激しいgifだと分かりづらいですね。

 

静止画だと分かりやすいと思います。

上がドット化適用前で、下が適用後です。

ドット化しているのは中央のプレイヤー以外全てです。

プレイヤーとドットサイズが合ってないのは置いておくとして(調整可能)、高解像度のエフェクトや草がちゃんとピクセル風になっています。

エフェクトの動きが滑らかすぎますが、少しフレームレートを落とせば雰囲気を崩さずに済みそうです。(その方法を調べるのにまた時間がかかりそうですが)

 

これで自分でわざわざ加工しなくてもドット化できあらゆる素材を扱えます。

高品質なエフェクトアセットを使うだけで簡単に見栄え良くできるので今後は存分に使っていきたいと思います。

必然的に前回作ったエフェクトアニメーションはボツ行きです。。

 

 

一ヶ月ゲーム開発 ⑪日目 モーション追加

 

今日はプレイヤーキャラドットのアニメーション修正・追加を行いました。

攻撃一段目←修正前 修正後→

 

攻撃二段目三段目追加


←死亡 しゃがみ→

 

感覚で作りましたが想像力の限界のため今後は素材を参考にしたいと思います。。

 

一ヶ月ゲーム開発 ⑩日目 キャラデザ追加

これまで数年前にデザインしたこの人↓をプレイヤーキャラとしてドット化してきましたが、

ゲームとしてはプレイアブルキャラを複数人にしたく、当然キャラデザも人数分考える必要があります。

今日はそのデザインを考えてみました↓

画力やデザインセンスについて言及すると自虐にしかならないため控えておきます。。

(←ラフ)

 

 

描いてる途中から思いましたが、1体目とデザインが被っています。次はもうちょっと別物になるよう意識します。

 

色調補正でカラバリを見てみます。

・モノクロ

・黒

・白+紺+黄

どれを選ぶか迷ってます。

 

ゲームで使うために、AIに渡してドット絵を生成してもらいました。少し手直しするだけで使えそうです。



もっとプレイアブルキャラを増やしたいのでデザインも考える必要がありますが、ひとまず明日以降はまたゲーム部分の作業を進めていきます。

↑剣の軌跡エフェクトが1コマなので、これをもっと滑らかで綺麗なアニメーションにしたいです。

 

 



 

 

一ヶ月ゲーム開発 ⑨日目 攻撃モーション

Unity全然分からない→調べる→全然分からない新たな概念→調べる→・・を延々と繰り返していました。

 

今日の目標は攻撃モーションを作るのと敵キャラを倒すところまでです。

敵キャラや敵を倒すシステムは一応アセットで用意できているため(もちろん今後手を加える必要はありますが)自キャラの攻撃モーションを作り攻撃判定やスクリプト等と紐づける作業になります。

 

まず攻撃モーションですがアニメーションのアセットや動画を参考にします

とりあえずアセットのモーションから4コマ分ぐらい真横から抜き出してみます

そして立ちドット→をバラして↑に重なるように適当にパーツを移動させてみます

これをAIに突っ込んでうまい具合に補完してくれるのを期待しましたが・・・

なかなか元の雰囲気を維持しつつ体を綺麗に補正した出力ができません。

元の影響度を強くするとシルエットも忠実に再現して隙間が空き人体構造がガタガタになってしまい、逆に影響度を低くするとデザインが無視され狙ったポーズになりません。

 

この適当な元画像では使えそうな出力がどうしても出そうもないので(うまく設定できれば可能かもしれませんが・・・)もう少し自力での補正をしました。

正直ここまでやるなら自分でドットにしたほうが早い気がしてきます。

 

これを元に再出力しました。

ただ、モデルを変えたら綺麗に見えたので採用しましたが、これはドット幅がバラけており実ピクセルに変換するのが難しく失敗でした。

↓最終的にこうなりました。(色々妥協してて荒いです)

この4コマにエフェクトを描いたコマを一枚足します↓

 

それっぽい攻撃アニメーションができました。



そのままいずれ必要になるいくつかのアニメーションを感覚で作ってみました。

出来を無視するならアセットやAI使わない方が早かったです・・・。

 

 

あとはこれをUnityのアセットに紐づける作業ですがこれが大変でした。

モーションが上手く適用されない、サイズが修正できない、ジャンプできない、アニメーションからメソッドが呼ぶ方法が分からない、等々トラブルが多発し、基本が理解できてないので小さな問題一つ一つに多大な時間をとられました。

試行錯誤の末、僅かながら理解出来たのですが、横着せず基礎はしっかり勉強したほうが結果的に良さそうです。

 

最終的な様子↓


(品質を無視すれば)2Dアクションゲーとして最低限の動き(だけ)はできた・・と思います。

ここからモーションを増やしたりアクションの操作感を理想に近づけていきたいです。

 

操作キャラを増やす、戦闘システムを考える、ステージ自動生成、ローグライト要素等、手を付けたいことが多くて迷いますが、目下の目標としては

・操作キャラ2人目(&敵ボス)のデザインを考える→ドット化

・キャラの攻撃2段目3段目、ジャンプ攻撃、スキル攻撃の実装

・画面や攻撃が綺麗に見えるエフェクトを探す

この辺りに取り組みたいと思います。

 

 

初日に立てた(無理のある)計画

  • 1週間目
    • ある程度仕様決定
    • キャラやステージのグラフィック・SE等の素材を用意
    • 簡易的でもいいからゲームの骨子を作る
      • キャラを動かす
      • 敵を倒す←今ココ
    • キャラや敵のデザイン(見た目、性能面両方)をある程度作る
    • 戦闘システム(属性やステータス等)を考える
  • 2~3週間目
    • 操作キャラを増やす
    • マップの自動生成、敵キャラ複数作成、敵AI作成
    • アイテム、パーク、スキルなどの作成
    • グラフィックや操作のブラッシュアップ
  • 4週間目
    • 不足した部分の追加や全体的な調整
    • ゲームシステムの決定・実装
  • 5~8週間目
    • バランス調整・キャラやステージの追加
    • ブラッシュアップ&完成

 

一ヶ月ゲーム開発 ⑧日目 キャラを動かす

昨日までケーブルが足りずデュアルモニター状態でしたが、一昨日購入したケーブル届き、以前通りのトリプルモニター環境になりました。

デュアルでも相当窮屈に感じていたのでこれで作業効率が上がりそうです。

 

キャラのドット化

昨日はイラストのドット化に苦闘していましたが、良さげな設定をようやく見つけました。

左が元、右が出力です。かなり忠実度が高く、ドットもそれなりに綺麗に見えます。

 

昨日は折角なので新しいモデルを使っていましたが、少し古いモデルにしたら良くなりました。

 

とりあえず厳選してみます。自分でドットにするより遥かに完成度の高いものが数秒で出てきます・・・。

 

 

最終的に(暫定)選んだのはこれです。

忠実度ガーと言いつつ頭身が低くデザインと離れてる印象ですが、自分で加工するならピクセル幅が小さいほうが難度が低く、かつ顔が潰れないようにするには頭身を低くしたほうが良いと考えました。

 

これを元デザインに近づけつつ完全なドット絵になるよう加工します。

よく見るとわかりますが、AI出力されたドット絵は完璧なドット絵ではありません。

(↑顔がドットになり切れてないことが多いです。顔以外もドットに微妙な"ブレ"があります。)

 

加工後↓

   ←加工前

←元デザイン

手探り状態なので数時間かかっていますが、慣れれば1時間かからずにデザインをドット絵にできそうです。(顔があまり可愛くないのでなんとかしたいですが)

 

アニメーション化

このドット絵を元にゲームで使うためにAsepriteというソフトを使い各アニメーションを作っていきます。

攻撃モーションなどを作るのは大変ですが、待機(Idle)状態ぐらいならすぐできそうです。

 

できたもの↓ 

4コマ動かしただけですが多少ゲームっぽく見える気がします。

 

この調子で移動状態も作ってみます。

「走る」モーションは大変なので、採用するかは別としてスライド移動するキャラとしてドットを作ってみます。

 

まず元ドットを適当に目的のシルエットだけ合わせるレベルで加工してみます。

(これはひどい)

 

これをAIに突っ込んで出力してもらいます。

こんな適当な元絵からでも綺麗なドット絵を作ってくれます。流石にそのまま使えそうなほど再現はできないようです。(私のプロンプト等が悪いのもあると思いますが)

 

比較的良さそうなものを選び、これも加工・アニメーション化します。

 

(手抜き2コマ)



待機・移動アニメーションができたのでUnityのキャラに埋め込んで動かしてみます。

アセットのアニメーションを上書きしただけで仕組みは理解していません。



 

見た目だけですがようやくゲーム制作ブログとして最低限の絵面になりました。

 

敵キャラ、攻撃モーション等を作って敵を倒せるようにするのを直近の目標として続けていきます。

 

 

初日に立てた(無理のある)計画

  • 1週間目
    • ある程度仕様決定
    • キャラやステージのグラフィック・SE等の素材を用意
    • 簡易的でもいいからゲームの骨子を作る
      • キャラを動かす←今ココ
      • 敵を倒す
    • キャラや敵のデザイン(見た目、性能面両方)をある程度作る
    • 戦闘システム(属性やステータス等)を考える
  • 2~3週間目
    • 操作キャラを増やす
    • マップの自動生成、敵キャラ複数作成、敵AI作成
    • アイテム、パーク、スキルなどの作成
    • グラフィックや操作のブラッシュアップ
  • 4週間目
    • 不足した部分の追加や全体的な調整
    • ゲームシステムの決定・実装
  • 5~8週間目
    • バランス調整・キャラやステージの追加
    • ブラッシュアップ&完成

 

 

 

 

一ヶ月ゲーム開発 ⑦日目 ドット生成テスト

 

PCのセットアップが終わったので、まずは自分のキャラ()をAIにドット絵にしてもらいます。

色々注釈が付いていますがお試しなのでひとまずそのまま突っ込んでみます。

 


(4年前と絵と言い訳させてください)

とりあえず適当なプロンプトでドット化

おお・・・

 

・・・?

趣向を踏襲しつつドット絵になってるのは凄いのですが、元のデザインから離れているのと異物が多いです(明らかにラフのままなせい)

少しプロンプトを調整して2度目の出力↓

そこそこイメージに近づきました。差し色に金が入って高貴な雰囲気になりましたが、もっとシンプルにしたいと思っています。

 

 

元画像の忠実度やプロンプトも適当なので色々試してみます。

←元画像(注釈は消しました)

 

うーん

元画像を強く参照させるときれいなドットにならないし、自由にやらせると意図が変わってきて難しいところです。この3倍ぐらい出力してますが全てハズレです。

無理やりドット化するより左上のように自由に書かせたほうがドット絵の魅力があります。

今のところ一番"ゲームのドット絵っぽい"イメージの出力です↓

プロンプト、サンプリング方法、モデル等設定が多様すぎてどれが最適か探すのが大変です

当然ですが、AIがあれば即求めるものができるということは(今のところは)ないみたいです。

 

ゲームに使うにはもうちょっと洗練させたいので、色々勉強をする必要がありそうです。

とりあえずピクセルアート風のモデルがいくつかあるのでそれらを試してみます。

しっかり学習されたキャラならこんな感じで素材として使えるレベルでうまく生成できるようです。可能ならこのレベルを目指したいです。

 

Unity動かすのは明日ということにします・・

 

一ヶ月ゲーム開発 ⑥日目 PCセットアップ

新しいPCを前PCと同じような状態を再現するまでに思ったよりも時間がかかりました。

内部ストレージの取り付け、データの移動、chrome、クリスタ、その他常用ソフトの環境復元、Unityやstablediffusionのインストール・・・等々

ソフトウェアトラブルもありましたが8割方復元完了しました。

 

 

今日は動作テストだけしてみます。

ベンチマークテストの結果

前PC

今PC

GPUスコアが10000→29000で約3倍、

CPUスコアは9000→39000で約4倍、

全体スコアも3300→11600と約3.5倍のスコアとなりました

 

画像生成

左(解像度低)に1分、右(解像度中)に10分かかっていたのが

 

左(解像度中)を3秒、右(解像度高)を30秒で生成できるようになりました。

(プロンプトはサンプルです)

4倍どころじゃなく100倍以上の速度になってます

 

ほぼ最低画質で60FPS安定しなかったゲーム(パルワールド)が最高画質でも144張り付き(モニターが144hzなのでそれ以上出せません)してます。圧倒的です。

 

ゲーム作り出すと言い出して気づけば1週間、ほとんど環境準備で終わってしまいましたが、明日こそはプレイヤーの立ち絵を生成してUnityで動かしたいと思います。