When we first conceived of Lassen’s Loop, we knew we wanted it to be at root a card based, turn based game, but instead of each turn changing the dynamic between two players, it would be the end result of the play session which would dictate who came out on top.
Given we had made the decision very early on that the player would end up owning their creation, it was important to find a way to rate this creation. And use that in determination of who won a multiplayer game.
But how to do that?
It took a while of thinking about it, talking to people, and looking at what was out there already before we eventually honed in on what we are actually doing.
So how do we decide Player A has a better track than Player B?
Well, first, we need to spell out how a Multiplayer game is actually played.
Player A, lets call him Mike, challenges Player B, lets call her Astrid.
If Astrid accepts the challenge, the game will then announce a theme, or a genre, of track they are to attempt to create. For example, they might be told to make a “Western Movie Theme”, or a “70’s Prog rock track”, or “K-pop Track”. The theme is randomised on game start. There’ll be about 50-70 or so of these possible track types we’ve prebuilt. For purposes of the example, we’ll specify that the game has chosen “Trance Dance Music” as it’s selection that Mike and Astrid have to create.
Then, in a turn based system, each player gets to place between 30 and 50 (to be determined the exact amount) cards in ‘their track’. When they’ve done that, OR, when they’ve decided their turn is done (which ever comes earlier), the turn switches to the other player. So in our example, since Astrid accepted Mikes challenge, the game tells them both what the theme is, in this case “Trance Dance Music”.
Now Astrid gets to lay down between 30-50 cards, starting out her track, selecting from the deck of cards she has. When she’s laid down this amount of cards, the turn switches to Mike.
Remembering that this is an asynchronous game, Astrid won’t hear back till Mike has completed his turn, and dropped his 30-50 cards.
Now Mike, when dropping his cards, can actually switch and hear Astrid’s incomplete track, even if he doesn’t have the same cards in his library that she has in hers. Similarly, when it’s Astrid turn to be dropping cards, she can switch and hear Mikes Work in Progress compilation.
The game allows for each player to have roughly around 10 turns each, and then it considers the game Done.
Then the complicated bit happens, and the two tracks are judged against each other.
And this is the bit that takes a bit of work on our end:)
We’ve built some software that can absorb any Midi track, and can generate ‘meta data’ from that track. Information like Beats-per-Minute, time signature, key signature, a list of instruments used, a list of FX cards used (in the case of tracks generated inside of Lassen’s loop, since we can affect how Riff and Beat cards are played back, adding distortion or echo on them, for example), among other data items.
We then utilize this by passing through it as many midi tracks as we can find. Each midi file then generates that aforementioned Meta Data. Then, we group together these processed tracks, putting songs we think fall into the theme buckets the Multiplayer game is using, (e.g. all the tracks we think fall into 70’s prog rock are grouped together) and then we take the Meta Data for all of those tracks and average them together. (Note, it’s entirely possible that one song may fall into more than one bucket. Elton John can, for example be 80’s or 90’s pop song, Ballards and also Jazz.)
What we end up with (hopefully) is Meta Data that denotes the ‘perfect’ set of results for a song of that genre.
Now, this software is also included in the game client, so when Astrid and Mike’s game is considered over, their tracks they’ve built are passed through this same software module, and their Meta Data generated.
Then it’s a simple act of comparing each tracks Meta Data with the averaged Meta Data for that genre, and which ever player is closer ‘wins’! We generate a score, based on weightings for each Meta Data item (which will change based on genre – beats per minute matter more for Trance Music than it does for Ballards, for example) and then compare scores.
Clever eh? Of course it’s more complicated than that, but that’s the gist of it.
What do they win? Well, apart from bragging kudos, they also win virtual currency that allows them to buy more card packs and/or themes or Visualizer packs. And they may also trigger some achievements. And we’ll probably add some kind of icon indicator for the player if they are on a winning streak, just because.
The downside is that if a card is used in one of these tracks, it’s usage count goes down by one, (the card can be used as many times in that track as the player wants, it’s the act of it being used at all that decrements the usage counter) and once that usage counter reaches 0, well, the card goes away from the players library.
There is also a collaborative mode, where players can play together, working on the same track, which is interesting, since Astrid may have a radically different deck than Mike, and is playing quite different cards.
In terms of who wins/loses at the end of playing like this, it’s a little more complicated, in that we do the same thing we would normally do – run the Meta Data generator, which generates track specific Meta Data, and then generate a score, and then we look at the average score generated for collaborative games for that genre. If the players score is greater than the average, then they win. If they are lower, they lose. Either way though, the average score for that genre is now adjusted to take into account the game just played, so the average score will move over time.
It’s a little complicated, and we have our work cut out explaining to the player if they won or lost, and why, and what they can do about it next time. But that’s our problem:)
Till next time.