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やると作業が多過ぎるし集中するしで、脳内時間と実経過時間がズレて時間感覚おかしなるんよなあ。
去年中頃から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-07-07 13:48:29 #このサイト
今日は七夕。空気の澄んだところで満天の天の川を見ながらゆっくりしたいなあ、と思ったりはするものの、実際にやろうと思うと、場所を調べて、天候を調べて、宿を予約して、移動して、と苦労して着いてから、虫がいたり、道に迷ったり、いい場所なら人が多かったり、天気が悪かったり、そして結局目が悪いんでよく見えないw、と色々大変なんで実行しない。
そうだ!我々にはUnityがあるじゃないか!
ということで(どゆこと?)、ようやくこのサイトもWebGLコンテンツを設える所まで到達できました。ワーワーヤンヤヤンヤ
テストとして「どこか空気のいいところで天の川をゆっくりと楽しむ」というコンテンツを作成しましたので公開です。ドンドンパフパフ
Milkerway2024(89MB)
天空のサイズがデカいので結構サイズがデカいですが、動画な昨今は大丈夫かなと。
画面が暗いのでモバイルは機種によっては部屋を暗くしないと見えないかもです。
特に何も仕掛けてないので気楽にお楽しみください。
PC、モバイル(スマホ、タブレット)対応で、いずれも上記リンクからブラウザ上で動きます(多分。Brave(Chrome)でチェック済み)。操作がそれぞれでちょっと勝手が違います。マニュアル読む派の人は以下をお読みください。
キーボードのWASDキーで移動。マウスで見る方向と進む方向が変わります。ウィンドウ内を1回マウスクリックすると音(環境音)が出ます。
ウィンドウ表示してる場合は、ウィンドウからマウスカーソルが外れると向きが変わらなくなりますので、「マウスポインタ非表示」ボタンを押して、ボタンが消えたら再度ウィンドウ内をクリックすると、マウスカーソルが消えて向きを自由に変えられるようになります。ESCキーを押すとマウスカーソルが表示され、再度ESCキーを押すとボタンが表示されます。
ボタンを押した後再度クリックするのが面倒くさいんですが、昨今のブラウザのセキュリティ要件の様です。詐欺バナーとかあったりする弊害です。
右上のボタンを押して再度ウィンドウ内をクリックすると、全画面表示になります。ESCキーで解除します。
画面タップで音が鳴ります。
画面上の白い丸は、左が移動用のジョイスティック、右が見る方向と進む方向が変わります。
右上のボタンをタッチ、再度画面をタッチすると全画面表示、再度を押すと解除します。
全画面表示は画面が横向きの方が見やすく操作しやすいでしょう。
先ずは画面を横表示にして(やり方は機種によって違うので割愛)、右上に小さくなってるボタンをタッチして、再度画面をタッチすると全画面表示します。再度を押すと解除します。
*iPhone(safari)は横にするだけで全画面になるようなのでこの辺の操作は不要で全画面ボタンも機能しないようです。
2024-07-02 16:09:16 #このサイト
あー、もう今年も半分過ぎたか。
ちょっとUnityで観覧車回してて(前にHinge Jointで回してみたらゴンドラがびょんびょんして回らんかったけどコライダーをいい感じにしたら回った話はまたいずれ)Laravelイジれて無かったが、アクセスログ見たら月別の欄が(まだ入れて2週間経ってないのに)やたら件数あって「なんや?」と調査したら、ソート項目間違えてた。間違えてたのはええけど(よくない)クエリ的には整合してて、なんでそうなんのかが意味分からん。
まあそれは行き詰まったんで未来の自分に任せて、ついでに懸念のアクセスログ絞り込み機能を実装した。
ページとかIPアドレスとかを絞り込み対象にすることで、どこの誰がどういうアクセスしてるのか、主に悪さする系の動向を炙り出す用。
集計の各項目にフォームをセットして、クエリ条件に追加したら完成。
ググってワードプレスの不正アクセスファイル10選 ってサイトに載ってる「/wp-content/plugins/core-plugin/include.php」がログにあった😫んで試しに絞ってみると、誰(IP、ユーザエージェント)がいつのアクセスでやったんかが分かりやすい。
これで何を見てるんかの傾向出して、Denyリストとか作って該当の悪い子をアクセスログ処理んとこで無限牢獄に入れるなり自動通報するなりして、「僕の作った最強の防衛システム」みたいにする(かもしないかも)。まあそっち方面は最近すっかり疎いんで、またちょっと色々調べてからやなあ。
2024-06-26 20:15:06 #Laravel
先週、昔作ったサイトを色々見てて、アクセスログページを見つけた。
WordPressにした頃かその前やったか、世の中がGoogle Analyticsばっかになって、どんなもんやろかと使ってみるまでは、その都度で自作してた。
そのうちGoogle Analiticsは色々要らん情報まで取られるようになって、EUの法規制が厳しくなり始めた頃に自作のサイトから排除した。
その後特に必要ないまま、自作することもなかったが、今回サイトを新しくしてからお問い合わせにスパムがそこそこ来るw。レンサバの管理画面でアクセスログをチェックしよかと見たら、集計画面が無くなって、ログテキストのダウンロード(しかも日別)だけになってた。おいー。
うーん、取りあえず動向チェックして自動でスパム振り分け機能とか入れたいなあ、と思いつつ、そこまでモチベが無く進んでなかった。
という経緯があって、あーこれでええか、と実装決定。
見つけたアクセスログは2005年頃に書いたやつで、当時は当然スクラッチで、対象ページでaccess_log()
とかいちいち書いてた。Laravelならファサードか、と思ったが、ルーティングあるし一括でフックする方法があるやろと調べたら、Middlewareとやらでやるらしい。
処理したいクラスを書いたらapp/Http/Kernel.php
の$middleware
に追加するか、名前を付けてルートで指定するだけ。おー、分かりやすい。
前のテーブルそのまんまでマイグレーション書いて、Middleware書いて、常に記録するんでKernel.phpの$middlewareに追加したら動いた!お手軽!
Laravelて、IPとかuser agent(header)とかも$requestに入ってんのなあ。
そうしてアクセスログの集計ページも、前に使ってたクエリそのまんまをクエリビルダに書き換えて作成。
fromをサブクエリで書く方法がクエリビルダのマニュアルに見つからず「あれ?無いんか?」と思ったら、ググったらLaravelのソース調べて見つけたって記事があった。助かる。
前の集計グラフは太古の技術で1ピクセル画像を広げてたりして、全てが前世代HTML+CSSやったんで、当然の全書き換え。bootstrapでどう並べるんや?と手間取りながら何とかまとめる。
動作確認してたら自分のアクセス毎にカウントアップするのがやっぱ気になる。
元のはログにユーザIDを入れて集計時に除外してたけど、Middlewareの処理でログイン情報取得出来んかったんで放置してたんやった。
改めて調べると、$next()でそのページの処理をやってて、$next()の前で事前処理するか、後で事後処理するかということ。なら事後処理ならログイン情報も取れてるか?と改修したら取れてた。
そうしてアクセスログが設置完了。テストして本番適用。
なんか毎日結構な量のハックなアクセスあんなあ。(;´Д`)
あんま変なとこばっか覗いてたら痛い目に遭わせたくなるやでw。