zaterdag 26 januari 2013

Attack of the clones

With the release date pressing hard on our shoulders we're all getting pretty exited. This excitement is very double sided though. We know the game is good enough to be released, but all the other stuff isn't quite... We have no promo video yet, the logo still has no sound, blogposts need to be written, and the game still has some serious balancing issues. We're under quite some pressure.
On the other hand, we've been working hard past few weeks, and we really want to show what we've got! What's weeks of work worth when there's no glory at the end? From the beginning we've been aiming for the first prize, and though we've really had some setbacks, we still think we should keep optimistic, and aim for the highest.

So, lets have a little recap of the entire process we've went through. We started off with 5 members, a team of inexperienced students. It took us so long to come up with a good name for our company that we decided to take a break when it came to naming, but we never really picked that up. Result? Two days before release we still don't have a name for the game.
As slow as we were with naming, we made up with a quick decision about the game itself. It didn't take long before we all agreed on the genre and the concept. We started quickly, and made some very decent progress in the first two weeks. We made the choice to use a library for the UI and we had a working lobby pretty quickly. Everything seemed to be going perfectly.
Then came the Christmas holidays, development slowed down since those two weeks are always very busy. Communication didn't go too good, and at that moment we first felt that we lost a team member. Ivar didn't respond to messages, wasn't active in the skype call, and didn't work any more. Very demotivating for all of us, so development went even slower. Luckily there was a meeting somewhat weeks after the holidays that shook us awake. We saw that we had gotten behind and we really needed to get going again! And so we did, we programmed 90% of the gameplay in one and a half week, and now here we are. I'm writing this blogpost, Siemen is laying his hands on the very last points of the gameplay, tomorrow we'll do all the balancing, and the day after tomorrow the game will be released.

We want to thank everybody that helped us, gave feedback in any way, all the wonderful people on the internet and their great tutorials. We want to thank Arno Kamphuis in special, for his useful advice and neutral feedback. We've learned a lot, may it be programming skills, or social teambuilding skills.

woensdag 16 januari 2013

The Tower Menace

Today we had our very first play-test. I played against Martijn and it was a good match. Before I tell you this wonderful story of our splendid Tower Defence adventures I'll tell you what we have (that was, without a doubt, the most beautiful sentence I've ever made).

We've got a basic tower defence, one type of enemy, one type of tower. Martijn remade the entire map to be perfectly balanced (unlike the sloppy-made-within-5-minutes-test map) and just before our testing revision I programmed the entire gold system. That was basically everything we needed! We had been postponing the gold system (Towers cost gold to build) for testing purposes, you see, having no restrictions means easier testing. Before we could play a "balanced" game we had to fix that though. The game wouldn't be half as much fun if every player could make infinite amounts of towers at the first wave.
With the gold system in place we thought we would be pretty much ready for a play test, we have never been so wrong. During our first test we found out that our towers pretty much confused their enemies. The towers that I built were actually helping Martijn instead of me! Time for a quickfix, and lets go onto test #2. In test two we put the gold system to a test. It wasn't as solid as it was supposed to be. Whenever someone built a tower his gold was reduced, but the limit didn't quite seem to work. Result? Still building infinite towers with a negative amount of gold. Time for a... wait for itttt... QUICKFIX! We quickly found the source of this problem (Siemen had apparently accidentally broken the gold limit system while implementing the health-bars for enemies), and it was fixed, though we still have no idea how health-bars and gold limits have any connection...  Martijn coudn't resist building infinite amounts of towers, so we had to start over again, since the match was no longer balanced.
You guessed it, we fixed the little bug and and went on to test #3. Test three was a more of a balancing test. We didn't find any more bugs, so we went on and did a little bit of balancing. We didn't want to do the balancing already, but it seemed inevitable. Killing units didn't reward enough gold, towers had too much range, it all really broke the gameplay.
We did find one critical mistake though. If one player doesn't send any units, the other player will not get any money. There are two possible ways to fix this. Option one: force people to send a minimum amount of units, or make an income system that rewards players if they send units. We chose to implement the last one, but it will take some time to get it all working. We basically added another point to our todo-list, while we were finally getting near the bottom. Thank the gods we did this play-test now, and not three days before release!

