ハツェの真時代傾向璋

興味を持ったことを書いていく鱗片的な場所から先の未来の場

2020年もお疲れ様でした

こんばんは。ハツェです。
2020年は煌びやかな年になるかなと個人的には思っていましたが、現実はとても忙しい一年だったかなと思っています。
という訳で(どういう訳)今年一年私が何をしていたかを振り返っていけたらと思います。

目次


今年の創作等の振り返り

年明け~三月

一月

年明け大一発は、シェーダーの動画を上げている方の動画の内容を再現していたりしましたね。
この時はまだシェーダーを書くことが好きでしたが、これ以降は特にシェーダーについて新たなことを学ぶということはしなくなりました。


あとは、VFXGraphを触り始めたりもしていましたね。懐かしいです。
PointCacheの機能を試していた時に、偶然Alcedoちゃんが時空間移動してそうな見た目になったのは今でも覚えていますね。


コレ関連で言うと、HDRPを触ってみようかなと思って続かなかったことを思い出しました。良い思い出です。
HDRPは綺麗な絵が作れるのかなと思って触っていたんですが、蓋を開けてみたら現実のパラメータを参照することが前提の仕様だったので割とすぐに諦めましたね。
フォトリアルを作るときに役立つかなと言った気持ちでした。


因みに、このタイトル画面を作って見ようの時に理解した内容を記事として投稿していたりします。
hatuxes.hatenablog.jp
他にはしっかりとBlenderレンダリングしてみたかったので、入門動画を真似たりしていました。
意外とBlenderだけでも楽しめるというか本来の機能をしっかりと使ってみたみたいな印象でしたね。純粋に楽しかったです。

あと個人的には、成人式に行ったことですかね。二日前に熱を出したときは行けないかなと諦めていましたが、自分なりに根気で治した記憶があります。まだ、世界が今みたいになる前だったので直前に体調を崩していても出席出来てた時代。
余談ですがこの頃、スマブラのストーリーをクリアしたりFFXIVを始めてみたんですが、FFはあんまりハマらなかったので今は遊んでなかったりします。


二月

二月はあんまり色々はしてない気がします。
この頃からECSについて勉強し始めていました。

「たくさんもの出しても重くならないの!?すごーい!」ぐらいの気持ちで始めたら、予想以上に難易度高くてびっくりしたのが思い出ですね。

色々遊んでたらツイートの幾つかが伸びたりしてびっくりしましたね。

あとは、この時に初めてAMOKAの皆さんにお会いしたりしました。当時はVケットにあったポスターを見て「なんだろう?」と検索したら音楽アーティストだったと分かって気になっていたタイミングだったので、個人的にはこの時に会えたのは結構嬉しかったですね。

あとは、かなりAPEXしてました...w


三月

三月は恒例の誕生日イベント🎉
いつもこの返信をしているときは気分がとてもルンルンしています。


他には、初めてゲームを作り切るという経験をして見たくなったので、小さい規模ではありますがリリースするところまでやってみたりしていました。
しっかりとゲーム作るなら生半可な覚悟でやっても続かないなと、このことから思うようになりましたね。ゲーム作りはとても大変。でも面白いとハマり始めたら絶対楽しいと思います。当時作っててそんな気持ちを実感しました。
github.com
加えて、三月からメインで使うアバターを右近ちゃんからCygnetちゃんに変えました。完全に一目惚れです。とてもかわいい。
booth.pm booth.pm
他には当時防振りにハマっていたので、その中の演出の真似事をしたりとか。

UnrealEngine頑張って入門してみたけど、結局続かなかったりとか。
当時バーチャルレンズが出始めたころで、めっちゃ撮ってもらった写真を見て「良~👍」とか言ったり。
早朝に開くバーに入り浸ったりしていました。

四月~六月

四月

