カウンターストップ

カウンターストップ（"Counter Stop"）またはカウントストップ（"Count Stop"）とは、数字のカウントが上限に達し、それ以上のカウントがストップされること。主にコンピュータ分野、特にテレビゲーム・アーケードゲームにおいて用いられる和製英語。略称はカンスト。
例えば得点が「999,999,999」のように、システム上それより上昇しない状況を指す。カンストが達成されれば、自動的にそのスコアが最終スコアとなり、集計は終了する。ゲームによってはカウンターがストップせず、再び0からカウントし直される場合もある（算術オーバーフロー）。その場合では例えば、「999,999,999」の次の値は「1,000,000,000」ではなく「0（000,000,000、十億の桁がない）」となる。
スコアのあるアクション・シューティング系のゲームに限らず、ロールプレイングゲームやシミュレーションゲームなどのパラメータなどについても用いられる。また1990年代末期に話題になった2000年問題も、年数のカウントが機械的な上限を超えることによって発生するとされた諸問題を警戒したものであった。
概要.
ある変数の値がその変数が扱える限界を超えている場合、一定値以上のカウントをストップするようプログラムを組んでいないと機械的なオーバーフローが発生し、予期しない動作やフリーズを起こし、そのままプレイを強行すれば最悪の場合セーブデータの破損や機械的な故障を起こすなどの結果が起こりうる。また、変数の型によっては、一定以上の値は負の数として扱われるため（原理は2の補数を参照）、それを考慮していないプログラムではさまざまな不具合が発生することが予想される。
そういったことを防ぐため、プログラム側で特定の値を超えている場合に当該変数の値を上限値に設定してしまう処理、もしくはその処理によってカウントが進まなくなった状態をカウンターストップ (counter stop)、略してカンストと呼ぶ。以下カウンターストップを「カンスト」と表記する。
カンストする値は数桁の10進数整数の上限、もしくは数桁の2進数整数の上限となることが多い。前者の例は999や9999、後者の例は255（=28－1=111111112）〈『ファイナルファンタジー』〉や65535（=216－1=11111111111111112）〈『ぷよぷよ』〉である。
若干複雑なケースとして、理論上の上限をエラー値などに使っているためにカンストの値をそれより小さい値にしているケースもある（たとえば65535ではなく65534）。
表示される値が内部表現の整数倍になっている場合もあるが、こちらは表示時点での処理である場合もある（例えば全てのスコアが10の倍数である場合に、内部処理的にはその1/10の値を得点として設定し表示において後ろに"0"を付加することにより、内部処理での限界を65535としつつ最高得点を655350とすることができる）。
負の値を防ぐため、数値が減少すべき場合に0または1を最小として止めることもある。単に符号あり整数を使っていないか、負値を回避したい場合に行われる。
人為的なカンスト.
機械的な都合とは別に、ゲーム上の理由でプログラム上の制約とは別に人為的な上限値を設定する場合もある。例えばロールプレイングゲームのキャラクターの能力値が際限なく上がり続けると、ゲームの難易度を著しく下げてしまい、ゲームバランスを崩してしまう。『アイドルマスター』では各種能力値のカンストが育成の重要な要素となっており、各種要素のカンストを意識しながら育成して行くことが効率的なプレイにつながるようになっている。もしこのカンスト値を超えているのを見かけた場合、それはバグもしくはチートを利用していることになる。
また、単にプログラミング上の設定だけではなく、ゲームのプレイ中にある条件により、本来もらえるはずの経験値などが条件を満たすまでもらえない作為的な状態を指す場合もある（『クイズマジックアカデミー3』及び『5』における階級昇格条件や、MMORPGなどにおける「レベルキャップ」と呼ばれる物など）。
なお、通常のカンスト（上限値を設定）とは逆に、0未満の数値を0でカンストさせるケースも多い。これも人為的なカンストの一種である。機械的な理由のないTCGやTRPGなどのアナログゲームにおいても、0未満の数値を全て0とみなす措置を行っていることが多いが、これも一種のカンストである。
表示上のみのカンスト.
単に表示上の都合で一定桁数でカウントを止めるように見せかけるケースもある。この場合、画面上では確認できないが内部的には本来の値で計算が行われていることがある。逆に「ある値」より高い数値が表示されていても、計算上は「ある値」で扱われることもある。
カンストと上限値.
ゲーム機の処理能力が向上し、より大きい数値を扱えるようになるに従って、通常のプレイの範囲内ではユーザが（ゲームの難易度と直結しない得点などでは）カンストに出会うことはないように設計される傾向にある。カンストに出会うこと自体は、どちらかというとやり込みに近い概念でもある。よって、プレイを続行が不可能となったりセーブデータが壊れたりしない限りは、ビジネス用ソフトウェアと違ってバグ扱いされることは少なく、製作側からは仕様の一つであると説明されることが多い。
カンストは「理論値」（ゲームをチートなしでプレイしたときに獲得できる得点などの限界を理論的に推測した値）とは異なる概念である。例えば、『pop'n music』や『トップランディング』では得点に上限値があるがこれはカンストではなく、明確に「満点」が決められていて、それを音符数で分割したり、ミスごとに減点したりする方法で評価されており、「満点」＝「理論値」となっているため、満点を超える点数は絶対に出ないが、この満点をカンストと呼ぶことはない。
BEMANIシリーズなど満点を「理論値」として設定しているケースも多く、その場合は完璧なプレーにおいてスコアがその値になるように得点計算が行われる（得点計算において各ノートの得点を算出する際に発生した端数を最後のノートにおける得点に加算する、等）。
ただしGITADORAでは各種ボーナスのない素のスコアにおける満点が100万点に設定されており、理論値(完璧にプレイした際の各種ボーナスも含めた上限値)=100万点ではない。その上GuitarFreaksの場合は遅延ワイリングによって理論値を突破するケースもある。
本来は（ループゲームで理論値が無限大でないかぎりは）理論値ではカンストすることがないように設計されるはずだが、見込み違いによりカンストしてしまうケースもある。
ハイスコア集計上におけるカンスト.
現在アルカディアのハイスコア集計では、ループゲームに限り、1000万点以上のスコアが出るものは一律「1000万点+α」という区切りで集計を終了する。これも一種のカウンターストップと言える。1000万で区切りになる理由としてはゼビウスの1000万点カウンターストップに敬意を払っているというのが一般的な意見。
そのほかにも、カウンターストップするまでの時間を競うやり込みもある（タイムアタックの一種）。
カンストに関連する不具合の例.
オーバーフローによる不具合の例.
先述した「特定の値を超えた場合にその特定の値に再設定する」という処理を行わないことによって不具合が発生する例。
カンストによる不具合.
「特定の値を超えた場合にその特定の値に再設定する」処理により、別方面で不具合と見られる現象が起きるケースもあり得る。