Friday, October 14, 2011

Felinity Postmortem

Third place Originality
Sixth Place Overall

I set out at the start of this contest to make an RPG. I knew I wanted to make an RPG. I had played enough RPGs over my years to know the good stuff and the bad stuff in them. But what could the story be about? I chose my darling cat Spiffie as the main protagonist, and used her adopted name, Tandy. I figured a story about a cat would be most interesting, but more so, a non-anthropomorphic cat. I want the player to really be the role of this young orphaned kitty. The story developed for the uDevGames version of the game only covered 1/8th of the story I wanted to, and only has a small fraction of the total content I wanted to get out, but I had a plan!

What Went Right
Starting out fast right out of the box. I had the start of an RPG engine for iPad using the Cocos2D engine. It took about 1 hour to get it working on the Mac over from the iPad. This was a good sign for me. I spent the next week getting all the mac specific stuff ironed out, changing screen resolution, minor bugs, etc. Overall using Cocos2D was just a huge plus. I was able to focus heavily on game design and assets, and less on asset management. I also employed the use of several tools meant to assist Cocos2d such as TexturePacker, Tiled, Glyph Designer, and some custom Cocos2D extensions (HKATMXTiledMap, AWScreenshot, etc.).



Once I had established some basics, I quickly hit my friends up for rapid feedback. This allowed me to iterate often on the art direction and gameplay mechanics. While they say you're ultimately developing a game for yourself, something you yourself would love, you are really developing it for the people who will play it. Most people can quickly tell you "I like that" or "I dislike that" and you can get a firm idea of what works and what doesn't work. Gameplay is a bit harder to tweak, but I initially set the bar very high. A bit too high, actually, as many people who were quite good, were failing. The level of difficulty I set it at felt just right. Inexperienced players to the traditional 16 bit genre of turn based RPGs may find it a bit difficult, but those who were experienced might find it a bit easy. Most importantly, did they have fun?

And to tweak the hell out of it, I wrote several Perl scripts to helped translates from easily digestible and tweakable Excel sheets, and scripts that convert to the data format. While I didn't integrate them into my build process, they could easily have been made to, and overall they greatly simplified certain aspects of content creation. It also allowed the dance sequence at the end of the game to be an absolute joy to choreograph!



What Went Wrong
What kept me awake my first night when deciding how to make this game was George Seurat. He developed this crazy pointillism style that was kind of astonishing to look at. I loved it. I wondered if I could make a game in that style. I actually pushed the art style for about a month before I got two overwhelming bits of insight. One, it was insanely difficult to create tile-able assets like that, difficult to create alpha based assets, and lastly it was just time-consuming. And two, the reception was ice cold. While some thought it was clever and pretty, the majority did not like the art style juxtaposed with pixel art. What I did find out was more people loved the pixel art. There was some critical reception about not liking it, or concerns over the anatomical nature of Tandy; but in general, people liked the new direction. I think if I had started out working in pixel art sooner, I could have churned out at least another few plot points worth of content.

The control schemes for the game are heavily touch driven. I had originally designed things for the iPad, and had spent months contemplating perfect controls for the iPad. While they "worked" on the mac, most people clamored for joystick / keyboard controls. It's just what they are used to when dealing with a 16 bit genre RPG. I made some last minute tweaks that added keyboard shortcuts to the battle scenes, but I think it might have been too little too late. I still ultimately want to design this as an iPad game as I find the controls for the iPad to be absolutely perfect and clever, but for a mac contest, I should have made it allow keyboard as the main input, or a better hybrid of both.


Content! Content! Content! Content games for a 3 month contest is a drudging no-no. Especially as a sole developer splitting time between programming, art, and design. I had designed out several hours of content, but my eyes designed far more than I could chew. Most time consuming was the pixel art. While I had an absolute joy pixeling them into the wee hours of the morning, most of them took hours, and some animation took days. Trying to mingle in the time to pixel these in between my day job and the rest of my life was just consuming. What's worse is the rate of content consumption compared to content creation is astronomical. People devour content. They love it, but they want more of it. I think in the grand scheme of things, I should have brought on an artist to take over this so that more hours could have been dedicated to making the game longer and more complete.


Like most games, sound was sadly an afterthought, and it wasn't till late in the contest that the background "music" to the level was added. Once it was added though, it really set the mood, and it became so obvious how much of the tone was going to be lost without it. Even more frustrating is the composer who offered to make a quick 30 second battle music to fit the game bailed on me, without even a heads up, so I went into the voting period with no battle music. A good friend of mine was irritated by the lack of battle music, and started singing a little song whenever he went into battle. He was kind enough to quickly throw this together in Garage Band, and I quickly added this mid-voting period. It made going into battle far less jarring and you didn't get that "sudden silence" feel. And while I had this music, I still lacked the polish of sound effects. All those "little things" that make a game complete. Button clicks. Menu selection. Attack noises. Rushing wind. All simple things that could have been added to give more depth.


