開発日記:つぶやき

2024-10-10 08:02:55 #つぶやき

脳が切り替わらんなあ

これまでのWebGL公開はコンテンツをサーバに上げたら参照用のViewテンプレートにルートを付けるだけのカンタンやったが、いよいよ本格展開に管理用のページを作るかと。
仕様はDBもフローも数ヶ月前に出来上がってて後は書いて実装するだけー、と思ったが、やばい。3ヶ月以上ぶりでLaravelの書き方が全然思い出せんw。

手順としてはartisan migrateでテーブル設定書いてマイグレーション、新しいcontrollerで「コンテンツチェックしてDBアップデートと登録、更新」のメソッドを書いて、表示用と管理用のViewを書く。だけやが、それらの記憶野がつながらん。migrateで既に「artisan?」とかなってる。(;´Д`)
Unityでc#も書くけど、使ってる部分が全然別っぽいんよなあ。昔はそうした部分がいくつか並列に並んでて、ひょいひょい使えてたんやが、40歳超えた辺りから枠がひとつ、またひとつと減って、最近はすっかりシングルスレッドで精一杯な上に、その切り替えも山を動かすが如くの面倒くささよなあ。(;´Д`)
まだその先でスコア管理とか広告管理とかコメント管理とか、色々付く予定なんで、ベース機能はとっとと組み付けたいんやが。
メモや前のコードを見ながらちょいちょい書いてたが全然アガらんのと、作りかけの荷物爆破ゲーのチェック事項が気になってモヤモヤするんでちょっとUnityに戻ったw。

爆発するマトとして追加したドラム缶が爆発はするけどどうも衝撃波が出てないっぽい。テストシーン作ってドラム缶とCubeを並べて爆発させると、やっぱり反応してない。同じ爆発オブジェクトを使ってる弾はちゃんと衝撃波出てんのになあ。

色々試してどうやらドラム缶の方は衝撃波処理のメソッドに(なぜか)飛んでなかった。それにテストでパラメータいじってるとパラメータ自体が機能してなかったりとか別のバグも見つかって、当初の設計とも色々とズレてきてたんで爆発処理を丸々作り替えた。作り替えたら衝撃波も無事処理された。ついでに距離で減衰するように書き換え。
その他、ゲーム開始時の砲の向きのリセットや、カメラを砲に乗せたりとちょこちょこ変更。基本機能はほぼほぼ完成か。後は的を増やすとかギミック追加とかのバリューアップと、肝腎のスコア記録はLaravel側やな。PHPに戻るか。


2024-09-26 10:36:37 #つぶやき

あっという間に時間が進むなあ

くっそ暑いと思ったらもう涼しい。
この3ヶ月の大半はUnityのWebGLで「myhome」、この1週間は「ゲーセン」用ゲームの制作をみっちりやってたんで、その辺をつらつらと書いてみる。
Unityやると作業が多過ぎるし集中するしで、脳内時間と実経過時間がズレて時間感覚おかしなるんよなあ。

myhome

去年中頃からUnity WebGLビルドで色々とコンテンツの新設を検討してて、そのためのベース環境としてこのサイトも作ったんで、とっとと実装していきたいと色々遅々として進行中。
そして今年、住んでるマンションの設備改修に関わることになって、改修計画の平面図ではどうにも分かりにくいなあと考えてた時に、これはちょうどいいネタなんで「ゆりかごから墓場まで」の中核サービス「住居モデル」作成のテストパターンとして作ってみよかと。

思い付いたサービスネタやビジネスネタが溜まった「やりたいことリスト」があって、そのネタひとつが「ゆりかごから墓場まで」。

四半世紀ほど前、分譲マンションのプラン作成や見積もりのアプリをいくつか受託開発してた時、マンションや戸建てを買う時だけやなくて購入前の検討段階から入居後のトラブルやメンテまでカバーするITサービスがあったらええのになあ、と考えてた。
その後FPとかライフマネージメントが新しく出てきて、それなら住居購入を軸にした貯蓄や保険、仕事や学校も絡めたライフプランのトータルサポートサービスにしたらええよなあ、と思考実験でどんどん規模がでかくなってって、「ゆりかごから墓場まで」というサービス構想になった。これは個人ではちょっと無理やなと、積ん読ならぬ積んネタになって「やりたいことリスト」入り(大体のビジネスネタは思考実験でデカくなってって、「やりたいことリスト」入りする)。
そうして世の中ではCGツールやCAD、ゲームエンジンが発展したり、BIMが出てきたり、スマホやタブレットでARでの家具配置ができたり、居室のモデリングがフォトグラメトリや3Dキャプチャでカンタンに出来るようになったりと、多方面に色々と発展してきて、「ゆりかごから墓場まで」で想定してた「住居モデル」が、結構やりやすい環境に整備されてきたなあと思ってた。

