Friday, June 1, 2012

What's Happening

After a period off from working on the game I realised I've kind of made a mess. Literally. My code was all messy and inefficient and I found it hard to get back into working on the game. So I've decided to start from scratch and get things up and running again with a bit more planning this time and a more orderly structure so if I  take a break it's not impossible to come back to it. To anyone who's thinking: "Why don't you just work on it like it was?" trust me it's for the best that I don't do that. I've got too much to fix on that old version for me to even consider it. The cool thing is that taking a step back for a little while means I can see that more clearly now.

So anyway progress continues on the game. I have been back to work on the rewrite of late despite my loooming exams. I've written a sort of game structure and am working on making some code for moving characters around reusable so I can just use it for enemies and whatever else I decide to chuck in there. It's all simple in concept and then damn complicated when I actually have to do it. But a great thing about making a game is how many strange unexpected problems it throws at you. It's a great way to learn about programming without having to construct meaningless problems for yourself to solve. There are so many problems pre-built into making a game it's like a student's nightmare dream!

I expect to be finished with the game in around 3 months. Lol.


I'll just edit this post until something interesting happens. My word I'm working slowly. I can't wait for these exams to end!

Things done on the new version - update of randomness 13/06/2012:

  • Created a system to handle loading the right graphics for each level. I tell it what level and it loads the graphics. Mostly just boringly designed platforms. Admittedly I only have one level but I have tested it. I think.
  • Created an input system that converts keyboard input into a direction vector (basically just keeps track of up, down, left, right, nothing, or any combination of those) and some other variables to keep track of other buttons. Oh and I made it pretty simple to change the controls for later. The reason for the whole conversion thing is because I...
  • Made a movement system that'll contain a bunch of functions (tools) to move the character (or indeed anything) around given the right input. But since the keyboard input is turned into this other form I can use the keyboard input for these functions or just give it input and it won't know the difference.
  • Made a camera that is restricted to certain bounds. I'm planning to make it able to follow any object I choose. That way I can switch it to random objects and amuse myself.
  • There's also something that defines everything in the game as an object - maybe I should have used the term sprite? - and stores the properties of that object and then a special version of that I made called a playerobject that's for the player. It was the first thing I made.
  • Made functions for movement for a topdown or sidescroller game. I could always use the topdown one for enemies that hover or something since I do intend to keep this a sidescroller. I also added inertia to these which you can set to anything you like.

And here's a little short term to-do list:

  • Set the camera bounds when loading the level
  • Start work on collision detection before doing anything fancy
  • Remeber to code it in such a way that the character can change size at any time
  • Find a way to define all solid objects as polygons
  • Figure out how to detect collisions between these polygons and the player and move the player out of them apropriately
  • Decide on how to determine when the character is on the ground
  • Jumping





Tuesday, April 24, 2012

Update

Here's a quick status update. The game has remained largely unchanged since my last post. I've had a series of tests in quick succession and haven't had a chance to update it. I'm happy to say I should be able to get back to work on it tomorrow. And I'm super keen to get back to it. I have a strange desire to... animate things. It's not very fun drawing each frame but when you're done and you see things moving and looking natural it's an awesome feeling.

So in the mean time here's a skin I made of Centure for minecraft a while back. It's not exactly perfect so feel free to edit it and turn him into... a zombie or a goat version of himself or just make a better version if you're artistically inclined. I'm okay as an artist and I hope I improve while making the game. Half the fun of making this will be to improve all my skills.

Minecraft skins sure are tiny. Now I need to study for another test.

Friday, April 13, 2012

The Story

So today I took it easy on the coding and wrote a basic outline of the story. It's surprisingly sci-fi! I'm not even a huge fan of science fiction but there you go. I added a synopsis to the right of the blog there. I'm sorry if it's hard to follow. I want to tell you what's going on but also... don't want to tell you what's going on. If you know what I mean.

Here's a description of the major players (so I don't forget haha). I'll add the character art as I design it:

Centure: Created by Lera, he's the newest Biological Creature and our protagonist. He doesn't say much but he knows more than you think.


These are Centure's 2 forms

Lera: The creator of Biological Creatures. She's wanted after avoiding the police following a terrible accident that occurred during the creation of the Biological Creature she attempted to make just before Centure. Several people were killed in this accident - serious stuff!


Lera - early version - I might change her completely

The Corha World Government: They funded and powered the Biological Creatures operation but are now trying to wash their hands of it. And that means destroying every Creature Lera has ever made.


I will never ever animate this - well maybe one day

Biological Creatures: Creatures created by Lera as requested by the Corha World Government. Lera wishes to save them and does not believe they deserve to be destroyed. They are slowly losing power as their power source has been removed by the Corha World Government. Centure, the newest, suffers the least from power-loss issues.


Lera and Centure

Nybble: Lera's computer. A lighthearted A.I. who communicates with Centure by writing on the world around him using a new technology developed by Lera. In contrast to Centure, Nybble never shuts up stops talking.

EDIT: I've since changed this idea. Though writing on the world sounds cool, I feel like it'll be basically impossible to read while moving which breaks the flow of the game. I have another idea though :)

Hopefully, armed with this information, you can more easily understand the synopsis.



Moon

Moontastic!

Hey dudes! It's been a while. I've made quite a bit of progress since my last post. I worked on my new collision detection system (mentioned in the "plan" post) and managed to get it about 80% working. Enough to make it playable which is good enough for today since I'm tired of working on it. I also did my first background. It was a pretty hasty job but it looks pretty awesome! I can always go back to it and make it look even better later. It really adds to the atmosphere of this first level.

Click for a mini version of the background art

The first level's aim is to teach the player the game mechanics as seamlessly as possible. See the "z" in the first picture? It's a puzzle of sorts since it's up to the player to notice it and press the corresponding key on the keyboard to see what it does or they'll be stuck falling into that pit forever. I'm certainly not going to tell you the controls!

Next up is to complete the design for this first level (I'm about 50% done), work out the bugs in my collision detection system and finally finish the animations for the big character.

Saturday, April 7, 2012

Moving Slowly Onwards

Things are gradually moving along. I've added a box around my character to cut down all the collision checking the game has to do. So now if something's in the box it can worry about a collision in the next frame, if not it can just idle along. Yep I'm saving processing power on a 2D platformer.

I uploaded a video where you can see what the box actually looks like and a nice glitch I've run into. I figured I'd be able to see why it happens in SLOOOW MOOOOOTIOOOON but no luck there.

The box wont actually be visible in the game I just made it like that so I know it's working as intended. Good. Great. Now to fix those bugs.