Januari 2015 blog archive

This page contains all the blog posts from january 2015. To read the most recent blog posts, click here.

25/01 - More cards coming up

Last week, another patch was released, which was not the original plan. For V 3.03, i wanted to look into the basics of accounts, starting with allowing players to register clients and tie them to their NULLL Games accounts. This is something that will take a fair bit of time to set up, and i was going to have to get used to working with databases and server-side stuff again, after all, it's been a while since i had to do any of that stuff. Some of the work towards this has been done already, but there's plenty still left to do. At the same time there were a couple other things that had to be fixed, so i decided to put a small patch out first.

Before i continue working on the account stuff however, i'll first add the RV card set. A since adding new cards both involves adding new images and new abilities to the game, there are two other things i might look at for V 3.04 as well : flagship balancing and performance improvements on android.

Most abilities come with a single value that determines the ability it's strength. For the custom card generator, each ability has a minimum and maximum value which are tied to the difficulty level for the card that must be created. The higher this level, the closer the final value of an ability will be to its maximum. With several 100 abilities already in the game, a several 100 more to come, this means there's a lot of numbers involved, but it allows me to balance problematic abilities individually, without affecting other abilities.
The flagship editor also has access to these min and max values (actually, it's the editor that's the cause of these values existing in the first place, the custom card generator is merely borrowing them). Having both these parts of the game access the same set of values means i only have to create one set, which saves time. The problem is, that what is considered acceptable in terms of balance for the custom card generator, can easily be overpowered for the flagship. If i change the min/max values for a certain ability to make it less powerful for the flagship, the same ability might become too weak for cards created by the custom card generator.
The only solution here is to give both the flagship and the card generator their own set of min/max values. Originally, the idea was that the majority of abilities would be made available to players to customize their flagship, but i've gradually moved away from that idea, and lowered the number of abilities that can be chosen. At the same time, whenever new abilities were added, i also gave those abilities min/max values, even though the flagship editor might not have access to that ability. In the end that was a good thing, since those values ended up getting used by the custom card generator anyway. Thus, the amount of min/max values that i have to create for the flagship editor will be relatively few compared to the card generator. In turn, this will allow me to have another look at all abilities that are available to the flagship and balance them.

The android version of the game has some performance problems that aren't present in the desktop version. Up to a point this is expected, but there are places in the game where things are really slow. One idea that i've been contemplating for a while is to overhaul the UI, and replace it with one that's much simpler and doesn't require as much stuff being drawn or pre-rendered. This will improve some things, but won't fix everything. There's a fair bit of work involved in doing this, so it might not happen soon, while there's more important stuff to be done.
Another issue with android is that the game often doesn't recover when it has been put to the background. After some testing and receiving feedback from alpha testers, the likely cause is the amount of RAM the game takes up, which is relatively high due to the number of high-resolution images. This is only going to get worse since the game currently has slightly less than half of all the card images. The solution here is simpler to implement, but still quite drastic : card images will see their resolution halved, which in turn will lower the amount of RAM they take up by 75%. For most parts of the game however, this won't be noticable - i'm only expecting the card popup to have a visible drop in quality, and since most android devices have relatively small screens with high DPI, the effect might be minimal in the end.

Depening on how much time the above will take (excluding the UI overhaul, which is a long-term plan), the account related stuff might not even be in V 3.04 either, but it's too soon to say for sure.

18/01 - Unpredictable mode finalized

The last patch contained a number of updates for the unpredictable game mode. I replaced the old card generation system by a slightly more complex one that's better at filtering out cards. The new system basically creates a large pool of cards before the game starts, but it only puts suitable cards in there. The old system wasn't very correct when it came to selecting the correct cardraces. If a player selected a mono HU deck, there would be dual color HU/X cards included.

Another big change for unpredictable is that it now supports custom cards. When the custom card generator was completed, it already had support for unpredictable mode, which meant it would filter out abilities that don't work with this game mode. The only thing left to do was change unpredictable itself so that it can use custom cards.
The card pool that's generated only contains numbers, no actual cards, but these numbers point to specific cards. At the end of a player's turn, the game prepares the cards that this player will get to drawn next turn, and this is a matter of simply picking a number of random numbers from this pool. To turn these numbers into cards, the game looks up the card data that matches this specific number (every card has a unique number), and then it places that card in the player's deck, so the player can draw it the next turn. When custom mode is active, there's only a minor difference in this process : before placing the card in the player's deck, the card gets sent to the custom card generator, which uses this particular card as the base of a custom card. The reason why the custom card generator needs a card before it can create one has to do with the fact that custom cards aren't 100% random, instead they stick to the role of the original card. If the original card was a cruiser with a certain support role (f.i. Akata), the custom generator will create a cruiser again with a similar role.

