2 Birds 1 Stone


Josh came to us with a well defined set of screen that outlined his vision for this IOS Game. His superb graphic design skills allowed him to create all the graphic elements for the game and he found the programing help needed to realize his vision with SoftwareCriollo.

The game is simple. Kill 2 birds with 1 stone. See how far you can get and challenge your friends.



Development

This project tooks us a couple of months to release. We integrated it with Apple's Game Center in order to challenge friends and post the players' highest score into GC's leader board. Moreover, we use the Motion-Social gem - that we previously developed - in order to easily share the highest score on Facebook and Twitter.

def create_impulse_vector_from_location(location)
  initial_x = Stone.initial_position[0]
  initial_y = Stone.initial_position[1]

  dx = location.x - initial_x
  dy = location.y - initial_y

  magnitud = Math.sqrt( (dx * dx ) + (dy * dy) )

  force = 20

  x = (dx / magnitud) * force
  y = (dy / magnitud) * force

  impulse = CGVectorMake(x * -1 , y * -1)

  if Stone.initial_position[1] > location.y
    @stone.enable_physics
    @stone.hidden = false
    @stone.physicsBody.applyImpulse(impulse)

    @ruber.apply_impulse(impulse)
    @slingshot.play_fired
    @should_fire = false

    @impulse = impulse
  end
end
class GameBuilder

  def initialize(scene)
    @scene = scene
    add_clouds if scene.class != PreGame
    self
  end

  def scene
    @scene
  end

  def add_stone
    stone = Stone.new
    stone.configure
    scene.addChild(stone)
    stone
  end

  def add_slingshot
    s = Slingshot.new
    s.configure
    scene.addChild(s)
    s
  end

  def add_rubber
    s = Ruber.new
    s.configure
    scene.addChild(s)
    s
  end

  def add_raindrop
    raindrop = RainDrop.new
    raindrop.configure
    scene.addChild(raindrop)
    raindrop
  end

  def let_it_be_rain
    if scene.level.number >= 6
      scene.level.number.times do
        @rain_drop = add_raindrop
      end

      @rain_drop.sound
    end
    @rain_drop
  end

  def raindrop
      @rain_drop
  end

  def add_plane
    plane = Plane.new
    plane.configure
    scene.addChild(plane)
    plane
  end

  def add_hand
    hand = Hand.new
    hand.configure
    scene.addChild(hand)
  end

  def add_bird(name)
    bird = Bird.new
    bird.name = name
    bird.configure
    scene.addChild(bird)
    bird
  end

  def add_clouds
    cloud = Cloud.new
    cloud.top = Device.height - 200
    cloud.configure
    cloud.position = [60, Device.height - 30]
    cloud.size = [202, 112]
    scene.addChild(cloud)

    cloud = Cloud.new
    cloud.top = Device.height - 200
    cloud.configure
    cloud.position = [40,Device.height - 120]
    scene.addChild(cloud)

    cloud = Cloud.new
    cloud.top = Device.height - 200
    cloud.configure
    cloud.position = [Device.width - 80 , Device.height - 60]
    cloud.size = [270, 150]
    scene.addChild(cloud)
  end

end

Our Process

Meetings

We have weekly calls where we discuss progress. We use Skype, Google Hangouts or GotoMeeting.

We agreed on a day and time that worked for everyone.

Planning

In the beginning we send a timeline specifying the planning and tasks for that week.

These tasks are the same cards we have planned in Trello.

Trello

We translate all requirements into stories in Trello Cards.

Trello is the place to add any specification, ask questions or comments to the team.

Deliveries

Once the tasks are done they go through a testing process and we pass them for your approval.

Every week we will pass cards onto the client list for you to give us feedback.

Quality Assurance

Once the functionality is completed one of our functional testers will try to break the feature.

We either move it to Needs Improvement or pass it to you for feedback.

Feedback

We need the support from you to review the cards and Approve them or tell us how to improve it.

This is key to meet goals and being on time in the development of the application.