投稿

ラベル(Googleスプレッドシート)が付いた投稿を表示しています

D&B Part1『脱出』技術的なメモ

制作ノートでは軽く触れただけのデータ送受信について、忘れないように記録を残しておく。 → 制作ノート   データ送受信 今までの作品はJavascriptのみで作られていた。つまりクライアント側のみで動作するプログラムであり、サーバーにデータを送信したり、サーバーからデータを受信したりする処理は無かった。 今回、タイムアタックをゲーム性のメインに持ってきたかったので、タイムスコアをサーバーに送信して蓄積し、ランキングを受信して表示する事が必要になった。 真面目にサーバー環境を構築するという選択肢もあったのだが、試しにGoogleスプレッドシートにデータを送信して蓄積し、Googleスプレッドシート側でランキング集計用シートを作成し、受診時はシートの内容を取得するだけというシンプルな構成を作ってみた。 GoogleスプレッドシートにはQUERY関数というデータベースを操作するSQLのSELECT文のような関数が存在するので、集計用のシートを作成してランキングデータを表示するのは実に簡単だった。 データ蓄積用のシートをQUERY関数で参照するだけでランキング集計済みのシートが出来上がるのでApps Scriptでシートを取得して戻せばJavascript側で簡単に表示できる。 しかし、実は実装に苦労した。 Javascriptはブラウザのコンソールを見ていればエラーの原因がわかるのだけど、Apps Scirpt側でのエラーはコンソール上ではわからないのでブラックボックスのようになってしまう。 まぁこれはPostmanを利用することでAPI(Apps Scirpt)側のエラーがわかるようになって解決したのだけど、気づくまではけっこう大変だった。 (ブラウザのコンソールではApps Scirpt側のエラーは全てCORSエラーとして表示される。しかし、実際は返答がないだけでCORSエラーではない。ChatGPTやGeminiにエラーを分析させてもてんで見当違いな改善策が提示されるが、それはCORSエラーを改善しようとする内容だからであり、実際にはCORSエラーではないのだから解決しないのは当然であった) それと、今回タイムスコアの送信とランキングの受信のみなので大きな問題は発生していないけども、Apps Scirptからスプレッドシートへのアクセスにはタイムラグが結構...

ガチャの確率を真面目に計算してみた

イメージ
 日本のゲームアプリ市場において、存在感のあるシステムとしてガチャシステムがある。 私はこのシステムをあまり好きではない。しかし、このシステムを採用したゲームを未だにプレイし続けている。三国志ゲームアプリ『ごっつ三国』である。 ガチャシステムというのは、昔から駄菓子屋にあったガチャガチャ、ガシャポンなどとも言われる、お金を入れてガチャっとレバーを回すとおもちゃなどが出てくるあれをベースにして考えられたシステムである。 本物のガチャガチャはレア物のおもちゃがあるとしてもそれほど低確率ではないが、ゲーム内のガチャシステムでは極端にレアなキャラというのが存在して滅多に手に入らないようになっている。 『ごっつ三国』の場合、最高レア度の皇帝クラスになると確率は0.1%、つまり1000分の1の確率である。 ところで、1000分の1という確率は1000回行うと当選すると期待しがちだが、実際はそんな事は無い。 小さな数字で例えると、1本だけあたりの6本しか無いくじを6回引くと当然ながら100%くじは当たる。1本引くごとに残りが少なくなるのだから6回引けば全て無くなる。 しかし、サイコロを6回振って1が必ず出るかとなると、これは出ない。同じ数字が何度も出る可能性があるから当然である。 出る確率を計算すると6面体サイコロを6回振って1が出る確率は66.51%となり、3分の2程度しか1が出ないことがわかる。 =1-(5/6)^6 では、0.1%のガチャは1000回振るとどうなるか? スプレッドシートでちょっと計算してみよう。 確率 回数 確率 0.10% 5000 99.33% 0.10% 4000 98.17% 0.10% 3000 95.03% 0.10% 2000 86.48% 0.10% 1500 77.70% 0.10% 1400 75.36% 0.10% 1300 72.76% 0.10% 1200 69.90% 0.10% 1100 66.73% 0.10% 1000 63.23% 0.10% 900 59.36% 0.10% 800 55.09% 0.10% 700 50.36% 0.10% 600 45.14% 0.10% 500 39.36% 0.10% 400 32.98% 0.10% 300 25.93% 0.10% 200 18.14% 0.10% 10...