Breakout prototype made with Dreemchest
Talking about Breakout game, Box2D and Game development.
Learn cross platform HTML5 game development
Check my Gumroad page for commented source code, games and books.
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.