And I know this is no business practice but I don't want to pitch you the game.
Windows users: quick play this game on Game Jolt.
Mac and Unix users: install Löve2D and play this version.
I have to say I am quite disappointed with this prototype. The artworks are for young children (though I wanted so), the code must be the ugliest one I made (I haven't wanted that!), and story is so simple. However, I did it so it would be stupid not to release it. Even if I failed to do a great prototype, I learned some lessons at least, and hopefully I will overcome them in my future games.
I encountered some problems with my vision of entities made up of components. Among other component types, a GraphicComponent is only able to show a single image. And an entity can only have at most one instance of each type. What happens if an entity want to have several, independent graphical representations? Because I wanted the possibility to show two images at the same time during a cutscene. Finally this never occurred, but I still coded a class which is not part of the entity principle. I recently discussed with a friend about the entities in Warcraft/Starcraft and I will try next time to change a little bit my design.
This was my first prototype with real dialogs. As I am quite influenced by my programming experience with NeverWinter Nights, my dialogs ended to be some generic containers used to launch scripts (there are dialogs which only run a function, with no text). But I didn't wanted to give a whole structure where just a text is required, so the format has become a mess. I will sanitize that problem in future prototypes... or just use fewer dialogs.
I also realized that, when you are a developer, the bottleneck is everything but the code... therefore I won't do another game based on graphics before a while! There are 119 images in this game. The children's style helped to get them faster, but it's still a lot of work when you aren't an artist (achieved in four days along with studies!).
Update 6/21/2011: Some things I'd change if I had to do it again:
- I would integrate the cutscenes into the entity system. The main reason is to avoid dealing with different systems on the same game. Rémi suggested that cut-scenes could be composed of several entities, one for each image, and another serving as a controller, reading a track and sending events to the entity-images. Another possibility is a component which can draw some images at the same time, but I guess it's trickier.
- For the same reasons, I would put the dialogs into the entity system. Here one entity should be enough for the whole game, actually it would only have a DialogComponent. Sending an event "playDialog" to the entity "dialog" would load and play the dialog given as parameter.
- To allow the previous points, I would have to write another Transform component. The current transform is influenced by the camera, but the entity-images and the text need to be independent of it, though they have still a position on screen. The goal is to have both game and UI using the same entity system. It would allow some tricky mechanisms, such as a button sending an event to the player-entity. But I don't really know how to split entities, i.e. draw the game entities at first, and then the UI in a second pass. Let's think about it.
- The dialog format should not change, but using some helper functions I could hide the format to the designer/writer. I expected to work alone, but Brice copy-edited the dialogs and he had to deal with that mess.
- If I had time, I would try to apply a low-pass filter on the music. Some players reported unpleasant ticks. I can't prefigure what it would result.