Wednesday 22 January 2014

It is the last straw that breaks the camel’s back

But, we're not camels so we won't have any problems!

Just a few days are left before the final deadlines. Next week we need to deliver loads of promotion material and we'll give some presentations. Hopefully, you can see us on stage next week on Friday at 15:30. If we will be there, it will mean that we're presenting at the award ceremony!

But, before that, a lot of work need to be done on the actual game. The core game itself is more or less finished, but we need to do a lot of testing. We also need to implement some extra features. Last Monday, we had a conference call on Skype to discuss what needs to be done this week, and who will do what.

For example, 2-4 guys will focus on making an introduction video for the game, which will be featured in our trailer and will be shown when you start the game. I don't really want to reveal a lot about this video, but I can assure you that it will be really cool!
Another interesting feature which will be implemented by Jurre and Kevin is the chat system. We already have a chat system, but the output of this chat is only shown in the debug output in Visual Studio. Not really a polished system, as one may say. What they're going to do is create a HUD element where you can view the text, which will look a lot more polished than our current system!

There are two other important features which will be made/improved this week. Jurre will implement a pauze menu where you can adjust settings and quit the game. Quitting the game is currently only possible in the way like you would quit a normal window in windows.
Robert is going to improve the main menu. We already have a working main menu, but it's not really ready for the release of our game. We polish the menu some more, and we can also create a more logical structure in the buttons which take you to the game, settings or test states. As you can imagine, we will remove the test states in our final product.

On Wednesday, we met at 11:00 at our office to spent a whole day on implementing and fixing all this stuff. At the end of the day (about 17:00), we had a talk with Jeroen where he gave us some tips and where we could show him our progress.

After that, it was (finally!) time for our team-bulding activity (we had actually called it a team-building passivity, because we didn't want to get physically active, because we're a bit lazy...). Some people took the bus and other people rode their bikes to the centre of Utrecht. With the whole team, we had dinner at the Mc'Donalds there (shoutout to Robert for handing us discount vouchers so we could get a lot of food for a low price!). When we were done eating (which took a while, as one can imagine), we went to a local bar to have some alcoholic refreshments and to relax after a hard day of work. Sadly, some people had to leave early to make sure they wouldn't be home too late (after all, we had a Logic lecture at nine o'clock the following morning...), so at about 19:30 we called it a day.





Here you can see that our walls now have dynamic colours (click to enlarge)!

Today, on Thursday, almost all of these issues have been solved and the features implemented. The team is really working hard this week to make sure that the quality of our final product will be very good.

We've had some hardship though. Apparently, there were a lot of bugs in the networking system. Because of these bugs, you could get exceptions at random times (even during the game), or you could see a bullet which would be stuck on the screen. Our lead programmer Kevin spent a lot of time fixing this. He rewrote the entire TCP client! There were also some other problems with connecting to a game, but these have (hopefully) been solved now.

Just one day of normal work is left now. After tomorrow, our game needs to be finalised so we can focus on creating and finishing the deliverables. Some are already done, but we still need to create the trailer. We also need to focus on preparing the demo and presentation for next week, but I'm fairly certain we can manage it! Luckily, we don't have a final Logic exam next week for which we'll need to prepare. Oh wait...

We hope to see you all next week on Friday during the Symposium!

Friday 10 January 2014

Work harder, play harder!

After weeks of hard work and two weeks of well-earned vacation it is our duty to continue the development of LSDude. We have made a lot of progression till now, but there are various things that need to be implemented in the coming time. For instance, Koert has been busy with the levels, Robert with the sprites, Luuk and Kevin with the waves and Jordy with the sound. In the morning of Wednesday, the 8th of January, Kevin made a list of things that needed working on:
- Wave timer (this is fixed and works well, but still needs some work! :D)
- Player can die (fixed)
- Working level(s)
- Good levels (and experience points)

On Wednesday we worked at the university with four of us, which wasn't a problem at all. Jurre managed to fix the wave time without too many struggles and is working well. However, we plan to make it somewhat more appealing than what it currently is. Below you can see an image of the wave timer as it is now, counting down till the next wave. We think this will be quite useful to the players of our game, they will face a lot of enemies that need to be shot down!

On Thursday 9th January, after a long morning of doing Logic, it was time for some more work on our project LSDude. In our weekly meeting, we discussed our progress of the game and how we could accomplish working levels. Afterwards we continued working on the list of points that Kevin put together the day before. Koert joined us today, so with 5 people present we could do a lot in the afternoon and that was important, since we don’t have too much time left if we want to finish the game before the deadline. Jordy continued with making and implementing the sounds and some gameplay features (reload time) and Jurre and Koert put their effort in the levels. Additionally, Kevin helped Jurre with his laptop to make Visual Studio 2012 work with XNA and Ricardo worked on this blogpost and started with the flyer for LSDude.

Last meeting all of us who were there, the only ones not there were Luuk and Robert, agreed that our original concept of the level was not good enough. It looked like neither a maze nor a Pac-Man-like level. So we came up with a new concept. The new concept has a more open map with less connected walls. The general idea is to place a template at a random position, but before it's placed we check if there is a solid wall in any direction of the template, which is placed directly next to the to-place template. To make the level more Pac-Man like we only fill 2 squares in the level (from the upper-left corner to the middle of the level and from there to the bottom of the level) which fill exactly half of the level. Then we mirror this half to the other half, just like the original level of Pac-Man.

We all preferred this concept above the previous one, because this creates a more open and slightly less random level, although all templates are placed at a random position. The greatest advantage of this concept is that there are "no more" closed spaces. The offchance of getting if there is a u-form in the middle of the screen, which creates 2 open places.The chance of starting in such a place is far to low to fix it. The only thing left to do now, is adding more templates to the level, so the variation of templates is larger. Right now, the level looks something like this:



Way better and more Pac-Man-like than we had before! There were a few bugs but were rather small and could, therefore, easily be fixed. Jordy was working on the RPG-weapon and, together with Kevin, realized that the weapon was placed on the left side of the ‘Dude’, instead of on the right side. We also found that the weapon was a little bit too close to the player so by changing values we made it look better. However, the levels did take up a lot of time and the next day will be used for that, too. We worked for about three hours non-stop and were able to do a lot of work this afternoon. Below you can find a photo of us being busy on our project :):





