zondag 3 februari 2013

And that's it

For all of you who'd like to play our game in their own time (making us very happy :D) we have posted a download link on the 'The Game' page, but I'll add it here too.
Download link: Click the filename on top of the linked page
My download got removed... Let's try this again then: Enjoy!
Nope, it won't stay up.

Unpack the .rar file and run the .application file.
Should you manage to beat our boss, don't hesitate to leave a message :)

zondag 27 januari 2013

Victory!

Once again we witness the power of putting your mind to something, because in contrast to the previous post, we managed to get everything in the game, working the way we'd like them to. Meaning:

Boss Battle
That's right, we have a boss battle! A terrifyingly difficult onslaught based on Da Vinci's tank design. If you have not mastered the game in the six levels foregoing this onslaught, you're in trouble. It's a merciless brawl for survival embellished with great music and a spectacular explosion to finish things off.

Power Ups:
Yup, you read it right! Power ups! We've added a way to progressively get stronger if you do a good job. We've got six types of power ups: speed up, firing rate up, health up, max health up, damage up and one up (an extra life). All of these have their own colored sphere (sprite... all still 2D, but the illusion of being 3D!) with an icon depicting what the power up will do.

Sound Effects:
We've added sound effects for power ups being dropped, power ups being picked up and also we've added reality to our huge boss explosion by giving that a sound effect too! BANG-BANG-BAAAAANG!!

Revamped AI:
AI, our focus, is a very tough subject. You have to sketch up the thinking and behaviour of the agents from the ground up! While we think it's logical to go around a wall instead of constantly bumping into it, the AI doesn't know anything about that. While we think it's logical not to fire your bullets if you're going to be caught in the blast radius, the AI doesn't know anything about that. We've had to face several of these issues and for most of them we found a great solution (for others we found passable solutions). Each type of enemy tank has their priorities. The Speed Tank will speed towards the Pudding (hence the name) and blow his way through walls to clear the path and wil fire at the Pudding if it can reach it with priority over everything else. The Power enemy will blast its way towards the player and if it is in range it will keep its distance and fire at the player from there. The Armoured Enemy has nothing to fear and will get right in the player's face just to annoy him and keep him occupied while the others take care of the rest. Because that became our primary focus as we wanted to introduce different enemy types within this enemy horde: teamwork. It's really tough to create a tactical team effort from scratch, but we managed to pull something off by giving our enemies a basic behaviour and by adding to that for each specific type we gave them roles within this horde. It's quite possible (quite likely even) that we've only scratched the surface in terms of AI, but we all feel we did a pretty good job with what we had at our disposal.

These last couple of days as everything started to fall in place we tried our best to make the game as playable as possible, so we were busy with lots of balancing. A little tweak here, some extra damage there, a longer respawn timer for him, less spawns for them... After testing and testing and looking at the little things as well as the bigger ones, we found that it takes a lot of work to find that balance of playability against the game being interesting. As we tweaked around, the game went from a slow ride to a chaotic battlefield and as we added ones and zeroes to our values, we believe we managed to create a game both playable and fun!
We're quite proud of what we accomplished and we can't wait for the symposium to add some more Pudding Protectors to our ranks!

vrijdag 25 januari 2013

The Final Stretch

A lot of time has passed and a lot of work has gone into this project. Day after day the constant reality check of the Skype chat telling us that it's already the next day. But after all this work, our time is almost up and the coming week will hold the moment of truth for us and our baby. Time is running out and every second wasted brings us closer to the reality of how much work goes into each and every plan we made. It's amazingly easy to come up with great ideas and the game is awesome in every way until you have to make it a reality and the deadline is closing in. Even though we already decided that we were dropping the network play and focusing on AI to save time, it's difficult to see what we will be able to get done. A factor that adds to this is that we have another moment of truth in the coming week: a Mathematical Logics exam (which makes no sense as we have concluded over the course of this period). It might be that we won't have a boss battle, no power-ups, no pixel based wall explosions. But as I look at the things I just listed again, they're all extras that could possibly add some depth to the game. But what we do have is a solid base where the primary actions are possible. And isn't it much more interesting instead of looking at what we might not have, to look at...