まずは、バチャコレVRoidStageやってましたね。実はこの回から中のUnityProject大改造計画を実行していました。Unityの長期Git管理を考えるのはとても大変ですね。今後スムーズに動かせるようにするため、グチャグチャだった中身を私一人で整頓する作業を三月ぐらいから進めていて、四月になって一気に演出とその操作盤を作るといういつも通りのハードスケジュールでやっていました。これのおかげで半年後のMen'sStageは比較的制作側は楽でした。
www.youtube.com


あとは、この頃OpenBetaになっていたUdonの機能を触っていたりしました。まだ本リリース前だったので、当時から触っている人はほとんどいなかった感じがします。
それで、触っているうちに「これ初見で扱う人リファレンスほぼほぼ無くて路頭に迷うかもしれない」と思って、我先に入門記事を書くことを決断しました。それでこの記事を投稿した訳です。今でも見てくださる方が多くてビックリしていると共に、作ってよかったなぁと思っています。
hatuxes.hatenablog.jp
他には、つぶやきGLSLというハッシュタグTwitterに出現し始めたので、その流れに乗っかったりしてました。今もそのハッシュタグを使っている人がいて文化が続いているのは良いなーという気持ちになっています。

余談ですが、この頃VRChatの規約が変わってたりしましたね。


五月

五月はホームワールドに使う3Dモデルを自作していました。いわゆるデジタル空間での自室ってやつです。1月に入門していたモデリング経験を何かに生かしたいなと思って皮だけでもフルスクラッチで自室を作ろうかなと思ったことと、別にもう一つ前からやりたかったことがあったので、両方の理由から自室ワールド制作を始めましたね。自分で作ったおかげかかなり自分の中で気に入っていて、今でも使っています。


あとは、当時たまたま見つけたResonarkというゲームワールドにハマっていたりしました。とにかくUdonで凄いの作る人現れたな~って思ってましたね。今もこの気持ちは変わってないです。

他には、VSCodeにLiveShareっていう同時に複数人で同じコードを触れる機能が出たので、それでライブコーディングとか言って遊んでたりしましたね。懐かしいです。今となってはそんな大したものは作れないですが、こう遊び感覚でたまにやってしまう心境。なんなんでしょうね。

後、この月にはリンドの夜探しっていうYoutubeライブ番組に出演したりもしていました。私自身生放送に出ることとかが好きなので、「面白い登場演出がしたいな~」と思って直前にリンドさんに無茶ぶりしてしまったのを今でも覚えています。リンドさんがとても優しい方だったので応じていただけましたけど、やっぱり無茶ぶりは良くないですよね...w
youtu.be
あとは、当時memexのイベントがとても面白かったり。

Vケット回ったり。
APEXしたり、飛んできたブルーインパルスに感動したりしていました。


六月

六月からは夏の準備とかを水面下でやっていたので、表立った公表はあんまりしてなかったと思います。「VRAAどうしようねー」みたいなことを言っていたような気もする。
まずは、私のワールド「No time.」をUnity2018に対応させたりしていました。それと合わせてポスターを配布し始めたりもしていましたね。懐かしい。良かったら飾っててください!

t.co
創作はこれぐらいでして、思い出としては古のVRChatのロード画面の動画を投稿したらやっぱりリアクションが多かったり。
一年ぶりぐらいにNeosVRに行ってきたり。

Cygnetちゃん集会に参加したり。

(ご好意で)ResonarkChampionShipの決勝ステージで遊ばせてもらったりしていました。

七月~九月

七月

七月はVRAAのワールドを公開しました。名前は「On Instances.」です。結果は惨敗でしたけど、この時の目標が「Udonで何かしらを作る」ぐらいの気持ちだったのであんまり入選する気はなかったんですよね。まぁ後から言えばどうとでもっていうやつですけど。多分ここの隠しメッセージを読んでいる人はほとんどいないんじゃないかな。そういうのも面白いですけどね。歴史的発見!みたいな感じがして。ちなみに、このワールド作った感想は書くつもりが無くなりました。


