Wednesday, March 23, 2011

Postmortem - "a sunshine ray of hope"

This is a postmortem for the game I developed for the 4th GamePrototypeChallenge (#GPCv4), entitled "a sunshine ray of hope" (click the title to play the game).

The themes for the challenge was "burden" and "sunshine". And for the next two days after the announcement date, I've been brainstorming on the ideas for the game which I would make based on those two themes given, and I finally came up with one.

The story for the game is a bit rough, but it sounded something like this: "One day the sun is dead. And for a pretty long time, people had been living in the darkness, with no hope... and dream. Then we have a hero here, who got hold of a something... a (sun) stone, which he believe could help 'save' the sun. In the meantime, there's also a myth that the power of the sun stone needs to be harvested by 'the harvester', a device which, if harvested a sun stone, can send the power to the sun... regain its power, making it functional once more. 'The Harvester' was believes to be hidden in the dark forest. And so our hero take on a journey to look for 'the Harvester' within the dangerous dark forest...". 

Genre and Target Audience
The game is a puzzle-platformer, and targeted to the audience at 12 years old and above (12+), and puzzle-platformer lovers.

Game Mechanics and Features
The idea is to have a character, who has in his possession, a sun stone, which could cast a ray and move specific objects or "blocks" in game. There're be two kinds of "blocks" in the game, in which one is covered with dead plants, and another one which isn't. When the ray is casted to the dead plants block, the dead plant turns green, as if the sun ray from the stone has given it the power (sunlight) it needed to survive. And as the player moves his aim (and the direction of the ray moves too), the plants will follow the light, and thus moving the block it's covering; while for the block which is not covered with anything, it'll just stay stationery in its original position, until something (blocks with plants) come knocks it down. I did a blog post about the game mechanic here. 

Besides that, there'll also be other element planned for the game which helps makes it a more interesting puzzle-platformer, such as the giant ball (common in most puzzle-platformer), large block-pendulum, trap, boulder, door (which need to be unlocked by solving puzzles), etc. 

And lastly, "the Harvester" will be placed at the last level, where by the player will need to cast sun rays at it for it to "harvest", before sending it for the sun, and thus ending the game.

Development Team
The team, SuperOrganic168, currently consists of me (Lee Zhi Fei, the game designer, programmer, artist) and composer Richard Daskas. There's only three games developed under the studio name thus far, and another 3 game I developed on my own 2010 will also be added, making it 6 games in total. I'm currently still a full time student on his internship program (at this time of writing), and a part time indie game developer; while Richard is a masters composition student at Penn State. 

Development Tools
The softwares I'm using for this project are:
- Unity3d, the game engine 
- 3ds Max, the 3d modelling tool
- Photoshop, for texture making and UV map editing

What went right
1. Finished game mechanic - The game mechanic was originally thought to be impossible to complete within such a short time, I had about 6 hours per day to think and work on how I could do it, and probably another 1 to 2 hours at works. The basic mechanics (casting ray and move blocks) was completed within 9 hours, and another 4 hours on tweaking it to fit the direction I want. It's still a little buggy at the time of the submission, but the game is playable, and the bugs is not so noticeable. And the Unity's MouseOrbit script really helps a lot for these types prototyping situation.

2. Good tracks for the game - As soon as the game mechanic was finished, the first thing I did was contacting my composer, Richard for some music tracks for the game. Told him about story, and how the environment is gonna be like, and a few days later, he came out with two tracks, and we just discuss about how we could improve it to suit the game through e-mails. The point is that, thinking about the music first was for me, a great step for a game development project. You've got to think about the environment and the feeling you want to give to your player first before you start building the environment. I remember previously, in my second year at MMU, when I was working on a project, the music part usually comes last, and it's a pain in the ass to decide later on what kind of music suits the environment.

3. Successfully learn and use line renderer - I've never use the line renderer thing in Unity3d, only sometimes heard about it on other developers' blog. A few days before the challenge started, a classmate of mine mentioned about line renderer, and it got my think about how they did the Tron back-line thing that kill its player if crossed in Unity3d (they made a Tron game in Unity3d too!). So the information was sorta came at the right time I needed it. Because originally, I intended to use particle system to create the sun ray, but I have no idea how to limit the particle so that it'll only shoot particles until the hit.point, and to think about a formula to do that effect would take quite some time for me. Luckily, line renderer wasn't that hard to learn and use. I manage to come up with a solution to shoot the sun ray as a line renderer game object, and make it stop increasing in length as soon as it hit something. It was worth taking the risk of trying something I've never did before.

4. Successfully learn and use 3DText - Another thing that I haven't really tried on. In one of my previous project, I did some test with it, but failed with unsatisfying results, mostly because of the font issues. For some reason, the 3DText in Unity3d goes all distorted when I'm trying to use imported font, instead of the original default Arial. Thanks to the fact that a lot of people are also facing the same issue and UnityAnswer was there to provide the solutions, I was able to find a solution (using new materials, and change shaders, etc), and got the 3DText look exactly like how I wanted it to be in the game.

What went wrong
1. Bad character control - In order to make more time for me to work on the puzzle and level design of the game, I re-use back some of the old character movement script I wrote some time ago, and it turn out to be a disaster. Not that the script aren't working, but it's just wasn't fits for the game's nature... or any other puzzle-platformer game. It was originally wrote for a RPG game I made previously. The suitable one should be one that moves according to the corresponding camera angle.

2. No restart level - The problem is extremely easy to solve, but due to time constraint, the idea to restart a level wasn't in the plan, or I didn't even think that it was needed when I was building the levels. Anyway, as soon as the game was completed, I found out that some of the levels at the higher level was kinda hard, and the player can only respawn if they fall off cliff, but the non-movable-block won't respawn if they fall off cliff and thus the player can't complete the game and will have to start all over from the tutorial scene and proceed all the way to the level they lost at. A very troublesome problem, especially when some of these hard levels takes a long time to complete, and stops the player from reaching the last level (the 6th level), where the harvester is at. A restart level solution is currently in the work.

3. Not so narrative - Also a feature for the game, was to make it a little bit narrative, like telling a story the player about what's going on in there, and what happened as he proceeded through the levels. The only "narrative" part of the game I think would be the tutorial scene, where we have a couple of floating text which tells the player what to do. The only part that I failed to finish was to place the story into the game.

4. Game assets not complete - There's actually quite a lot of stuff (3d models) I intended to put in there for the game, but I never got to finish them on time. One of which was quite important, the main character, was also intended to be an actual "character" (with animations and stuff)... instead of the current white box guy. Besides that, I also planned to make the game a little more dark-forest-like, by adding some trees and use terrain in there, but never got to do it because it's decreasing the performance and increasing draw calls.

5. Not all levels done - I had quite a few levels designed to be in the game, but ended up not doing any of them. Some of the levels in there are combinations of the levels I intend to put in. A few levels I designed even have new elements for the game, but I only manages to do two, and placed them at the second last level, which, if you managed to get past the first 4 levels, you'll get to see it.

No comments: