Category: General

Once Upon a Time

What better way of starting a new year than looking back?

During the holiday season I was mostly amongst family and friends, or just plain chilling out, hence not much got done on the game. Now I got my gamedev mojo back, but check out what I found in a treasure chest (no, really) when digging through some stuff I moved into our new house from my childhood home.

This is how it started. And no office is complete without that memorabilia on the wall, right?

Image

My old 5.25″ floppy disks (don’t know what that is? Ask your dad, he might have a 5″ floppy, tee hee), most likely still in working condition if such a drive still existed. My first computer programs and games on them, in Basic-8000 format for the Zilog 8001 processor, 512×256 monochrome graphics, and occasional monotone beeps for sound. Sweet. Ordered from left-to-right, top-down, there’s:

  • My first disk ever, “Programs”, from 24th of October, 1987, so I’ve been 10 and a half when I got the computer. It contains various not-so-advanced programs, like the infamous 10 CLS 20 INPUT “What’s your name?”, A$ 30 PRINT “HELLO GOOFBAG!”, and so on.
  • I didn’t even remember it, but one of my first”real” game attempts seems to have been “Fighting Master”, from 1988. I now recall it being an arcade-style fighting game where two dudes hit and kick each other. It never worked if you were two on the keyboard, which kinda defeated the purpose.
  • Then my most precious gem, the “Games” disk no. 1. I recall it being the first new disk I have ever purchased, and I started to fill it will all the games I came up with, complete with a “menu” program to launch them. Some games I even finished to a state where I and my brothers could play them, like “Jackpot”, a one-armed-bandit into which I put secret keystroke codes to win more. My own favourite was a game about our local bus driver who drove around in a city of boxes and picked up invisible items and passengers, some lenient, some aggressive. I think there’s something like 60-80 games on the disk, not sure thou.
  • Piilosana” is a finnish word for a kind of a crossword puzzle. This baby, from 1992, is actually one of my fully working software, originally made for my mother who made sometimes crossword puzzles to magazines. It could load, save, edit, and print puzzles, all in a nice WYSIWYG UI. Yay.
  • Ah, my “MasterWorks“. What a unique name and a great piece of office software. No, really, it had MasterDraw which was quite advanced, given I had only the monochrome display. It had the standard drawing primitives, but also text with bitmap fonts, “spray can” painting, gradients (looked like crap), saving, loading. It was in this code I kinda invented GIF. There was MasterFonts for the bitmap font making, MasterMusic (for monotone beeps, WTF!?), MasterCard (LOL) for printing cards and labels, and MasterNumPaint, which I’m not sure, but I think is my complete failure of mimicking Excel. Seems to be from 1992 – I was 14 at the time.
  • “Rescue 9116dX”, oh, this I had forgot also! My attempt for my most advanced game ever, a side-“scrolling” space shooter. I think I tried to clone that Nintendo 8-bit game, can’t remember the name right now. First time I started to use sprites. It never got anywhere as the memory (56kB free for Basic) was not enough to contain the sprites plus running code, and the drawing speed of the 4 MHz processor was anyway too slow for any real graphic processing (in Basic – perhaps assembler could have done more?). Simple small lines and circles á la Pong were OK, but a circle greater than 50 pixels in radius was so slow that you could see it being drawn, arc-by-arc, if you animated it. From 1993, cool that I labelled all disks properly. Loving the cover art. 🙂

Alright. Let’s get back to the future, I have a game to make!

Tiny Notes for Tiny Effects

So far the game has had very little details like visual feedback on actions – meaning mostly small visual effects when you do something on the screen. In the prototyping or first testing phases you naturally don’t need such, but no game is finalized without. I’ve been putting in mockup art for both the iPad and iPhone/iPod resolutions so I could do better testing on the actual devices but after a while of testing I had a nagging feeling “duh, this is a bit boring and plain somehow”. The risk of making a bit of a minimalistic game, I suppose.

But most of it was actually due to these FX being missing. It’s hard to grasp what happens in an action game without all those small details – why, how, did that character just disappear? Wow, how come there is an Oggiput on the playfield now? So I’ve been playing around with this, getting in various effects, but as I started doing it without any real vision on how it should look, I am not particularly happy with the end result. Well, on the positive note I got really acquainted with the animations Cocos2D has to offer.

Now that I’ve let it simmer for a few days I am convinced I should stay minimalistic with the effects as well. No insane particle effects with blurs and lighting effects, but more in the style of the characters in the game. As a beginner it is easy to get carried away with a particle editor… If you’ve seen the screenshots you can tell the shape “round” is quite a generally occuring thing. This got me the idea for the burndown timer particle effect and when you happen to squash a Kisau Veela. Round sprites with some fading and blinking added, in that arcade game style, is what the game needs I think.

Also, there is a lot happening on the screen at the same time as the game progresses, hence a huge particle effect would not be kind to the eye – the main part of the game is about being able to keep your eyes on the Kisau Veelas’ colors and amounts on the screen.

The insertion of all the mockup art made it possible to get rid of the debug draw methods as well. Together with an optimization I made – actually more a must-do-refactoring due to a bug in my state machine – the game actually runs nicely at 60 fps on the iPhone 4. Whew! With debug mode on it was like 7-10 fps and I got worried there for a while…

