simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

Game

CubeWalk:ワールドチケットの仕組み

実装メモです 整理出来たら消します。 ワールドチケット? 世界を編集できる権限をユーザーに付与したいという要求に対して、出した答えユーザーのインベントリに ticket カタログに所属するワールドチケットアイテムを買ってもらい そのチケットには有効期…

CubeWalkGame:AIが使う脳内コンテキスト

前書き 自作ゲームの開発ネタです。 考えていることを書くと、頭が整理されてコードに落とし込める気がして最近の進捗絵はこんな感じ木のぼり動画はこちら 作りたいのはワールドロジックとその共用 世界がどうなるかの先行きを小さなロジックを使って取り扱…

CubeWalk:自分で遊んでダメ出し

ずっと未公開だったメモ記事 公開して完成時に当時を振り返ります。 前書き 最近のチート対策のサーバー側の複雑な CustomData 計算は本当はやりたくなかったんですけど、こまめに記録しながらなんとか動き始めました。 たとえるなら、まだごみが詰まった歯…

CubeWalk:ゲーム開始までの流れをどう実装するか案

これまた下書きのままずっと放置されていた記事 Unity のコンポーネントが Start や Awake で好き放題やるのは、引き継いだり後から見直したときに 全体で何しているかわからないので、例えばオンラインのログイン完了後に処理してほしいとかそういうの指示…

Unity: VRでも使えるインタラクティブ水面シェーダーがアセットストアに並びました

記念I wanted to share this asset with you: Simple Interactive Water for URP VR by simplestar-game #UnityAssetStore https://assetstore.unity.com/packages/2d/textures-materials/water/simple-interactive-water-for-urp-vr-162033良い日でした!

CubeWalk: go言語cacheサーバーのリージョン選定

前書き 先月、こちらに登壇して PlayFab の CloudScript で同時実行を回避しつつ、不正させないゲームのためのアイディアを語ってみたのですが jpfug.connpass.com 質問者から CloudScript が実行されている場所って US West オレゴンだから、日本にキャッシ…

Imagemagick:画像のエッジを引き延ばして格子状に再配置

前書き キューブの見た目を更新する目的で動いています。前回は Shader ができたところまで simplestar-tech.hatenablog.com今回はテクスチャを連番で結合する処理を作ります。 大分前に python の pillow で画像処理を書きましたが… github.com 処理が遅す…

「NORMALMAP ONLINE」ノーマルマップをノイズ画像から作る

前置き 水面の波を作ろうと思って、Normal Map 作成の壁?に当たったので、濃淡画像に sobel フィルターとか与えて法線マップ作るプログラムを書こうとしたのですけど 一般的な問題すぎるので、ネットに転がっているだろうと調べたら、Web アプリとして公開…

CubeWalk:スロット番号をリクエストするとアイテムが増えたり減ったり

前置き ゲームに登場する世界データは全プレイヤー間で一つ 配置場所を表すインデックスでアクセスし、データは 32 bit のキューブ情報の集合体です。 クライアントから直接この世界データにアクセスするにはインデックス指定は必須だと思いますが、配置する…

CubeWalk:ホットバーUIの作成

前置き だんだん作るものが具体的になってきました。 現在はキューブを配置するときのためにホットバーが必要です。 インベントリ操作は Inventory モードに入ったときで、そのときにはホットバーが不要 それ以外の Explore モードではホットバーが必要です…

Unity:Animatorからステートを取得

前書き ゲーム開発していて、入力モードが増えてきて、ステート管理していきたいと思う中 Unity の State Machine って Mecanim の AnimatorController だなぁと気づき デバッグ時にステートを遷移を可視化しつつ、これをスクリプトから操作や取得できたらい…

CubeWalk:カスタムデータを更新するリクエスト CloudScript の実装

構想7ステップの4つ目 半月前の構想をまとめたものがこちら simplestar-tech.hatenablog.com今回は表題の通り Microsoft PlayFab の CloudScript を用意して、クライアントで行うアイテムslot変更操作をサーバーに反映させます。 クライアントでスロット操作…

CubeWalk:マウス操作でインベントリのアイテムを移動できる機能

概要 半月前に構想した内容がこちら simplestar-tech.hatenablog.com前々回、前回で進んだ内容が以下 1.R Ctrl でキューブ、SideA, SideB キューブと配置形状が切り替わる 2.オンラインのインベントリ情報を受け取って表示する機能今回は 3/7 ステップと…

CubeWalk:インベントリ情報を受け取って表示する機能

概要 構想によって作られたステップ 2/7 を今回はクリアしたいと思います。 simplestar-tech.hatenablog.com表題の通り PlayFab からインベントリの情報を取得して、これを UI で表示します。 簡易なシーン PlayFab のスクリプトをシーンに追加して試験環境…

CubeWalk:R Ctrl でキューブ、SideA, SideB と配置形状が切り替わる

概要 構想に近づけるため、最初のステップを踏みます simplestar-tech.hatenablog.com 右クリックすると無限に 2 x 2 のプリズムを配置する現在 これを右クリック中 R Ctrl キーを押すと、プリズム A, プリズム B と切り替わり その時に右クリックを終了する…

