Solver Based Methods for PCG - Falmouth-Games-Academy/comp250-wiki GitHub Wiki

Overview

Bound by set constraints,
Of logic and of value,
Sworn to solve the goal

Solver-based methods are a method of using algorithms to solve specific problems using constraints solvers, to help generate a set of solutions or a single best solution to a problem.[1]

Solver based methods can be implemented in many different ways, such as mathematically or logically using logic based languages, such as ASP (Answer Set Programming).[1][2]

“Constraint Programming represents one of the closest approaches computer science has yet made to the Holy Grail of programming: the user states the problem, the computer solves it.” [E. Freuder][6]

Constraint Solvers

Constraint Solvers are used to constraint the limits of RNG (random number generation) and give logic to it so the PCG generates a desired result.[3]

You have some known values and a problem, you have a near infinite set of answers, you work with a set of constraints to reduce that to a single solution or a set of good solutions.

e.g. I want to place 10 towns over the map, but they all must be 5km away from each other AND they must each be 2km from a water source AND ...

Method Uses

A list of different uses for Solver Based Methods:

IK solving

IK (Inverse kinematics) solving is a way of figuring out the location of a joint between 2 other joints which are bound by constraints such as limb segment lengths and joint bending/twisting constraints.[2]

Level generation

Level generation can use constraint solvers for good number of reasons such as programming in hard rules and constraints that the generator needs to follow to create a playable level.[3][4]

References

[1] G. N. Yannakakis and J. Togelius, "Artificial Intelligence and Games". Springer, 2018.
[2] K. Compton, "Practical Procedural Generation for Everyone", YouTube, 2019. [Online]. Available: https://www.youtube.com/watch?v=WumyfLEa6bU&feature=youtu.be&t=1436. [Accessed: 15- Feb- 2019].
[3] A. Smith, M. Nelson and M. Mateas, "LUDOCORE: A logical game engine for modeling videogames", Proceedings of the 2010 IEEE Conference on Computational Intelligence and Games, p. Chapter 8, 2010. Available: 10.1109/itw.2010.5593368 [Accessed 15 February 2019].
[4] G. Smith, J. Whitehead and M. Mateas, "Tanagra", Proceedings of the Fifth International Conference on the Foundations of Digital Games - FDG '10, 2010. Available: 10.1145/1822348.1822376 [Accessed 15 February 2019].
[5] K. Compton, "Tumblr", Galaxykate0.tumblr.com, 2019. [Online]. Available: http://galaxykate0.tumblr.com/post/139774965871/so-you-want-to-build-a-generator. [Accessed: 15- Feb- 2019].
[6] "Constraint Solving", Constraintsolving.com, 2019. [Online]. Available: http://www.constraintsolving.com/. [Accessed: 15- Feb- 2019].