TexturePacker

Today I want to give a quick shout out to TexturePacker, one of the best programs I’ve used while developing Letter Quest. For those who are not aware, when you’re making apps or games that run on the GPU, every time you need to display something from a different texture, it requires an additional “draw call”. Basically this is not the be-all end-all for performance, but certainly having 100+ draw calls due to having 100+ individual images is pretty wasteful. So it becomes a good idea to have as many images as possible in a single texture, so that we can display many images in a single draw call. That’s where a program like TexturePacker comes in. Basically TexturePacker takes one or more source images and combines them into a single texture. Then whatever framework you’re using (or your own if you’ve gone that route!) can pull out rectangular sections of that large texture and display them as images in your app or game. Now you can draw as many things as you want in a single draw call. It’s also quite convenient because it means that your images can be different sizes. In Starling, for example, this is called a TextureAtlas. For more info see the TexturePacker page. They’ve also got several helpful tutorials. Overall this is a really reasonably priced, well-made and superbly useful program! I use it for all of my games and apps now....

read more

The Little Details Do Matter

Art Bandit was playing the game recently and had something unexpected happen – on the first stage of a new save file, he received a tile board that contained no vowels! While I knew that it was statistically possible, it’s highly improbable given how our letter selection works. So I decided it would be a good idea to fix that up. The most obvious solution was to simple analyze the board at the beginning of each stage, count the number of vowels, and if that was below a threshold that we decided upon (3, for the record), then we could randomly change consonant tiles to random vowels until the threshold was met. Of course, nothing is ever that simple. We have some unique challenges in the game that restrict the letters that are available in a given stage. So we also need to make sure that we only add vowels that are allowed in the given stage. It ended up being fairly simple, here’s the code for anyone that’s curious: private function ensureEnoughVowels():void { var minVowels:int = MIN_NUM_STARTING_VOWELS; var numVowels:int = 0; var numTiles:int = mTiles1D.length; var tile:LetterTile; var consonantTiles:Array = []; for (var i:int = 0; i < numTiles; i++) { tile = mTiles1D[i]; if (TileType.IS_VOWEL[tile.tileType] == 1) { numVowels++; } else { consonantTiles.push(tile); } } if (numVowels < minVowels) // not enough vowels, need to randomly change some consonant tiles to vowels { // figure out which vowels are valid - if we're in a challenge some could be restricted var bannedLetterIndexes:Array = Globals.CurrentGameSettings.StageDef.bannedLetterIndexes; var validVowels:Array = []; if (!bannedLetterIndexes[TileType.A]) { validVowels.push(TileType.A); } if (!bannedLetterIndexes[TileType.E]) { validVowels.push(TileType.E); } if (!bannedLetterIndexes[TileType.I]) { validVowels.push(TileType.I); } if (!bannedLetterIndexes[TileType.O]) { validVowels.push(TileType.O); } if (!bannedLetterIndexes[TileType.U]) { validVowels.push(TileType.U); } do { var tileIndex:int = Utils.randomIntFromRange(0, consonantTiles.length); // select a random consonant tile to change to a vowel var vowelIndex:int = Utils.randomIntFromRange(0, validVowels.length); // select a random vowel type tile = consonantTiles[tileIndex]; tile.setTileType(validVowels[vowelIndex]); // change the tile to the selected vowel type numVowels++; consonantTiles.splice(tileIndex, 1); // remove the consonant tile } while (numVowels < minVowels); } } And voila! The player always receives at least 3 vowels when starting a...

read more

New Store UI

We’ve been working on Letter Quest for quite a while now. One of the things we’ve ignored for a long time is the UI for the store in the game. Basically early on we had a decent, fairly usable store so spent our time working on everything else. Now that the design of the game has been finalized (as much as anything in a game can be considered “final” or “finished”!), we decided to fix up the store. Our old store was a separate popup for each store section. We’ve got stores for upgrades (permanent modifications to character stats), books (equippable items that provide unique bonuses, gain XP and can level up providing better bonuses), potions (one-time use consumable items that restore Grimm’s health), special items (unique items that change things in the game, such as upgrading all treasure crates to treasure chests), and finally a gem/cash shop if playing on a mobile device. Whew! We decided to move to a single store with several tabs, like what Plants vs. Zombies 2 has. Here’s some comparison shots: Old upgrade shop, it’s very brown! New upgrade shop, you can see the new shop tabs instead of needing to constantly close a shop and open another one, much bigger items, less brown, etc. Old book shop. The books the player had equipped were randomly jammed into a small section at the top, confusing a lot of players. New book shop, has a dedicated area/panel for equipped books, and a much cooler shopkeeper. The icons are still placeholder, as are the equipped book slot image and lock, and the little green “equipped book” checkmark. But we’re happy with the layout, and I personally think it’s a big improvement. Also it has nice big items that are easy to select on a phone. 🙂 What do you think? Love it? Hate it? Want to buy it a beer, or kick it to the curb? Let us know in the...

read more

New Grimm Art!

Quick post today – just spent several hours hooking up the new animated Grimm! There are now 20 unique animations for Grimm! Some of these took a while to hook up – for example, there’s now a unique running animation that Grimm uses when entering a stage, then another animation for him to skid to a stop when he gets near the first enemy, and all of this took some custom coding with some very tight timing. It’s all hooked up and working now though, and it looks great! We’ll be releasing an updated demo with a huge change list and the new Grimm sometime next week. Until then, here’s a screenshot showing off Grimm’s new...

read more

In-Game Design Progression

As we get closer and closer to releasing our first title, Letter Quest, I thought that it would be fun to post some images taken during development. The game really has come a long way! We originally started with a pretty rough idea of “hey wouldn’t it be cool to make dungeon-crawling game where the combat was handled by spelling words?”. We started brainstorming all kinds of things, like consumable items, treasure chests, keys, several different modes, spells, upgrades, equippable items, etc. In the end we actually ended up using a lot of the original ideas, which is kinda cool! Once the game has been released we’ll be doing a full postmortem and will post a couple of galleries of dev screenshots. Until then, here’s a few screenshots of what Letter Quest used to look like: Originally we had multiple spells, and the game was in portrait mode Then we thought “hey let’s add consumable items”, and dual currencies (coins and souls) THAT HUD, IT BURNS MY EYES! This was even worse, we had “soul gems”, “soul coins”, and “skull coins”. Oh, and potions and keys too, for good measure. Starting to look a bit better. Only one currency (gems), and a dedicated potions button. Also a help and pause button. Enemy art borrowed from Maple Story for testing. Real background art, and a new version of Grimm (still not the final Grimm design!). Starting to come together! Some actual enemy art, a proper Grimm icon for the health bar, nicer gem...

read more