I get lots of people asking me: “Why don’t you just use Spine or Spriter?” And that is a very valid question. I think it comes down to preference. There are pros and cons to building your own sprite editor, and there are pros and cons to using Spriter/Spine. I like the artists to be able to hook up visual effects, sound effects, camera shakes, etc, right in the editor, and see the actual final result, running in the actual game engine. I also want to extend the standard skeleton/bone editing with Verlet-physics bones, for things like headbands, braids, things hanging from belts, etc. These are all things I could simply add to my own system, while I’d have to import the animated character from the sprite software, and attach these effects in a separate home built editor otherwise.
The way the old sprite system worked is that each animation had it’s own skeleton setup. This may sound weird, but our previous sprite system had to handle all kinds of sprites, not just humanoid characters. Of course the downside of this approach is that there is no way to interpolate between two animations. So instead of throwing away the sprite system we have now, I decided to build a puppet system in tandem, and in the engine we’re able to use both.
The puppet system has a more traditional skeleton setup, and will likely be used mostly for characters in the game. You create one skeleton for your character, and then you attach animations to that skeleton. This approach makes attaching a different skin very easy, allowing you to re-use animations and skeleton setups between characters. In Shellrazer the characters varied so widely in size and anatomy that this system would probably have been overkill, but for a future game we’re planning to use more similar characters.
The last week I’ve mostly been working on iterating on the puppet editor, adding more precise keyframe control, bone animation, as well as a nice big horizontal time bar like in Spine. This week will be more editor work, as well as getting the puppet system integrated into the engine.
That’s pretty much it! Hopefully next week we’ll be able to show the first animated character in this new system. Until next week!
This week I’m going to talk about something that I’m working on right now: localizing our game to multiple languages! (to be exact: French, Italian, German, Spanish, Portuguese, Japanese, Korean, Chinese and Russian).
Localizing a game isn’t always easy, but it’s all about preparation! My ‘Waanderful’ engine (as Jesse likes to call it) has a built in localization system that we’ve used for N+, Scrap Metal, and now Shellrazer. It’s pretty straightforward, really. It simply links a number to a line of text. Each language we translate to uses the same numbering, so to start the game in a different language, all we have to do is load different lines of text linked to the same numbers. In the game and editor code we only refer to lines of text by the number, or as we call it a LocStringID. Here’s an example of the localization file for English:
First, there’s a number (LocStringID), then a line of text, and at the end there’s a comment or context for this line of text. Whoever is translating your game usually like to see a context of where the line of text is used in the game. If you were to use Google Translate (which wouldn’t know the context), you might get ‘back’ translated as the body part, not the menu option!
We sometimes use C++ string formatting to replace specific parts in the line of text with something that is calculated in the code. For example, string 00104 above has a %d token. This gets replaced in the game code by a number. In line 00149 there’s a whole lot of tokens going on! the ‘\xFFFE’ part is referring to a specific character, in this case character FFFE hexadecimal. Our font rendering code uses our own generated bitmap fonts, and we insert a little image of a gold coin as character FFFE. Below is a screenshot of our editor, with string 00149 entered in the test area, and the %d replaced by the number 10.
Each language can have it’s own font as well. The screenshot above shows characters that will probably fit French, Italian, German, Spanish and Portuguese, but Japanese, Chinese, Korean and Russian will need their own fonts because of the vastly different characters used. Our font system also allows for multiple font textures, which we’ll likely need to use for Chinese.
So, how do we get these lines of text translated? In our game data directory, each language is represented by a directory with it’s own unicode text file called localize.dat, which holds all the strings for that language. I created a little tool that can export and import to and from Excel, which is a file format that most translators will be able to use.
For N+ and Scrap Metal, Microsoft took care of translating the localize.dat files, but this time we’re on our own (which is probably why it took us until now to bite the bullet!). We chose to use icanlocalize.com for translating our files. We’ve only submitted our files yesterday, so it’s still very early, but so far I’m really happy with the process! You basically upload your file, say how many words need to be translated, and which languages you want to translate to. After you’ve filled in all the fields, you define a duration of bidding, and a duration of the translation work to be completed. During the bidding phase, translators can bid on your project (per language), and you can look at their profile and see if you think they fit your project. It’s really a lot easier than I remember it being on our previous projects!
I can’t wait to see the translated text in the game. (And I hope I won’t have to fix too many screens due to differing string lengths! :) )
That’s it for this week, hopefully we’ll be able to deliver a fully translated Shellrazer to you soon!
Last weekend was the weekend of the annual Full Indie game jam. Both Jesse and myself (Nick) went and had a ton of fun jamming. Jesse joined a team with two of his friends and they created the fantastic game Coalin’, which he will talk about in a bit. I decided to lone-wolf it, and create an audio toy I’ve been itching to create, but never got around to. So this week we’re showing off what we’ve created in 48 hours, we hope you like it.
AudioJam. That’s the little audio toy I made. It’s not really a game, but whatever, I had fun jamming it out, and it actually works! It’s not complete by any means, but it does what I wanted it to do, and provides a nice basis for future development. So basically what I wanted to create was something like PureData. I’m not particularly fond of the puredata interface, so one goal was to improve on the interface, as well as learning about audio programming in general. So in a nutshell, the idea is to have small abstract audio processing blocks which you can link together into a ‘circuit’, with the goal to output sound. Maybe a screenshot will be more explanatory:
This little schematic creates a wobbly sound, controllable by three midi controls on my midi keyboard. This is what it sounds like:
I also added a midi keyboard and envelope generator, thought they are both very basic and probably need some fixing.
Here’s a sample sound:
So in the end, I am pretty happy with the results. It’ll be a good platform to play around with some audio filters, effects and mixers.
Next up is Jesse’s game Coalin’. Take it away Jesse!
So as Nick was saying we had the Jam last weekend and it was super fun. I worked with some good friends of mine Aaron Cox and Graham Jans, two guys that I’ve always wanted to make something with but it just never got done due either to my own flakiness or some other thing. Anyways we set out to make a list of over 48 game ideas up to the jam’s date an then picked #49 on the day of the Jam!
So our game was called Coalin’ It’s a 2v2 game where you control little shoveling guys and race your train against the opponents. you use your shovel to break apart ore and collect coal and ferry it back to your train. You can only hold 3 objects at once so you don’t want to clog up your inventory with useless bits of cactus! You can also whack your enemies with your shovel to knock their inventory out of them.
In the screen below you can see that there’s also bright yellow chunks of uranium! Bringing those bad boys to your train results in a much bigger speed boost so they are usually a high priority for both sides.
A big part of the game is jumping up onto the train to use it to traverse across the screen faster. The battles become quite heated when you are on top of the enemies train, bonking him with your shovel to keep him from cashing in that coal!
The teams are named the “Brown Back Attacks” and the “Green Idle Sides” based off of my ridiculous animation naming conventions. Once your train hits the edge of the screen you are awarded with a big explosion! We also didn’t kill ourselves by staying up the entire length of the Game-Jam and although we worked crazy hard, we still got a decent amount of rest and cranked out a wicked cool project.
The game came together really well and I had a blast working on it. I’ve never used unity before but having all the tools ready to go right away and having your team familiar with them really made progress fast.
Welcome back followers of the fearsome! This week we are wrapping up that bug-filled expansion Bugzkrieg! We’ll show you guys a few more comics as well as talk a bit about the upcoming Full Indie game jam!
The designs of the Drubbers were one of my favorites to play around with. It was a little tricky to get them into the game because they needed to be really big to show up properly. A lot of the enemies in this expansion are bigger and louder to change up the look of the game.
Here’s another look at a light trooper that’s decked out in all the alien tech. The armor and weapons are usually abstracted and different every time and I was quite happy with the cyclopean helmet design. We wanted Bugzkrieg to be the hardest challenge yet so made sure that the in game comics and enemies looked as intimidating as we could make them.
The Swarmers were based off of the wheel-barrow wielding goblins from the classic Shellrazer game. It was great to revisit these guys because they were one of the more fun enemies to interact with. The Wheel-Barrow bombers were added quite late in Shellrazer’s development but filled a gap of interaction that just wasn’t there before. Swarmers are a lot easier to kill than the heavily armored bombers but there are a ton of them on screen. So be sure to be on your toes when you see those scuttling Swarmers enter your screen!
Full Indie Game Jam Shout out!
Holy cow! It’s been a year since the last Full Indie Game Jam! Well It’s happening again here in Vancouver with a crazy amount of talented Jammers filling up The Great Northern Way Campus! Last year was a ton of fun and this year will most definitely be as well! So Check out their Meet up Link for more information if you’d like to get involved with the insane talent pool right here in Vancouver. Last year Matt Thorson worked along side Alec Holowka and laid out the groundwork for what would eventually be known as Towerfall at that very Jam!
So that’s another week here at Slick! Hope you enjoyed checking out some more artwork for our expansion that will be coming soon! Until next time, keep those turtle cannons blazing!
This week we are getting closer and closer to wrapping up the next expansion in Shellrazer so we’ve decided to show you some of the fun Polaroids from the Buglian islands! When we first made Shellrazer we weren’t too sure how many in game comics we’d need but luckily the engine can handle a ton of assets and we can create them quickly.
The Buglians themselves are super fun to draw and we’ve kept their lore and history pretty loose. Here we see a pretty standard aerial troop outfitted with a repeating sting-rifle. The idea was that the hive on the top is the weapon’s magazine and inside is a functioning bug colony that hatches bullets for the wielder. We also went with a warmer themed color palette to contrast all the ice in icebreaker.
Here’s what you’ll see when the Lander has been freed! Lander has jury rigged his engine into a cannon to help you iradicate the augmented Buglians and keep their forces from spreading out from their home island. We kept the orange armor theme to mirror the Buglian troops but made the lights a purple instead of yellow to differentiate the player’s alien tech from the enemies’.
Here’s another “post mission” image. These usually depict our turtle kicking some shell all over the place and breaks up the enemy-only images that come at the beginning of some levels. This picture here is an example of bending the art rules in our world artistically. The bracket holding onto the cannon is different from the basic design, our turtle is a lot more cartoony and even has crazy goggles! A while back I was concerned about not staying true to the initial specs of our turtle but it became apparent that people just accept all the drawings for fun pieces of work and that’s exactly what we are after!
So another week stomps by here at Slick! Thanks so much for stopping by our neck of the woods and be sure to stop by next week as well! Until next time, keep those turtle cannon’s blazing!
VANCOUVER, British Columbia – July 26, 2012 – Independent development studio Slick Entertainment is proud to announce Shellrazer for iPad, iPod Touch, and iPhone, released on the App Store today for a temporary launch sale of $0.99 (regular $2.99). RIDE YOUR GIANT WAR TURTLE TO VICTORY OVER THE NASTY GOBLINS!! You are a Klang Clan […]
Welcome back, followers of the fearsome! Earlier this year I wrote a bit about our sprite system in Devblog 57. After seeing cool sprite editors in action like Spriter, Spine, as well as seeing the amazing Rayman Legends making of video, I thought it was time to upgrade my little sprite system! I get lots […]