Final progress report - so many features!

Well, it's been a long run, but our game is finally close to being finished! Before I continue and talk about what we have achieved in the time since the last blogpost I want to offer the apologies of our group for missing our biweekly blogpost this week. We were just too preoccupied with getting the promotional material ready and finishing our game that we completely forgot about it. Luckily though, we remembered in time before the final deadline tomorrow afternoon.

With that out of the way we can take a look at what we've achieved in these last two weeks. Well, first and foremost, we've added three more bosses!

Meet the bosses - click for full!

On the far left is our first boss, the Worm Boss, with updated looks and a new homing fireball attack. To his immediate right is the Scarab Boss who has a shield it can restore over time and has a myriad of complicated attacks that increase in complexity when his health gets below a certain level.
Another place to the right is the Butterfly Boss, who can switch colors, which causes it to be immune to and even enables it to recover health from all bullets of that color, with the trade-off that all bullets it fires itself that are of that color can't do any damage either. It has very powerful attacks to counterbalance this though, and some can only be avoided by putting yourself in the path of the bullets that won't deal any damage.
Finally on the far right is the Bee Boss. Although its attacks aren't very powerful compared to the other bosses' attacks it makes up for it with minions that constantly buzz around the screen and a kamikaze-attack where it will attempt to crash into your ship directly, instantly killing you. The sprites of the minions are reaching the completion stage, but unfortunately they weren't ready yet as of this blogpost being written.

Another major thing we've added is particles. What this basically means is that we can create all sorts of neat effects, such as explosion animations for the enemies that are never exactly the same twice, trails for some kinds of bullets such as the Fireball the worm boss fires. We haven't used them too extensively though, in fear of the players confusing them with small bullets or bullets that actually leave a trail of other bullets behind as they go. Nevertheless, the explosion when an enemy dies has been long overdue so even just for that it was definitely worth it to add them.

Also, the shop and the upgrades are finally fully functional! You may have noticed the brown thing circling around the ship in the screenshots – this is one of the drones, and the large, blue bullets on the screen are explosive bullets it fires that can be detonated by pressing the Z key. We've added several other drones, each with unique characteristics and attacks. And the best thing of all is that upgrading them finally works without a hitch. See below for a screenshot of the completed shop.

Note the ridiculously high scrap count for testing purposes

We've also added many small things, including but not limited to:
A shield bar for the player to keep track of how much shield power he has left
A small number appearing above an enemy when it is killed, indicating how much points that earned the player
A display on the side of the playing field indicating all the upgrades the player has activated
Music and sound effects
Three new enemies that have been ready for some time but weren't actually implemented until recently
A functional title menu

Oh, before I forget it, the dynamic difficulty has finally been implemented! The algorithm for it, that had been ready before we even had a moving ship, had to be rewritten completely because it simply didn't work, but eventually we got it to run just fine. What this means is that, in the final version, you can basically play the game at any difficulty level you want without having to make manual adjustments – the game will determine how skilled you are and constantly adjust its difficulty level to fit your skill level. This also means that the game will remain challenging even as you get better at it.

For the tech-savvy among you, the old algorithm kept track of the 50 previous difficulty levels and used this data to calculate how consistent the player was playing. For example, if the previous difficulty levels vary between 0.69 and 0.71 you're playing pretty consistently, while if they vary between 0.2 and 0.8 you're not playing very consistently at all. The algorithm would then adjust the rate of change to the difficulty level to how consistent you are playing - if you're playing very consistently then obviously it has almost nailed how good you are and should thus refrain from making huge changes to the difficulty level, whereas if you are not playing very consistently at all it'll have to make big changes in order to get close to your actual skill level faster. The idea was nice, but it failed in practice because the way it calculated the consistency and used it to adjust the rate of difficulty increase/decrease was completely botched. Eventually it turned out that it was easier to switch to a different algorithm altogether than to try and fix this system. So, here's what we came up with for the new algorithm:

