iOSアプリストアでトップセラーの数独ゲームを持っています。パズルを生成する方法は次のとおりです。
まず、パズルジェネレーターアプリケーションがあります。しかし、それはゲームのコードの一部ではありません。これは、パズルを作成するために使用するスタンドアロンのアプリです。高度に修正されているため、さまざまなパターンタイプ、難易度評価、与えられた数などを作成するように設定できます。パズルを生成し、一貫した難易度を取得することは、その場で行うのが難しく、プレイヤーが待ちたい時間よりも時間がかかります。だから、私は「シードパズル」と呼ぶものを生成します。それは、人々がプレイするパズルを生成するためにゲームのコードによって使用されるものです。
ここでは、ジェネレータのコーディング方法については答えていません。Googleを使用して、大量のパズルジェネレータコードをオンラインで見つけることができます。そこから始めましょう。しかし、良いゲームを作るには、良いゲームを作る必要があります。私のゲームはパズルを即座に生成しません。
私のパズルジェネレーターアプリは、1分間に数千のパズルを生成しますが、すべてがうまくいくわけではなく、すべてが特定の難易度評価と一致するわけではありません。ジェネレーターはパズルを作成し、それを解決して難易度を計算し、パズルを解決するために必要な技術に基づいてパズルをスコアリングし、それを解決するために推測が必要かどうかを判断します(通常は悪い)。基準に一致しないパズルを投げ出します。難しいが不可能ではないパズルの場合、高速マシンでは、私の仕様に合った100個のパズルを生成するのに1時間かかることがあります。これがアプリでこれをしない理由です。これらの厳しい仕様を使用してパズルをオンザフライで生成することは、アプリにあるパズルの品質には役立ちません。
パズルは、文字列で、長さ162文字、数字が81文字で、空白が配置される点とダッシュまたはドットがあり、さらに81文字が解決策です。次に、シングル、ダブルなどの数など、各統計の列
すべての生成セッションからの出力は、列として統計を含むカンマ区切りの行です。多分10,000個のパズルを取り、それらをエクセルに持ち込み、難易度で並べ替えます。次に、それらをアプリに取り込み、ゲームボードで表示します。また、視覚的魅力とパズルの目に見えるパターンについても調べます。それから私はそれらから手摘みします。
私はそれらをシードパズルと呼びます。数独ゲームの数字は、実際には単なるトークンです。1〜9の数字ではなく、色、記号、または文字にすることができます。ですから、私の種のパズルは数字ではなく、文字aiです。各シードパズルはオンザフライで変更され、プレイ可能なパズルを作成します。
- 番号/トークンをランダム化します。文字aiを1〜9の数字に戻すと、ルックアップテーブルがランダム化されます。aが常に1とは限らないことを意味します。それだけで、各パズルに約300,000のバリエーションが作成されます。
- パズルを90、180、または270度回転させます。これにより、さらに4つのバリエーションが追加されます。
- パズルを水平、垂直、またはその両方に切り替えます。これにより、さらに4つのバリエーションが追加されます。
したがって、各シードパズルは5,806,080個のバリエーションを作成できます。私はこれを実際のプレイヤーのフィールドでテストしました。人々は、本質的に同じパズルをプレイしていることを知りません。実際には不可能です。彼らが与えられたパターンが毎回同じであることに気づいた場合にのみ。しかし、100種類もの種子があっても誰も気付かないでしょう。私のゲームの100万人のユーザーはそうではありません。ソルバーアプリでもテストしました。ソルバーアプリは、回転またはフロップしてもパズルを同じように解決しません。技術的には同じパズルであっても、異なる難易度として分析することさえあります。
ただし、Big Bad Sudoku Bookには、5種類の難易度の1000種類のパズルが10種類あり、複数のパズルパターンがあります。これは、私のゲームには数十億のパズルがあることを意味します。10,000シードパズルごとに、58,060,800,000の異なるパズルがあります。
Sudoku Bookバージョン4(2016年未定)で、580億から正確なパズルを指定して、各プレイヤーのデバイスで同じパズルを取得する方法を見つけました。