Official blog for the Burning Bum Studios. We make stuff and then set it on fire.

Text

36+ hours, 136 lines of code and after a plethora of bad jokes, we have finally come to showing results. The screenshot speaks for itself I guess. It’s not great but it’s pretty good for guys who’ve been in and out of gamedev for a while. Ravish’s art and Pronoy’s code (if you wanna call it code) might just pull this off. Hoping for the best. Selim at gameQuery has been kind enough to help out with the API. gameQueryjs is pretty good if you want to get stuff done. It helps in a lot of things, but a lot still needs to be done.

FartSector - result after 36 hours

Text

Okay, so we are working towards it and I have the basic markup up and running. I used the default Initializr-bootstrap deployment. I am surprised that there are bugs in the basic markup, I should try to get this added.

//This is primarily if the CDN fetching of jQuery fails
//wonder why crap is added to the syntax if you add the script tags. Weird.
if ( typeof(jquery) == 'undefined')
	{
		document.write(unescape("%3Cscript src='js/jquery-1.7.2.min.js' type='text/javascript'%3E%3C/script%3E"));
	}
 

I’ll probably do that later. So anyways, we’ve resorted to using jQuery plugin called gameQuery. It’s pretty good. Has most of the functions we need. I am just worried about the collision handling and the character movement on trajectory. I’ll probably have to ask selim about it.

The art is being created as I type this. Since the game has farts, it should obviously be funny and making that kind of art that makes you laugh is somewhat of an art in itself. Either way, Ravish is working and I’ll be coding throughout the night.

Let’s get the first demo out.

Text

Finally we have some time on our hands and this weekend we are participating in the BYOG 14 April 2012 - HTML 5 Games. Ravish as usual is doing the art and Pronoy is coding the damn thing. We’ve come up with a name already, it’s called FartSector and as you might’ve guessed, it’s got to do something with flatulence. Also, since DarkSector is Pronoy’s IRC handle and he’s usually called FartSector there, so it came naturally. No pun intended there.

We’ll be posting more stuff soon. Hope to keep this thing going. 

Text

In animating a ball we have 2 ways to do it. One is to make sprites for it that can be used to represent a moving object OR the lesser stupid, more obvious way is to rotate an image. But rotation usually means around a point and contrary to popular belief the computers are not smart and can’t read brains so by default they don’t rotate it around the center of the circle. Thankfully we humans came up with offset value. Where we can offset the rotation by a certain x distance and y distance.

Here’s what’s given in the wiki as explanation for the love.graphics.draw() function:

Synopsis

love.graphics.draw( drawable, x, y, r, sx, sy, ox, oy )

Arguments

Drawable drawable

A drawable object.

number x

The position to draw the object (x-axis).

number y

The position to draw the object (y-axis).

number r

(0)Orientation (radians).

number sx

(1)Scale factor (x-axis). Can be negative.

number sy

(sx)Scale factor (y-axis). Can be negative.

number ox

(0)Origin offset (x-axis). (A value of 20 would effectively move your drawable object 20 pixels to the left.)

number oy

(0)Origin offset (y-axis). (A value of 20 would effectively move your drawable object 20 pixels up.)

Returns

Nothing.

Note

love.graphics.draw() anchors from the top left corner by default.

Now the oy and ox are the ones that you need to take care about. If you can get the exact value that you need to increase the offset with, you can actually get it to rotate about it’s own axis passing through the center of the circle.

--[[
   Author: Pronoy Chopra
   Topic : Image rotation on its own axis
]]--


local angle = 0
function love.load( ... )
	-- body
	ball = {}
	ball.img = love.graphics.newImage("images/ball_play.png")
	ball.height = ball.img:getHeight()
	ball.width = ball.img:getWidth()
end

function love.update( ... )
	-- body
	if love.keyboard.isDown('d') then
		angle = angle + math.pi * 0.02
			
	elseif love.keyboard.isDown('a') then
		angle = angle - math.pi * 0.02
	end
           
