Announcing the WarLight Ladder (part 1 of 2)

The WarLight 1.0 release will bring us the WarLight 1 v 1 Ladder. A 2 v 2 ladder will probably come in a subsequent release, and potentially a 3 v 3, FFA or other types of ladders coming after that based on demand.

Ladders are competitive arenas where players compete for the highest spot on the ladder. In the 1 v 1 ladder, players who participate in the ladder are matched against each other in heads-up duels to the death.

Scoring

The ladders will use an ELO rating system, similar to what is used in professional Chess tournaments, to rank players by their skill level. “Ladder” may not be a perfect name, since often ladder indicates a system where you swap positions with your opponent. But for lack of a better term, we’ll run with this for now.

If you’re not familiar with ELO, I’ll give a basic introduction. Each player starts with a rating of 1500, which then goes up or down as they lose or win games. Each win exchanges some amount of rating points from the loser to the winner. This means ELO is a zero-sum rating system, meaning new points aren’t created or destroyed when a game is played. Beating a stronger opponent gives you more rating points than beating a weaker opponent. Simply ordering players by their rating will determine their rank, starting with #1 for the player with the highest rating, #2 for the second highest, and so on.

The WarLight website will clearly show everyone’s rating and rank, and make it easy to view each ladder game as it finishes for those who like following along. There will also be a new forum for discussing ladder games.

My favorite feature of the ladders is how your rating changes based on how your previous opponents ratings change. For example, if you beat someone who ends up becoming the #1 player, you get the full benefits of beating the #1 player, even if they weren’t #1 when you beat them. This also means your rating changes even when you’re not playing, since someone else’s game finishing can have a ripple effect.

Game Creation

In the WarLight ladder, you don’t get to choose who you play against. Instead, the ladder sets up games for you. You can, however, pick the maximum number of games you’d like to be playing at any given time.

When WarLight creates games, it will attempt to “walk you up the ladder” by creating games with players who are 15% higher than you on the ladder. However, it’s possible to get matched with someone higher or lower than that if the ideal positioned player is not available for a new game.

The exact algorithm that WarLight uses for creating games will be documented on the ladder help page.

Leaving the Ladder

Players are free to leave the ladder and re-join it at any time with no penalty. Leaving the ladder does not delete any on-going games, it just stops new games from being created for you.

Your rating continues to be updated even when you’re not participating in the ladder. However, you will not receive a rank while not in the ladder and, therefore, won’t be included on the leaderboard. This is done to ensure high-ranking players have to actively defend their high ranks, and can’t just get into the #1 spot and squat on it.

If you re-join the ladder, your existing rating will be used to rank you just as it was before you left. This makes it easy to take breaks in case you’re going to be away from WarLight for a while.

More to come…

Stay tuned for part two of this blog post, which will discuss how booting works in ladders, how the ladder will control ratings inflation, and the benefits of first pick.

Let’s talk about WarLight 1.0

I frequently get asked what WarLight’s strategy is for generating revenue. So far, I’ve avoided giving an answer, mostly because I was still trying to figure it out.

While I love free things, it’s obvious that WarLight cannot continue forever in its current situation. WarLight costs almost $300 per month just in hosting fees, and (unfortunately) I’m not nearly rich enough to afford this for the rest of my life. There are several different strategies that could work, let’s examine them here.

Donations

One option is to rely strictly on donations to keep the site alive. This is similar to the Wikipedia model. Several people have already asked if they could donate to WarLight, but I’m not convinced this would work for WarLight long-term. Wikipedia barely gets by as it is, and WarLight has a significantly higher hosting cost per user than a site like Wikipedia, since most of Wikipedia’s traffic is static content which allows them to make heavy use of caching. WarLight has extremely high CPU and memory requirements compared to most sites, which is what makes it expensive to host.

I also really think the kind souls that donate should get something in return for their money. If a site starts giving a reward for donating, then they’re just kidding themselves calling it a donation. What they’re really doing is selling the reward along with the good feelings that come with donating.

