Random Puzzle Generation for Physics

Started by
-1 comments, last by Gamieon 12 years, 6 months ago
A while ago I wrote a physics puzzle game "Dominoze", complete with level builder, where in each level you rearrange world objects (some with dominoes resting on them) in a way that results in all the dominoes being lined up to where you could knock down the first one and all of them would fall. You can see it at dominoze.com and I have a thumbnail of a puzzle being solved to try to explain it visually:

s24.jpg




I'm investigating the prospect of being able to randomly generate puzzles at an initially simple but scalable level. The objects to work with include:

  • A set of geometric primitives (floors, boxes, cylinders, inclines, stairs)
  • Lasers and mirrors
  • Simple pulleys
  • Circuits and batteries
  • Gears
  • Wind power and mini-blimps (ties into circuits)
  • Marbles and marble tracks
  • Dominoes


The way I figure things, a puzzle should be expressible as a tree where each node has a solution whereby all of its dominoes are adjacent, and the solution is dictated by actions of itself(?) and its children. In the picture above, the puzzle is actually pretty basic: You have four objects, and you have to figure out where they go. So you'd have a tree with one root node and four leaf nodes. Once the leaves are all solved by the objects being placed in the gaps, the root node is thereby solved and you can knock over the first domino to win the game. Of course there's the matter of how to physically build the puzzle. You could have countless puzzles that are solved by having four gaps filled in with key objects. I'm drawing a blank on where to begin there so far because there's so much to consider: Things like differences in altitude when stairs get involved, the fact that puzzles are not straight lines but wind about and have intersections, deciding how random generation outcomes dictate undefined parts of the set or should be bounded by existing parts of the set, etc.

A friend of mine suggested I look into "L-Systems" (L-system on Wikipedia). I haven't looked at it yet, so I'll check it out and see if that gets me anywhere.

If anyone is aware of existing tech or articles that could accomplish random physics puzzle generation like this, let me know! Otherwise I may reply to myself if I find things to help other developers who stumble upon this thread.

This topic is closed to new replies.

Advertisement