あとはなんか私のGithubのプロジェクトが永久凍土されたりAPEXしたりしていましたね。水面下で夏の準備していましたが、七月後半とかは倒れそうになっていたと思います。


八月

八月前半は盛夏音祭'20の準備とかでずっとしんどかったです。めっちゃ大変だったもんこのイベント。規模はデカいし、制作期間が以上に短かったりでてんてこ舞いでした。それでも、いろんな人が各部署で頑張ってくれていて、誰か一人でも欠けたら成立できないイベントだったかなと終わった今は思いますね。
www.youtube.com


あとはVFXGraphで何か作りたいなーと思ったので、入門動画を参考に花火とか作ってました。しかしこれ、慣れるのに結構時間がいるなーって触っていて思いましたね。やっぱりParticleSystem(Shuriken)とは扱いがかなり違う感じでしたからね。Particleの中に少し演算システムを組み込めるようなものみたいなイメージを持った方が扱いやすいかもしれないですね。まだまだ探検し甲斐がありそうです。

あとは、Avatar3.0を探求したり。

夏祭りに参加していたり。

海を泳いだりAPEXしたりしていました。


九月

9月は半年たったECSで何か作れないかなと思って、再度ミニゲームを制作していました。やっぱり弾のあるゲームを作りたいですよね。作ってて楽しい。


あとはなんだろ。UdonにVideoPlayerが追加されるからそれについて探求していましたね。今ではMerlinさんのUSharpVideoPlayerがあれば問題ないので私は何もしていませんけどね。軽い解説記事は投稿しました。
hatuxes.hatenablog.jp
思い出としては、肖像画のような写真がえこちんさんのワールド「Gallery Lens」に飾られたり。
逆再生のGiFを作って遊んでいたりしました。
あとはAPEXしてました。

十月~十二月

十月

10月からはいよいよ何も創作してないです。この時期からは就活の準備をし始めていたので、あんまり創作活動にコミットできなくなりました、 一つは、UnitBarrageという弾幕ミニゲームをリリースしたことですね。攻めてECSを使ってゲームを作ったことと、ネットワーク通信に挑戦したりしたので、自分の中ではかなり頑張ったつもりですね。苦手なJavascriptも使わなきゃいけなかったので、ストレスがまぁまぁあったかな...w

github.com
二つ目は、あのResonarkChampionShipの第二回のスタッフをしたことですね。
面白いなーと思って遊んでいたゲームの大会に携われるっていうのは、結構嬉しいもんですよね。にしても主催のseptemさんは凄い方だなぁと。企画力があるし、モノづくり力もあるし、マネジメント力もあるし、広報力もあるしで凄いですよね。尊敬するなぁと同じ大会を運営していて思いました。
youtu.be
三つめは、Udonの仕様が変わって壊れていたOn Instances.を直したりしていました。ついでにポスターも作ったりしまして。こういうポスター作りの経験は今までなかったのですが、手探りながらもいい感じのポスターを作っています。良かったらこちらも飾っていただけると嬉しいです。 hatuxes.booth.pm
10月の思い出としてはUdonSwordが出たので、この時仲良くさせてもらっていた方々と巡ったりしていました。

十一月

バチャコレしました!Men'sStage!!四月に内部変更しておいたおかげで、この時はスムーズにプロジェクトを回せたなと思います。ただ、この時から新体制になったことから運用が手探りになっていたこともあり、本番のミスが目立ってしまったなぁというのが課題点ですね。今後頑張っていきたい。 www.youtube.com


あとは、いつか使いそうなプレゼンシステムを作ってました。去年は技術系のイベントで登壇したりとかしていましたが、今年はあんまり参加してなかったので使うことはなかったです。けど、動画を出すときとかには使えるかなと思ったので、作ったんですよ。
思い出としてはカスタム背景で遊んだり。
APEXってホラーゲームかなと思ったりしました。