Advertising

Another option is to put ads on the site and use that revenue to keep it going. Targeted ads work great, as shown by Google’s business model. Unfortunately, WarLight’s audience is far too diverse to get any sort of decent ad targeting to work.

Another form of advertising that works are the annoying ads. These are the ones that fly accross your screen, make noise, pop up, or force you to watch a video. These are all the rage these days in other Flash games, however I’m not a fan of these. Users hate them, and I would only consider this as a last resort. I really hope I never have to subject anyone to this.

Unfortunately if you can’t target and you aren’t willing to use annoying ads, you’re looking at an extremely low revenue-per-user from advertising. These ads can still work if you’re a high traffic site serving “easy” content (static pages), but unfortunately WarLight is not.

Micro-transactions

Some sites are set up to recieve small payments that enhance your gamimg experience. This is the Farmville and Evony model, where you can pay money to grow your farm/empire faster. Although WarLight could certainly sell things like additional armies, additional cards, more territories to pick or order priority, these would diminish the value and competitive spirit of the game. WarLight is fundamentally a competitive strategy game and I want players to win based on their strategy and not their wallet.

Freemium

Freemium is just the latest term for having a free service with a premium paid mode that offers more features or a better experience. In a freemium model, WarLight could offer premium features to paying players — things that the more hard-core WarLight players want. For example, WarLight could give premium users more control over their game settings or the ability to play in ladders, while still allowing free players to play the core game.

For WarLight, this model makes a lot of sense since the players that like WarLight tend to really like WarLight. This is the model I have ultimately chosen for WarLight, which will launch with 1.0.

Rest assured, WarLight will always be free to play. You can think of this as you would a retail game releasing a free demo, except “WarLight free” will never expire or limit how much you can play, it will only limit what features you can use.

WarLight is coming out of beta!

Phase 22.1 is officially the last release of beta. I’m hard at work on WarLight 1.0, which will hopefully launch this month.

This means big changes are coming! Stay tuned to this blog for more details about what exactly this means and what new features will be available. It’s going to be awesome!

Why WarLight switched from Silverlight to Flash

The old-timers all remember back when WarLight was a pure Silverlight site. The original post explaining why the change was made is buried in an old forum post, so I figured I would document the switch here.

History

I first started writing WarLight with the Silverlight 1.1 Alpha. At the time I was just playing around with Silverlight to see what it was; I had no idea WarLight would balloon into something as big as it has. I liked what I saw in Silverlight, as it was quick, efficient and allowed me to easily share C# code between the client and server. This allowed me to get a prototype up and running quickly.

WarLight launched using the Silverlight 2.0 beta, and migrated to 2.0 RTM on launch day and then to 3.0 RTM shortly after it launched. Sadly, this is the last version of Silverlight that WarLight would ever see.

The Switch

Fast forward to September 2009. I had just finished adding the Single-Player mode to WarLight, and had decided that I enjoyed working on WarLight and wanted to continue with it. Silverlight was, unfortunately, the biggest thing holding WarLight back. Silverlight’s marketshare was less than 50% according to riastats.com, meaning that most players coming to WarLight were faced with an install prompt. Admittedly, Silverlight’s install rate rose very quickly – much more quickly than I expected. Getting to almost 50% in such a short time is unprecedented in terms of browser plug-ins.

Asking users to install a plug-in to use a website is a huge barrier to entry, and is unacceptable to me. Many users want to play from work/university/library computers where they don’t have Administrator access and can’t install anything. Many users also just don’t want to install things, which is understandable – my standard procedure is to immediately close the tab when a site wants me to install QuickTime, Java or Unity. (I have nothing against Unity, it just always crashes during install on my main PC for some reason.) And yes, I know Flash is a plug-in too. However, Flash’s 98% marketshare means that for the vast majority of users, no install is required.

