Talking about Breakout game, Box2D and Game development.
This prototype comes directly from Dmitry Sovetov, the brain behind Dreemchest. It’s a breakout prototype ready to be published as a standalone Windows/Mac game or as an Android/iOS game.
All starts from the visual editor
Then it’s just a matter of writing some lines of code, for the main class:
class "App"( StageObjectContainer ) function App:main() local w = Stage.getWidth() local h = Stage.getHeight() Physics.setGravity( 0, 0 ) -- Horizontal walls self:createWall( w * 0.5, 0, w, 5 ) self:createWall( w * 0.5, h, w, 5 ) -- Vertical walls self:createWall( 0, h * 0.5, 5, h ) self:createWall( w, h * 0.5, 5, h ) end function App:createWall( x, y, w, h ) local wall = Graphics.new() wall.x = x wall.y = y wall.visible = false wall:setAsRectangle( w, h ) wall:physicalize( { static = true } ) self:attach( wall ) end
for the ball:
class "Ball"( Graphics ) function Ball:Ball() self.texture = 'bmpBall1' self:physicalize( { radius = self.width * 0.5 } ) self.physicalBody:setLinearVelocity( math.random() * 10 - 10, math.random() * 10 - 10 ) self:attachListener( Event.Update, self ) end function Ball:onUpdate( e ) local body = self.physicalBody local vel = body.linearVelocity local speed = math.abs( vel.x ) + math.abs( vel.y ) if speed <= 0.5 then speed = 0.5 end if speed < 5 then local rescale = 5 / speed body:setLinearVelocity( vel.x * rescale, vel.y * rescale ) end end
the block:
class "Block"( bmpBox ) function Block:Block() self:physicalize( { static = true } ) self:attachListener( CollisionEvent.Begin, self ) end function Block:onCollisionBegin( e ) self:release() end
and obviously the pad:
class "Pad"( bmpPad ) function Pad:Pad() self:physicalize( { shape = 'shPad', kinematic = true } ) Stage.attachListener( TapEvent.Move, self ) end function Pad:onTapMove( e ) self.x = e.x end
That’s 72 lines of code, and you’re ready to run your mobile breakout, thanks to Dreemchest power.
Never miss an update! Subscribe, and I will bother you by email only when a new game or full source code comes out.