Category Archives: development tricks

Biting off more than can chew

sleepykittens
Gilda & Grillo sleeping together, pic from a few years ago

I would like to be able to sleep peacefully as my two cats above! The reality is that in the past month it has been quite stressful, for various reasons, personal and job related.

In particular, I recently had to drop the idea of making the “two independent parallel plots” feature of Bionic Heart 2. It was definitely too much. I tried to fix the numerous plot bugs, with the help of some people but we failed. Then asked Aleema, my trusted Loren writer, thinking that maybe it was my faul, that I was just “burned” by all the recent work. But even her gave up! So at least it means it wasn’t just me.

Thinking back about it I don’t even know how I thought I could make that work. It’s a total nightmare since the game is already super complex even played as “normal” visual novel, with lots of path/branching and variables to take care of.

By coincidence, this week appeared on a games site the flow chart of the Walking Dead game by Telltale, which I enjoyed a lot last year. Immediately, I noticed how simple it was. Yet, playing the game I had the sensation of much more freedom of choices!

So in practice, to the end users doesn’t matter much if there are really 150 parallel plots. Nobody except a few people are going to replay the game from beginning to see them all. I remember when I did a survey a few years ago, only 10% of people said that they try to unlock all the endings.

I think that for all future games, I’d rather make the story longer, and use other gameplay/narrative “tricks” to give the illusion of freedom (because even in the multiple path games, you still don’t have complete freedom, is just an illusion).

Anyway, what does it means in practice for Bionic Heart 2? I thought that by removing the parallel plot thing, all problems would be solved but I was wrong again. Testers in forums were finding lots of new plot bugs! The game logic is still to complex, with too many branching points, jumps, and so on. For every problem fixed, two new ones would show up. This was going to be a neverending story…

The solution is something that I should have done from the beginning: I’m going to reorganize all the scenes in a simpler way, still providing choices like in all my games, but with a more simple logic behind it.

Nothing is going to be missing from the original script (maybe a few parts of some scenes, but I’ll try to keep as much as I can) but simply I will make it so that behind the scenes doesn’t become the huge, complex mess that made me (and two other people) lose 2 months of time (the game should have been out last month).

I think I should be able to finish it in 2 weeks max, maybe sooner. I really want to get out this game as soon as possible! 🙂

Making wrong choices

grateful
I wish I had someone like Tanya to help me out, because I would really need it.

Today I hoped to announce Bionic Heart 2 beta testing. After two months of coding/testing, would be about time!

Instead no. I have bad news. I’m at one point where I fix a plot hole, and a new one appears. I check a variable, one path works, the other doesn’t. A scene that before was fine, now plays out of order.

I’ve worked like crazy in past 3 days, I’m stressed like never before and then I came to a simple conclusion. There’s no hope to make this work. Every time I open the script I have a headache now. Writer doesn’t have time to help.

So I’m thinking what to do. It’s really embarrassing for me. Despite all the efforts, I know that I can’t make this work, unless I make some really big changes. And I’m not used to release half-broken games. Testing to find the bugs is one thing, but the version I have currently is not even to be considered “testable”. Only 3 days ago I thought I was at good point, but then I discovered that is like a house of cards, if you move a piece, everything falls apart.

It’s the first time I find myself in such situation in my life, and I’m the sole responsible of this. I should have followed more carefully the situation, instead I was busy with other projects. A wrong choice, trusting too much someone else capabilities, thinking he can do it all on his own without supervision, and that’s the result.

A pity because the story itself is really good I think.

Not all is lost though!

However don’t be afraid, I’m already thinking what to do to solve the situation. A simple solution would be to eliminate the “multiple path” feature and just have a continuous story, where if you fail the Mars or Earth path the game ends. Less cool than the original project, but probably in this case I wouldn’t have to do a total rewrite of the story, and would be faster to solve it.

Don’t worry, the game WILL be out, you will only need to be patient for a little more! I am still aiming to finish it by the end of March, even if I’ll have to rework the game structure a lot.

I’m really sorry about what happened and will make sure this won’t repeat in future.

What is Bionic Heart 2 ?

I realized that I always talked about Bionic Heart 2 like if everyone played the first game. By the way, if you haven’t, you should since I lowered its price to $9.99 and even if was one of my earlier games, the story is still one of the best I think 😉

Anyway, for those who haven’t played it, I’ll introduce the game. Warning there are some small spoilers about some endings/characters of the first game, so be warned before you continue reading!

The Story