What we do have
We have revamped our tank graphics. We knew they weren't optimal and over time, the base and the turret did not even match anymore. Also, the player's tank and the enemy tanks were identical. In fact, all tanks were identical. So Jorden did a great job at designing some very special tanks for both the player and the enemies. We now have three tanks for the player to choose from: a Speed based tank with a slick, smooth, aerodynamical design, an armored Defense based tank which is quite bulky and beefed up to look its part and lastly an intimidating Power based tank that will blow the enemies' brains out (literally). But not only the player got new tanks. Our enemies can now be Speed, Defense or Power based. All with matching designs naturally. And of course our Play button redirects the player to a 'Choose your tank' screen to pick their favourite.
Our menu got an upgrade. Now equipped with slightly more attractive buttons that finally portray what they are supposed to do, and a neat, exciting background (that I made, just sayin'), topped with an awesome job by Alexander, who made a cool logo sporting a tank and a pudding and hand made Japanese signs to spell out our sub-title ('Itadakimasu!!' or 'Let's eat!!' being the traditional saying in Japan before a meal, which we figured would match our pudding theme) and the official Pixel Pudding logo in the bottom-right corner.
Our enemies have been equipped with health bars for the player to deplete. And as I'm starting on health bars, of course the player has one too. This is visible in our added side bar. This side bar shows the accumulated score that the player has earned by firing his way through the enemy tanks, the player's lives or how many times the player will still be able to respawn after his own health bar has depleted, the current level and my personal gem and as such, my personal favorite: the Pudding. A lot of work has gone into getting this screen where the player can see how the Pudding is holding up. This happens in relation to the health bar underneath the screen. Every 20% of health that the Pudding loses will make the Pudding respond. The saddest part is that the best reaction is in the final 20% when you can see the Pudding crying, but sadly, should the player have the slightest skill in the game, he/she will never see this awesome animation. If you've read this, make sure to let the Pudding die at least once, to see all the responses.
One thing that weighed heavily on my mind was that firing a bullet is no fun at all if you don't see anything happening. So that's why I managed to draw up an exciting explosion to make our bullets hit with style. I mean, what are tanks without explosions?
But even that is not all, because our game now comes with amazing music! A great and epic tune befitting the epicness involved in protecting a pudding from evil people that do not want you to be able to eat your pudding. The best part is that everyone can relate to our uhm... story, because everyone obviously loves pudding!

As this final post comes to an end, we're inching ever closer to our deadline and ever closer to finding out what the response to our game will be. We can't wait and hopefully, neither can you.

vrijdag 21 december 2012

A good beginning...


Midterm

Is a halfway a battle won.
So, we have not only survived half the period, but also the supposed end of the world. Not letting some Internet downtime keep us down for long, a bit after we initially planned, we can finally make our midway point blogpost.
We are now halfway our project—or we very well should be—, so let’s have a look on how far we’ve really gotten.

What we have

Bluntly put, we have a working game engine. There is a fully-functioning, driving, shooting (with actual bullets that actually come out and do damage; shock and awe) tank, destructible walls, collision detection and background slash game world. We even included some very rudimentary enemies in the form of disembodied turrets that track the player across the screen and start firing whenever he enters a certain range. The level ends when all enemies are destroyed, after which the game promptly resets (so we still need a game over screen). We have a pause menu with retry, back to menu and exit buttons.

So essentially we have a moderately playable product that is still missing some minor polish in the form of some menus.

What we don't have; or what we're working on; or what we're definitely not doing, ever

We feel the current graphics of the game are still a bit… old-school, however. Whereas we keep the grid structure that we use in our level loading, some members of our team are devising a system that will hopefully give the game a cleaner, more natural look, by literally cutting corners of the background sprites and programming the level loading in such a way that the blocks arrange themselves in a logical manner.