Not Really Post Mortem
While I write this postmortem for Felinity, development is not dead. While many, many features were implemented, there were many crucial features left out. Character screens, attack points, sleep points, more stuff to do! And the content! Oh so much more content. I want to finish up this story of this beautiful kitten. I want people to live her life and feel the emotions she feels. If you want to keep track of the progress and development, just keep tuned in to this blog.

  • Developer: Brian Ramagli
  • Title : Felinity
  • Genre: Cat RPG
  • Development Cycle: 3 months
  • Source Code & APIs: Xcode (Objective-C), Cocos2D
  • Critical Software: Graphics Gale, Texture Packer, Glyph Designer, Excel, Komodo Edit, Perl, Tiled
  • Hardware Used: Octocore MacPro, iPad, pen and notebooks

Wednesday, September 7, 2011

Usability and Content

Our main protagonist has been granted with an attacking animation. Not only that, but she also has a full sprite sheet (with her correct color)
Isn't she adorable?







This is her Dialog picture. This pops up anytime she is chatting (meowing?) at various things.










On the engine side, I've added a new RNG (my old trusty Ranrot), I've also made it so you are safe to travel at least one square before you encounter another battle. There were certain play-testers whose random battles were extremely biased (despite a relatively low encounter rate).  Overall this just gives a nicer feel to the game's encounter rate.

Also added was support for background music (rain!), screen flashes, removing scripts from other scripts (this creates a kind of lock and key type system, though that also needs to be overhauled as well). This allows me to slightly better guide the player by semi-gating content in hopes to better steer the player in an otherwise VERY open ended map.

Lastly I fixed up some UI bugs for those who get to much higher levels and get to see more of Tandy's abilities.

So is there any new content from this build and the last build? Technically no. Just a much better looking game. These last few weeks are going to be dedicated to content, bad guys, and hopefully finishing up the first level before the contest ends. The engine is nowhere near 100% feature complete and is still missing basic RPG features such as character screens, map and battle sound effects, but these will probably have to wait.

Download Preview

Sunday, August 21, 2011

Huge Update

So since we last met, I did some major overhauls. For one, the graphics for the map has been changed completely. I really liked the "idea" of seuratting the map as well as it creates a unique effect, however it's damn hard to effectively create art like that. I also have more experience pixeling than seurratting, so after some rough feedback from the #iDevGames crowd, I changed the art style.


The battle backgrounds will remain seuratted (mostly cause I don't have the time to pixel in 1024x768 backgrounds).

So besides revamping the art, I also added a new bad guy, the pigeon.


With the pigeon came with a few backend updates:

  • AI now takes into account all of their abilities
  • Special effects
I also tweaked the level scale for this game to be slightly accelerated to account for 1) no rest stops and 2) only one party member so far. Once your party expands, it'll be less brutal to spread out the leveling up love as you will have 2 party members to ding.

Also related to the level scale is I've fleshed out the beginning to end of "how strong" characters will be. This was pretty crucial as by setting the progression of Tandy, I can then set the difficulty of the enemies (which I've made challenging, but not impossible... but don't get over your head too fast, or you might find yourself kitty filet).

Lastly, I've set up SaveFile versioning. Mostly this will be for production, as I'm still heavily developing the game. If some change that is added that would seriously break the game if you loaded a bad save, it would be good not to load it. I highly recommend this for any game that utilizes saves.

Thursday, August 4, 2011

Of Saves and Loads

So a crucial part of Felinity is now done: The ability to save a game and load your saves.

So there are many different save models in RPGs.

  • Save at dedicated spots. Such as at an inn or church. This doesn't well for Felinity as she spends the majority of the time in the "wild" and I don't think she's particularly religious, being a cat and all.
  • Save absolutely at any time. My approach is similar to this, but not entirely. You can save anywhere on the map portion of the game. Exceptions are when you are in the middle of a Dialog, or "actions" are running. I also do not allow saving in the middle of a Battle (I feel the potential to cheese here are far too great).
Probably the best part of having Save and Continue implemented is that I can now test different parts of my game more easily. At the very least, I can hack save files together to be where I need to be!

So what comes next:

I need to do some artwork for the post office (where you find the rat king), I need people in the post office (ya know, that's one thing that's horribly absent from my game. Cars and people).

After that I will be putting in more work into the Park. The Park is where we'll be meeting the next enemies. One of the things I have to keep in mind is level progression. I want people to level moderately quickly as this is a somewhat short game, but I must be careful not to progress the enemies too quickly, or Tandy may find herself overwhelmed if she decides to forego leveling first. The game rewards you modestly for fighting things much too hard (simply beyond your level), so that you're always brought up to the correct level for the area swiftly. The game also rewards you less so for staying in one area and grinding up. I don't want anyone to feel they need to stay in an area and level because "the next area is too hard".

Saturday, July 30, 2011

Polish

It's a tad early for polish, but I wanted to start setting standard for the art in the game earlier in production. From previous iterations, mostly everything is more well defined.

