simplestarの技術ブログ

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

Online Game

CubeArtWorld:ユーザーショップ機能

長らく作ってる姿をお見せしてきたゲームは、ついに昨年クリスマスにリリースしました! booth.pmひそかにブログを見守ってくれたそこのあなたに、ぜひ買って遊んで、口コミで世に広めてもらいたいです。ご協力お願いします。今回は、そのゲームタイトル「 C…

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

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

AWS:LambdaにAuthorizerを設置してからAPIGatewayを公開する

前書き インスタンスを start するだけで docker コンテナが起動して、機能し始めるというのは用意できてます。 あとはこれを PlayFab から HTTP リクエストで呼び出すだけ、なのですが、ここで公開 API でありつつも 認可の仕組みありきという API Gateway …

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

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

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

記事を公開 qiita.com

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

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

Unity:はじめてのAddressable Assets(AWS CloudFront に S3 バケット設定でCDNを有効化)

前書き 未公開の作業記事が形にならないまま積み重なっていますが、明確なゴールとして切れる課題が見つかったので今回の記事を書きます。はじめての Addressable Assets と題して、AWS の CloudFront についてもはじめて触ってみて Unity のアセットを CDN …

2019年を振り返る

1月 VRMとやらを触ったり、新しい InputSystem とかゲームの土台に導入してみたり、Unity でのゲーム作りについて勉強してました。simplestar-tech.hatenablog.com 3月 AWS を Unity から直接さわるなど、オンラインゲームを作るためのインフラの調査とか始…

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

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

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 のスクリプトをシーンに追加して試験環境…

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

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

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 データを受け渡すバイナリキャッシュサー…

AWS:golang Web Server を binary cache DB とする2/2

前回までのあらすじ simplestar-tech.hatenablog.com Amazon にクレジットカードを登録してボタンをいくつか押すと、世界に向けて golang のサーバーが TLS の秘匿通信で公開され ログ拡張でアプリの動作の内容がわかるところまで、初心者でも Web サーバー…

AWS:golang Web Server を binary cache DB とする1/2

go 言語で巨大な int 配列の確保と利用 ゲームではキューブは 4byte の情報構造体で値は int 32bit の配列で格納したいと思っています。 go でも C++ のように int 配列作って、ポインタで保持しておけばいつでもランダムアクセスできるんですよね? をコー…

AWS:WebサーバーをGoLangで

前書き ゲームはローカルでブロックを破壊・配置できる基本の枠組みが整いつつあります。 ここで破壊したときに世界からブロックの情報を破棄してプレイヤーのインベントリに追加しなければならず 配置したときにインベントリから消して、世界に配置しなけれ…

Azure:Redis Cacheサーバーを立ててみる

確認したいこと やりたいのはトークンによる認可と文字列データのやりとり バックアップの取得を自動化して解析結果を利用かな はじめての Azure Azure を使ったことないので、ちょっとどんなものなのか見てみます。 とりあえずアカウントを作って、コンソー…

Unity:CubeWalkゲームの起動方法

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

CubeWalk:キューブの選択

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

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

simplestar-tech.hatenablog.com の続きローカル環境で Cube データを仮で Redis Mass Insertion するための plotocol を生成する C# コードがこちら using System.IO; using System.Text; namespace CubeWalkDataMaker { class Program { static void Main(…

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

simplestar-tech.hatenablog.com のつづき 適当な値を redis に詰める ローカルに立てた Redis 5.0.5 サーバー、適当な値を詰めてみます。 たとえばkey : value 9999 : 100 ffff : 100 abcd : efghこれを前回導入した rdb-tools で json に出力してみましょ…

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

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

AWS:はじめてのAPI Gateway⇄Lambda

概要 前回の Lambda と ElastiCache は VPC 内に引きこもるため(そういうセキュリティグループに配置したので)、インターネットからアクセスすることはできません。 simplestar-tech.hatenablog.com API Gateway からトークン認証付きで Lambda を呼べるよ…

AWS:はじめてのLambda⇄ElastiCache

概要 PlayFab のバックエンド処理が AWS と連携できます。 具体的には同期 http 通信が行えるので、そこを AWS の API Gateway → Lambda → ElastiCache とつなぎます。 前回の記事 simplestar-tech.hatenablog.com で確認できた ElastiCache と Lambda の接…

AWS:はじめてのElastiCache

まずはチュートリアルに従って動かしてみましょう。 docs.aws.amazon.com ステップ 1: クラスターを起動する 気にするべきは、新しいセキュリティグループを作成しておくことです。 インバウンドポートは 6379 でソースIPは別途用意した EC2 インスタンスの…

VRoidHubにログインしないでゲームを続けられる実装調査

ログインしないときの動作を策定するにあたり、現状を整理し、作業ログを残します。 簡単に今のフローをおさらい VRoid Hub のログインは VRoid SDK のサンプルに任せっきり ゲームを起動すると起動直後「VRoid Hub に接続」ボタンを表示、同時に「☓」の閉じ…

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

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