Saturday, 25 August 2012

First 3D project

As expected, I ended up starting a new project... It's quite a leap up from what was achieved in Race Game.

Laptop video (shows 2D and 3D rendering plus raw map files):

Android video (shows smooth 3D rendering on android device):

Next steps will include:
  • Control scheme to suit android devices
  • Nice 3D models for keys, treasures, etc
  • Animated opening doors (quite how is a mystery!)
  • Cartoony / cutesy graphics and sound
  • Level select screen
  • Level complete screen
  • Game complete screen
  • Efficiency improvements
  • Lots more level maps
I think I'm going to drop the 'score' aspect, instead an achievement based level rating sounds good... Finish level for one star and ability to progress to next level, finish level having collected all treasure awards additional star, finish level in under X seconds awards additional star. Quite easy to progress through the levels, but replays required to get 100% perfect three star level rating.

Interestingly, Race Game has a fair number of android 1.6 users. Considering how few 1.6 devices exist, it's clear that there are people out there with low spec devices that want to play casual fun games. With this in mind, I'm going to keep striving for as near global compatibility as possible.

This game will be an arcade/maze/puzzler/adventure mashup. I'm going to leave out enemies, make it more about getting to the exit quickly, exploring, etc. This simplifies things for me, and should result in a game that appeals to quite a wide market.

A separate game that introduces first person shooter elements (zombies, weapons, and a darker art style) could be built on top of this base later on.

The code is freely available here, and there's a demo up on google play - check it out!



  1. the source code don't work :( but looks very good :)

  2. Hey Leonidas, thanks for commenting :) You have inspired me to reupload the sourcecode, check it out here -

    I hope you find it useful. I wouldn't suggest following what I've done too closely as this was very much a trial and error learning exercise for me, and I've since learnt a little more and would do some things differently, but hey, it runs, it works, I guess that's all a game HAS to do really...

    Maybe I'll come back to this one at some point. I have so many unfinished projects it's not even funny... But at least some of them get released, which is better than nothing :)

    Have fun, and if you end up making any interesting games be sure to let me know!

    1. jejeje ok, thanks again for the source :)

      if i finish something i will show you :)

  3. hello how are you?

    Thanks to your example eh managed to make the maze and change the coordinates of the game (do not know why but your tapeworms in the x, y), for x, z I find it easier to work.
    Also change the collisions to work with the Vector3 class is easier to work (with the code "if (payer.getPosCentro (). Dst (gems.get (i). PosCentro) <1.0f)" we can ask the :) easily collision.

    But now placed a 3D model of the hero in the coordinates and the camera to 2f away the hero, but I could not get the camera follows the hero.

    would know how to do to get my game camera behaves in third person?

    or theory at least necessary to ensure this.

    again thank you very much for your help I am very happy with the results. When I go to the source so you can see :)

  4. Hi Leonidas, sorry it has taken me so long to reply... I guess you have solved your third person camera issue by now?

    In WorldRenderer3D we have:
    camera.position.set(world.getPlayer().getCentrePos().x * 2f, world.getPlayer().getCentrePos().y * 2f, 0.75f);
    camera.rotate(world.getPlayer().getRotation(), 0, 0, 1);

    Moves camera to player position in world coordinates, and rotates around the z-axis to match player rotation. To have the camera 2f behind the player, I'd change the positioning using trigonometry - 2f distance and player rotation angle should be all you need.

    However, I'm not convinced that this is the best way of doing things. It seems the usual way of doing things in opengl is to have a static camera, and move game objects around. There are no doubt nice transform matrix methods to allow you to do what you want, I have a habit of going down the math/trig route but there may be simpler ways of doing things.

    If you have already solved your problem, I'd love to see your code to see how you've done it :)