The difficulty level constantly but slowly increases every second. However, the longer you play perfectly (which currently means 'without getting hit') the faster the difficulty level will increase. When you ultimately get hit because the game is getting too hard for you the difficulty immediately drops by a set amount (say, 10%) and the rate of increase halves. Now the difficulty is slightly below your actual difficulty level since the rate of increase will never reach as ridiculously high as 10% per second, but the rate of increase is much lower than the last time the difficulty was at that point. Now the difficulty will increase at a slower rate until it again hits the point where it gets too hard for the player, lowers the difficulty and halves the rate of increase again. This process then continues, continuously trying to find at which difficulty level the game is too hard for you and then diving a bit below that and starting the slow increase again. This way the player will be constantly challenged (since the highest difficulty setting possible is basically impossible) while still not being too challenged. It may sound a bit wonky, but in practice this works really well - in fact, this is an adaption of an algorithm that is used in networking to determine how much data can be sent until the transmission line gets congested with data.

With that bit of technobabble I'd like to conclude this final blogpost. We hope that those of you who read this found it to be interesting (or at least amusing) and we hope to see you at the symposium on the 31st of January from 13:30 to 15:30, with the award ceremony for best game afterwards from 15:30 to 16:30.

On behalf of the entire Thunderstruck team, we hope to see you there!

Post-Holiday Progress

Greetings to all of you who read this post! I hope you all had a wonderful time with your friends, family and beloved during christmas and that this new year will offer you many enjoyable adventures.

But enough with these seasonal greetings. Being here probably means that you are intending to read about our latest developments with Space Hawk, so that's exactly what I'm going to try and deliver.

As has been mentioned in our last post, we had plans for the addition of a shop to give the player the ability to upgrade his or her ship and add extra fire power with the use of drones. To be able to afford these upgrades, the player is required to shoot down enemy ships to collect scrap as a means of currency. As I'm writing this post, this scrap has been implemented and a multitude of drones is up and running as well. Still being worked on are the ability to upgrade the player's ship and the shop itself for the players to spend all their hard earned scrap at.

The game does now save the player's progress in a XML file, meaning that when the game is shut down and started at a later time, the player's upgrades, score, scrap and campaign progress will be reloaded and continued from.

As part of making the moments between the individual levels more enjoyable we have made some progress on a world map to be shown between Worlds. (WIP)


To be clear: we plan to have Space Hawk's campaign consist of multiple worlds, each consisting of multiple levels. We plan to let the world map (in combination with some intermissions between certain levels) add some sort of a story between all the shooting and to provide the player with a sense of fulfillment when/if he/she completes the game.

During boss battles, the player's model is now being scaled down to emphasize the sheer difference in size between the player and the boss, and to make it easier for the player to dodge the boss's bullets. This way the boss battles can be made more difficult than the average wave without making it (completely) impossible for the player to dodge the incoming bullets.
The mechanics behind the boss itself have also been upgraded. Now the bosses have a health bar, have the ability to consist of multiple stages and have their own specific behavior. For instance, this next Super Worm boss (WIP) consists of a head which shoots three bullets and several body parts which each shoot a single bullet. Though this might already sound quite minacious (or not), it is when the player kills one of the worm's body parts that the true fun begins.



For when this happens, the body parts behind the destroyed part will form a new worm, increasing the amount of bullets being shot at the player, while the parts in front of the destroyed part will continue trying to shoot the player, thus intensifying the battle as it continues.
With these kind of bosses in mind, we hope to encourage the player to come up with tactics on how to fight their boss battles and to make each boss stand out from the others.


Other things we plan to be working on in the coming week are things that will make Space Hawk's gameplay more enjoyable. With that I mean the following: more levels to play, more diverse enemies to encounter, more bullet patterns to be shot with, more bosses to battle, more music to enjoy listening to, more sound effects to hear the enemy ships be destroyed, more sprites to make the game even more beautiful, the upgrades to improve the player's stats, the shop to acquire said upgrades and drones, dynamic difficulty to make the game enjoyable for newbies and veterans alike, a tutorial world for those wishing to learn how to play the game first, and last but not least: the main menu.

In other words: lot's of fun (in combination with stress) for us to be had in the coming week, but it will help us getting closer and closer to the point where those who want to play Space Hawk, can play Space Hawk in the way intended.

Once again best of wishes for this new year of opportunities, and until next time!