Other things done is now you're able to die. Like when your character dies, you go to the game over screen and everything... which is of course incomplete, but that's better than your game being stuck in a soft-hang.


Download Preview

Monday, July 25, 2011

Rat!

So the moment of revealing has arrive. The first bad guy!

Ugly little rat isn't he? He's also full animated as well with attacks.
I think I did a fairly good job of creating our first enemy of the game. There will also be one variant of him for a later portion of the level.


Other stuff done:

  • Tandy can now gain Hiss at Level 4. This is the first move that utilizes the Buff system. Unfortunately the game doesn't have a way to coordinate / visualize to you that the buff is on / fell off of you, but rest assured, it's happening there in the background!
  •  Characters heal to full when they gain a level. This is mostly a difficulty nerf. Since there is almost no resting until the end of the first area (I may add that ability later), it became nearly impossible to manage yourself on Licking and level gaining alone. Don't worry, I'll make sure the game still remains challenging
Also with this post, the first time you can download and preview the game.

Friday, July 22, 2011

Memory

There are no cool gameplay or screenshots this post, merely update on progress.

Most of the past week has been spent tracking down and fixing memory related problems. Threading, and other misc things can cause all kinds of weird concurrency issues, and utterly obliterate your system (2 threads accessing a single opengl context apparently is grounds for a kernel panic).

That being said, there are plans, big plans in the coming week to see a lot more gameplay!

Monday, July 18, 2011

Saving

So I got leveling to work in that you can also gain abilities (or upgrade abilities). Thus Tandy gains her first ability, Lick.

In addition to this, I worked on Saving. Most of it is purely visual, but the logic flow is correct, and the only thing that needs to be done now is writing the file, and serializing my objects (I suppose that would be the important part of saving).

A video of this in action can be seen here

Thursday, July 14, 2011

Monday, July 11, 2011

Watch out!

Grabbed a placeholder image for the car so I could quickly test out the car battling. It works how I want it to.

Somehow I don't think there will be too many jaguars roaming the streets of our fair city.

Saturday, July 9, 2011

The Alley Way

So the first level starts off in the alley way where Tandy loses her mother. From there, you set out on your adventure.


As you can see, the first map is rather large. One thing to notice are the roads are covered with Battle Triggers. If you walk Little Tandy out in the roads (not at a crosswalk or sidewalk), you have a chance to do battle with a car. I'll tell you one thing, no matter how hard you hit a car, a car hits back harder.

I've also planned out the rat story (simple as it may be, I think it will be rewarding to go through it).

I'm still unsure what I want to go on in the park and on the far right of the map. I know how I want the map / stage to end, but unsure the best way to go about it.

Friday, July 8, 2011

Idle Tandy

First draft of Little Tandy's Idle Stance in the Battle Engine (This is pretty close to what she will look like). As you might recognize from previous screens, the color scheme for the map walking Tandy is wrong. Tandy is a full blown cute tabby cat (just like on the title scene).

Monday, July 4, 2011

Rain Rain, go away

I spent much of the tweaking the rain effect on the first level. The overall tone of the level is downright depressing. Her mother died. It's raining. Dirty rats. How much lower can one get?

Friday, July 1, 2011

uDevGames: Day 1 and a half

So today is the first and a half day of uDevGames.

Programming
Last night I got the animation in, and might I add, it's beautiful, What took up 256k in previous iteration only costs us 128k this one. 

Design
So I removed Gold from this, as such a thing is ridiculous for a cat. What's a cat to do with gold. I've toned down the Leveling scale so that's it's much easier to do. As I expect this game to be much shorter, I want people to be rewarded more quickly. The downside to this is I'm gonna have to find more special abilities, or make each one less important. I suppose I'm not striving for truly difficult gameplay here, just something to assist with the story, while at the same time, having battle be interesting.

Art
Started a rough draft of the background for the first level. For initial battles in the alley.

 I'm definitely liking the pixel art characters, and Seurat style backgrounds / environments. It gives a certain contrast to the game. It's also much easier to distinguish characters on top of the background.

Sunday, June 26, 2011

Texture Packer

So today was my first experience with Texture Packer and I must say, color me impressed. The interface is VERY intuitive and going from start to "hey, it worked" was painless and worked exactly as I expected.
My simple test with it was:
* make folder to stick sprites in
* draw 6 simple sprites (and I do mean simple)
* set where I wanted them to be
* Publish.












And bam, there they were, all ready to be used in my project. There were a few things to tweak here and there, but those are mostly extras, and not necessary to (how do you want to sort it onto the sprite, how can Texture Packer adjust it to fit etc).

I'll likely be converting my RPG's Battle Engine Animation System (RPGBEAS?) to it. What I had currently was SOOOOOOOOO clunky and inflexible (if I wanted 1 animation to have 30 frames, while most had 2 frames, then I had to extend the entire texture so everything supported 30 frames. What a waste of space!)

This should also allow me to go balls crazy on special attacks (Knights of the Round from FF7 anybody?)