And finally, we will conclude this long reading with the happy announcement that we have our first version of the animated logo. The guy who originally had the job has abandoned it, and I have taken it. The 3D animations are done, all it needs now is sound. But sorry, you're not getting to see it yet, since it looks really stupid without sound. And unfortunately, the logo has no priority over coding...

vrijdag 11 januari 2013

The Return of the... ehm... King??

So, last post we made this promise of showing you a fancy and shiny logo, right? It hurts me to tell you that we can't really keep to that promise. We had some trouble with team members randomly disappearing, and since Rotterdam apparently has no internet connection (We haven't skyped with our Rotterdammish team member in weeks) we're falling behind more and more. Work on programming goes in a great pace, we're making progress every single day, all the other work is stacking up more than we'd hoped. We had no music until two days ago, and the game is still full of placeholder sprites. The game contains enemies, but they aren't animated (they're not properly drawn at all), and the guy who should have made the fancy logo is soooo busy, he has no time for it. Conclusion: A lot of work that has to be done before release!

On the bright side, having placeholders doesn't really affect gameplay, so a play-test should be perfectly possible! We have planned to test our game next week, and from that point, start balancing. See! The programming is near completion, the rest is not. We will publish play-test results, since we're expecting funny situations here and there, and we wouldn't dare not sharing that with you. In the meantime, why don't you just take a look at this awesome screenshot?

The gameplay screen as is. You can see there still are a lot of placeholders.
As you can see we've completed the mechanism to be able to send units to other players. By clicking a spawn point that is linked to an enemy base you can select which, and how many units you'd like to send. Right now there's only one type of unit though, we really need to add some more before the release. A spawnpoint is a big rock, at the end (or beginning, whatever) of a path. Clicking one pulls out the menu on the right, with a drop-down box of available units (has BASIC currently selected), a slider that indicates the amount of units (ranging from 1 - 100), and a send button. The 0,16071 next to the slider is the amount of units that will be sent. (Before communicating with the server it is multiplied by 100 and rounded, but the indicator doesn't properly do that yet). Those faces marching the path are enemies (I know, they don't appeal very threatening). When they reach the small rock (The one surrounded by B blocks) the base will lose health. The B blocks are obviously to be replaced, they indicate the texture-sheet indices reserved for base decoration. And, as you might have guessed, the base will not be a rock... You can't see it in this shot, but there's another base with paths more to the right. A player can move their mouse to the edge of the screen and the entire scene will move to the right (or, technically, to the left). Now the top bar: There's an all-caps WAVES label. It indicates the phase the game is currently in, so right now the player is (who could have guessed...) trying to clear the wave of enemies. Next to that is a label that says: "G: 300". This label indicates the gold the player has. And then there's also a timer. The waves-phase doesn't require a timer, but the building phase does. Every player has limited time to build and send troops, since we really don't want a match to take forever.

So, more info after our play-test, you'll hear from us!

donderdag 3 januari 2013

The Two Towers

Have you ever seen the NVIDIA logo? It's so shiny, and really shouts it's awesomeness in your face! Well, what's a game without a shiny shouting logo when starting up? Since we're not really using any NVIDIA technology using their logo would be pointless. Yet we really feel like adding such a thing. Why not make a fancy animated Alt-Entertainment logo? Maybe next post you'll get to see it ;)

Some days are better than others, it's generally known. Some days are exceptionally good. Last Monday was such a day. In one day we could scrap more from our todo-list than in an entire week. We have fixed some nasty bugs concerning the chat system, (yes, the chat system is now completely finished) and we managed to get the first bits of the gameplay aspects going. We implemented an RTS scrolling system. (Moving the mouse to the edges of the screen to move the camera around) and that same day tons of sprites were drawn. No wonder that at the end of that day we all agreed that "today was a good day".

As for the rest of the days in the past week, things weren't so good. The entire team suffered from a "Logica Tentamen" (potentially deadly and rare disease), but we all recovered from it when we got our test results back. This did really slow us down though. Luckily for us, the holidays have arrived, and we all have tons of spare time to spend. And also, now that we're actually programming gameplay rather than "behind the scenes" engine components and server stuff, things will be more motivating for all of us.

It was our goal, before the holidays end, to have a basic tower defence. Simple gameplay with only the very essentials of a TD. One type of tower, and one type of enemy. Having this would be a major milestone, since that would mean the entire system is done, and we can start adding more content! But as the holidays progressed, our project didn't really. We got stuck in a wave of things that needed to be done. Our todo-list overflowed and most of the team was primarily busy with holiday stuff (family meetings, for example). We also got a bit of a "punch in the face" when our supervisor told us that other companies have 100+ hours per person, and our average was, at that time, not even half of that.

As you might have noticed there's quite some time between between the last post and this one. Most of this post was written but never published, though the entire team was just assuming it was posted. Little bit of miscommunication there, but no worries! Having a long gap between two posts means there's much to tell! Right now we have even more than the first half of this post claims (see it as a pleasant holidays surprise). We have a system that reads the map data from the files, when the maps are fully loaded the server distributes information about who owns which base (rather important to have that aspect perfectly synchronised, as you may imagine). Then all the spawn points are "linked" to their bases with a home-made path calculation algorithm, of which we are really proud. With all the bases, spawn points and paths distributed we can start on the towers and the enemies.

We had honestly not expected this amount of work. Our ToDo list looked like this: (1) Make paths, (2) Enemy spawning, (3) Tower building. We had planned to do all that in just one week. We failed horribly, we got smacked to the ground and punched in the face. Point one (the paths) turned out to be enough material to fill a week of work, since we completely forgot everything had to be perfectly synchronised. A big setback for all of us. But maybe it was for the best, we wouldn't have learned anything if everything went smooth, now wouldn't we?

vrijdag 7 december 2012

The Fellowship of the Game

Two things can be concluded from the title of this post. One, we're starting to become a real strong team, and two: Our plans are getting more and more concrete. But it took us a long way to get to this point!

We started off with a meeting the other day. We all drew our vision of the game on a paper and compared the results. Turned out our ideas were quite far from each other. Everyone gave a little "presentation" of their individual games. We combined the best parts of every game into one game that will be our final product. (Unfortunately the rabbit didn't make it through the voting process)
Everyone had different perspectives of a Tower Defence, so first we had to get that straight. Some of us had a view of Tower Defence like Age of War (http://www.maxgames.com/play/age-of-war.html). Which is obviously wrong, shame on you!

After we have gotten rid of this little synchronization problem we started planning our structure. How will we set up our server? Are we going for a Team Fortress 2 style server setup (distributing the server software and letting people host for themselves) or are we going for a Dota 2 server setup (one master server that assigns you to a game-server). We have decided to go with the TF2 server architecture. Mainly because it's easier for us, and it doesn't require a master server to be online 24/7.

From that point things started rolling! At our next meeting we went through some minor (but necessary) things. We decided that we would use a library for the GUI/HUD, since a TD has plenty of HUD elements, and writing them all by ourselves would take hours. That same day we came across RuminateGUI and without any further doubts we implemented it. It took us some time to get it working, but that time will really be worth it, we can now make HUD elements within a matter of minutes!

Things didn't work out as expected though. The GUI library was designed to have only one GUI per game, but our game already has 3 different GUIs, one for each state (Main Menu, Multiplayer Menu, and the Game Lobby). This caused some strange behaviour that we needed to fix. We only found the source of the problem this Friday, three days after the first encounter with the bug!

Speaking of source... Let me show you what we've got already!
Since we're focussing on functionality rather than appearance we've already got quite some things to show you! (They're just not that pretty...) First on our list: The server! It's output might not be that exciting, but "behind the scenes" there's a LOT going on!

The server window showing one connected player. There's this strange error though...

Then there's the main menu (not really special, just a "Play" and a "Quit" button). Not worth screenshotting ;)
From the main menu players can get to the multiplayer menu, a screen where one can fill in his/her desired name, server IP-address, and press connect. The magic starts happening when that connect button is pressed, let me guide you through the wonderful world of handshaking...

The player presses connect and so asks permission to join the server. The server checks if he (yes, the server is very manly!) has free slots and if he does, he replies with a warm welcome. If not, the server tells the player that he/she's not welcome. Lets assume the player gets the welcome message. The game will now show a lobby screen, where players (will eventually be able to) chat, and wait for the lobby to be full. When all slots are occupied the game starts!
But wait! There's more! How do players in the lobby see each other? The welcome message isn't only a welcome message, it's also an introduction to everybody that's already in the lobby. (Just like a Christmas dinner over at your girlfriends parents place, with lots of people you don't know, where your girlfriend welcomes you and introduces you to her family. The only difference is probably that you're not as nervous when entering a lobby as you are for this Christmas scenario).
But how do all the people in the lobby know you're there?  Well, the server broadcasts a message to everyone informing them of your arrival (Imagine your girlfriend saying: "Hello everyone, this is <insert name here>"). Lucky for you, this lobby has a big shiny "Disconnect" button, so if you don't like the people in there you can get out of there within a matter of seconds. (A feature every real-life activity should have... ;) )

The game lobby as it is on Friday (07/12/12), Everything that's red was added later with paint. As you can see this is a lobby for 2 players. One slot is occupied.





donderdag 22 november 2012

To get things going...

You are probably wondering right now, what is this "Alt-Entertainment" you are speaking of?
Well, that's us, a group of students at the University of Utrecht. We have a shared passion of games (and their development). Why don't you just go ahead and read our team-page, on which we try to describe ourselves and our strengths. Making such a page was, to be honest, harder than expected. It's rather hard to write a description of yourself and your strengths... There's always a slight feeling that you should be more humble, but how can you be humble when you've got to describe your strengths?

And then there was another problem, we needed a name. Countless hours (read: minutes) have we spent discussing names. There were so many options! At first we decided that we wanted to pay a tribute to the great kings of game development: Valve, Blizzard Entertainment, Infinity Ward, you name them... We came op with silly anagrams, synonyms and puns. (seriously... Snowstorm entertainment?) but that just didn't feel right. And then, out of nowhere, Martijn came up with Alt-Entertainment. For those who don't know their hotkeys: Alt+Enter is the hotkey to make things fullscreen.

But enough about the team. What matters now is the question: Why are we here? We are here to develop a game based on Rampart. Rampart is the game that influenced many Tower Defence games, which is a genre with much potential. I, for one, have spent many many hours playing Warcraft III mods, and most of these mods were (derivatives of) Tower Defence.
  
There are many different versions of Tower Defence available on the internet, mostly playable without download. These games, assuming the player has sufficient skill, can provide many hours of fun. They do lack one thing: multiplayer! Fighting endless waves of enemies isn't that fun. You know you're going to lose eventually (most of these games are endless, and highscores are based on survival-time). I never start over again when I've had a good run, because I just don't want to go though the first few levels again.
  
This brings us to points of possible improvement: playing versus a friend (or enemy, who knows?) encourages to get better, because losing isn't an option. Imagine how he/she will brag all day about how he/she has won? Also, this makes the game less repetitive,  as different opponents are likely to make different choices, so you're basically never playing the same game twice!

For now that pretty much sums up our concrete plans. We hope that you now have a basic understanding of our project. But that's just the result we're aiming for and it surely is a long way to go. So why don't we discuss what development is going to look like during the project?  As with all game development, programming will be a big part of the project. Luckily, we have a passion for this so it is not a problem at all! We will do the programming work in C# within the XNA framework. Since we are aiming for multiplayer gameplay we also need to write the appropriate server software that enables two players to play together. This will also be programmed in C#. As on the graphical side, we are not completely sure yet.

Graphics are a big part of every modern game! In almost every way it is what evokes the gamer's first feeling about the corresponding game. Especially games that are small, pick up and play games, need to grasp the gamers the moment they see it. That's why we want to get this right. It is also the reason that we can't discuss this subject in more detail because we just have not decided on it yet! We are playing with a couple of ideas, ranging from a super minimalistic style to a cartoony based graphic style. The downside is that we do not have a dedicated graphics designer so it will be a challenge to come up with something special. This only is makes us more determined to make this project work! Where problems arise we see challenges that we would love to take on.

In the coming weeks you will find regular updates on this blog where we will comment on the development progress and discuss game details when we are ready to release them. If you're eager for more news on our project, this is the place where you will get it.

Well, that's it for now, we hope you're currently as exited as we are (which is very unlikely, because damn, we're exited!)