Nao_uの日記 このページをアンテナに追加 RSSフィード

2018-12-08

ボクセルから回転したドット絵のパターンを作る実験 ボクセルから回転したドット絵のパターンを作る実験 - Nao_uの日記 を含むブックマーク はてなブックマーク - ボクセルから回転したドット絵のパターンを作る実験 - Nao_uの日記 ボクセルから回転したドット絵のパターンを作る実験 - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20181209013346p:image

ボクセル化したR-9のドット絵を傾けて正射影レンダリングした時にどのくらい元のドット絵と一致するかを実験。右上がオリジナルのドット絵。もっと破綻するかと思ってたけど案外いけてる。このボクセルをベースにモデリングすれば、低解像度描画時にドット絵と一致するモデルが作れたりするかな?

奥行方向は再現できてなくて、黄色い銃やブースターは左右で分離する必要がありそう。とはいえ適当に立体化して傾けただけでもそれなりに一致してるので、32x16の限られたドットに傾いた絵の情報が立体としてちゃんと把握できる構造になってて、ドット絵に込められた情報量の凄さをあらためて再認識。


f:id:Nao_u:20181209013345p:image

ボクセル化はHoudiniでAttribute from Mapで取り込んだ絵を適当にPolyExpandで伸ばしたものをUnityでレンダリング。気分転換という名目の現実逃避にちょうどいい作業量だったので、余裕ができたらこれをベースにちゃんとモデリングしてみたい


f:id:Nao_u:20181209013347g:image

ちょうど15度傾けたところで上下の端はそのままに内部構造だけが1ドット上に上がってて、元画像の上傾きの絵と動きがだいたい一致してた。ドット絵を描く人はこういうのを脳内で計算しながらやってるんだなぁ、と。

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20181208

2018-11-27

カメラが動いてもちらつきにくいディザパターンの作り方 カメラが動いてもちらつきにくいディザパターンの作り方 - Nao_uの日記 を含むブックマーク はてなブックマーク - カメラが動いてもちらつきにくいディザパターンの作り方 - Nao_uの日記 カメラが動いてもちらつきにくいディザパターンの作り方 - Nao_uの日記 のブックマークコメント

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20181127

2018-11-16

「無限に都市が生成されるアルゴリズム」で生成された都市を自由に歩き回ってみた 「無限に都市が生成されるアルゴリズム」で生成された都市を自由に歩き回ってみた - Nao_uの日記 を含むブックマーク はてなブックマーク - 「無限に都市が生成されるアルゴリズム」で生成された都市を自由に歩き回ってみた - Nao_uの日記 「無限に都市が生成されるアルゴリズム」で生成された都市を自由に歩き回ってみた - Nao_uの日記 のブックマークコメント

「Wave Function Collapse algorithm(波動関数崩壊アルゴリズム)」と名付けられたアルゴリズムは、入力ビットマップに類似したビットマップをローカルに生成するという仕組み。RPGのマップのようなマップを描くことも可能で、三次元マップにも応用できる

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20181116

2018-11-15

今さら聞けないGAN(1) 基本構造の理解 今さら聞けないGAN(1) 基本構造の理解 - Nao_uの日記 を含むブックマーク はてなブックマーク - 今さら聞けないGAN(1) 基本構造の理解 - Nao_uの日記 今さら聞けないGAN(1) 基本構造の理解 - Nao_uの日記 のブックマークコメント


【入門者向け解説】プーリング処理入門(TensorFlowで説明) 【入門者向け解説】プーリング処理入門(TensorFlowで説明) - Nao_uの日記 を含むブックマーク はてなブックマーク - 【入門者向け解説】プーリング処理入門(TensorFlowで説明) - Nao_uの日記 【入門者向け解説】プーリング処理入門(TensorFlowで説明) - Nao_uの日記 のブックマークコメント

畳み込みニューラルネットワークの基礎 畳み込みニューラルネットワークの基礎 - Nao_uの日記 を含むブックマーク はてなブックマーク - 畳み込みニューラルネットワークの基礎 - Nao_uの日記 畳み込みニューラルネットワークの基礎 - Nao_uの日記 のブックマークコメント

わかりやすい解説記事