Testing on the iPhone revealed at least one thing. The game is notoriously hard on the small screen. And if it is hard for me as the developer, it is probably impossible for you a a casual gamer. I knew from the beginning this game would be better on the iPad, but I really want to make this a Universal game for both device families. I’ve got some tuning to do to make the same as similar on both device families as possible, even though they will never be exactly the same due to the resolution differences as the game mechanics are tied to the shape of the playfield. For this reason I need to implement separate Game Center leaderboards for iPhone and iPad, but more on that later.

There’s also a technical issue special to this game while making it a Universal game. Due to the resolution difference and usage of Box2D I need some scaling to happen on iPhone compared to iPad. Otherwise the characters are way too fast and large on the iPhone (think of a ball being kicked with the same power on a small field and on a big field – on the small field it arrives faster to the other side). The Box2D bodies do not scale automatically according to the sprites when Cocos2D is loading the sprite sheet appropriate for the device. I had to hack the class which handles the Box2D fixture loading from the Physics Editor files but in the end this was a very simple thing to do.

Pietari has been doing backgrounds for the Game Over, Level Up, High Scores, and Start Menu scenes. Next up is the playfield background and HUD and finalization of the characters. On my side I need to adjust the game mechanics on the different devices, continue the FX implementation, and tune the scoring. There is one particular game mechanic “glitch” I need to fix somehow – that is, how to handle the scoring et al. in the case the player just whacks around the playfield like crazy. This sort of behavior should not yield a particularly good score and/or chance of leveling up.

This is a Silly Status Update

I really hate blog posts where the writer starts with excuses why there has not been much activity on the blog lately. So I won’t write one.

The location of the office for the company has moved. And while the company is a rather small one-person game studio at this time, the “we’re moving office” is an indirect way of saying me and my family moved – we’re located back in Finland into our new old house now. Took a bit longer than expected.

Even though coding has ceased pretty much competely for the last month, there’s been some action in the peripherals of game development. Aside of getting a proper home office (yes, I probably need to write one of those blog posts soon), I had finally the time and the place to order a development device – an iPad Mini – and I’m just short of registering it via Xcode to run the game on a real device for the first time. While wifey’s iPhone got smashed on a concrete floor I ordered a 5c in the same go, and now there’s an iPhone 4 & iPad 2 with iOS 6, and a 4S, iPad Mini, and 5c, these with iOS 7, in da house. That should be a good-enough testing bed for the near future. Furthermore, and partly driven by the need of a dedicated dev device, my company is now registered as an Apple iOS developer. Woohoo. It took about a week and a half but all in all the process was pretty smooth; no surprises, no hiccups, except the one fear that calling that weird long-distance call to frigging Luxembourg to activate my account could potentially have costed more than the yearly subscription fee of the whole dev program. I’ve heard miscellaneous horror stories about it but my experience was pretty much by the book and I had to listen to the “you’re on hold” song in bad quality for only 20 minutes.

Just before starting the journey back home – hey, it was only five days in the car with two kids and two dogs – I also commissioned Pietari Posti for some new art. He’s got a new web site BTW, check it out, pretty sweet. I had the PSD in my inbox forever, annoying the hell out of me every time I saw it as my fingers itched to put those sprites into the spritesheets and finalize some effects in the game. But now it looks like I get to

PLAY-sprites

the game for real on a real device for the first time! And I promise, this blog will get at least

Multiplier_2

no,

Multiplier_4

no no, no,

Multiplier_8

better in the near future!

Information for Geeks

Alright boys and girls. You can also create a game. What do you need for it? Well, I have no idea, but I can list the tools I use. I guess you have to put in some talent in programming, art, and game design, but other than that, you can probably just download some frameworks and tools and get going.

Fellow game developers seem unreasonably interested in what goes on behind the scenes of game development, so here goes. Nothing fancy, I tend to pick out the “best practices” by just googling around. You know, top hits and what seems to be most widely used.

  • Game engine: Cocos2D with the all-awesome Box2D physics engine. I’m not very interested in flame wars on what engine is the best – such discussions go into the same category as “which programming language is the best”. You can always spot an amateur from those statements. Every seasoned developer knows that the answer is “whichever you know best“.  If you don’t know any, well, then it does not matter which you choose. None of the “best of breed” are bad.
  • Lower level stuff: Macbook Pro 15″, Mac OS X 10.8, XCode 4.6. I develop games for the Apple mobile devices, hence.
  • Photoshop Elements 11 for miscellaneous art stuff, but I don’t do the main art, I just fiddle around with the awesome art from Pietari Posti
  • TexturePacker for optimizing the sprites. This is one hell of a good tool, very nice integration into Cocos2D (and several other engines).
  • PhysicsEditor for creating the bounding boxes for the sprites. This is also hell of a good tool, very nice integration into Cocos2D (and several other engines).
  • I have not yet, but I am with utmost certainty going to use Particle Designer to create particle effects into the game. The tool has just released version 2.0, which is supposed to be an excellent improvement to version [Update: I bought it the next week.]
  • And depending on the artzy need, I will in the same go go with Glyph Designer for font creation, because, why not.
  • Sounds. Now, this is an area I’m unfamiliar with. I see, at this stage, no reason not to go with Cocos2D’s internal sound engine. Please correct me if I’m wrong. (My sound specs so far: sounds and music have to be AWESOME!!1!)

And that’s it, ladies and gentlemen! The list is actually not that long, now that I’m looking at it. Which must mean it is easy to do computer games!