Kevin made it possible, as a player, to die in the game. If the player is hit too many times by the enemies, he or she will not be able to move anymore. Kevin accomplished this by checking the collision between the dude and the enemies in the game. What we still need to do however, is that the level restarts after the player has died. At this moment, the enemies stay at the location where the player died because when playing multiplayer, you will be able to spectate the other player when he or she is still alive. We worked for about 4 hours this day and progress was certainly made. That work made us, of course, a little hungry so we paid the Spar a visit as well. M&M’s and drinks gave us more energy and helped us to accomplish even more! :D


On Friday morning, we started working again at about 11 o’clock on our project. Koert continued his work on the level design and Kevin focused more on programming. Ricardo concentrated on finishing up this blogpost and the flyer. We believed that this day again could be a day on which we would achieve a lot so we immediately started. We started with 3 of us and a couple of hours later (2 hours to be precise) Jordy joined us, while Jurre stayed at home doing his work there. The wave count is only shown in purple letters in the left-hand corner of the screen but it should be more striking to the player so it can more easily be seen.
In conclusion, this week, as the title already says, it was time for us to work even harder than what we already had done before the holiday. This also meant a lot of testing and playing the game. We made a lot of progression and we hope we can continue our hard work and that in the end, our hard work will pay off. This was our first blog of the year. Thanks for your time and enjoy!

- Ricardo


Saturday 21 December 2013

Work hard, play hard!

The last few weeks we worked really hard. With great teamwork we managed to create a demo of our game, which will be in a playable state during the midterm presentation. This list includes just a few features of our demo: - Multiplayer play (although not very polished yet, it works!); - Randomly generated level; - Fancy particles; - Working AI (An enemy is placed in the level and follows the player. Path-finding works, obstacles are avoided). - HUD - Weapons We also had a few struggles, but we solved a lot of them. A good example of this is the following image. Here you can see how we tried to create muzzle flash (effect when you shoot a gun) with a particle system. As you can see it’s not really how it should be. The effect in the image under it is a bit smaller, but it’s a lot more realistic!



So close...