The bottom line is that Flash is the de-facto standard for web-based games. Silverlight has definite potential as it’s more developer friendly and, in my experience, performs better. But Silverlight is new and I’m not willing to wait for its marketshare to be comparable to Flash’s.

I often get asked why I didn’t port it to a HTML/Javascript solution using HTML5′s canvas. That’s easy – canvas’s marketshare was far less than Silverlight’s (probably less than 10%), which is a big step in the wrong direction. At some point in the future I’d love to do this, but 2009 was certainly not the time.

Comparison of Flash and Silverlight

Both Flash and Silverlight have their advantages and disadvantages. Writing the same application in both has given me a good appreciation of the differences between them, at least as it compares to WarLight’s specific requirements.

This section specifically compares Silverlight 3.0 with Adobe Flex 4.0 running in Flash 10. Flex is required for an adequate comparison, as Silverlight has things like buttons, checkboxes, sliders, and a layout system built in. To get these things in the Flash world, Adobe provides Flex which is a layer on top of Flash.

  • Layout: Comparing the flexibility of the layout systems, I prefer Silverlight’s. Silverlight’s objects fill to their parent by default, whereas Flex requires you to put width/height=100% all over the place. Although, being able to say width=50% in Flex is nice, which takes more typing to do in Silverlight. Flex’s VGroup/HGroup only let you set an alignment for the entire container, whereas Silverlight’s StackPanel lets you set the align for each object in the container.
    Winner: Silverlight.

  • Mxml vs Xaml: Silverlight uses Xaml to design its UI whereas Flex uses Mxml.
    Mxml is nice since you can put event handling code right into the mxml file, but Xaml’s attached properties are a thing of beauty, since they avoid Flex’s problem of having a ton of unusable properties on every object.
    Mxml has hacks like a “width” attribute that sets either the “width” or “percentWidth” properties depending on whether or not you include a %. This is lame, as it’s unintuitive as soon as you try to set it via code.
    Some of the Mxml properties are considered “styles” which mean you can’t set them via a normal property assignment. You need to use the setStyle() method, which is unintuitive since they look just like properties. Silverlight has a similar issue with attached properties, requiring you to use SetValue(), but at least you can easily see in the Xaml which properties require this.
    Visual Studio was always slow to open Xaml files for me, sometimes over 10 seconds. I don’t use the designer, I had them always set to open as text, but I suspect some designer-related components were loading anyway that I couldn’t figure out how to turn off. Endless frustration!
    Xaml is just serialized .net objects, which makes everything intuitive and easy. You can import/export Xaml yourself very easily with XamlReader and XamlWriter, and you can even load Xaml at runtime. Mxml is statically compiled, and can’t be loaded at runtime.
    Winner: Silverlight. Xaml is just a well-designed markup language.

  • Language: Flash uses ActionScript, Silverlight allows (almsot) any .net language but most people use C#. This is one of Flash’s weak areas, as ActionScript has decades of baggage that make it a frustrating coding experience. Although it’s clear that Adobe is trying, as they do support closures, first-class functions and garbage collection. However, the inability to share code between the client and other languages give this one to Silverlight easily.
    Winner: Silverlight by a landslide.

  • Component Customization: Silverlight allows any object to contain any object. For example, you can easily put a list box inside of a button (not that you’d want to…). Flex is a more traditional UI layout system, which tries to cover the most common scenarios but ultimately leaves holes. You can still do more powerful things using skinning, but it’s a lot more cumbersome. I recall having to copy+paste over 100 lines of mxml just to have a button with two lines of text. Sad!
    Winner: Silverlight.

  • Automated Testing: Both Flex and Silverlight have poor automated testing tools. I used the Silverlight Unit Test framework and was able to get it working successfully, but for testing an asynchronous app like WarLight, you have to do all sorts of crazy lambdas and callbacks just for basic operations. This makes maintaining state and looping within a test difficult, and also requires that you run your test code on the UI thread.
    With Flex, I used Selenium with a Flex plugin and it avoids the problem above, but required I write a bunch of plumbing code to give myself strong binding between my app’s UI and the test code.
    Winner: Only losers here.

  • Error Reporting: Silverlight has a global error handler that gives you the exception object which includes details of the error, and a stack trace, even in retail builds of Silverlight.
    The retail version of Flash eats all errors. This is a problem for me, as being able to fix errors quickly is important to me. Flash required me to do a bunch of extra work in this area. Every entry point must do a try/catch in order to handle and report errors gracefully. What a pain!
    Even then, you have no stack traces in retail builds. Without stack traces, you often get back an error where the extent of the message is “1009.” 1009 is the Flash code for a null reference exception, but just knowing you have a null reference exception somewhere in your app is not enough to fix the problem. You can put an identifier on each error handler so you at least know the entry point, but that wasn’t enough for me.
    So I wrote a routine that would track stack traces myself. I wrote some rudimentary ActionScript parsing code that injects a PushStackTrace() call to the start of every function, and a PopStackTrace() at the end. Using this, I can track the stack trace all of the time, and when an error occurs I include it in the error report. This has been wonderfully useful, but it took a lot of work just to get back to what Silverlight does for free.
    Flex 10.1 added a global error handler, but you still don’t get stack traces even in 10.1, so it doesn’t solve the issue.
    Winner: Silverlight by a landslide.

  • Performance: Although I haven’t taken measurements, there was clearly a noticeable and significant drop in performance after migrating to Flex. I believe this is specifically attributed to Flex, not Flash. The speed of constructing bunch of Flex objects (order details) and placing them into a scrollable panel (the orders list) made scrolling through the history of a WarLight game much slower than it was in Silverlight.
    Winner: Silverlight.

  • Adoption: Covered above.
    Winner: Flash by a landslide.

  • Bugs: I ran into bugs on both platforms. I’ve reported a few back to Microsoft and Adobe, but overall I wouldn’t say that either platform is more or less buggy than the other.
    Winner: Wash.

  • Overall Winner: Flash! Flash is of course the winner, as WarLight uses Flash today. I’m not particularly tied to the Flash platform, and I’d be happy to move to something new in the future if the move makes sense.