Pre-Holiday Progress

Early Chrismas greetings to you all!

Funny how the week before the famously most peaceful time of the year can be one of the busiest. Not only did we have our very first presentation of our game to an audience, which felt a bit like our very own miniature E3 or Gamescom, we also decided to get as much as possible done before the holidays begin. So let us talk about our progress, shall we?

First up, because of the presentation, we made a first proper level. It's a couple of minutes long and features several different enemies and the temporary boss we showcased last week. The level is very challenging for a first level, so obviously we have to work on our balance. However, week by week, the game becomes more and more playable. When you are brainstorming about what your game will be, it is only a game in potentia. It is great to have this actually real and developing thing right under our noses.

This week is also about the shop. Our chosen deadline before the holidays is the next sunday, so it is still a work in progress. We can however talk a bit about our design choices concerning the shop.
Our current idea is to have different types of upgrades. Some you will be able to increase in level/strength, such as shield power increase and main weapon improvements. Others will function as a secondary weapon or a special attack. Finally, we also want to include perks. As our concept for a perk system stands right now, you will be able to buy only one perk each of the two perk types: Offense/Defense. Not all of these upgrades will be available at start, you will have to unlock them.
Here's what the shop looks like right now (WIP):


Ain't it shiny, folks?

Anyhow, there is more than just the shop we are working on. As always, we keep adding new enemy types, bullet patterns, enemy paths and levels to the game. We may soon have our first real boss! A highscore system is being designed. Busy, busy, busy. But fun nontheless. 

And... that's all for this week. Merry Christmas and see you next time!




Progress on playability

Greetings everyone!

This has been yet another busy week, mostly because we were a little behind with our schedule on Monday. We managed to catch up, though. This week we made the game playable by implementing the paths for the enemies, adding the shooting behavior for the enemies and allowing the levels and paths to be built from XML files. This last thing basically means that we can now successfully create the levels in a separate file instead of having to put the level design into the code itself. The basics for this were implemented earlier, but only this week did we complete the code that allows us to actually read the files and use their data in the way we want to. As of writing this there are still some bugs in the system but those are already being solved.

What all of the above means is that we now have a playable, albeit very simple, game! As soon as the biggest bugs have been fixed we could just start designing levels and enemies and have a fully functioning game. However, that's not what we're going to do. Right now the enemy sprites are still simple 2D replacements for the upcoming renders of 3D models that'll look much better. Important things like the menu, high scores, pause and mute options as well as the HUD haven't been made yet. We still don't have a boss made yet, although we could simulate one by giving a regular enemy strong attacks and loads of health. We also haven't added the shop where you can purchase upgrades for your ship yet or implemented and tested the dynamic difficulty. As you can see we still have a long way to go, but it's exciting that the core functionality is now all there!

That's not to say we didn't add anything that isn't strictly necessary for the core gameplay, though. One of the things we added is a shield around the player that slowly fades when it accumulates damage. Another one is that we added knockback when the player bumps into an enemy ship, damaging both of them slightly and sending your ship reeling preventing the player from controlling it for about half a second to a second.

I also messed around a little with the bullet patterns to test the shooting system. In only 20-30 minutes I was able to whip up this bullet pattern:


In the picture you can see the temporary sprites for the enemies (the one for the "boss" is quite silly :P) and the bullets we use for testing purposes and the shield around the player. You can also see that the player bullets are not always spaced the same – this is because, unlike earlier, the positions of the gun are correctly recalculated when the player moves the ship sideways which causes the sprite to tilt, moving the guns closer to each other. It's a small detail, but one that's very noticeable when you're playing the game – imagine the bullets appearing out of thin air somewhere on the sides of your ship!

Next week we'll start working on the shops and upgrades as well as the bosses.

The beginning of the hard work

Hello everyone! Thunder Struck Games here, with another update. In this blog update we will talk about the progress we have made during week 49, from December 1st to December 6th.

This week has been the busiest week as of yet. After finishing the designing process last week, it was finally time to actually start creating the game. Last week's Thursday we gave everyone deliverables for this week's Tuesday. Everybody kept their word and finished their deliverables. So on Tuesday, we already had three 3D enemy models and a player model, 5 work in progress soundtracks, and we had programmed the 'skeleton' about all of the needed classes. That's a lot already, to be honest!