As we were unsatisfied with the way the destructible environment works, one of our members quickly proposed a Worms-esque blast-radius based destruction mechanic. As he had some experience with working with pixel related collision detection (as opposed to the bounding box based kind we use now), he believes it will cost relatively little effort to implement this in the current game.

After cursory research on network support we got the distinct feeling we might not have the experience and time required to make multiplayer happen. And after hearing people with experience lament on the difficulty of networks, that feeling evolved to certainty. We’re dropping online multiplayer.

Instead, we’ll be focussing on our backup plan: enemy AI. An AI that is smart enough to give chase, pursue the main objective and lead a target, with different behavioural patterns for different enemies.
So, in place of a basic multiplayer mode, we’ll be making an extensive single player mode, with different types of enemies, powerups, bosses, environment, etc. The idea will be the same: protect your pudding from the enemy, but the more focussed approach will most likely result in a more polished and enjoyable experience.

Since settling on the name “Pudding Protectors: Idatakimasu!”, we have likewise defined a more definite style. Contrary to our original clean, close to realistic idea, we will be following a more stylised, Japanese and over the top feel.
Concept art for the different enemies and player tanks is full in the works, and ideas for powerups, bosses and levels are bubbling amongst our members. In order to homogenise the art style, we are working hard to make everything look clearer and smoother.

So our plan is as follows: First polish the basics, since you can’t build a strong game on weak foundations. So finish the menus, tighten up the backgrounds, overhaul the environment and tweak the hit and collision detection.
Then—and this is easily said, but probably not quite as easily done—create an AI. First we’ll create a rudimentary one that we can tweak to suit our needs, then we’ll define the different enemy types and implement them with each their own behaviour. We’ve had discussions on how to handle this, and several of our members have definite ideas and plans for the implementation, so hopes and faith are high.
After we are done with that—or at least that we are certain that we are almost finished—and we have idle members, we start programming powerups, which we have already largely defined.
Simultaneously, as not all our assets will be spent on creating the powerups, we create the sprites necessary for the different enemies and player models, so all art is comparable across the game.
Lastly, when the style is set and the entire game is in a playable state and our AI works as desired, and we have a number of levels, we add bosses at the end of the levels. Because this is something we feel will add a lot to our game, but it is hardly required, it is one of the last things we plan to do.
I, for one, would love to play our finished product. Let’s see if we can get there.

vrijdag 7 december 2012

An update of sorts


In the grand scheme of things, there are still a number of things we need to do. However, more importantly, there are also a number of things we don’t have to do anymore!
One of these two groups is larger than the other, sadly.

What we have

Let’s focus on the positive at first: we have a tank. And it can move. That’s a solid basis if I ever saw one.
 It has the desired 360 degrees of turning freedom and it can move forwards and backwards. And, though we’re still working on the visual aspect of the product, the threads of the vehicle are animated.

Secondly, we have a gun, and it can move. For now, it is a wonky five-minute placeholder which points at the mouse cursor, but a turret is a turret, regardless of graphical fidelity. Shooting is implemented as well, so once we have bullets, we can shoot them. But I’ll get to that later.

Furthermore, our menus are working. Partly. We have functioning Exit and Single Payer buttons, and it is only a matter of time before we ascend to the heights of Options as well.

What we’re working on

Tiles. Though black is obviously a beautiful colour, which is featured extensively in my wardrobe, it does not make for the most riveting of gameplay. Though the placeholder tiles are made and ready for deployment, there is still exactly that problem. Deployment.
Even as I write this, one of our dedicated team members is still furiously coding to make this work, despite what very well may be food poisoning. We don’t do breaks at Pixel Pudding.
Let me get another cup of tea.

Where was I? Oh yes.