十二月

12月はバーチャル学会2020の開催に携わってました。と言いたいんですが、バーチャル学会実は4月ぐらいからずっと裏で準備していたので、一年のほとんどをこのタスクに注いでいました。率直に疲れましたねー。確実にイベントを進めていくというのはこうも難しいのかとエンタメイベントとの違いに気づかされました。これを知れたのはとても良い経験だったかな。私は最悪半年以内で完結するイベントに関っていくほうが得意だなと思いました。


あと、12月といえばアドベントカレンダーの季節。去年は一個だけ書いたんですけど、今年は流れに乗ってしまって二つ記事を書くことになり、結構大変でした💦
一つ目はョョョねこアドベントカレンダーですね。題材はECSについて書きました。 hatuxes.hatenablog.jp 二つ目はVRChatアドベントカレンダーです。題材は一時期話題になっていた移動床について書きました。 hatuxes.hatenablog.jp どっちも今年の私を象徴するような記事になったので、うまいことまとめられたかなと思います。
あとは自室を少し冬仕様にしたりしました。思い出を飾るっていうのは結構心にじんわり来ますよね。大切だと思います。このまとめ記事も同じように。
思い出としては、安土城に行ったり。

VRChatに課金したり。

第二回Cygnetちゃん集会にお邪魔したり。
U#の公式ページに私の記事のリンクが載ってたり。
Vケット見に行ったりしていました。

今年の総括

今年もずっとVRChatのイベントに携わっていたような気がします。それもこれが私の使命なのかっていうぐらいの重量で。私なりによく頑張ったなぁと思います。けど、ちょっと頑張りすぎたかなと振り返って思いますね。率直に無茶ぶりに答え過ぎた感じです。もう少し先を読んでスケジューリングするべきかなと思いました。そこは反省点ですね。というかいくつかのイベントを掛け持ちするのは素直にやめた方が良かった
あとは、去年に掲げた抱負を達成出来たかどうか振り返ってみますか。
まずは「何かしらソフトウェアを出す」という抱負。これは達成したといっていいかな。ゲーム二本をビルドして遊べる状態にしてリリースしたので達成できたかなと思います。
次は「私個人の名刺を新調する」という抱負。これは未達成ですね。正直今年の情勢的に必要なくなったので新調しなかったんだと思います。
最後は「自分は周りの方々にどのようなことをしていけばよいのかについて考える」という抱負。これは達成できたと聞かれると自分の中では就活の準備をしていて決めたことがあるので達成できたかなと思います。率直に言うと、自分は周りの方に向けてエンターテイメントを作っていけるような人になりたいなと思っています。方法は色々あると思いますが、どんな形であれ参加する方を喜ばせられるようなものを作って発信していけたらいいなと決めました。
といったような感じですね。抱負を総括するなら、おおむね達成できたかなと私は思います。抱負立ててたことはすっかり忘れてましたけど、それでもだいたい達成できるような行動をしていたのは面白いですね。私も今こうして振り返っていてびっくりしています。
まぁ、今年全体の振り返りをまとめると頑張りすぎたと言うに他ならないかな😅
今年の情勢的に家から出ることなくオンラインでほとんど完結できるようになったからか、作業量が増したように思えます。ただ、このまま行くと私がボロボロになるので考えモノです。こういう意味では自粛したいですね。

未来の話

来年の抱負についてです。以下の三つを掲げたいなと思います。

  1. 内定先を獲得する
  2. 自分の身体を第一に考えて行動する
  3. ゲーム作りに専念する

