Punch Out Model Synthesis: A Stochastic Algorithm for Constraint Based Tiling Generation

Zzyv Zzyzek
1/5/2025
cs.DCcs.LG

No official code found. Best implementation: ramakarl/just_math (98 stars, MIT, last commit 2025-11-22). 1 more below.

Abstract

As an artistic aid in tiled level design, Constraint Based Tiling Generation (CBTG) algorithms can help to automatically create level realizations from a set of tiles and placement constraints. Merrell's Modify in Blocks Model Synthesis (MMS) and Gumin's Wave Function Collapse (WFC) have been proposed as Constraint Based Tiling Generation (CBTG) algorithms that work well for many scenarios but have limitations in problem size, problem setup and solution biasing. We present Punch Out Model Synthesis (POMS), a Constraint Based Tiling Generation algorithm, that can handle large problem sizes, requires minimal assumptions for setup and can help mitigate solution biasing. POMS attempts to resolve indeterminate grid regions by trying to progressively realize sub-blocks, performing a stochastic boundary erosion on previously resolved regions should sub-block resolution fail. We highlight the results of running a reference implementation on different tile sets and discuss a tile correlation length, implied by the tile constraints, and its role in choosing an appropriate block size to aid POMS in successfully finding grid realizations.

View on arXivView PDF

Code Implementations(2)

ramakarl/just_mathCommunity100%
MIT

Just Math - A collection of pure math demos for computer graphics.

986C++, CMakeSep 11, 202211 months agoMIT
CC0-1.0

Punch Out Model Synthesis - a program for constraint based tiling generation

202C, C++Aug 27, 20248 months agoCC0-1.0
algorithmgamedevmachine-learningmodel-synthesisprocedural-generation+2 more

Similar Papers

Cite this paper

@article{zzyzek2025punch,
  title  = {Punch Out Model Synthesis: A Stochastic Algorithm for Constraint Based Tiling Generation},
  author = {Zzyv Zzyzek},
  year   = {2025},
  eprint = {2501.14786},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2501.14786v1}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2501.14786.svg)](https://codeofpaper.com/paper/2501.14786)

Discussion