Wednesday, August 29, 2012

A wild header appears

So today I tried for like an hour to draw girl hair for Lera since I feel her design is missing something but I kind of suck and everything I make looks worse than how it is now. So I got bored of doing that and made a header for the blog. It's also basically what the title screen of the game will look like.

I'm hoping I can recreate this scene at some point in the game. Maybe Centure will be heading off into danger and ignoring Nybble's requests to turn back so he shouts out to him: "CENTURE!". This reminds me of the work I'm going to have to do to set up all the in-game text. I've never even done anything like that before so I'm going to have to figure it out from scratch. Shouldn't be too terrible though.

The idea is that the dialogue won't freeze you in place so you can just ignore it and keep on playing, hence the see-through text-boxes. It also means you can jump around like a lunatic while reading it if you care to do so. None of this text will be anything tutorial-related though. I'll leave it to the player to figure things out.

Tomorrow I have a crazy short university day so I'll probably get to work on the game. And by work I mean write some more code to fix some stuff from the previous post. Probably.

EDIT: Just for reference here's my old to-do list:


  • Make sure collisions work in a way that the character can change size at any time
  • Decide on how to determine when the character is on the ground
  • Fix up that gravity (90% done)
  • Jumping
  • Clean up the movement class
  • Entering polygons via CSV (probably)
  • Work out an animation class
  • Improve the camera
  • Set up an option for 2x size graphics
  • Sunday, August 26, 2012

    I put in a good day's work

    Start of today:
    • collisions broken
    • no gravity
    • no polygon flipping
    • no jumping
    End of today:
    • collisions less broken
    • gravity works
    • polygons flip
    • jumping works
    • fine-tuned movement
    For tomorrow:
    • variable jump height done :)
    • fixing collision bugs
    • starting animation
    • cleaning up code
    • improving camera positioning and movement
    • and more!
    If you like reading lists of things this post is for you! If not here's a gif for you:




    Wednesday, August 22, 2012

    Minkowski Collisions - I Want My Game To Have Slopes!

    I'm going to outline how I did the collision detection in my game. I'm not going to provide actual code, just the idea behind each step. You have to code it yourself and work out the issues yourself. You can see a video of this system in action in my previous post.

    First I'd like to recommend this brilliant article by David Rosen about using vectors in games. There's lots of interesting stuff there that can help you out and since I'm going to talk about vectors a tiny bit in this guide you can go and get the relevant info there.

    Taking the Minkowksi Difference:


    The idea behind my collision detection system is the Minkowski difference. If you're a boss at understanding things (unlike me) you can check out this guide to Minkowski collision detection and ignore the rest of this post. I mostly used it for the flash app on that page to provide some intuition of what Minkowski difference actually does.

    Why use Minkowski? What is it?

    The Minkowski difference takes two convex polygons and produces a third. The way it does this is by taking the coordinates of each vertex of the first polygon and finding the difference between that and the coordinates of each vertex of the other polygon. This produces a scattered array of points in space.

    e.g. The Minkowski difference of {(1,1);(3,1);(2,2)} and {(2,1);(4,1);(3,2)} is:
    (1,1) - (2,1) = (-1,0)
    (1,1) - (4,1) = (-3,0)
    (1,1) - (3,2) = (-2,-1)
    (3,1) - (2,1) = (1,0)
    (3,1) - (4,1) = (-3,0)
    etc...
    (2,2) - (3,2) = (-1,0)
    You'll end up with 3*3 = 9 points.

    We can create a shape using the outermost of these points. If that shape contains the origin, then we know we have a collision. This is our goal. Using polygons for the player and every other object means we can use the Minkowski difference polygons to work out how collisions with these objects would occur.


    The polygon I currently use for Centure

    Sunday, August 19, 2012

    So I did some stuff and now I can make a game

    I worked on ironing out bugs in my collision detection system today and I think I finally have it working! Even if it is its simplest form. It's a miracle! Here's a video about it:


    Go watch it on youtube.

    Here's some stuff I still need to do:

    • Make sure collisions work in a way that the character can change size at any time
    • Decide on how to determine when the character is on the ground
    • Fix up that gravity
    • Jumping
    • Clean up the movement class
    • Entering polygons via CSV (probably)
    • Work out an animation class
    • Improve the camera
    • Set up an option for 2x size graphics

    Friday, August 10, 2012

    I am doing stuff I promise!

    Just so you know I'm not being (that) lazy, here's what I've done since my last post:

    • Designed and animated my first enemy. A very basic, canon-fodder type.
    • Designed and animated my second enemy. It's an extension of the first and I had to individually draw 15 or 16 frames of animation. Madness.
    • Designed Lab 17, Lera's base of operations.
    • Designed the first level of the game.
    • Designed the in-level textboxes. I made them semi-transparent for reasons you shall later see.
    :\
    ROAR!!
    What's that you're standing on Centure?

    Wednesday, August 1, 2012

    Another concept

    I just like updating this after I design something new. You can take guesses about what everything will be for.

    NB: This is an image of what the game will look like using the resources I've designed so far. It's not an actual screenshot. Yes there will be a background.


    I don't have enough time or motivation to program collision detection after a day at university. But I don't mind designing or animating since it's less effort. The weekend should allow me to get to work on it properly.