simplestarの技術ブログ

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

PlayFab

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

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

課金するとデータサーバーが起動して、お金が尽きたら勝手にデータサーバーを止める仕組みづくり

前書き 長いことはじまりの世界のデータサーバーは一つ AWS Elastic Beanstalk で環境を用意して運用して半年~1年が過ぎようとしてますここでモチベーションがあがる機能追加案がありまして、世界を広げるという操作をプレイヤーが行えるようにする 具体的…

Unity:オンラインゲームにMicrosoft Azure Functions C# と PlayFab はいかが?

記事を公開 qiita.com

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

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

Unity: URPのモザイクシェーダーと水面シェーダー

Simple Interactive Water1/14 に twitter で知り合った方に、その方が作成したオンライン VR ゲームに誘われてログイン こちらのマイクの設定が初めてで最後までつなぎ方がわからなかったのだけど、面白い話を聞かせてもらいました。なんとも VR 空間の、そ…

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

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

PlayFab:CloudScriptの実行頻度からクライアントを改竄したリクエストを無視する

前置き 自作ゲームの PlayFab におけるチート行為防止の話です。現在の見た目(ここのところ変わってませんね)キューブで構成される世界データをたった一つのサーバーに格納しています。 simplestar-tech.hatenablog.com今のところユーザーからのリクエスト…

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

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

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

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

PlayFab:キューブ破壊後にキューブデータをインベントリへ格納

キューブ保存の法則 世界のデータは減りも増えもしない(神様の創造は例外) キューブを破壊しようとしたら、その破壊をバイナリキャッシュサーバーが判定し 成功したならインベントリにそのキューブの情報が格納される仕組みを作ります。 インベントリの操…

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

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

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

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

PlayFab:golangサーバーからCDNのFileContentにファイルをアップロード

概要 やりたいことは半年前から変わらず、キューブの世界のデータをバイナリキャッシュサーバーに置き PlayFab ログインユーザーが Unity クライアントから CDN 経由で最新の世界データを引いてくることです。 できれば圧縮したファイルをユーザーに届けたい…

AWS:golangバイナリキャッシュサーバーがS3にバックアップを保存&復帰

前提 http リクエストで int データを受け渡すバイナリキャッシュサーバーが完成しています。前回の作業記録をなぞるだけ simplestar-tech.hatenablog.com 大きな目的 PlayFab の CloudScripts から int or byte x 4 データを受け渡すバイナリキャッシュサー…

Unity:CubeWalkゲームの起動方法

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

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 とデータベースをほぼ無料で使…

オンライン部分の構想をメモ

S3にチャンク情報を置いてDynamoDBにブロックの編集情報を置いて定期的に DynamoDB から S3 のチャンク情報をアップデートするようにしつつリアルタイム通信は gRPC を使いルームマッチにはサーバレス Web API を利用する感じ?クライアントは Unity のハイ…