アイドルゲームのビッグナンバーの名前





(レーンに注意してください:記事で与えられたアルゴリズムは、短いスケールでの千の程度の名前を指します。)



少し前に、私はアイドルジャンルのゲームの開発に参加する機会を得ました。 アイドルゲームとは何ですか? このテンポの速いジャンルについて初めて耳にする場合は、 Adventure Capitalistをプレイしてみてください。 GamasutraのWebサイトには、ジャンルをもう少し詳しく見ることができるいくつかの記事( 1、2、3、4 )もあります。



アイドルゲーム開発者が必然的に遭遇する問題の1つは、これらの膨大な数をすべて画面に配置する方法であり、さらに重要なことは、プレーヤーがそれらを把握する方法です。 この記事では、非常に長い数字をプレイヤーにとって便利な文字列として書き換える方法を説明します。 このプロセスは、2つの主要な部分に分けることができます。



  1. まず、数値を指数表記で表します。 何人かの遊戯的なゲーム開発者はこれこだわっており一部のプレイヤーそれを好むようです。 Wolfram MathWorldには、数値を変換するための非常に簡単なアルゴリズムがあり 、これを使用します。 しかし、ビットをいじくり回したい場合に使用できる別のアプローチがあります 。 言及しただけですが、この記事では考慮しません。 ゲームで使用する場合は、この記事のダウンロードフォルダーをご覧ください。このフォルダーには、使いやすい指数表記スクリプトがあります。



    ScientificNotation.FromDouble(12340000); // .significand == 1.234; .exponent == 7





  2. 指数表記で数字の表現を見つけたら、その順序に名前を選択できます。 これがこの記事の主なタスクになります。


ソースをダウンロード



ソースコードはダウンロード可能で、アイドルゲームですぐに使用できます。 使い方は簡単です。



LargeNumber.ToString (12340000); // "12.34 million"







また、ダウンロードファイルには小さなサンプルプログラムが含まれており、ゲーム内で大きな数値が文字列に変換される方法を示しています( 前の記事で説明したボタンスクリプトを使用)。







これはすべて、主にUnityでのネットワークの操作に関するチュートリアル( 1、2、3 )から書かれた私の記事の一部に付随するコード例の一部です。 コード例をダウンロードして、それらの動作を確認してください!



標準の数値書式文字列



100万未満の数字は非常に小さく、深刻な処理を必要としません。 C#番号組み込みの書式設定機能に依存することができます 。彼らは私たちのためにほとんどの仕事をします:



double x = 987654.321

x.ToString ("N2"); // "987,654.32"








適切な引数をToStringメソッドに追加することにより、区切り文字と制限された小数点以下の桁をほぼ簡単にグループ化できます。 追加の除算を実行したり、切り捨て関数を使用たりする必要はありません。



それほど大きな数字ではないラテン語の接頭辞



数百万(数百万)、数十億(十億)、兆(兆)などで表される多数を扱うとき、名前は3桁ごとに変わることがわかります。 指数表記の数字を持っているので、順序が6から8の場合は数百万で、9から11の場合は10億で、12から14の場合は1兆で表されることがわかります。 指数表記の数値の一般的な形式:



M x 10 N







Nを次のように表現する必要があります。



N = 3(U+1) + V, V < 3







次に、番号の最終行は次のようになります。



M*(10^V) Name(U)+"llion"







ここで、 名前(U)は、次のラテン語プレフィックステーブルから取得できます。



うん 名前(U)
1 mi
2 バイ
3 トライ
4 クアドリ
5 キンティ
6 セクスティ
7 セプティ
8 オクティ
9 ノニ


たとえば、数字123,000,000,000,000,000を処理する場合、次のような指数表記で表現できます。



1.23 x 10 17 , M = 1.23 N = 17







Nを書き換えると、次のようになります。



17 = 3*(4+1) + 2, U = 4 V = 2







これは、数値が次のように見えることを意味します。



1.23*(10 2 ) Name(4)+"llion"







簡略化すると、以下が得られます。



123 quadrillion







多数のプレフィックスの組み合わせ



ウィキペディアには、名前が多数に与えられる方法を説明する有用な記事があります。 私はそこに書かれていることを繰り返しません。 代わりに、アルゴリズムにアプローチする方法を説明し、いくつかの例を示します。



数値のUの値(およそTransl。:以下、著者はNと言うが、これは明らかに間違っている)を受け取った後、ラテン語の接頭辞を持つ数値で行ったように、ビット(単位、数十、数百)に分割してから定式化する必要があります次のようなタイトル:



( ) + () + ( ) + ( ) + ( "a" ) + "llion"







単位、数十、数百の接頭辞は、ウィキペディアの記事のから取得できます。 特定のユニットプレフィックスに加えて、数十または数百のプレフィックスを配置する場合、修飾子を追加する必要がある場合がありますが、ほとんどの場合、修飾子は必要ありません。 いくつかの例を見てみましょう。



U = 12の場合、ユニットの場合、数字は2になり、これは"duo"に対応し、10の場合-1は"deci"に対応します。 「duo」から「deci」に切り替える場合修飾子は必要ありません。 上記の式を使用して、「十二十億」を取得します。



U = 27の場合、単位の場合、数字は7( 「septe」に対応)、数十-2( 「viginti」に対応)です。 表によると、 septeからvigintiへの移行には修飾子mが必要です。 すべてをまとめると、 「septemvigintillion」になります。



最後に、 U = 30の場合、10の桁は3です。これは、末尾が「a」の 「triginta」に対応します。 したがって、私たちはそれを破棄し、3 兆を獲得します。



これがコードでどのように見えるかを理解しようとしている場合、私は答えます:それは配列検索、複数のifコンストラクト、および連結と文字列置換操作の組み合わせになります。 運がよく、パターンとの比較をサポートする言語で作業している場合は、それらを使用できます。



ソースコードファイルには、U = 999までのすべてのケースを処理する実用的な実装が含まれています。多数のリストに含まれるすべての名前でテストされています。 自分のプロジェクトに簡単に挿入できるすぐに使用できるコードが必要な場合、または実装を実際のバージョンと比較したい場合は、ダウンロードすることをお勧めします。



U = 1000の場合



それから数は百万と呼ばれます(およそTransl。:長いスケールで-quingentiard)



大きな数字では十分ではありません



倍精度浮動小数点数を使用すると、最大10 308 、またはU = 101 までの数値を処理できます。 ゲームでより大きな数字が必要な場合は、 任意の精度で数字を保存してみてください。 したがって、プレイヤーを億万長者にすることができます。



しかし、最初に本当に必要かどうかを自問してください。 Infinityはゲーム開発のための十分なスペースを提供し、与えられたスペースをすべて埋めようとする必要はありません。 私の大学教授を言い換えると:「考えられる最大の有限数を考えてください。 次に、彼の指数と同じ数を使用し、その数を自分の力で増やします。 この数値を実数の軸上に配置すると、無限大と比較しても、ゼロに非常に近くなります。



倍精度の数値を超えることで、ゲームはさらに面白くなりますか? 一部のゲームでは、答えは肯定的かもしれませんが、ほとんどの場合、ゲームのバランスとデザインについて再考することをお勧めします( 1、2、3、4 )。



記事が気に入ったら、 プロジェクトフォルダをダウンロードすることを忘れないでください ! 独自のゲームの開発に役立つことを願っています。 読んでくれてありがとう!



All Articles