レトロゲームエンジン Pyxel でプログラミングを始めよう! レトロゲームエンジン Pyxel でプログラミングを始めよう! - Nao_uの日記 を含むブックマーク はてなブックマーク - レトロゲームエンジン Pyxel でプログラミングを始めよう! - Nao_uの日記 レトロゲームエンジン Pyxel でプログラミングを始めよう! - Nao_uの日記 のブックマークコメント

かなりシンプルに絵が出せそうなので、機械学習結果のビジュアライズや、学習データを作るための簡単なゲーム開発環境として使えたりしないか?

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20181115

2018-11-12

KerasでDeep Learning:KerasでMNISTデータを扱ってみる KerasでDeep Learning:KerasでMNISTデータを扱ってみる - Nao_uの日記 を含むブックマーク はてなブックマーク - KerasでDeep Learning:KerasでMNISTデータを扱ってみる - Nao_uの日記 KerasでDeep Learning:KerasでMNISTデータを扱ってみる - Nao_uの日記 のブックマークコメント

定番のConvolutional Neural Networkをゼロから理解する 定番のConvolutional Neural Networkをゼロから理解する - Nao_uの日記 を含むブックマーク はてなブックマーク - 定番のConvolutional Neural Networkをゼロから理解する - Nao_uの日記 定番のConvolutional Neural Networkをゼロから理解する - Nao_uの日記 のブックマークコメント

Kerasによるデータ拡張 Kerasによるデータ拡張 - Nao_uの日記 を含むブックマーク はてなブックマーク - Kerasによるデータ拡張 - Nao_uの日記 Kerasによるデータ拡張 - Nao_uの日記 のブックマークコメント

ImageDataGeneratorの使い方

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20181112

2018-11-04

Colaboratryで作ったphythonコードをローカルのJupyter Notebookで動かそうとしてハマったときのメモ。

Windows10でTensorflowとKerasをインストールしようとしてハマった話 Windows10でTensorflowとKerasをインストールしようとしてハマった話  - Nao_uの日記 を含むブックマーク はてなブックマーク - Windows10でTensorflowとKerasをインストールしようとしてハマった話  - Nao_uの日記 Windows10でTensorflowとKerasをインストールしようとしてハマった話  - Nao_uの日記 のブックマークコメント

pip install tensorflow

でインストールしたtensorflowが「ダイナミック リンク ライブラリ (DLL) 初期化ルーチンの実行に失敗しました。」というエラーで動かず、

conda install tensorflow

で動いた。

たぶん vs2015_runtime: 14.0.25123-0 --> 14.0.25420-0 が入ったおかげかも。

こういう罠にはまらないのでColaboratoryは便利。

mnistのサンプルで TypeError: softmax() got an unexpected keyword argument ‘axis’というエラーが出る mnistのサンプルで TypeError: softmax() got an unexpected keyword argument ‘axis’というエラーが出る - Nao_uの日記 を含むブックマーク はてなブックマーク - mnistのサンプルで TypeError: softmax() got an unexpected keyword argument ‘axis’というエラーが出る - Nao_uの日記 mnistのサンプルで TypeError: softmax() got an unexpected keyword argument ‘axis’というエラーが出る - Nao_uの日記 のブックマークコメント

model.add(Dense(10, activation='softmax'))

を実行すると、kerasがバージョン2.1.6だとエラーが出るらしい。2.1.3に戻すとそのまま通る

pip install keras==2.1.3

手書きひらがなの認識で99.78%の精度をディープラーニングで 手書きひらがなの認識で99.78%の精度をディープラーニングで - Nao_uの日記 を含むブックマーク はてなブックマーク - 手書きひらがなの認識で99.78%の精度をディープラーニングで - Nao_uの日記 手書きひらがなの認識で99.78%の精度をディープラーニングで - Nao_uの日記 のブックマークコメント


Deep learningで画像認識⑦〜Kerasで畳み込みニューラルネットワーク Deep learningで画像認識⑦〜Kerasで畳み込みニューラルネットワーク - Nao_uの日記 を含むブックマーク はてなブックマーク - Deep learningで画像認識⑦〜Kerasで畳み込みニューラルネットワーク - Nao_uの日記 Deep learningで画像認識⑦〜Kerasで畳み込みニューラルネットワーク - Nao_uの日記 のブックマークコメント

Kerasでは、「ImageDataGenerator」というクラスが用意されており、元画像に移動、回転、拡大・縮小、反転などの人為的な操作を加えることによって、画像数を増やすことができます

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20181104