CubeWalk:世界の境界の向こう側は無

世界データは最大 67MB まずは事実から バイナリキャッシュサーバーに 16 x 16 x 16 x 16 x 16 x 16 x 4 byte のデータを格納しています。 一時間おきに PlayFab からパスワード付きのリクエストを https で送信して PlayFab の CDN に gzip 圧縮データをア…

PlayFab:ログインタイミングを気にせずプログラミングする術~ファイル編

コンテキスト PlayFab から世界データ拾ってきたいなぁ でもログインまだだった 失敗なんてことが絶対に起こらないようなPlayFab から世界データ取得を成功させる仕組みを考えたい もう作ってた! simplestar-tech.hatenablog.comしばらく Unity から離れて…

CubeWalk:水平な世界データから始める

はじめに PlayFab ログイン成功後、CDNから世界圧縮データを取得し Unity で展開してから、それぞれのチャンク配列を確保し、データを詰めていく 詰め終わったら、ゲームシーンを開始する世界圧縮データを最初は作らなければならない 世界データは16,777,216…

Unity:キューブの配置

前書き 破壊についてはこちら simplestar-tech.hatenablog.com今回は配置を考えていきます。作る前から見えている絵は…右クリック開始で 配置先が見える アローキーで配置先が回転 右クリック解除で配置具体的な実装を進めてみましょう。 前回の配置は? 以…

Unity:CubeWalkゲームの起動方法

Magic Onion やその他さまざまなパッケージに頼っているため、インストールの仕方を間違えると起動しないという問題があります。 エラーもすごくわかりづらい… いつまでも記憶しておくことはできない、ゆえにコストを割いてここに記録しておきます。 Unity …

Unity:UniversalRP de MasterNode (v7.1.2)

目まぐるしく変わる Unity の Universal RP の実装その実装に合わせてカスタム MasterNode を作り替え続ける備忘録である 手順 Unity 2019.3.0b6 を落して、テンプレートに Universal RP を選ぼうUniversalRPテンプレートを選ぶ起動すると次の画面になります…

Unity:CubeWalkゲームのキューブの破壊

前作のキューブの破壊は? 今回の更新で洞窟やかまくらが作れるようになりました昔はこんな感じでキューブの位置から、キューブのデータを特定していた模様 internal unsafe bool GetCubeByPosition(Vector3 position, out Vector3Int chunkIndex, out Vecto…

ビデオゲームのたのしさのデザイン

UniteTokyo2019 に参加してきました。そこで休憩時間に流れた動画を見ていて、気になって一通り見ようと思ったので、次の動画を見ることにしました。 あそびのデザイン講座 特別編「たのしさの作り方」 学んだこととして、あそびの4要素競争 めまい 偶然 模…

CubeWalk:キューブの選択

まえがき 2度の作り直しを経て、現在は VRoid Hub SDK 経由で VRM キャラクターデータを利用して Cube の世界を自由に歩き回ることができるようになっています。 www.youtube.comバックエンドサービスの PlayFab の CloudScript から API Gateway と Lambda…

Unity:CubeWalkゲームにてCtrl キーを押すとカーソルが現れる

まえがき Unity で三人称視点でキャラクターを動かすアセットを利用しています。 assetstore.unity.com このアセットをアクティブにするとマウスカーソルが消えてしまいます。キャラクターがロードされるとマウスカーソルが消える(ロックされる)変えたいこ…

AWS:お金のかからないElastiCache活用術1

まえがき CubeWalk ゲームは…キューブを置く処理に不正がないようサーバーで実行されます。 世界の情報はたった一つのサーバーであるため、負荷分散を考えて DB は同時アクセスに耐えられる DynamoDB などを考えてみましたが 世界データを格納するだけで 600…

PlayFab:ログインタイミングを気にせずプログラミングする術

最初にひらめいたのはアクションをキューイングすればいいんだよ!の一言言葉をプログラムに書き下すと次の通り ちゃんと期待通り動いた前の記事 simplestar-tech.hatenablog.comの TitleData を取得する関数の処理、コールバックで成功を返すつくりなので、…

PlayFab:タイトルデータで接続先サーバーを知る

基本はここで学びます。 qiita.com任意のデータ構造を配列で取得できるようになったら、少し汎用的なタイトルデータ取得コードを記述します。C# でジェネリックの型名を文字列で取得するには var type = typeof(T); var titleData = JsonSerializer.Deserial…

PlayFab:Unityゲーム内課金システムPayPal編

個人ゲーム制作でも何百万人にも膨れ上がるユーザーを平気で捌ける順応性のあるバックエンドサービスを短期無料で作れる時代になりました。 Amazon の GameSparks, Google の Firebase, Microsoft の PlayFab, 富士通クラウドテクノロジーズのmobile backend…

PlayFab:UnityのバックエンドとしてのAWS入門

不正を許さないため、オンラインゲームは基本的に現実のお金でのアイテムの購入、ゲーム内の仮想通貨やアイテムの交換はクライアント側では行わずにサーバー側で行います。 そうした不正を許さないバックエンド処理に使う api とデータベースをほぼ無料で使…