Announcing Beta Phase 22.1: Minor release

WarLight will be upgraded tonight with a small release that contains mostly of bug fixes, but I was also able to sneak in a few features.

WarLight will be going down on Sunday, January 16th at 1am PST (9am GMT) for up to an hour. Please plan accordingly for any fast games or single player games that may get interrupted during this 1-hour window.

During this time, WarLight will be upgraded to Beta Phase 22.1. Once the deployment is complete, you can view all of the changes on the Change History page.

Changes

Initial Pieces: Once Phase 22.1 is live, game creators can specify how many cards (or pieces of a card) that players will begin with at the start of a game. Not only is this useful for making the beginning of games more interesting, but it also allows for further customization in variants. If you also set a card’s weight to 0, you can now make cards that are limited in quantity. For example, you could give just one abandon card to each player. They’d only have one for the entire game, so they would need to make good use of it.

Facebook Integration: WarLight will have a “Share on Facebook” button, which assists you in gloating about your wins on Facebook.

Many more small changes and fixes: Such as the refresh hotkey, which allows players to press the “R” key as a shortcut to clicking the Refresh button.

Announcing Beta Phase 22

Phase 22 is the biggest release of WarLight since it ported to Flash! First, business:

WarLight will be going down on Wednesday, January 5th at 1am PST (9am GMT) for up to an hour. Please plan accordingly for any fast games that may get interrupted during this 1-hour window.

During this time, WarLight will be upgraded to Beta Phase 22. Once the deployment is complete, you can view all of the changes on the Change History page.

Personalized Game Templates

Once phase 22 is live, whenever you create a customized game, WarLight will ask you if you’d like to save your game settings as a template. You can then use that template to easily create games with the same or similar settings.

Not only will this ease the burden of creating new games, but it will also allow you to share your settings with other players. Each template will have a URL associated with it that you can give out to let other players use your templates.