2018-06-30 このエントリーを含むブックマーク このエントリーのブックマークコメント

フォトグラメトリの実験として、iPhoneで撮った動画を3DF Zephyrで3D化したものをUnityでVR表示してみた。デフォルト設定でそのまま変換しただけでも予想以上に高精度で形状の破綻も少なく、まつ毛くらいの細かさまでちゃんと識別できるくらいに再現できてる

f:id:Nao_u:20180701030037p:image


今回は一分半くらいの動画から500枚を切り出して加工したんだけど、このくらいの枚数があれば十分っぽい。写真だとシャッター音で目が覚めることもあるし、枚数を取るのも大変なので動画からの切り出しでどこまでできるか気になってた。切り出した画像に多少ボケたものが混ざっててもあまり問題はないっぽい

f:id:Nao_u:20180701030050p:image


子供のスケール感は時間がたつと忘れてしまいそうなので、今のうちに3D化して保存しておいて、後でVRで比較できるようにしておきたくて、これまでも定期的にいろんな角度からの写真だけ撮り溜めてたけど、写真を大量に撮るより動画のほうがだいぶ楽なので今後は気軽に撮れそう。欠点は寝てるときしか撮れないことか

f:id:Nao_u:20180701030043p:image

VRが当たり前になったら、適当に撮った動画をサーバに送って3D化してVRで見る、みたいなサービスも当たり前になったりするのかな。周りからぐるぐる撮るだけでいいので「ちょっとめんどくさいパノラマ写真」くらいの感覚で3D空間を切り取って保存したりできそう。


静止画で見てもぱっと見で写真と区別がつかないくらいの品質のものが、そのままくるくる回せるのは結構なインパクトが。フォトグラメトリも4年前に試してた時より色々進歩してる。Houdiniが使えるようになったおかげで後処理もかなりやりやすくなった

http://game.g.hatena.ne.jp/Nao_u/00140312

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20180630

2018-05-03

最近は子供が昼寝から起きたら作業中断になるので昼間はほぼ何もできない…

[]プリミティブ端のエッジを除去して中のラインだけ残す プリミティブ端のエッジを除去して中のラインだけ残す - Nao_uの日記 を含むブックマーク はてなブックマーク - プリミティブ端のエッジを除去して中のラインだけ残す - Nao_uの日記 プリミティブ端のエッジを除去して中のラインだけ残す - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20180504010944p:image

convertLineを参考に。

int n[] = neighbours(1, @ptnum);

foreach(int pt; n){

int e0 = inpointgroup(1, "edge", @ptnum);

int e1 = inpointgroup(1, "edge", pt);

if( (e0==0 || e1==0) && pt<@ptnum){

int pr = addprim(geoself(), "polyline");

addvertex(geoself(), pr, @ptnum);

addvertex(geoself(), pr, pt);

}

}


追記:上記だとまずいパターンがあった。単純なvoronoiであれば問題ないが、複数の分割が重なって、エッジの中央に他のポリゴンの点があるなど、共有されない頂点で割られている時にうまく動かない

f:id:Nao_u:20180505174003p:image

そういう形状の時は、いったん綺麗な形のポリゴンになるように前処理してやる必要がある

  • scatter→voronoifractureだと裏面ポリゴンが生まれるケースが多いので、deleteで裏面を削除してから作業開始
  • エッジが共有されていない時には、groupのunshared Edgesがうまく動かないので、fuseで連結した後にcleanで重複したラインやポリゴンを削除してから実行する必要がある

追記2:さらにまずいパターンを発見。エッジが共有されていない分割だと、Group SOPのエッジ検出がポリゴンの内側にエッジがあるとみなしてしまっておかしくなる

f:id:Nao_u:20180505215210p:image

対策として、ConvertLineしたラインの向きベクトルを微小にしたものから計算した、左右斜め前両方のポジションでレイキャストしてどちらかが抜けてたら弾く、という処理にしてみた。

float delta = 0.01;

int pn0 = primpoint(0,@primnum,0);

int pn1 = primpoint(0,@primnum,1);

vector p0 = point(0,"P",pn0);

vector p1 = point(0,"P",pn1);

vector dirVec = normalize(p1-p0) * delta;

vector crossVec = dirVec;