「住居モデル」は「ゆりかごから墓場まで」の中核サービスで、戸建ての注文建築で作られる「白模型」のデジタル3D版のイメージで、生活空間や動線をリアルに体感できて、その3D空間に住設や資料の各種データを配置することで、購入前の住設確認や購入後のアフターサービス情報を一元管理する住宅情報DBという構成にしている。

昨今CADは普及してるが、3Dの物件データ作成自体はまだそれほど普及して無いのが現状で、まあそれも尤もで、「見るだけ」の為に3D化するには金額的に見合わないコストが掛かるし、そもクオリティを上げる方向で要求されるが、現実とのギャップによる齟齬が発生するリスクや、それなりの再生環境が必要になるという利益相反なネックがある(なので最近も、不動産情報は写真かせいぜいパノラマVRな現実)。
かといって単純な3D化に意味が無いかと言うと、実際にインテリアの変更や家具購入の際に、部屋を3Dモデル化して検討した体験上、有用なのは絶対的に間違いない。どこかの誰かがその内やるだろうと待ってたが(やりたいことリストのネタは大半がそれ)、そこに至るハードルが現状永遠とあるし、適正な価格で気軽に利用するにはそうする為のスキームから作る必要があるなあと。そのモデル構想が「ゆりかごから墓場まで」になる。

CADやゲームエンジンの建築系サービスで3D化する機能が整備されてきてるんで、その辺りはいつかの未来で整合するんやろなあとは思ってるが、ウォークスルーやデータ参照が不可能だったり余りにお粗末だったりクッソ高いオプションフィーが必要やったりする現状なんで、「ゆりかごから墓場まで」の「住居モデル」では、低価格化を目的に、枯れたインフラとしての平面図から起こすワークフローを採用してる。
実現したら、個人のライフプランとしての「ゆりかごから墓場まで」に留まらず、VR住宅展示場や賃貸住宅の入居者データとのマッチング等、世にある各種不動産サービスの住居部セクションとしてのサービス展開や、家具やインテリアの検討、家のトラブル時の対応等、色々がかなりスマートになるなあ、という妄想w。
閑話休題

ということで、作成フローは既に脳内に出来てるので実践していこう。
まずは新規プロジェクトのシーンに平面図を配置して、その上にProBuilderで建物のモデルを作っていく。

前にUnityで梅田地下街「うめちか」を作ってて、これなら大概の造作出来るなあと思って「住居モデル」の作成フローを考えてたけど、うめちかで作成欲求が満たされた(飽きたw)んで作成に至らんかった思い出w。



やっぱ白ではあまりに素っ気無かったんで、写真からテクスチャを作成して貼り付けた。

現在のモデルと改築後の2モデルをメニューで切り替える。PCかスマホのブラウザで実行し、PCはWASD+マウス、スマホは画面上の2つのジョイスティックで方向と視線を切り替える。
*これはマンション内設備のモデルなんで未公開です。

だいたい2週間くらいで完成。サイズを写真から合わせてたんで、制作途中で1階の高さがおかしかったが、ProBuilderの優秀さで楽に修正出来た。
作業としては、モデルの作成自体はそれほどかからず、サイズを合わせる為の写真データの作成、整理と実装、構成検討や機能実装に大半の時間が取られた感じ。最初は全てをProBuilderで作ろうとしてたが、ドアや窓、その他住設や建具関係は、クオリティと制作の面倒くささで、手持ちのAssetsからの使用に切り替えて、その分捗った(必要なAssetを探すのがめちゃくちゃ面倒い。自作後に見つかったりしたらホンマだるい)。しかし建具のAssetが意外と無いんよなあ。もっと欲しい。昨今はBIMで住設メーカーや家具メーカーからオブジェクトデータが公開、提供されてるけど、持ってくる環境を今持って無いんよなあ。もっとDXFとかで配布してくれ。

そうして制作スキームの補完も出来て、「ん?これイケてんじゃね?」と思った。
ということで、近所に出来たタワマンのサイトから平面図が入手出来たんで、次の習作としてこれを作成してみようと。