Phase 22 will also allow you to create new templates/games with the same settings as any existing game, whether they were created with a template or not. This allows you to easily create rematches, or create templates from the games created by other players or games you created before templates were available.

Being able to save your game settings as templates is great, but when combined with custom scenarios, phase 22 really opens up a lot of new doors.

Custom Scenarios

Once phase 22 is live, game creators can elect to forego the built-in map distribution system and enter, territory-by-territory, exactly how they want the map to be distributed.

This gives game creators an incredible amount of power, and opens up all new styles of gameplay. For example, game creators could:

  • Give players handicaps, such as starting one player with fewer armies. This is useful for introducing WarLight to a new player, or when veterans just want to give themselves additional challenge.
  • Hand-craft a strategic map so that bonuses that start with wastelands in them are worth additional armies per turn, giving incentive to take down the wasteland.
  • Finely-tune a 1v1 map by picking which territories are available for players to pick, or making less-desirable bonuses start with fewer neutral armies, or placing wastelands in strategic positions.
  • Create a Godzilla scenario where one player starts with 10,000 armies, and 20 other players are teamed up to take them down.
  • Many more – the possibilities are endless!

Design your own single-player levels

If you think about custom scenarios and game templates, you’ll realize that they give you the power to do everything the current single player levels do. In fact, the existing six single player levels are being made into templates!

This opens up a wealth of possibilities. Perhaps you’ve always wanted to play level 1 reversed – where the AI is about to get Europe and you start in Australia. Or maybe you want to try the Europe challenge as Russia instead of Britain. These templates can even be used in multi-player, which means you could do the Europe or Insane challenges cooperatively with a friend!

Not only can you customize the existing six single player levels to your heart’s desire, but you could even make your own from scratch, and share them with other players using the templates feature. I may run a single-player level design contest, where the winners can have their levels included into the game.

Announcing Beta Phase 21 (part 2 of 2)

This post continues revealing new features in Phase 21. Read Part 1 if you haven’t.

Real-time games get a clock!

Another addition in Phase 21 is a timer that counts down in the top-right corner of the screen:

The timer counts down to the boot time configured for the game, so it’s always clear how much time you have before you risk being booted. The timer will continue to run even after submitting your orders, that way you know if you have enough time to re-do them if you notice a mistake.

While the clock is a small addition, just increasing awareness of the boot timer should go a long ways towards reducing the number of times players are booted unexpectedly.

Blockade Card

Phase 21 will bring the addition of the blockade card, which you can think of as a less effective abandon card. The blockade card works much like the abandon card, except the blockade card happens at the end of your turn instead of the beginning. This means any attacks, airlifts, or other actions happen before the territory changes into a neutral and increases its armies.

The advantage of using the blockade card in lieu of the abandon card in your games means that, on offense, you won’t have to worry about your large stacks getting devastated. Since the blockades happen after attacks, your offensive stacks can freely move around without hitting any unexpected neutrals.

The blockade card is great for people who like the abandon card’s ability to block off pathways around the map, but don’t like the abandon card’s ability to decimate opposing armies. Since the latter strategy is so powerful, it means that in some cases, abandon cards would mostly be used as a way to take armies away from your opponent by abandoning the spot they were about to attack. This meant that there were few abandon cards left over to create blockades.

The blockade card is a little more difficult to use than the abandon card. When playing a blockade card, it’s very important to ensure you still own the territory you’re blockading at the end of your turn. If you lose the territory you played the card on, the card will have no effect and you don’t get the card back. Therefore, it’s recommended that you play this on territories that you know you won’t lose, such as those that don’t touch an opponent or that are sufficiently defended.

Even though Phase 21 is mostly about open games, the blockade card was thrown in since it was fairly easy to add. It should be a great addition, and I think it’s far better suited for 1 v 1 matches than the abandon card is. In a 1 v 1 match, the ability to take your opponents armies away with a well-predicted abandon is extremely powerful. This puts a lot of emphasis on predicting where your opponent will attack, which I don’t like. I’m going to make a big 1 v 1 tournament using the blockade card to test this out – post a reply if you’d like to be invited.

