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 :)
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!
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.
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.
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.
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).