先ずは1モデルを作成。
この辺りで建築モデル関連ググってたら、UModelerとか結構出てきて「そういや持ってんよなあ」と思い出して、しばしチュートリアルをやって、いい感じなので導入してみた。
確かに機能が豊富で寸法指示で作成出来て建築向きな感じやが、ProBuilderが面を広げていく作り方なのに対して、UModelerは箱から削ったり広げたりしていくので、ついついProBuilder思考で組んでいくと詰まり過ぎる。まあ慣れでしかないけど、ちょっとストレスがデカくなり過ぎたんで、結果ProBuilderに戻した。
その後しばらく脳が混乱したのと、さすがに共有施設と住居は作りがかなり違ったのもあって、制作工程がおかしくなって再度作り直したりした。

作り直しの際に、床面はそのまま平面図を使う仕様にした。部屋や設備の名称、ドアの開閉の当たりや、落とし込む情報が平面図そのままに寄せられるんで制作コストが減らせられる算段。

カラープランがあったんで、そういうニーズ対応を含めてテクスチャ変更でカラープラン対応できるように設計した(実装はしてない)。

1つのモデルが完成したら、後は同じ要領でその他のモデルを作成。

それぞれプレファブ化して、フロアを作って、各モデルのプレファブを並べて完成。
*これは公開したものか現在思案中。

都合6モデルとフロア作成で1月ちょっと掛かった。
途中、ドアを近付いたら開閉するようにしようとしたが動作がおかしくて先送りしたり、そういやURPそろそろいけるかと途中で導入してみたら、ハレーションとノイズだらけで画面が壊れてしまって、引き剥がすのに時間が取られたり(結局別プロジェクトにした)で、事前想定の仕様策定がかなり綿密にしとかんとあかんなあと。さすがUnityさん、安定してきたとは言えまだまだ嵌めさせポイント仕込まれてるなあw。

そうして、色々と解決する課題があるものの、制作スキームの確証は得られた。サービスとしてはまだ色々と分からんけども、「myhome(仮)」として近いうちにサービスページを作成する予定です。金額や構成を検討中。

ご興味があったり、お試ししたかったり、サンプル見たいとかだったりありましたら、ご連絡ください。

そうして、先月からほぼ2ヶ月ほどひたすら建物を作ってた。正直飽きたw。
半月ほど自作のRSSリーダーサービス「reader2」にダークモードを実装したりした。

ゲーセン

「myhome」同様に「やりたいことリスト」のWebGLで作りたいネタに「ゲーセン」がある。
3Dの部屋「ゲーセン」の中にゲーム台が並んでて、ゲーム台の画面にデモプレイや説明が表示されてて、「プレイ」を押すとそのゲームのページに遷移する。得点はサーバで共有されてランキングが表示される、という簡単な内容。

ゲーム自体はほぼほぼ完成したゲームが手持ちAssetsにいくつかあって、面白いゲームもあって個人的にそれらで遊びたいが、いちいち動くように手を入れてビルドして設置して管理するのがいちいち面倒くさ過ぎるんで、今まであんま出来てない。
*重量級でもこれとかこれとか、WebGLビルドでもちゃんと動いて楽しい。

そして最近のスマホゲーはやたら個人情報を抜きに来るし、間にやたら広告が入るし、しかも「何とかして騙して押させよう」てのばっかやし、ちょっと遊んだら課金せんとクリアすらできんようになるしで、ゲームやなくて強奪装置かと、入れる気が起きない。気になった広告は見たいし、もっとカジュアルにゲスやないゲームを楽しみたい。

「ゲーセン」を作れば、ビルドして上げるだけになるし、そういうネガティブも一掃されて、ゲーム欲を満足できる。
WebGLのノウハウも溜まったし、今やる時かと。

そんな先々週の土日頃、無料配布されててありがたくいただいたAsset、Blasters Largeのデモ動画を見て、「そう、こういうので破壊する系のゲームを作りたい!」と思った。
昔やったVRゲームで、Valveの「The Labにあった「Slingshot」が当時めっちゃ好きで、こればっかりやってたが、結構バグで動かなかったりして、やがて日本語環境では動かなくなり、なんとか英語環境でやってたが、HTC Viveをしまい込んでからはOculus Questではどうやっても動かず、出来ずじまいのまま現在もたまに思い出してはやりたくなる(Viveのセットアップ面倒くさい)。
そうして今までも「ならいっそ作ってやろう!」と度々思いながらも、当然Viveのセットアップより遙かに面倒くさいんで作るに至らんかった。

その「Slingshot」を思い出した。倉庫の素材は前から目を付けてた手持ちのAsset、Snapsの「Warehouse」(取扱終了)てのがあって、Snapsシリーズを読み込んだだけのプロジェクトもあったんで、そのプロジェクトを開いて「Blasters Large」を読み込み。デモシーンを実行。
「うっひょーっ!作るか!」と、ちょっと情緒がおかしかったんで制作決定w。

