You-Only-Randomize-Once: Shaping Statistical Properties in Constraint-based PCG
<|reference_start|>You-Only-Randomize-Once: Shaping Statistical Properties in Constraint-based PCG: In procedural content generation, modeling the generation task as a constraint satisfaction problem lets us define local and global constraints on the generated output. However, a generator's perceived quality often involves statistics rather than just hard constraints. For example, we may desire that generated outputs use design elements with a similar distribution to that of reference designs. However, such statistical properties cannot be expressed directly as a hard constraint on the generation of any one output. In contrast, methods which do not use a general-purpose constraint solver, such as Gumin's implementation of the WaveFunctionCollapse (WFC) algorithm, can control output statistics but have limited constraint propagation ability and cannot express non-local constraints. In this paper, we introduce You-Only-Randomize-Once (YORO) pre-rolling, a method for crafting a decision variable ordering for a constraint solver that encodes desired statistics in a constraint-based generator. Using a solver-based WFC as an example, we show that this technique effectively controls the statistics of tile-grid outputs generated by several off-the-shelf SAT solvers, while still enforcing global constraints on the outputs.1 Our approach is immediately applicable to WFC-like generation problems and it offers a conceptual starting point for controlling the design element statistics in other constraint-based generators.<|reference_end|>
@article{katz2024you-only-randomize-once:,
    title={You-Only-Randomize-Once: Shaping Statistical Properties in
  Constraint-based PCG},
    author={Jediah Katz, Bahar Bateni, Adam M. Smith},
    journal={Proceedings of the 19th International Conference on the
  Foundations of Digital Games (FDG 2024). Association for Computing Machinery,
  New York, NY, USA, Article 16, 1-11},
    year={2024},
    doi={10.1145/3649921.3649995},
    archivePrefix={arXiv},
    eprint={2409.00837},
    primaryClass={cs.AI cs.LO}
}