As I mentioned before, one of our issues is still the bullets. Not a big deal, obviously, but not something that we’ve tackled yet. It could be the case that Pixel Pudding is comprised of subconscious pacifists, who put off the addition of violence to the last possible moment. Or perhaps we just forgot and we’ll do it tomorrow. I’m sure there is a valid excuse. I mean, I’ve had a pretty eventful week myself, filled with food, family, art and love, among other things, so I can easily imagine the others were preoccupied as well.
This is something that needs to be done, however. Tanks and bullets are kind of a thing.

There is still the small matter of design, enemy and player types and art in general. Though this is part of game design, it is a necessary part of gameplay, and we want to make the game feel right. So, with three creative minds doodling away during daydreams, lectures and train trips, we are slowly designing different types of tanks. For now, the emphasis definitely lies on slowly.

What we don’t have

And then there are the things we haven’t yet touched with a ten-foot pole.
And they’re big ones.

Firstly, multiplayer. Obviously, you need something that actually functions  before you can expand it, so without even a moving tank, we could hardly start working on something as complicated as network support. We have, however, taken time to research this subject, and we’ve come to the conclusion we’ll probably need to do a bit more research. Once we have actual bullets, and levels, we’ll see where we can fit this in our schedule.

Then, AI. There has already been talk on this. Our original plan was to include a multiplayer with AI that could take over players whenever they would, inevitably, drop connectivity.
We may not actually do this.
We’ll try (gods, we’ll try), but it is not as high on our priority lists anymore.
There is still the singleplayer, but again, a functioning multiplayer is more impressive than a functioning singleplayer, so again, there’s some prioritising going on here that may not be good news for AI. The singleplayer AI probably is more basic than the multiplayer, as the multiplayer is objective-based and calls for a certain level of reactive actions, whereas the singleplayer mostly involves shooting at the nearest target.
It’s a difference in nuance.

There also is still a bunch of things we haven’t had the time to do yet, such as a moving camera, the conception of a statue unit, the programming of the different tiles, etc. but those are relatively minor things, that will pop up naturally over the course of our experience and will most likely be largely busy-work, that will take time, but little effort. As opposed to the Herculean task that is comprehending network support.
We may have a candidate for our first ticket.

donderdag 22 november 2012

To improve is to change


The Glory of Battle City


The story isn’t exactly Shakespeare:  you have a tank, you need to protect an eagle statue, and the enemy is coming. You figure out the rest.

Whereas it is unclear whether you are a zealous American soldier, an SS Panzer pilot or some sort of hyperadvanced Roman warrior in a futuristic warmachine, Battle City, a classic top-down tank shooter on the Nintendo Entertainment System, was fun and addicting and quite innovative for its time, with a local co-op mode and an in-game level editor/creator.

Now it’s our turn to make it better.

The hasn’t aged remarkably well. The limited controls, very basic AI and—shall we say—less than impressive graphics, leave ample  room for improvement.

We aim to provide the classic feel of Battle City, while improving on the formula. We will try to round off the game with addition of improved graphics, full-ranged controls, online multiplayer and an actual, functioning AI.

Improved Gameplay

The controls of Battle City were stiff, at best. The gun of your tank could only fire straight ahead, and your movement was restricted to the four cardinal directions. We aim to include a 360° movement arc and independent gun aiming.
The original game included enemies and an AI behavioural pattern. This pattern was largely random, however, and the enemies did little but drive around aimlessly and try and shoot the player whenever he was in sight. We aim to create enemies that use strategy, actively seek out objectives or at least follow a certain behaviour.

Improved Multiplayer

The local multiplayer of the original game was almost revolutionary for its time, but nowadays, we expect more. In addition to the shared screen local co-op, online or LAN cooperative or competitive modes will add much to the classic game and will hopefully revitalise a timeless oldie.

Improved Graphics

Naturally, the graphics and sound effects of the 8-bit era bite the dust when compared to modern standards. The least we can do is update the poor NES’s visuals (not to mention remedy the obvious lack of pudding in the game).