end

function love.draw( ... )
	-- body
	love.graphics.setColor(255,255,255,255)
	love.graphics.draw(ball.img,ball.x,ball.y,angle,1,1,ball.width/2,ball.height/2)
end

Now, pressing the keys a and d on the keyboard will make it rotate left and right respectively. If you need to increase the speed of rotation simply change the value 0.02 to something bigger. That’s it for now, see you soon.

Source: love2d.org

Text

A week ago, Pronoy asked me, should we give Burning Bum a face? Now how do you give a face to something thats on the other end of the human anatomy altogether? So after a lot of thinking, fighting, hair-pulling, and whatnot, here we, Ravish and Pronoy, finally introduce the face, the mascot, the identity Burning Bum will adopt (for the time being).

I know, I know, its very intimidating at first, and it all reminds us of the fine moments we’ve had in the past, when a puddle on a muddy road was considered godsend. Well, I don’t know if its staying for any longer than a day or two (our whimsical approach to things), but its definitely one fine piece of work. Makes me feel the warmth under me already! (or was it a fart?)

Until next time folks!

Text

Love2D. No I mean the library. Obviously we love 2D it’s been in our blood since we were born. Remember NES? *phew* that was one lovely time. So we’ve been experimenting with Lua using the library Love2D. The physics in this lib is an adaptation of Box2D. This would really help if we were to make a game for the iOS.

Now, there are some really good tools for Love2D created by vrld. These tools are called Hump: Helper Utilities for Massive Progression and HardonCollider (all puns intended). The latter being a collision detection library. Needless to say it is pretty awesome. Following is the small code for its basic implementation. As such there are many ways, as per the tutorial, here’s one.

Collider = require "HardonCollider"

function love.load()
	love.graphics.setBackgroundColor(255,255,255,255)
	--set the background color to white

	HC = Collider(100,on_collide,after_collide)
	--initiate the hardon collider with suitable callbacks

	object = HC:addCircle(400,400,20)
	--object is a circle: big surprise!
        --the co ordinates are 400,400 and the radius is 20

end
--love.load ends

function on_collide()
end
--on_collide ends

function after_collide()
end
--after_collide ends

function love.update(dt)
	HC:update(dt)
end
--love.update ends


function love.draw()
	love.graphics.setColor(0,0,0)
        --set object color to black
	object:draw("fill", 40)
        --fill the object and use 40 segments to construct the circumference

end
--love.draw ends

So the three important functions for any love program to execute are love.load(), love.update(), love.draw(). The first is the main() for the Love2D library. Also you’ll have to have the HardonCollider library folder with you before you can do anything. So clone it first from here

What’s cool is that the syntax of Lua is as simple as Python. It’s really wonderful to have your first game running in about just under 2 days. I have tried working with Polycode, Cocos2DX and other C++ variants but to be honest I found that Lua based Love2D is the best. Now given the great Physics tools it’s looking out to be better.

Anyways coming back to the code, vrld added callbacks for the HardonCollider libarary. So the two functions on_collide and after_collide are callbacks for the collision and after collision or you can set them to be. Now the interesting thing is, it’s easier than the traditional love.physics API. There might be other custom libraries for physics but as far as my experience goes, this is much better.

Okay this is a code snippet for Love2D. We’ll be posting more code and art soon. Also we are currently working on a game which we’ll be talking about as well. Till the next time! Avidazen!

Text

We are now live! Burning Bum Studios is an indie game studio that aims at creating games that explode in your face (not literally, because you’ll only be able to play it once then). We are trying to create games with an edge, meaning they might have one incredible thing that sets it apart. We are great fans of games like Limbo, Trine, And Yet It Moves, Braid, Machinarium etc.

Every game listed above has something peculiar that stands out and that is our objective as well. Games are not easy to create, but they sure as hell are fun to work with.

So starting today we are going to be updating this blog with the work we’ll be doing and hopefully it’ll bring discipline to our work. Time to set it on fire!