Automatic Games

Wrapping up the last big feature of Phase 21 is automatic games. This is an experimental feature designed to help new players have fun with multi-player right off the bat. WarLight will automatically create games made up of open seats, and ensure new ones are created whenever the existing ones fill up. This means there will always be a game available for new players to join.

This also demonstrates part of the reason why the Open Games tab was created (covered in part 1). Since there will always be at least one open game, it doesn’t make sense to advertise them on the top of the My Games tab like they were before.

For the initial release, there will only be three automatic games. These were picked to give the feature the best chance of success – if these work out well, more may be created in future releases. If they don’t work out well, they may be removed.

Two of them are Strategic 1 v 1 games – one real-time, and one multi-day. 1 v 1 games should work well for automatic games since they’ll fill up and start fast and collusion isn’t possible. The third is a multi-day newbie game, which uses open seat prerequisites to ensure that only new players can join. Since veterans are kept out, the skill level should be more appropriate, helping new players to ween themselves onto multi-player.

Announcing Beta Phase 21 (part 1 of 2)

It’s an open game extravaganza! First, business:

WarLight will be going down on Wednesday, December 15th at 1am PST (9am GMT) for up to an hour. Please plan accordingly for any fast games that may get interrupted during this 1-hour window.

During this time, WarLight will be upgraded to Beta Phase 21. Once the deployment is complete, you can view all of the changes on the Change History page.

Open Seat Prerequisites

Once Phase 21 is live, WarLight will allow game creators to specify prerequisites that players must meet in order to join open seats in their games.

Here are some examples of prerequisites game creators could specify:

– Players must get booted in fewer than 10% of their games.
– Players must have completed at least 10 games.
– Players must have an average move speed of less than 1 hour.
– Players must have been a WarLight member for at least 30 days. (no newbies)
– Players must have been a WarLight member for fewer than 30 days. (newbies only)

Players that don’t meet the requirements you set won’t even see your game, and therefore won’t be allowed to join it. This will help players get matched up with the kind of players they’re looking for.

Separation of real-time games and multi-day games

Until now, WarLight multi-player games have been mostly geared towards play-by-email speed of play. These kind of games usually play one or two turns per day and play out over the course of a few weeks. However, some people prefer a more rapid style of play, where games are played in real-time.

Both styles of play are supported by WarLight, but there is room for improvement in the current model. For example, new WarLight players often have a hard time distinguishing between these two types of games. Veterans know to check the boot time when evaluating whether or not to join a game, and the low-boot-time warning certainly helps, but these are cumbersome to discover as a new player.

Most players have an expectation for how fast multi-player games will move before they enter. Either they are used to single-player games which play out quickly and therefore expect real-time multi-player games, or they see the e-mail notification feature and expect a multi-day game. Sometimes, new players get into a game that isn’t the speed they expect. This causes a bad experience for everyone involved – either they get booted if they’re waiting on an e-mail of a real-time game, or they whine about the turn not advancing when people don’t play immediately in a multi-day game.

After Phase 21, WarLight will categorize games into one of these two categories. This will help set expectations for new players. When players create a new game, they will actually be asked whether it is real-time or multi-day:

This will constrain the boot times that can be used, and also help players pick the correct type on the new open games tab.

Open Games Tab

The little advertisement on top of the My Games tab will be replaced with a dedicated tab to open games:

The first time a player navigates to this tab, WarLight will give a short explanation of what real-time and multi-day games are and ask them which they seek. This will ensure that players always get the speed of game they’re expecting, and should cut down on some of the boot issues players run into in open games.