一つ目の「内定先を獲得する」。これは私が来年就活しなければならない時期になるからです。怖いですね就活。自分の思いがしっかりと企業先に伝わり、それが内定に繋がるかどうかが心配で怖くて。毎晩寝る度に不安に苛まれる日々を送っています...。無事に就活を終えれたらいいなと心からそう思います。
二つ目の「自分の身体を第一に考えて行動する」。これは私が年末に身体を崩してしまった時に思ったことです。多少熱があった時の夜に、少し呼吸が乱れて死ぬかなと思う時がありました。初めてですよ。本当の意味で死にそうになったのは。あの瞬間は色々考えてしまいました。その時に「一人になるのは怖いな」という恐怖と落ち着いたときに「色々な人に支えられて私は人として生活出来ているんだな」という思いを感じました。言っても風邪ですが、油断すると風邪でも人は死にます。今年のように。なのでまずは、自分の体調をダメにしないような生活をすべきだなと思いました。毎日自分の欲望を大事にして体調を疎かにしてこうやって数日間何もできない時期を過ごすのか、毎日ちょっとずつ健康に気づかって無駄な時間を作らないようにするかで考えたらやっぱり後者かなと。私は今まで軽率に自分の健康より他人に迷惑をかけないように進捗をなるべく出そうと生きてきたのがここにきて裏目に出たなぁと。来年からはしっかりと自分の身体と相談しながら生きていこうと思います。
三つ目の「ゲーム作りに専念する」。これこそしっかりとした目標かな。今年ミニゲームっぽいものを二つリリースしましたが、まだまだ未熟な作品だと私は思っています。なので、自分が今までに作ってきた作品はこれだ!と胸を張って言えるようなものを作りたいなと思っています。なので、VRChatの創作よりもゲームの創作に重きを置けるような活動をしていけたらいいなぁと私は思っています。少し誘われているゲーム作りの話があるので、それを本格化させたいなと企んでいたり。ここら辺は追々決めていこうかなと思います。




それではみなさん!今年もありがとうございました👍良いお年を!!


来年もみなさんと愛を共有できますように........


ハツェ


動く床を作って見た

こんばんは。ハツェです。
当記事は、VRChat Advent Calendar 2020の記事として参加しています。
今回は、一時期話題になった某なんとかソード床にならない手法を探ってみようという内容を書いていこうと思います。
今回の動作環境は、Unity : 2018.4.20f1、VRCSDK : 2020.12.09.04.44、U# : v0.18.8です。

目次


前置き

一般的な移動床の作成手法

通常、VRChatで何も考えずに床だけを動かすと、以下のように床の上で立ち止まることが出来ずにツルっと滑り落ちる床が完成します。
f:id:hatuxes:20201219154546g:plain
これを回避し、移動しなくてもプレイヤーが床と一緒に移動する方法はないかというのを模索します。

VRChatの制限が厳しい

通常、Unityで移動床を作る方法を検索すると、以下の方法が出てくることが多いです。

  • 乗った時にプレイヤーを床の子にする
  • プレイヤーのtransformを床と合わせて移動させる

ですが、Udonではプレイヤーのtransform自体を取得することも代入することも出来ないため、上記の方法で再現することは厳しいです。
そのため、今Udonでサポートされている関数を用いてどうにか対策していく必要があります。

本題

では、ここから実際に試してみたこととその結果について書いていこうと思います。
今回、床はスクリプトで記述している物理演算に沿って移動しています。

private void FixedUpdate()
{
    // 床の移動
    if (_isReverse)
    {
        Vector3 toVector = Vector3.MoveTowards(transform.position, _startPosition.position, _speed * Time.deltaTime);
            
        _rigidBody.MovePosition(toVector);

        if (Vector3.Distance(transform.position, _startPosition.position) < 0.1f)
        {
            _isReverse = false;
        }
    }
    else
    {
        Vector3 toVector = Vector3.MoveTowards(transform.position, _endPosition.position, _speed * Time.deltaTime);
            
        _rigidBody.MovePosition(toVector);
            
        if (Vector3.Distance(transform.position, _endPosition.position) < 0.1f)
        {
            _isReverse = true;
        }
    }
}


コライダーで囲んでみる

発想

最初の発想。動く床の子にコライダーの壁を用意すればなんとかなるでしょと言う発想です。こんな感じ。
f:id:hatuxes:20201219024406p:plain

結果

f:id:hatuxes:20201219024426g:plain f:id:hatuxes:20201219165442g:plain ダメでした。乗った後操作しないでいたら、ブルンって感じでコライダーから押し出されたような挙動で落とされました。
単純にコライダーで押してもらうっていう方法は厳しそうですね。

メリット

  • 特に複雑なことを用意する必要がない

デメリット

  • そもそもちゃんと機能してない
  • 複雑な形の床には使えない


椅子を使って移動させる

発想

VRChatでアバターを無理やり動かすときに使う椅子。椅子に座らせて無理やり動きを同期すればいいんじゃないかという発想です。

結果

f:id:hatuxes:20201219170009g:plain f:id:hatuxes:20201219034721g:plain まぁ予想通りの結果ですよね。座ると位置が固定されるので床と合わせて動いているという感じです。
知見が溜まったので少し訂正。
VRC_Stationのseatedのチェックを外すと立ったまま座標が固定できるみたいなので、その状態で入力に合わせて椅子を移動させてあげればもう少しまともなものが出来ると思います。

メリット

  • 床の子に椅子を置くことでほとんど実装できる

デメリット

  • 床の上で移動することは出来ない
  • アニメーションを変えてあげないと、見た目が不格好


テレポートで逐次移動させる

発想

ここからUdonらしい発想。移動床の中心座標に毎フレームテレポートさせればそれっぽく見えるのではないか?という発想です。

結果

f:id:hatuxes:20201219170507g:plain f:id:hatuxes:20201219035923g:plain 一応見た目通りにはなります。直立不動で動いているのはなかなかシュールです。
サンプルとして作ったテレポート式移動床は、ジャンプでのみ脱出出来るようにしました。

メリット

  • しっかりと床に合わせて移動してくれる
  • 複数人で乗っても問題ない
  • 移動による脱出方式にしなければ、移動キーを押しても床から落ちる心配はない

デメリット

  • 実装方法を考えて作らないと脱出不可能になる
  • テレポート自体が全体の通信を喰うので、毎フレーム行うと他の処理が全部ダメになる(GiFの後半の床の同期がガバガバになっている)


速度を与える

発想

移動床で良くある実装のうちの一つ。現在の座標と一個前の座標から速度を計算して、その分だけプレイヤーに力を与えるという発想です。

結果

f:id:hatuxes:20201219164052g:plain f:id:hatuxes:20201219040949g:plain かなりいい感じになりました。

メリット

  • 移動が自由に出来る
  • 複数人で乗っても問題ない
  • 同期に負荷をかけずに出来る

デメリット

  • 常に移動状態になる
  • ジャンプが出来ない
  • 移動速度が遅くなる
  • 常にジャンプ状態のモーションになる


追記

ジャンプ出来ることが発覚しました。
VRChatでは、ジャンプをプレイヤーに速度を与えることで実装していたみたいです。
なので、現在のプレイヤーの速度状態を甘味した処理内容にしてあげればプレイヤーを動く床に追従させながらジャンプさせることが可能のようです。
詳細はGithubコードをご覧ください。

あとがき

色々試して来ましたが、個人的には最後のSetVelocityでプレイヤーを押すという方法が一番良いんじゃないかなと思います。
速度を与える方法なら、床の移動をスクリプトで制御してもアニメーションで制御しても対応できます。あと、床の形が何であっても対応できますね。
さらには、Teleportのような通信を喰うみたいなことも無さそうなので現状はこれかなという感じでした。
他にも良い方法がありましたら、コメントで教えて頂けると幸いです。

今回使用したサンプルプロジェクトはGithubで公開しております。ライセンスを確認の上、お使いください。
github.com
以上になります!
VRChat Advent Calendar 2020の明日の記事は、せちろーさんの記事になります!お楽しみに!!