The story takes place after the “Escape to Mars” ending. It’s the 2099 and Luke, Tom and Helen are chased by the ruthless Richard Meier IV, CEO of Nanotech and a very influential man who can bribe the entire London media and police. Tanya, a robot with the brain of a woman who died a century ago, escaped from Nanotech and wants to find out more about her past and take revenge against Richard.

Tanya provides Luke, Tom and Helen with fake ID and they board the first shuttle to the secret colony of Mars. They are safe for now, but what lies on Mars? Who are those people doing there, and why it’s kept secret?

So we have two parallel stories: on Mars and on Earth. The game is told using multiple point of views, so you’ll play the Mars storyline from Luke or Tom point of view, while the Earth one will be played by Tanya and Tina point of view.

Tina Gomez is one of the few police officers that aren’t bribed by Richard. She’s just a small ordinary street cop:

tickets

and together with her partner Robert Carson, they have strong suspects about Nanotech and want to find out more.

The game is structured in a way so that if you lose one story, the other goes on. You can have 8 different ending both for the Mars and the Earth stories, though some of them are just variants of the same ending. If you manage to finish both plots, you’ll get an extra 9 “combined endings” that are the hardest to get.

The cast of playable characters

I’ve already introduced Tina Gomez. She is very ambitious, her main goal is to get promoted and she hopes to do that by discovering what Nanotech is doing.

Luke Black was the main character of the first game. He is a good looking man in his 30’s, and apparently he’s calm, he’s rational, or at least he was until that night when Tanya knocked at his door. In the story, he’ll have several tough decisions to make. Does he still love Helen, or not? Will he be able to reunite with Tanya? He is the character with more interior struggles, one of the most complex of the whole game.

Tanya Vanic is a unpredictable character. Her new robotic body gives her superhuman powers. It will be up to her to decide how to use them. She can become a deadly killer, or only try to discover the truth behind her past. Who she was before they turned her into a robot?

Finally, Tom Sparks is Luke’s best friend. He often tells bad jokes, so nobody takes him seriously. He is secretly in love with Helen, so his plot will be mainly about the question: is worth breaking his long friendship with Tom for Helen? and does Helen love him?

What are Social Boss Fights ?

In the first game, I had some “interactive scenes” where you could move and had to choose action like in an adventure game. In this sequel, the game uses a classic visual novel gameplay with choices, except for one thing: the Social Boss Fights!

bossfightIn the image above you see one of the toughest “Social Boss Fights”. Tanya isn’t in a good position 🙂

The Social Boss Fights are minigames in which you must pass a sort of test/escape a bad situation. You’ll need to convince a person about something, escape from someone, and so on. You’ll have to do that finding the right sequence of answers to give to the “enemy”, before the time runs out.

Each boss fight will have slight variations: in all of them you need to pick the right order, but in some you can choose the strategy to use, in other like in the screenshot above you’ll have a counter (structural integrity) that will go down, and so on.

In all fights, you’ll be able to see the personality of the antagonist (in the screenshot above, Julia Storm) described with 3 words, that should give you some hints on what could be the right strategy to choose.

Overall I’m really satisfied by them since are quite cool to play 🙂

All right I think now you know a lot more about the game. I’m in “crunch mode” trying to finish it as soon as possible but probably will still need a week or two!

BecauseWeMay sale and game prices

First of all I wanted to inform you that I’m participating to the BecauseWeMay initiative. What is it? Quoting from the website:

We believe that developers should have the freedom to price their games how they like, without interference from the online stores that sell the games. Why? Because it allows us to promote our games more freely, as we are doing here! We rely on the ability to promote our games for our livelihood and control over pricing is an important tool for this purpose.

For the last week of May (May 24 through June 1) our games will be deeply discounted to celebrate online stores that give us control over pricing: The App Store, Google Play, Steam, Desura, IndieVania, and a few others.

I offered my game Spirited Heart + Girl’s Love at half price, sold directly and in the Google Play store.

About game pricing

Game pricing is more complex than what people imagine. I often got comments about how my game prices are too high, and I should price them $9.99, because that’s what an indie game should cost 🙂

You can talk about what indie is, what is really worth (3d cutscenes or GAMEPLAY?) and if my games sucks or not. But one thing you simply cannot argue are the statistics. Us developer aren’t setting the games prices randomly! At least, I don’t. If you’re an indie dev you should only listen to your statistics and not what people tell you. Doing occasional sales like this one is fine of course 🙂

Also, this is my personal experience. I am sure different game types have different audience and prices. I cannot imagine a tower defense or a platform game to cost more than $9.99 for example!