On Tuesday we came together as a group to talk about our deliverables. The programmers came to our usual meeting place a little earlier and had a talk about the programming. There are two "big" pieces of programming that need to be implemented: the enemy pathing and the levels. Currently we are planning to read both paths and levels out of XML files and we're already done with implementing an XML reader, so we only need to think about in what way levels and paths will be programmed. We've already thought about how we want to make the paths work; we want to make a path a list of coordinates, and make the enemy  go through this list and go to every coordinate. For the levels, we are thinking about putting in every single enemy in the XML file manually. This will take some time, but it's easy to work with, so it'll be worth it. Later that day the programmers were joined by the rest of the group and our tutor to have an official meeting of 30 minutes. There we came up with some things that still needed to be divided around the group, like thinking up boss(es) and enemies, a world map, a HUD layout and some other things.

We started with programming the in-game state and created a viewport in the middle of the screen. On the sides we will make an ingame HUD, which will show in-game stats, such as your score, your total high score and an "EXIT" button. Below is a screenshot of the current state of the game and as you can see we have already programmed a playable player into the game.  Keep in mind that this image has been scaled to fit on the page, the normal game is full screen and the resolution is 1920x1080. Our player's spaceship can already be controlled. The white space is where the gameplay will happen. We will make a nice background for it, of course, but currently we don't have that yet.

Several of our team members started using Blender for creating the 3D models. That's right, we're using 3D, but we're not implementing 3D models in the game. How will you use the 3D models then, you ask? Simple.The player sprite is a render of a 3D model, which, on its own, already makes it look pretty nice. However, when the player moves to the left or to the right, the sprite will play an animation that makes it look like an actual 3D model!


We are planning to add this feature to every enemy as well. This will make the game look a lot more realistic than with 2D sprites like in the original Gaplus. It will also give that extra feeling of depth in an otherwise pretty flat environment.

As for the AI, the Dynamic Difficulty feature is also being worked on. The way we're going to use this is, based on how the player performs, the AI will make a multiplier, that is a parameter for all enemies that are created. For example, if the player has an abominable hit-rate, the enemies will start having a slower fire-rate
and movement speed. However, if the player knows the game, the enemies will move faster and shoot faster. This will improve replayability of the game and makes the game playable for casual gamers, but for hardcore gamers too.

A few of our team members are thinking of  bosses and enemies. We want a diverse arsenal of enemies and the bosses need to be memorable and unique. We also want some kind of background story, that has to link all the enemies, bosses and the player. These points, however, are a lower point on the agenda , so stay tuned for more news about enemies and bosses!

To sum up, the next two weeks we will be working towards the demo on December the 18th. We want to have a playable demo by then, where at least the player can move, shoot and die. The player is already able to move, so that is one point of the checklist.

Well, that's already the end of our weekly blog post, but stay tuned for further updates on our game!

Designing the Design Document

Greetings everybody,

This week was a busy week for ThunderStruck Games. The design document for Space Hawk is almost done and so begins the next portion of our game: the coding. A couple of important things in preparation for the coding were done this week: we set up our SVN Repository and we set up the class structure for Space Hawk.

Thursday we had an awesome workshop about implementing particles in a game. Since Space Hawk is going to be a game featuring a lot of bullets, exploding spacecraft’s etc. this workshop will come in very handy.

Friday Manuel Kerssemakers from Abbey Games was the host of a lecture about his experience in making games. We learned a lot about the ups and downs of teamwork, how to exploit the strengths of your team members and much more.

This weekend everyone from ThunderStruck Games will be working hard on Space Hawk!

Oh yeah I almost forgot. Here we present you the design document for our game. We will use it as a guide throughout the entire development process.

Design Document[.pdf]

See you next week!
Maarten

Site under construction

Dear visitors,

this weekend, we will update the site with a new layout. In the meanwhile, there will be parts of the website that are not relevant to our project or team. Please bear with us as we upgrade the site.

- ThunderStruck team