crossVec.x = dirVec.z;

crossVec.z = dirVec.x;

vector chkPos = p0;

chkPos.y = delta;

vector chkDir = {0,-1,0};

vector cp0 = chkPos+(dirVec+crossVec);

vector cp1 = chkPos+(dirVec-crossVec);

vector retPos;

float retU, retV;

int ck_l = intersect(1, cp0, chkDir, retPos, retU, retV);

int ck_r = intersect(1, cp1, chkDir, retPos, retU, retV);

if( ck_l == -1 || ck_r == -1){

removeprim(geoself(), @primnum, 0);

}

余りに鋭角なポリゴンだと検出点に引っかからない可能性はあるが、それ以外はたぶんこれでほぼどんな形状になっても大丈夫?


[]polyExpand2Dで失敗するケースへの対策 polyExpand2Dで失敗するケースへの対策 - Nao_uの日記 を含むブックマーク はてなブックマーク - polyExpand2Dで失敗するケースへの対策 - Nao_uの日記 polyExpand2Dで失敗するケースへの対策 - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20180506154438p:image

上記で作ったLineをpolyExpand2Dでポリゴン化しようとすると、重複したラインがある為にそのままでは失敗する。

intersectionStichで交点で分割することで、長いポリゴンの辺になっていて、間に点のある重複したラインを分割できる

f:id:Nao_u:20180506154510p:image

実用的な複雑な形状だと、intersectionStichしても失敗するケースがある。

その時は、intersectionStich → fuse → intersectionStich とつなぐことで、polyExpand2Dが成功するようになる

これで、ブロック内を任意のポリゴンで分割したときに、間にできる道をpolyExpand2Dで作ることができるようになる…

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20180503

2018-05-02

[]プリミティブ内の最長ラインを検索 プリミティブ内の最長ラインを検索 - Nao_uの日記 を含むブックマーク はてなブックマーク - プリミティブ内の最長ラインを検索 - Nao_uの日記 プリミティブ内の最長ラインを検索 - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20180504010938p:image

先端になるpoint配列を生成してインデクスをbasePtNumのattributeに詰めて、findshortestpathのStart PointsとEnd Pointsを、

`point("../pointwrangle3/",detail("../foreach_count1/","iteration",0),"basePtNum",0)`

みたいな形でインデクスを二重ループで取り出した。

findshortestpathのStart PointsとEnd Pointsは文字列なので `` で括る必要があったが、よく見たら Output Pathsに「Fron any start ton any end」って項目があったので、もしかして頂点番号リストを文字列で渡せば二重ループはいらない?要検証。

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20180502

2018-04-07

メモ: メモ: - Nao_uの日記 を含むブックマーク はてなブックマーク - メモ: - Nao_uの日記 メモ: - Nao_uの日記 のブックマークコメント

ボリュームレンダリング

ビルボードレイマーチ

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20180407

2017-11-04

[] Tiny Clouds  Tiny Clouds - Nao_uの日記 を含むブックマーク はてなブックマーク -  Tiny Clouds - Nao_uの日記  Tiny Clouds - Nao_uの日記 のブックマークコメント

#define T texture(iChannel0,(s*p.zw+ceil(s*p.x))/2e2).y/(s+=s)*4.

void mainImage(out vec4 O,vec2 x){

vec4 p,d=vec4(.8,0,x/iResolution.y-.8),c=vec4(.6,.7,d);

O=c-d.w;

for(float f,s,t=2e2+sin(dot(x,x));--t>0.;p=.05*t*d)

p.xz+=iTime,

s=2.,

f=p.w+1.-T-T-T-T,

f<0.?O+=(O-1.-f*c.zyxw)*f*.4:O;

}

これだけのソースで雲が描画できてる


『UnityのWebGL出力に簡単に無料でグローバルランキングを実装できる仕組みを考えてみた』 『UnityのWebGL出力に簡単に無料でグローバルランキングを実装できる仕組みを考えてみた』 - Nao_uの日記 を含むブックマーク はてなブックマーク - 『UnityのWebGL出力に簡単に無料でグローバルランキングを実装できる仕組みを考えてみた』 - Nao_uの日記 『UnityのWebGL出力に簡単に無料でグローバルランキングを実装できる仕組みを考えてみた』 - Nao_uの日記 のブックマークコメント