Now, let’s see some graphs just to explain better. Below is Spirited Heart Girl’s Love revenues graph from the launch day to the BecauseWeMay sale:

Shgl

…not an impressive bump eh? The fact is that during the release day, all sales came from my own site only and a few affiliates. Instead I got lots of traffic from because we may initiative, but despite having many sales, the half-price really hurts revenues. Still, was a somewhat good result compared to the regular sales. Maybe I should lower game prices then? Let’s check Spirited Heart graph instead:
Sh
…for this one I didn’t even had to go back to the release day to find more profitable days. In two previous occasions, when I sent the newsletter to announce updates about Loren or promote some other game, I got more revenues than for the BecauseWeMay sale. And I got much more traffic from the becausewemay initiative than during those newsletters!

And portals?

But what about portals ? Sadly as you know my experience is very limited, but luckily there are some very indie-friendly portals like Desura. I don’t have Spirited Heart there (couldn’t make it in time since uses DLC and I don’t know yet how to implement it) but I recently put Planet Stronghold, and many people complained about price. So, after a while I did a sale last weekend for $9.99 instead of $24.99, and I promoted it on twitter, and showed up on the “on sale” section of Desura (which I think is the most visited! lol). Result:
Desuraps
Yes, the day of the sale the revenue was slightly higher than release day, and in other two occasions. But what about in the long run ? I am not really sure, considering the increase was so small that could have just been a random thing! Also, I should compare prices without a promotion, because is normal to have higher exposure during a promotional sale…

I will continue to experiment with prices of course, but so far everything seems to confirm that lower prices = lower revenues. I’d be very happy if I could make same amount of money (or maybe more) and at same time make more customers happy, but so far it really doesn’t seem the case.

Professional developer’s look at Ren’Py

Editor

In the image above, some Ren’Py code (people familiar with python might recognize some keywords/syntax) from my current project Loren Amazon Princess in my preferred editor, SciTe.

Ren’Py was created by Tom Rothamel, as a tool to help everyone to create visual novel games, with very little or no coding knowledge required. I first learned and started using it around Summer 2008, and since that year it has evolved quite a lot. So it’s been 3 years and half since I started using it, and right now I can prototype many games rather quickly, even if works better for certain kind of games: heavily story based, with no real-time animations and of course 2d, since Ren’Py is a 2d game tool.

Currently Ren’Py is available for PC, Mac, Linux and is still experimental on Android, though it should be available sometimes in the future. There’s no iOS version planned at the moment of writing, even if the author seems to be thinking about it.

The language

Ren’Py, as the name suggest is based on Pygame and Python, which I consider the most advanced language available today. Simple, concise, but at same time powerful and easy to use.

It was love at first sight for me: I was used to type the Divine Comedy in C/C++ to load a .csv or do string operations, and when I realized how quick was to develop with python I immediately started to learn it, and it was very simple process (thanks also to the online documentation).

Ren’Py is NOT a visual tool. You don’t use the mouse to place UI. You use an IDE, currently available are SciTe or Jedit. This might discourage many people who first approach it, especially if they’re not coders but are used to play with Flash, Gamemaker, Stencyl or other visual creating tools. However, you soon realize that for certain kind of games there’s nothing better than Ren’Py and you don’t actually need a visual editor at all.

As I said the language was designed with visual novels in mind: though you can use it also for any story-based game like dating sim, RPG games, or adventures with some extra coding.

Recently a new Screen Language and ATL (Advanced Transform Language) were introduced, making the creation of interactive screens and special effects (zoom, rotation, movement, etc) even easier.

The Good

Very simple cross-platform capability. Since python is an interpreted language, this means that you can build the game for the three platforms (PC, Mac, Linux) with ONE CLICK. This is simply amazing! And you don’t have to worry for different behaviors: if the game works in one platform, it will behave the same in another. This was a big plus for me since I was used to have mysterious bugs on Mac when coding in C and Xcode, that weren’t present on PC.

With Ren’Py, I went as far as copying new .rpyc (Ren’Py compiled source scripts) directly into the zip (Mac version) or the tar.gz (Linux versions) from my Windows computer, without rebuilding the games and it worked, I didn’t encounter any problem. So for example you can develop for Pc, Mac and Linux without the need to buy a Mac or have a machine with Linux installed.

Powerful language and syntax. The language is really simple and intuitive. Remember that it’s a tool specialized for Visual Novels, but you can effectively write most 2d games with it. Probably the only ones that I wouldn’t reccommend coding are those who rely on real-time movement, like a RTS, shooter, or similar. Note that is still possible to make that kind of games, but I would pick another tool honestly.

