Alright… our Milestone 3 presentation was successfull and we would like to show you our new video, illustrating all projects included and a special surprise at the end of the video 🙂 It is only one week left until our Grad Show presentation, which means that the team is working their a**es of in order to finish in time.
Win or lose?
Die or live?
Fall or roll?
Smash or clash?
…are all important questions that you ask yourself before entering another exciting and action-packed ImpactO match. Yesterday the team had some great fights among each other that we would like to share by showing you this video.
“It is not important to win, but to not lose.”
It has been quite some time since my last post about the matchmaking progress, so I guess it is time to let you know how the progress flows. What I have been working on during the last week is to calculate the match quality of any given game including two or more teams. This was not all that easy but I had a lot of help from the Gaussian distribution library. The match quality is calculated from 0% – 100% where 100% is the best possible scenario and describes that it is almost 100% possibility that the match will end in a draw (which is the scenario that we are looking for). It has to be noted that my matchmaking library only will calculate the best possible match quality for the members that has waited in the queue the longest time.
When enough users have been put into the queue the system will select the players that have waited longest and pick a host among them. Only players that can ping the game server on the specific game port will be chosen from; this is because users might be behind a firewall and won’t be capable of hosting a multiplayer game. Afterwards a message will be sent to the server to setup the server with the given settings who will, after successfully created the server, send a message back about the status. The matchmaking server will then inform the rest of the waiting players that it is OK to join the newly created server.
Furthermore I have been struggling with the update of the player skill points. This update depends on the overall skill of the player but also the system’s uncertainty about the player’s skill (sigma). The skill update follows the same algorithm as can be experimented with the following calculator:
Well… it has been a long time since we last posted an entry in the “video of the week” section. The reasons might be plenty, however some reasons might be very tight schedule and the fact that we wanted to have a good-looking robot controller before the next video. Anyways, here you are. Sit tight and enjoy! 🙂
The music included in the video is composed by Emil Hedemalm and is not a work created by Team ImpactO
“When you understand something, then you can find the math to express that understanding. The math doesn’t provide the understanding.” – Lamport
Lately I have been working with analyzing different ways to calculate, update and track user skill depending on different pre and post parameters. The first question I asked myself was: what is actually player skill? This might seem like a question with only one answer, but if you think about it you will soon notice that you can twist it in many different ways; e.g. is the player that helps the team (true sportsmanship) the best player, or is it the single player with most kills that should earn that title? As I have been working and studying a lot in the area of game design I soon realized that the number of answers to this question is a function that depends on the complexity for the game. That is, in a game like chess the answer to the question might be trivial and depends only on the winning and losing condition of the particular match.
During my research I came across the TrueSkill algorithm, which is a skill based ranking system for Xbox Live developed at Microsoft Research. For long (far too long in my opinion) the Elo ranking system has been widely used and modified for different kinds of games and today many refer to the word “Elo” when talking about how skilled and experienced they are. However, the Elo system comes with many flaws, such as not taking team composition into account (and you already know that teams are a big part of our game).
So, what is the TrueSkill algorithm and how does it work? Well, to put it really really simple it takes two different factors into consideration:
- The mean (average) value which is often represented by the Greek letter μ (mu)
- The standard deviation, represented by the Greek letter σ (sigma). This indicates the systems uncertainty of the player.
If a player got a high sigma this means that the system is unsure about that particular player and in the same way a low sigma means that the system is pretty safe about the players skill level. This means that a player with high mu and high sigma isn’t certainly going to be merged with other players with high skill, but instead depends on the conservative skill value that is a composition of both the player’s mu and sigma value.
These two diagrams illustrate two players:
- Eric with a pretty high μ and low σ (the system is sure about this player)
- Natalia with a quite the same μ but much higher σ than Eric.
After Natalia won the match we see that Eric’s skill curve remains almost the same but Natalia’s curve has been both narrower and taller, which means that the system has been surer about the skill of Natalia.
For more information I refer to Moserware: Computing Your Skill by Jeff Moser, a great article where I got the information from and that digs deeper into the subject of TrueSkill.
Don’t forget to follow us on Facebook
Jamie Zawinski said it well:
“Not knowing something doesn’t mean you’re dumb— it just means you don’t know it.”
Yesterday was a day filled with both nightmare and relief. I have been struggling a lot lately getting my Apache2 registration web server to work properly. This has been a pain as everything I do seems to return errors…errors that is both unpredictable and can accrue from time to time, which makes them hard to debug and solve. Simple things like ordinary PHP $_POST variables could really mess up things, even if I knew that everything I did was on the right track. Maybe I did take some wrong steps along the twisted journey when configuring the web server?
So, what do you do when all hope seems to be lost, and you struggle with a problem that is far beyond repairable? Well, often you do what every programmer and developer hates to do, you kill your darlings. This was exactly what I did; wiped out every PHP setting, MySQL setup, debugging configurations and started from the very beginning. However, this time I installed the WAMP server, which allows you to create web applications with Apache2, PHP and MySQL already fully configured with the correct versions. My guesses seemed to be correct, after the installation I used my old web files and everything worked like magic.
It is however important to note that the WAMP server is not recommended for production purposes, but instead for development and debugging only. In other words, I will have to switch out this solution in a soon future.
I can surely say that I felt really dump last day, when trying to implement stuff that should be really straightforward but can’t get it to work. Although, I guess that everyone should think like Jamie Zawinski when it comes to development of areas that you haven’t ventured before.
A new week means new assignments, new progressions, new happy-hours and of course… a lot of newly brewed coffee ( 🙂 ). This week the team has made some awesome features to the game; some examples are ammo capacity for weapons, a lot of implemented audio such as motor-sound, robot implementation, flag trail-renderer, more particles, kill announcements etc.
We would like to share these implementations by showing you a video that we recorded recently. The matches played in this video demonstrated Hold the Flag game mode with a total of 6 players involved (3 on each team). I can promise you that rolling has never been more exciting and tense! We played 4 different matches with distinctive teams and all matches turned out to be really really close (not more than 5-10 points difference when finishing).
This is rather interesting if analyzed further as we haven’t put down much time at all on balancing the game AND some players involved had played a lot more than others. Yesterday when I was going to sleep I thought to myself that it has been long since a played a game this exciting, which makes me feel incredibly good and exalted for our upcoming game.
Cheers from north Sweden.
(This is not an entry of “Video of the Week” series, but it will be posted later this week. So… stay tuned =) )
Don’t forget to follow us on Facebook: http://www.facebook.com/ImpactOtheGame/
Recently I have started to work on our new web server that will mainly be used for user registration and user management (such as changing user password, retrieving password etc.). I have been using Apache 2.4, which is currently the number one HTTP Server on the Internet. During our course in Network programming here at Campus Skellefteå one assignment was to setup a webserver using Apache, so one could say that I already got some experience of using it. However, all my backpack experience was to configure Apache to work with PHP 5, which is just one tiny part of my upcoming project and all the different parts that I will be needing.
The HTTP server now runs with support for PHP 5, MySQL, SSL and some other important extensions. My yet biggest problem was to enable support for sending simple mails to the end-point user. This seems like a rather straight forward task but I can guarantee that it produced some serious headache before I was done with it. I started off by using ordinary PHP for this purpose, but ended up with a PHP extension called PHPMailer 0.9 for PHP 5/6 (http://phpmailer.worxware.com/), which can easily be used to send ordinary mails and mails through a SMTP server.
My problem was that I couldn’t simple get PHPMailer to work with the use of a SMTP server (and it took me a lot of time just to figure out the proper debugging methods). I first thought that my workstation was blocked from sending mails through SMTP as it was located behind the school network, but this wasn’t the case (not even close). At the end I figured out that I had failed to configure SSL properly on my webserver that was actually the very first step that I took before starting with PHPMailer.
So, what lesson did I learn from this? I guess that it is always important that you are 100% sure that all parts of one development step is finished before moving on in order to prevent situations of my own 🙂
This week I have started to look into the visual effects that will be generated upon player death. Each player will spawn vehicle parts from their body and different impulses will blow these parts away when spawning. Note that each part is not interracting with the player’s physics in order to avoid syncing them across the network (which in the end would lead to huge network congestion).
Think that a movie explains the progress better… 🙂
Team ImpactO is proud to present the second Video of the Week entry that shows some of the new game mode “Hold the Flag” where each team struggles to capture the flag and hold it within the capture zone to score additional points. Belive me…we had plenty of fun while recording these videos 🙂