On Thurday 12th December, we had a busy day. After a very interesting seminar about Logic we had a meeting with our tutor. After that, we worked the whole day to get our demo finished. We worked 6 hours non-stop and achieved a lot in this timespan. So, when you’ve done a lot on a day, what do you do the next day? You work more! We had some fun with playing the game, and developing the game a bit more.To celebrate we finished the demo, Jurre brought some drinks and M&M’s to the working room. Here you can see some nice pictures of it.


As you can see in these pictures, we were working hard! But a good game also requires a lot of testing. So we were playing hard as well. Some...rather interesting bugs were found. We had one bug where the player would turn into an automatic turret. That was obviously not intended. Another bug that we found a week afterwards was also… interesting. At one of our weekly meetings, I found out that I could not open the game anymore. A random exception, which couldn’t even be explained by our lead programmer (!), occurred. According to Visual Studio, a music file was missing. This was really weird, since I was sure I had the file. I tried to open it in VLC Media Player, and there was no sound playing because it was muted. I unmuted the sound and try to run the game in Visual Studio again, and it worked! Our conclusion: VLC Media Player is the best debugging tool ever. In other news, LSDude has been making outstanding progress. We hit a few brick walls due to the fact that everything that happens within the game is networked (singleplayer is also just connecting to a local host) but as soon as those problems were ironed out, it was smooth sailing all the way. After our (mostly horrible) test on Logic last Thursday we decided to work on LSDude a bit more before the holidays since some people would be on vacation. A lot of minor things were fixed or added, such as a healthbar above each ghosts’ head and an indicator showing how much health the Dude has left. Jordy also got around to creating a new background music that didn’t loop every ten seconds and boy does it sound sweet, although not when four people are playing it simultaneously out of sync...

Current status of the game

Some progress on the wave system was also achieved. Currently there is a really simple system which starts with spawning one ghost. When that one is killed, two will be spawned. After those two ghosts, tree will be spawned etc. When we tried this with 200 ghosts, we got some really weird exceptions. Thanks to some awesome critical thinking of Kevin, we managed to find out what the cause was. Apparently, Windows 7 had some buffers for TCP messages set to 8KB, instead of the possible maximum of 64KB. In Windows 8 the buffer is set to 64KB, which was the reason why some people encountered the bug and some did not. Kevin managed to override this Windows 7 setting which ensures that people with Windows 7 will not get the exception. You may wonder why a really high amount of 64KB data is sent in a really short period of time. Well, the reason is that our networking part needed some optimization. For every ghost that was spawned, a separate TCP message was made. As you may know, TCP messages have a big header. When the message is sent over IP (that’s the case here), the header gets even bigger. So you can probably imagine that total size of the messages of all those 200 ghosts are kinda big… Kevin managed to fix it, though. Instead of 200 separate messages, 1 big message is now sent. This concludes our last blogpost of the year. Happy holidays everyone! -Luuk & Jurre

Friday 6 December 2013

Particles workshop and stuff!


So… New week, new blogpost. A lot of stuff has happened past week, so let’s just start off this post with an article by Luuk about the particles workshop, after which we'll give a brief summary of what has been going on with LSDude as of last week!



Particles Workshop

On thursday 28th November, Robert and Luuk did not attend the usual meeting with our tutor. Blasphemy! Why did this happen? Well, they both had an acceptable excuse, because they went to the particles workshop of DGDARC. At the workshop, they learned a whole lot about the theory of how particles can be used to greatly improve the look of a game. Two people from Abbey Games first gave a presentation about what particles are and how you can implement them in a C# project with XNA. After this presentation of roughly one hour, the attendees of the workshop could toy around with particles. Tigran of DGDARC gave us a C# project in which a basic particle system was implemented. At first, the assignment to recreate some cool particle effects Tigran had created was given. But, when we had recreated some of these effects, we noticed it is awesome to toy around and see what is possible with these particles. Luuk found out that it isn’t hard to let a program crash if you use a lot of particles (150000 per second!). Robert created a lot of cool effects which make use of a mouse. Effects where particles are emitted at the current location of the mouse and will travel to the location of the mouse a few seconds later were also created. This effect could come in handy for LSDude, since it looks like as if you used LSD or another halogenic drug….Not that I would know how this would look like. I´m not saying that- Let’s move on. Robert also found it interesting to create a particle system which involves fire. I think he might be a pyromaniac.
At about 17:00, the workshop was over. All of the attendees greatly enjoyed it and learned a lot. We also learned that working with particles isn't as hard as we previously thought. I am sure we can use the gained knowledge to greatly improve LSDude! It might be a challenging task to accomplish that we can use particles in LSDude easily, but we will surely try our best and figure it out!

