We present a system for autonomously generating puzzles in the form of a 2D, tile-based world. Puzzle design is entirely dependent on tile characteristics, which are implemented as abstract classes that can be modified by the system. Thus, the system controls not only the base-level puzzle design but also (to some extent) the meta-level component design. The result is a rich space of possible puzzles that the system explores with a combination of evolutionary computation and Q-learning. The system autonomously produces a variety of puzzles of varying difficulty to create a game called Loki's Castle. The system is almost completely autonomous, requiring only a minimal description of what a puzzle should include, and the abstraction allows extensibility so that future versions can invent entirely new classes of tiles. Several puzzle examples are presented to demonstrate the system's capability.