2000年代のゲーム開発だとわりと大規模なタイトルでもまともなユーザーテストはほとんど行っておらず、ゲームバランスもディレクターの経験とカンで調整されることが多くて、詳細なプレイログが自動で取れるようになって以降もこの手のデータ分析はわりと最近まで軽視されがちだったような印象が


最近は自動収集したログを開発に使用する事例も増えてるけど、この手の手法は個人製作など小規模な開発でもかなり有効じゃないかと思う。小規模だとテストプレイをお願いするのも難しくなるので、テスト規模が小さくて遠隔でやることも増えるため、数少ない収集データを詳細に分析する意義は増えそうな


リトライ回数とタイムの相関グラフを出してみた。70回で2分半、150回で2分20秒、250回で2分10秒、2分の壁を切るには400回と、タイムが減るにつれて必要なリトライ回数が指数的に増えていってるのがわかる。


プレイ時間とタイムの相関グラフも出してみた。2分20秒を出すのに必要なプレイ時間は30分で、2分10秒で2時間、2分の壁を切るには5時間と、こちらも経過プレイ時間が指数的に伸びているというわかりやすい結果に。

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20171104

2017-11-03 このエントリーを含むブックマーク このエントリーのブックマークコメント

Tofu Racer、気が付いたら累計プレイ人数が1000人を超えてたので、ログに記録されてる情報を集計してみてる。今回はサーバにGoogleスプレッドシートを使用してるのでいろんな数字を簡単に確認できて楽しい


プレイ時間については、トップ10に入るような人は大抵5時間以上遊んでくれているが、中にはたったの110分で2分の壁を越えてトップ10に入っている人も。一番長く遊んでくれている人は20時間近くも遊んで頂いてて、本当に感謝です!


1100人の延べプレイ時間は約315時間。今回のゲームは製作時間が60時間くらいだったので、開発時間をプレイ時間が上回った。個人製作のゲームは大抵「開発にかかった時間>合計の遊んでもらえた時間」になって赤字になりがちなところなので、今回は大幅な黒字になってとても嬉しい


全体のプレイ時間を平均すると1人30分くらいになるけど、トップ10人の合計だけで全体の3分の1に相当する90時間になり、プレイ時間を多い順に並べたグラフを見ると、わりと綺麗な曲線で減っていってるのがわかる


ゲームを起動したけど一度もゴールに到達しなかった人は1100人中600人。約54%の人がゴールする前に遊ぶのをやめている。これはクラッシュ時のペナルティが大きすぎたせいかも。反省。


ゴールに到達しなかった人の中で一番プレイ時間の長かった人は、1時間以上かけて300回もリトライしながら、一度もゴールせずに諦めてた。大変申し訳ない感じ。


操作方法をログで確認したら、トップ5に入る人は皆キーボードでプレイしていて、パッドは使用していない。これはかなり予想外の結果…。シビアなアクセルワークは必要ないゲームとはいえ、アナログ操作できるパッドのほうがタイム的には有利だと思ってたので。


視点については、トップ10に入っている人のほどんどは車が見える後方視点ではなく、ドライバー視点でプレイしていた。シミュレーション寄りのゲームだとドライバー視点のほうが遊びやすいと思ってるので、こちらは納得の結果に。

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20171103

2017-10-22

[]OSM+Houdini OSM+Houdini - Nao_uの日記 を含むブックマーク はてなブックマーク - OSM+Houdini - Nao_uの日記 OSM+Houdini - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20171022171505p:image

houdini game dev toolのopen street mapでニューヨークを取り込んでFBX出力したものを、UnityでGoogle Mapの衛星画像と合わせてみた。OSMの道路データも加工できると面白そうなんだけど、そっちは簡単にはいかなそう

Yoshiaki Higa‏ @YoshiakiHiga 10月21日

道路はラインポリゴンで読み込まれるのできれいに作ろうとしたら難しそうですね。自分も色々やってますがなかなか上手くいってないです。地図画像のスクショとって画像からジオメトリ生成するのがきれいにできそうです。(多分)

いただいたアドバイスを元に、地図の画像から道路の色を抜き出してポリゴン化してみた。


f:id:Nao_u:20171022171850p:image

画像解像度より細かくしたGridにUVを割り当てて画像を転写して、Wrangleで色の白いところだけを残して頂点を削り、fuseしてから、Groupで端のエッジをグループ化。Groupでエッジを残す方法は以下の通り。

