Hi,
ich arbeite gerade an einem Spiel basierend auf der Idee des Brettspiels Tiwanaku auf BGG.
Ich habe mich aber auf die Erstellung und das Lösen der Level im Sudokustil konzentriert und keine 1 zu 1 Umsetzung des Brettspiels gemacht. Hintergrund ursprünglich war, dass ich unenedlich Szenrien zum Spielen bekomme.
Regeln:
Wie bei Sudoku muss eine Matrix mit Zahlen gefüllt werden. Es gibt nur zwei Regeln:
- Jede Zahl darf ich jedem Bereich nur einmal vorkommen. Das bedeutet in einem „Waldbereich“, welcher 5 Felder groß ist, müssen die Zahlen von 1 bis 5. In einem Wasserbereich, welcher 3 Felder groß ist, kommen die Zahlen 1 bis 3 vor.
- Im direkten Umkreis darf eine Zahl nur 1 mal vorkommen (das bedeutet wenn eine 2 in der Mitte steht, darf keine 2 in der direkten 8 Nachbarschaft (links, links oben, oben, rechts oben, rechts, rechts unten, unten, links unten) sein.
Das Spiel ist jetzt schon komplett spielbar und macht (in meinen Augen) auch schon viel Spaß, gerade um kurze Wartezeiten zu überbrücken.
Spielbar ist es unter: Tiwanaku
Frage zur Erstellung der Level:
Ich hatte hier im Forum ja gefragt, wie ich ein Level am besten lösen kann, siehe Knuth's Algorithm X Frage - #17 von Apo und bin mit der Lösung auch sehr zufrieden. Aber nun habe ich noch Performanceprobleme bei der Erstellung eines Levels.
Aktuell gehe ich so vor, dass ich zuerst den Untergrund mit den Biomen erstelle und dann schaue, ob es dafür eine Lösung gibt.
Für kleinere Level klappt das auch in annehmbarer Geschwindigkeit, aber z.B. bei einem 9x9 Level geht die Erstellung des Untergrundes schnell, aber gefühlt 99% der Level haben keine Lösung und er versucht es wieder. Ich weiß, das bedeutet ich muss mehr Regeln bei der Erstellung der Biome implementieren, aber aktuell überlege ich, ob das überhaupt der Weg ist, den ich gehen sollte oder ob nicht vielleicht ein komplett neuer Ansatz gut wäre. Also vielleicht zuerst mit Zahlen füllen (nach den Regeln und dann schauen, ob daraus ein Untergrund werden kann) oder ein anderer Ansatz. Habt ihr da eine Idee? Wie würdet ihr vorgehen?
Screenshot: