Ho un gioco Sudoku più venduto su app store iOS. Ecco come ho generato i puzzle.
Per prima cosa ho un'applicazione generatore di puzzle. Ma non fa parte del codice del gioco. E 'un'app stand alone che utilizzo per creare enigmi. È altamente modificato, quindi posso impostarlo per creare diversi tipi di pattern, livelli di difficoltà, numero di dati, ecc. Generare puzzle e ottenere un livello di difficoltà costante è difficile da fare al volo e richiede più tempo di quanto un giocatore vorrebbe aspettare. Quindi, creo quelli che chiamo "puzzle di semi" e questo è ciò che viene utilizzato dal codice del gioco per generare i puzzle che le persone giocano.
Non sto rispondendo a come codificare un generatore qui. Puoi google e trovare tonnellate di codice generatore di puzzle online. Inizia lì. Ma per fare un buon gioco devi fare un buon gioco. Il mio gioco non genera puzzle al volo.
Il modo in cui funziona la mia app generatore di puzzle è che genera migliaia di puzzle al minuto, ma non sono tutti buoni e non corrispondono tutti a un livello di difficoltà specifico. Il generatore crea un puzzle, quindi lo risolve, calcola un livello di difficoltà e calcola il puzzle in base alle tecniche necessarie per risolverlo, e determina se è necessario indovinarlo (che di solito è negativo). Elimina tutti i puzzle che non corrispondono a un criterio. Per i puzzle difficili ma non impossibili, su una macchina veloce, può essere necessaria un'ora per generare 100 puzzle che corrispondono alle mie specifiche esatte. Questo è il motivo per cui non lo faccio nell'app. Generare puzzle al volo con quelle specifiche difficili non funzionerebbe per la qualità dei puzzle che ho nella mia app.
I puzzle sono stringhe, lunghe 162 caratteri, 81 caratteri con numeri e trattini o punti in cui si troveranno gli spazi vuoti, quindi altri 81 con la soluzione. Quindi le colonne per ciascuna delle statistiche, come il numero di singoli, doppi, ecc.
Il mio output da tutte le sessioni di generazione sono linee delimitate da virgole con le statistiche come colonne. Prenderò forse 10.000 enigmi, li porterò per eccellere e li risolverò per difficoltà. Quindi portali in un'app per vederli sul tabellone. Li guardo anche per attrattiva visiva e motivi visibili per il puzzle. Poi seleziono a mano tra quelli.
Li chiamo puzzle di semi ed ecco cosa intendo. I numeri in un gioco di sudoku sono in realtà solo token. Invece di essere i numeri 1-9 potrebbero essere colori o simboli o lettere. Quindi i miei puzzle sui semi non sono numeri, sono le lettere ai. Ogni puzzle di seme viene cambiato al volo per creare un puzzle giocabile:
- Randomizza i numeri / token. Quando giro le lettere ai in numeri 1-9, la tabella di ricerca è casuale. Ciò significa che a non è sempre 1. Questo da solo crea circa 300.000 variazioni su ogni puzzle.
- Ruota il puzzle di 90, 180 o 270 gradi. Ciò aggiunge altre 4 varianti.
- Flop il puzzle in orizzontale, verticale o entrambi. Ciò aggiunge altre 4 varianti.
Ogni puzzle di semi può quindi creare 5.806.080 variazioni. L'ho provato sul campo con giocatori reali. Le persone non sanno che stanno essenzialmente giocando allo stesso puzzle. In realtà è impossibile. Solo se dovessero notare che lo schema in cui si trovano i dati è lo stesso ogni volta. Ma con anche 100 semi diversi nessuno noterà. Un milione di utenti del mio gioco no. L'ho anche testato con le app del solutore. Un'app risolutore non risolverà un puzzle allo stesso modo quando viene ruotata o flop. Talvolta lo analizzerà anche come un livello di difficoltà diverso anche se tecnicamente è lo stesso puzzle.
Tuttavia, Big Bad Sudoku Book ha 10 di 1000 puzzle di semi in 5 livelli di difficoltà e diversi tipi di schemi di puzzle. Ciò significa che ci sono miliardi di enigmi nel mio gioco. Ogni 10.000 seed seed ci sono 58.060.800.000 puzzle diversi.
In Sudoku Book versione 4 (in uscita nel 2016) ho trovato un modo per essere in grado di specificare un puzzle esatto tra quei 58 miliardi e ottenere lo stesso puzzle sul dispositivo di ogni giocatore.