This paper presents a procedural generation algorithm for levels in physics-based puzzle games similar to Angry Birds. The proposed algorithm creates levels consisting of various self-contained structures placed throughout a 2D area. Each structure can be placed either on the ground or atop floating platforms within the available level space. These structures are created using a variety of different block types and do not require predefined substructures or composite elements. Target object locations are determined based on a combination of factors, including structural protection, occupancy estimation and overall dispersion. Experiments were performed in order to determine the ideal input parameters for generating desirable levels. The expressivity of the generator was also evaluated and the results show that the proposed method can generate a wide variety of interesting levels.