Snapsには簡素なモデルのPrototypeとリッチな造形のArt HDがあって、Art HDはサイズがくそデカいんで、プロジェクトにはPrototypeだけ読み込んでた(確かコンセプトとしてはPrototypeで作って最終でArt HDに差し替えとかだったような記憶がある)が、WebGLなんでPrototypeでええかなと思って開いてみたら、個々のオブジェクトがなんかよー分からん作りやったんで、取りあえずArt HDを読み込んでみたらArt HDはHDRP。まずはSRPに変換(まあこの辺はこの間の「myhome」で途中URPに変えたのを戻す作業で慣れたものw)。

パーツを見たらPrototypeとは細々違ってるし、まあ作るモチベをちょっとでも上げたいんでArt HDでの制作決定。
しかし肝腎の倉庫のシーンを開くと、更に色々仕込まれているせいでぶっ壊れててすっかり使いもんにならない。

そして全てのプレファブにLODも設定されてる。なので、いい感じのモデルを取り出してプレファブ化。

そして箱とラックを積み上げて、爆発エフェクトと衝撃波、サウンドを仕込んだ爆弾を作って爆破テスト。

ええやん。

「Slingshot」は弾丸を撃ったら放物線を描いてターゲットに当たって爆発する。それが気持ちいい。なので「Blasters Large」はキャンセルとして、砲台作って打ち出そう。
さらに箱とラックをそれっぽく積み上げて、カンタンな砲台を作っての発射テスト。

うっひょーっ!爆破は本能を刺激するなあ。
基本的な部分が出来たんで、シーンをそれっぽくして、スマホ用コントローラ作って、落ちたターゲットを得点計算して、開始UI作って、開始UIのバックでステージ上でカメラ動かして、残弾設定して、と1週間掛けて完成。

PC(音注意)

スマホ(音注意)

回転制御とかRigidbodyとかCollisionとかアニメーションとか、ゲームで使う基本的な細々は普段使わんのですっかり忘れてしまってる。操作しながら思い出したり調べ直したりがホンマ結構面倒くさい。Unityは細々と覚えとくことが山ほどあるけどそうそういつも使わんし、歳取って悉く忘れていくしでホンマ面倒くさい。

サーバでスコア受け取ってランキング返すとか、ステージの作り込みとか、威力の調整とか、まだまだやることは山ほどあってゴールは遠い。というかサーバとやり取りするとこは「ゲーセン」の方で作らんとなんよなあ。まあもうこれでええかとも思ったらそこで試合終了ですからw。

そうそう、マネタイズで広告も組み込みたい。最近のスマホゲーのような人を騙すようなゲスなやつではなく、ゲームのギミックとして組み込んで、面白かったりうれしかったりするポジティブな広告を組み込みたい。嫌がられたりジャマやったり、ましてや詐欺られたりする広告でええんか?と。まあその辺はまだ先のお話。

久々に書いたらメチャメチャ長なったw。
このサイトのこの日記とか、画像とか動画の管理機能もちゃんと改修せなあかんな。
最近のトレンドは「モチベではなく規律」らしい。モチベだけでやってきたやでw。


2024-05-29 08:39:51 #つぶやき

ひとりデスマ

このサイトをLaravelで作ろうと思った時、ついでにGit運用も(個人では使わんので忘れてきてるんで)今回ちゃんと導入して業務スキームっぽくしてみようかと、サーバにbareリポジトリ作って、テストサイトにテストブランチ、本番サイトに本番ブランチでセット、サイト内でローカルブランチから更新するモデルを構築した。

そうしてチェックボックスリストで課題管理するようにしたら、面倒くさいクライアントと思考停止エンジニアがPDCA回してるような状態になって、細々した課題が永遠に追加され続けるという一人デスマーチになってもうてたw。

まあ過去色々と個人サービス作っては塩漬けされてったのも、間が空いては課題や変更箇所が分からんようになってって、面倒くさくなってやる気がブーストするまで放置ってパティーンになってもうてたんで、今回の運用モデルはアジャイルが勝手に回ってくれて非常に助かる。とりま課題の取捨選択もちゃんとせんとなんよな。
資料大事、ルーティーン大事、そして取捨選択も大事よなあ。

時短な流れで今回デザインテンプレート持ってきてそのまんまLaravelでCMSはめるってモデルでやったけど、「自分で選んだデザインテンプレートでCMS化」ってメニューもありかもなと思った。変な内部構造のWPやらを使うより、ずっとシンプルで将来的なスケーラビリティもあってええやんって気がする。
もうちょっとちゃんとモデル化して営業モデルにしてみようか。