Unpredictable now also supports spectrum decks, these are decks that can contain any color card. They are different from artifact decks, who can also contain any color card, but who generally have at least 50% artifact cards. Since the game only has 4 of the 9 card sets, these spectrum decks aren't yet as varied as they'll be once all cards are in.
Spectrum decks fit well with the general idea of unpredictable : not knowing what cards you'll draw next, and having to make the best of the random cards you're given.
I don't know yet if regular single duels will eventually also support spectrum decks. The random deck generator is optimized to create decks for single colors, and currently simply isn't very good at making decks that contain all colors.

With these changes added to the game, i consider Unpredictable to be finalized, except for ongoing balance updates. This means it's time to start preparing the next big mechanic. Right now i'm looking into what's involved in getting a java program to connect with a database that located somewhere on a server. Most of my games already do this, but those are all flash games, and with java, the process might be a little different. From there on, i can start working on a few online-only elements. I'll probably start by figuring out how to log in players and set up their online accounts, where everything that's related to online or multiplayer gameplay will be stored.

11/01 - Unpredictable updates

The most recent patch (V 3.03) not only added the entire CC card set to the game, but was also the first patch with a new card set since the addition of the custom card generator.
Every new set of card also brings with a it a number of new abilities (little over 40 with the CC set), and when large new mechanics are added to the game, i have to make sure that both existing and future abilities work with it. The custom card generator has many pools of abilities (per ability class, per card subtype), and when new abilities get added to the game, they have to be added to some of these pools as well.
Since the custom card generator is also planned to work unpredictable mode (in the next patch this will be the case), it requires a special mode of operation where the cards it generates are guaranteed to be compatible with unpredictable mode, which in turns requires the generator to have a list of abilities that it should never put on cards intended for unpredictable. So when new abilities are added to the game, this list needs to be updated as well.

The custom card generator has caused the amount of work, needed to add in new abilities, to increase. I could have waited until all cards were in the game before adding the generator, but this would instead have greatly increased the amount of work needed to set up the generator itself. Regardless of when i added the generator to the game, sooner or later i would have had to go through the steps of adding new cards, be it entire card sets, or future updates that bring new cards to the game.

The next update contains some updates to unpredictable mode, including compatibility with the custom card generator. From the on, i'll start looking into what's involved in letting the game communicate with a database over the internet, which is a requirement for almost all planned online and multiplayer related content.

04/01 - CC card set

There are some minor changes in the CC cardset, compared to HD xyth. As usual, some of these changes are purely mechanic.

A new passive has been added, called 'unstable', the card with this ability will self-destruct at the end of its owner's turn.
The CC legendary queen has been renamed to 'Queen Alvaranthine'. This is part of the overall legend overhaul. While this card now has a 'proper' name, it's not a character that existed in the Xyth storyline until this point. The other CC queen, Seraphine, also wasn't part of the story until the card itself was introduced, alongside a campaign in HD Xyth. Alvaranthine might get her own short bit of story in the future.
The CC card set received a number of dual color cards in HD Xyth with no secondary cost, but these cards would drain energy of the second race, and when doing so, they would have an additional effect. The general idea was to create cards that worked in single color decks, but would become stronger when used in dual color decks. Beyond the few cards in the CC set, i haven't yet explored this idea further, but HD3 will eventually receive a bunch of new cards as well, so i might add a few more of these for the other races as well.
The action 'Clone' has been changed. Instead of drawing a copy of the targeted ship, the targeted ship will be restored to its default stats, and the copy will be discarded. The original didn't need balancing as such, but it was an odd ability, and the new version seems to fit in better with the other cards.
'Searching Thoughtlines' now repairs for 5 HP for each card in opponent's hand, but players no longer get to look at opponent's hand.

The AI for the new actis and actions that came with this card set is yet to be done, but that's also the last step in adding everything related to the CC cards. Everything still needs to be tested, but i'm expecting a new patch can be released within the week.