Quick Links: Download Gideros Studio | Gideros Documentation | Gideros Development Center | Gideros community chat | DONATE
My contribution to Flappy Bird phenomenon: "Flappy Creature" — Gideros Forum

My contribution to Flappy Bird phenomenon: "Flappy Creature"

jdbcjdbc Member
edited February 2014 in General questions
Available in Google Play Store:
https://play.google.com/store/apps/details?id=es.jdbc.flappy_creature

This is a video of my "Flappy Creature" or "Buzzy Creature" (depending on publishing issues) gameplay:



Developed in 3 days and using box2d for collision detection.
+1 -1 (+3 / -0 )Share on Facebook

Comments

  • the video fails on my pc after a few seconds
  • Plays fine on my pc. Like the right to left flight.
  • I know what makes Flappy Bird successful is its simplicity. But it is already done and we missed the train ,so let's develop it :D

    Idea 1 - Crazy Mode
    To change the difficulty you can add "Crazzy mode" after reaching some achievement in game like:
    -50 points and Crazy mode opens.
    What does it do;
    -Randomly it is changing the way birds fly and going right to left again.

    Idea 2 - Personalise
    -We have media plugin in Gideros so:
    Take a picture from camera crop it and put your face on flappy bird :D

    Idea 3 - Reverse logic
    Bird will always fly in the middle. When i touch downside of the screen the columsn will move down and when i touch up the columns will move up . Of course there will be built in empty space in each columns.

    And out of ideas :D

    Note: I am not writing here power up ideas hence they are the easiest ones .
  • jdbcjdbc Member
    edited February 2014
    Finally "Flappy Creature" is available in Google Play Store:
    https://play.google.com/store/apps/details?id=es.jdbc.flappy_creature

    I not sure if I can try to submit to Apple Store with same name, but may be I should do it:
    http://www.appbattleground.com/2014/02/19/flappy-apps-return/

    I got 26 as my best score :-)
  • ArtLeeAppsArtLeeApps Member
    edited February 2014
    ...and educational version too!

    "Fatty Bird".
    - you need food to have the energy to fly.
    - you pickup food along the way
    - you fly through "holes" various sizes in one pole.
    - the trick is.. if you pick up junk foood you get bigger (cake, cheese, icecream)
    but if you pickup (healthy food, carrots, protein shakes .. ) you get thinner..
    so you can fit in more of holes :)

    just give me a cut of the profits :)
    +1 -1 (+3 / -0 )Share on Facebook
  • Thanks for your ideas.

    I guess educational version will be fine!
  • @jdbc , can you tell us a little what solutions did you use for scrolling and so on? Did you use TNT engine for animation or Tiled editor or something like that? Did you use scenemanager? What I find confusing about Gideros that there seems to be a lot of solutions and not one uniform/recommended way to do it. Any info would be great for us beginners.
  • @Seb7,
    I guess I can understand where you are coming from on this. A couple of years ago, people related the beer SDK with Director, it had become bigger than the sdk itself. Similarly, the topics on forums make some solutions more prominent than others.

    TNT is an amazing set of libraries and are free.
    However, for basic animation, as a beginner you can also use the movieClip, if you have done any Flash related coding, you would be right at home with this and is also compatible with some other sdk's.

    SceneManagement is also an evolving technology/concept, Apple did not have it, Director used it to make things easy, then came StoryBoard from Apple.

    Ultimately, it is entirely upto the developer on how they manage things sometimes 3rd party libraries are used, sometime not. The advantage is that it is faster and gives you a starting point, however the disadvantage is that when things are changed radically, it all starts to break. To quote some examples, QT - new versions, Lime was a brilliant library for the beer sdk and tiled maps, with the new Graphics 2.0, that library is a lot of work to update. So as a developer, you need to take the decision on which way you want to go.

    That is one reason why a good rich set of sample code with detailed examples even on the documentation pages would help. The best Help I have seen to date was Microsoft Windows 3.1 API
    twitter: @ozapps | http://www.oz-apps.com | http://howto.oz-apps.com | http://reviewme.oz-apps.com
    Author of Learn Lua for iOS Game Development from Apress ( http://www.apress.com/9781430246626 )
    Cool Vizify Profile at https://www.vizify.com/oz-apps
  • jdbcjdbc Member
    edited February 2014
    @jdbc , can you tell us a little what solutions did you use for scrolling and so on? Did you use TNT engine for animation or Tiled editor or something like that? Did you use scenemanager? What I find confusing about Gideros that there seems to be a lot of solutions and not one uniform/recommended way to do it. Any info would be great for us beginners.
    Define letterbox in project properties for automatic scaling.

    I use sceneManager for changing between main scene and game over scene:
    sceneManager:changeScene(scenes[1], 1, SceneManager.flipWithFade, easing.linear)
    For scrolling I just move two pipes (sprite + body) objects from left to right on every Event.ENTER_FRAME event. You check current pipe X coordinate and if X > 0 create two new pipes to the left until X == 0.

    Remove these two pipes from scene and box2d world when they are not visible, it means X > application:getContentWidth() + 30

    Box2d allows to manage creature's gravity when jumps or falls and check if the creature crashes using onBeginCollision event. Apply linear speed to jump on every tap and define 15 or more for world gravity in Y axis.
    b2World = b2.World.new(0, 20, true)
     
    function Hero:init()
      ...
     
            local creature = Bitmap.new(Hero.textures[self.frame])
    	creature:setAnchorPoint(0.5, 0.5)
    	local posX = (width - creature:getWidth()) * 0.5
    	local posY = (height - creature:getHeight()) * 0.5
    	creature:setPosition(posX, posY)
    	self.creature = creature
    	self:addChild(creature)
     
    	local b2World = b2World
    	self.body = b2World:createBody{type = b2.DYNAMIC_BODY}	
     
    	self.body:setPosition(self.creature:getPosition())
    	local blockShape = b2.PolygonShape.new()
    	blockShape:setAsBox(self.creature:getWidth() * 0.38, self.creature:getHeight() * 0.42)
    	self.body:createFixture{shape = blockShape,
    							friction = 0,
    							restitution = 0,
    							density = 10,
    							isSensor = false
    						   }
       ...
      self:addEventListener(Event.MOUSE_DOWN, self.onMouseDown, self)
      b2World:addEventListener(Event.BEGIN_CONTACT, self.onBeginCollision, self)
     
    end
     
    ...
     
    function Hero:onMouseDown(event)
     
    	local creature = self.creature
    	if (creature:getY() - creature:getHeight() * 2 > 0) then
    		self.body:setLinearVelocity(0, -8)
    	end
    end
     
    -- Collision with pipes
    function Hero:onBeginCollision()
     
    end
    For sprite animation you can use MovieClip as child of creature's sprite or just change texture every 5 seconds with Bitmap:setTextureRegion on every Event.ENTER_FRAME event.

    Anyway I think there are several solutions to solve the same programming problem, you should choose best in every case. Sometimes it only depends on performances issues.
  • jdbcjdbc Member
    edited February 2014
    Finally for Android my game will be named "Flappy Creature", no problems publishing this simple game although Slime app store has forbidden both publishing tries.

    I will try to submit to Apple Store then. Cross my fingers for game name problems.

    If every goes well I will write some article about "How to develop a Flappy bird clone using Gideros"
  • jdbcjdbc Member
    Now you can share your best score on Google Play services.
Sign In or Register to comment.