The My Games advertisement worked well for drawing players attention to an open game, but it wasn’t very usable since it didn’t show any settings about that game and wasn’t practical when there were lots of open games. Further, the whole idea of not appearing when there were no open games created a lot of confusion. When there were no open games, it was impossible for new players to understand how to go about joining open games – this was a very frequent pain point. Further yet, open seat prerequisites make calculating your open games a more time-consuming operation, and it doesn’t make sense to do this on every refresh of the My Games tab.

More features in part 2 of this blog post!

Current Game/Tournament Tabs

Beta Phase 21 is still a ways away, so don’t get your hopes up. But I wanted to share one change I made tonight since it’s on the top of my mind now.

Under the multi-player tab, there are these two pesky tabs named “Current Game” and “Current Tournament”. I’ve never been happy with them.

Current Tabs

There are several things I don’t like about them:

1. They don’t show up until you first visit a game or tournament. Typically tabs don’t dynamically appear, so this is probably a bit jarring when it’s noticed. (Although I bet most people don’t notice.)

2. Their names are not descriptive. Sure, Current Game makes sense when you’re looking at a game and you see the tab is highlighted. But when you’re on a different tab, seeing a tab named Current Game doesn’t make any sense. Long-time players will remember that this tab used to be called “Last Game”. This has the opposite problem – it makes sense to go to the last game you played, but if you’re looking at a game, why is Last Game highlighted? At one point I considered dynamically renaming it, but I decided against it in fear it would be even more jarring.

3. All of these tabs take up extra horizontal space. With both Current tabs, the Sound link, and the Design Maps tab (which only shows up if you’re a WarLight map creator), you need a browser 1144 pixels wide to see everything! This provides a poor experience for those in low resolutions. It’s important to remember that 1024×768 is still a very popular resolution. But it’s not really as bleak as it sounds, since most players won’t have the Design Maps tab or be in tournaments.

The horizontal space issue is fine as long as I don’t need to add a new tab here. But a feature I’m working on for Phase 21 calls for a new tab. Uh oh. Adding more would make it far too wide. Something’s got to go.

I thought a lot about how I could save space here. I could move Create Game to be a button instead of a tab (that would make it more in-line with tournaments, which is a plus). I could move Design Maps somewhere else (it doesn’t really make sense to be under multi-player anyway). I could abbreviate “Tournaments” (why must that word be so long?). I could squish everything together. All of these solutions have their own unique problems.

But ultimately I just kept coming back to the “Current” tabs – they’re taking up almost 40% of the space on that tab bar, and I’ve never been happy with them for the reasons cited above.

I thought about getting rid of them completely since they’re not strictly necessary to play. However, they are useful in a few situations. The time I use them the most often is when checking out a bunch of games in a tournament. The “Current Tournament” makes it easy to switch back and forth.

So maybe keep “Current Tournament” but ditch “Current Game”? It’s not as needed, but I still fear is that people have grown accustomed to using Current Game. I know I have. As a species, we suck at changing our habits, so I’d like to keep both if possible.

In the end I decided to move these out and make them buttons instead of tabs:

Making them buttons instead of tabs may not seem like a profound change, but it actually has subtle advantages. These buttons can be hidden when their click would not make sense – both before you visit a game/tournament, or when you’re already looking at a game/tournament. Hiding tabs wouldn’t really work out since shifting all of the tabs around would be too jarring.

Further, since they can be hidden instead of “activating” when visiting a game/tournament, their text doesn’t suffer from issue #2 described above. This will make it clearer to new players exactly what this does, and how to use it.

Best of all, it frees up valuable space under the multi-player tab. Yes, this does create an even worse horizontal space issue on the top tab bar. However, that’s not nearly as bad in this case, since neither of these buttons are strictly needed to play the game. If we have to push something off, it’s much better to push off “Recall Last Tournament” than “Create Game” since the latter gets used far more often. Even in 1024×768, you can still see the “Recall Last Tournament” button enough to click on it. You may not be able to read the words, but it’s still functional and you can still tell what it does by reading the tooltip text.

While it’s not perfect, I’m happy with the change.