f:id:Nao_u:20171022171349p:image


この後は、dissplveで端のエッジグループ以外を削除。ここでfuseしてないといるエッジまで消える?この辺トラブってた。

最後にresampleで適当に削ってるけど、ここももっといいやり方ありそう

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20171022

2017-10-14 このエントリーを含むブックマーク このエントリーのブックマークコメント

とはいえ一応挙動のほうも遊んでくれた方には想定してた感じで楽しんでもらえてるようでよかった。Unityだとこういうのが思いついたときにさくっと作れるのはとても助かる。昔はゲームエンジン否定派だったけどこれを経験するともう戻れない…


物理シミュのおかげでいろんな現象が自然に再現されたのは面白かった。ヒルクライムでハンドルを切っても全然曲がらず一瞬バグかと思ったけど実際もそうなるらしいし、重力の影響で登りと下りの加速度の違いも自動的に生まれてて、このへん全然調整してないのにそれなりにバランスが生まれるのは楽しい


あと、何も特別な実装をしてないのにロケットスタートが勝手にいい感じの挙動になってたのも驚いた。スタート前にアクセルをふかしすぎると摩擦円を超えてスリップするし、アクセルONの時間が短すぎると加速が鈍くなる。こういうのが何もしなくてもうまく動くのはシミュレーションならではか。


タイヤの摩擦円の縁で滑り始める直前の所ちょっとだけグリップ力が向上する領域を作ると、タイヤが地面を噛む感じでちょっと粘り気が出るような印象の挙動になったのも面白かった。現実のグリップ力の遷移もそういうものらしいけど、詳細なデータが見つからなかったので目分量で適当にグラフを作った


前後左右の荷重移動もばねの硬さとダンパーはForzaの摩擦円を見ながらそれっぽくなるような適当な値に設定。少し左右の揺れが大きすぎる気がするけど、これは実車ではばね以外の色んな機構で吸収されてるのかも。ちょっと極端なくらいのほうが面白いかと思って放置した




しばらく前から一歩二歩はいはいで動くことがあったけど、今日完全にはいはいをマスター。

最近の週末は子供からの遊んでくれ要求と奥さんからの子供の面倒を見てくれ要求に答えてたら気がついたら1日が終わってる感じが。

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20171014

2017-10-13 このエントリーを含むブックマーク このエントリーのブックマークコメント

Tofu Racer、作ってた期間は3週間くらいだけど何もしてない日もあるので、作業時間は1日平均4時間×14日くらい。作業の内訳は挙動の調整とコース選定に約1週間、効果音の追加が3日間で、ランキングとUIがおおむね4日間くらい。


タイヤ関連や衝突の効果音だけで丸三日くらいの作業量になった。4輪それぞれで荷重と速度に合わせてスリップ音+加速/ブレーキ音をピッチを変えつつ鳴らして、エンジン音に加えて速度が上がったときの走行ノイズも付与。衝突音も衝撃ごとに5種類鳴らし分けてる。


SEの調整には結構時間がかかったけど、音が入るだけでタイヤの状態が感覚的にわかるようになって一気に走りやすくなった印象が。ハンドルやコントローラー振動のフィードバックもないので、このゲームでは効果音は車の状態を知る重要な手掛かりになってる


昔同じようなものを自前のエンジンで作ったときには数か月~年単位の時間がかかってたところが3週間でちゃんとゲームっぽく遊べるものになるあたりはUnityって便利だなぁ、とあらためて思う。絵、物理、音が何もしなくてもすぐ使い始められるのはすごく有難い



あと今回タイムアタックが楽しめてる理由の9割以上はアセットストアで購入したコースのおかげ。いくつか試した中でも抜群によくできてた。左右に連続するコーナーに高速セクションもあり、微妙な凹凸もいい仕事をしてくれててほんと素晴らしいコース

https://www.assetstore.unity3d.com/jp/#!/content/70655 …



挙動を調整してたときのテストコースはHoudiniで適当に作った道っぽいポリゴンとかジャンプ台とかが平面の上に置いてるだけの殺風景な状態だったので、こんな状態のものをリリースしても誰も遊んでもらえなかっただろうなぁと思うとAssetStoreってほんと素晴らしい

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20171013