Still for any other 2d game it’s really a great solution. Very strong GUI system, combined with the ease of use of python makes this a great tool.

Easy to debug. In most other languages, debugging is a pain. Not just finding the bug, but finding out which line of code cause it. With Ren’Py thanks to Python you get very detailed crash reports, telling you exactly where the problem is.

Magic reloading and rollback system. Those are without any doubts the BEST features I’ve seen in ANY 2d development engine. Not even Unity has something so powerful. What is that, you might ask? First, the reload: since python is a scripted language, you can ANYTIME (and I mean literally anytime) hit shift+R and see immediately the changes you’ve made to the current screen.

The rollback system instead is something inherited by the visual novel mechanics, but that works surprisingly well even to debug. In practice, the program stores the path you have choosen, and memorizes XX amount of “steps”. This was doen so that the player could “rollback” with the mousewheel or keys, to a previous situation in the game story. But it works even for coding!

Trying to explain better: if you start the game, then visit in order: screen 99, do action 32, screen 32, click button 2, screen 12, type your name, screen 42, click button 5. Can you remember that? the game can, and provides you with a way to go back, a sort of “Undo” but you can use it when directly playing the game in debug mode!

I know that even in Unity you can modify the game world with the 3d world editor and see the changes, but here I mean something different: you can see the changes without having to EXIT the game, and restart.

A few simple examples:

case A: you’ve been testing for 6h a complex RPG. You see a visual bug. You look in the code, find that a button was aligned badly, change the code and reload. You see the change immediately, and go on testing. “Flawless Victory”.

case B: you’ve been testing for 6h a complex RPG. You click “done” and the next screen crashes. Thanks to Python built-in descriptive crash you see where the problem was, in previous screen you assigned a impossible value. You do a rollback, in practice executing an Undo of all executed code, then fix the bug in the source with the game still running, reload, and go on with the testing. “Epic Win”.

And the documentation? it’s good, at least for the basic features.

The Bad

As I said, there’s no editor apart an IDE. There is no intellisense/code completion, and you cannot browse classes or labels (some people managed to use Eclipse or other tools for python to code with it, but it’s definitely a hack). This is definitely something that could be improved, since in particular in the first weeks of use you can’t remember all the commands by memory and you’ll be looking at the documentation extensively.

Bad documentation for the most advanced features. How does Sprites work? What is im.ConditionSwitch? and so on. The documentation explains everything, but sometimes seems written like if the author assumes the reader is a good coder/clever as him, but often that’s not the case 🙂 I consider myself an average coder but surely not a beginner, and sometimes I have hard time to understand how some of this stuff works. But it’s not bad as it was in the early days when documentation was really scarce!

It’s an hobbyst project. Don’t get me wrong: the author is doing an awesome job trying to reply to all the support requests, mainly done through the specific Lemmasoft forum dedicated to Ren’Py. However it still is, at least for now, an hobbyst project. The author doesn’t make any money from it, and so obviously there’s no guarantee that you’ll get an answer to your question. I repeat, he is doing the best he can, and sometimes other people help answering the most common questions, but still you must not expect to get immediate responses to your problems.

Personally, I’d love to see Ren’Py become a professional tool, with full support of deployment for Android/iOS, and maybe future porting to HTML5 and more. I am sure many other gamedevelopers even outside of the “visual novel / dating sim circle” would pick it up because of its features.

In conclusion

Ren’Py is a tool with double face. If you want simply to use it for what was made for, it will do the job without problems and is simply the best visual novel/dating sim system around, at least for desktop computers.

If you’re a more advanced coder and want to build simulation games, strategy games, rpg games, or any 2d game that doesn’t need a lot of things moving on the screen (but even in that case, you could make it) you’ll be surprised by the ease of use and powerful features that Ren’Py has to offer, combining the power of Python with one of the best GUI / scripting systems I’ve seen in modern 2d libraries.

Yes, to use it in advanced mode it has a steep learning curve, but once you get the grasp of it, is really hard to get back to… anything else. I had to do some C coding last week, and wondered why the “rollback” wasn’t working, or why I couldn’t just hit Shift+R to see instantly the changes I’ve made!

At least this was my experience. If I was able to release 12 games in three years and half (almost one every 4 months) it’s only because I discovered this powerful tool. Thanks again to Tom Rothamel for the incredible piece of software he managed to create!