Our thanks goes to Abbey Games and DGDARC (especially Tigran) for giving us the opportunity to deepen our knowledge of particles!

- Luuk



This is isn’t the only thing we’ve done all week of course. While Luuk and Robert were out having fun playing with fire, the rest of the team went on and made some final decisions about how we want LSDude to be played. You can read all about this in our Designdocument which will be linked (it’s in Dutch). We also got around to assigning which elements of the game everyone would be tackling and defining a general team-structure. so without further ado, here’s a list of our ‘functions’ within DeltaGames:
Luuk van de Wiel: Teamleader
Kevin Deelen: Lead Programmer
Robert Groot: Lead Artist
Jurre Berkhout: UI Design
Jordy van Opstal: Sound design
Koert Hup: Level design
Ricardo Scholtus: Gameplay

While these may be our ‘functions’ they don’t have to be necessarily strict: If Koert, for example, has problems with something he can always ask someone else to help him. The focus with these functions is to force people to go in-depth into a certain topic, while making sure they don’t lose the big picture and only get to work on their assigned function. Also, seeing as we are working with Kevins framework (GFrame©) we assigned him the function of lead programmer. He will most likely help the rest of the team when they’re having trouble with a certain aspect.
The rest of the functions were more or less assigned with personal preference in mind.

Furthermore, the game itself is making great progress as (nearly) all basic functions are implemented or being implemented as we speak. This is mostly the work of Kevin, who apparently has quite a lot of spare time to work on LSDude outside of school hours. This past week our focus has mainly been on getting local local co-op working - we had some problems with new clients not showing up on the host side -  while Koert en Jurre made some rad drafts for the HUD and possible colours to be used throughout he menu’s.

Link to our designdocument.

Friday 22 November 2013

Disclaimer!

This site and its content are part of an educational project done during a course in the computer science curriculum at Utrecht University. Its sole purpose is educational and there are no commercial interests involved.
We carefully checked all material to make sure not to violate any copyrights or other legal rights. If inappropriate content is used accidentally, please inform us and we will be happy to remove it promptly.

Wednesday 20 November 2013

LSDude.. How could we possibly justify that?!

We, the newly founded Delta Games, have recently started a new project called LSDude. Now, you're probably wondering why there's LSD in the name, or Dude for that matter, but we'll get to that shortly.
The aim of this project is to take a retro game that everyone knows and, most likely, has played. We were then told that over the span of 2 months, we should take this game and basically upgrade it. A lot. Naturally, we thought of Pac-Man! Everyone knows the little guy and everyone's played it. Soon, our heads were filled with ideas and we had thought out roughly the entire game, yet we still had no name! We started a brainstorm session where weird names came along, until we started thinking in Latin. Ghosts, spirits.. sprits..... Spiritus! Then our tutor said "you know, that's a drink.." and the first thing Jurre said was "let's call it Boozeman!". A couple of jokes and some more Latin and Greek later we ended up with a joke: LSDude ( Lamiai Spiritus Dude, which roughly translates to ghosts, ghosts, dude ). But.. was it a joke? We soon realised the potential of this idea: some random dude, tripping balls, wakes up in a maze and a whole horde of Pac-Man ghosts is coming after him, and thus LSDude is born.
Now that you know the background, let's summarize the findings of our analysis of Pac-Man. When the game was first released (1980), it is was really popular, due to introducing new things like nice graphics (at that time) and recognizable sounds. And ofcourse it still popular, with all the remakes and clones. During our brainstorm session we thought of current technologies that could improve this game. We figured it would we a nice idea to implement multiplayer, so that you can enjoy this game with multiple people. Also we wanted to implement in-depth gameplay by adding a couple of things like achievements, an in-game store and unlockables. Another part we would like to change are graphics. By updating the graphics, the game will look much better and with particles the gameplay will be visually a lot better. Finally we would like to add a random maze generator. With the random maze generator we can add a whole lot of new levels and make sure the game won't get boring. With all these improvements we believe we can make an awesome game!
Link naar onze gehele analyse van Pac-Man.