On communicating progress – Introducing RetroLeap

We have been silent for a long time. A very long time. A very very long time. In fact, according to facebook, it has been 233 days since our last post on the page. Our last release was the Spanish translation of 2D House of Terror, published 17.03.2013, more than 2 years ago and the occasional dislike and question regarding our activity suggests that many of you are wondering what exactly it is we have been doing all this time.
Well, i am about to break that silence, yet, lest there be any misunderstandings by anyone reading just the first paragraph, i want to make one thing abundantly clear right now: We have been and are still working on all of our announced projects(and more). We have not – and will not – abandoned anything and even though this post will, once again, not contain a release date, releases will undoubtedly happen. Lack of communication does in no way imply a lack of work – on the contrary. Although it has been reiterated time and time again, it nonetheless remains a fact that game development takes time, a huge lot of it (with more than two years being the norm, rather than an exception) and communicating its progress is not quite simplicity itself.

Sadly, despite the inherently graphical nature of its results, most aspects of the process of game design do not lend themselves all too nicely to quick presentations in short facebook posts with an optional image attached. In fact almost none do.
Visual art and music are a prominent exception, because results in those fields are largely self-contained and easy to appreciate even by those who never partook in their creation. Even in those fields, however, the beautiful simplicity begins to crumble once the progress advertised is no longer entirely new content but small, incremental improvements to existing one, which are just not quite as exciting to the average follower.
It gets much worse in my department, creating an engine and tools to control it. A simple screenshot of an unfinished program is just not very interesting or informative and whilst a short snippet of code might please a very small(albeit important) subgroup, it looks cryptic to all others and can therefore not be considered the best method of communicating a games progress.
How then could it be done? Videos showing developers at work, explaining the process whilst engaging in it, like the excellent and inspiring youtube series AiGD are certainly a valuable and fun option. However, even ignoring for a moment my apparent shyness and lack of confidence performing in front of a camera, composing those is a non-negligible investment of time and effort, a scarce resource in a team consisting of two full time students only. A resource we prefer to dedicate to the actual development.
Nonetheless, no matter how suboptimal it might be, any attempt at communication is undeniably better than no communication at all.

Which is why i intend to set right what once went wrong and start publishing blog updates on a semi-regular basis. I hope those are an improvement over way too shallow and short facebook posts, which could be interpreted less kindly, whilst leaving just a minor dent in our limited “free” time.
In this first one I shall simply get the readers1 up to speed and provide a general overview of all the areas I am currently working on. I will gladly go into more detail about specific topics in future posts(suggestions are welcome).

So, without any further ado, allow me to finally introduce the fruit of my labor, the child of my mind, the cause of many a sleepless night:

Retroleap Promo

This beautiful promotional picture was created by our wonderful graphics artist(as were all the logos) to help advertise the game engine powering both of our currently announced projects(Reblobed and Saviour), dubbed RetroLeap.
Whilst our previously released games committed the violent atrocity of intertwining engine and game content related code, we chose(after several complete rewrites) to use a better structured, more generic and flexible approach this time.2 Using an already existing engine, of which there are plenty, was never really an option, not only because of the obvious lack of Dreamcast support, but also for more personal reasons.
Whilst we take our work very seriously and do intend to eventually earn some money3, right now we are in the unique position of not having to. We develop games for many reasons: We want to entertain. We want to convey stories. We want to improve our society by advancing the appreciation of the most brilliant and engaging form of art ever conceived4 and maybe even make a small profit.
But mostly, we do it because its fun. Its our passion and as such we want to do it in the best, not necessarily the fastest, way possible. Utilizing something like Unity and trying to fit it to our needs, despite all its merits, is neither as fun nor as educational as building our own engine from scratch. We want to understand and control everything. We do care about performance. We do want to be the gods of our own imaginary worlds5
Due to this, a large quantity of time was invested in providing a high quality design and implementation of something fitting our needs perfectly. The result is a feature-rich, flexible, easy-to-use, efficient, component-based game engine optimized for 2D and running, among others, on Dreamcast,OpenPandora, Dragonbox Pyra, Ouya, Linux and Windows PCs and probably some more by the time we are done.6 Along with the retroleap engine itself, I wrote several tools for creating games and content, which is what all those smaller logos are for. A fellow dreamcast developer once wrote

“The best engine in the world is essentially worthless if it takes a low-level computer engineer to create anything worthwhile with it.”

a sentiment I very much agree with and which is confirmed by our own experience.
Consequently, our tools can be used to create complete (albeit simple) games without having to write even a single line of code and keeping with the theme of easily presentable information, lets view some “pretty”7 pictures of them in action:

RetroLeap Screenshots

Obviously, with more complex games, like Reblobed and Saviour, writing some game specific code is unavoidable, so some way to do this had to be provided. Extending RetroLeap in its native language(the wonderful C++, of course) is possible, but for short iteration times and quick and easy modifications embedding some scripting language was the natural thing to do.
Even considering the range of platforms we wish to support, there were several options available to us on pretty much all of them, most notably Angelscript and the de facto standard for game scripting, Lua. In the grand tradition of standards and for reasons not entirely dissimilar to the ones for not using an existing engine, i chose to ignore that and decided against employing any of them. At the time, I had recently become very interested in programming language and compiler construction and the idea of using a scripting language of my own design in our biggest project to date was quite intriguing.
In a commercial, profit-oriented environment it would be nigh impossible to set aside the time and resources for developing such a language and possibly delaying release, when a perfectly fine(and quite likely better) alternative is freely available and proven viable by countless successful projects. Luckily, in our current situation the time and resources used are entirely my own and i am free to spend them in any way i please, which is exactly what i did ;-).
Instead of showing off any code samples or explaining anything profound8 I will simply tease you with yet another one of those neat logos ;-)9:

Chronicle Logo

Everything mentioned above is in a functional state and in fact used to create our games. It is not, however, ready for release in any form yet, as it is incomplete, continually changed, extended and improved and doubtlessly contains countless bugs i am currently unaware of. It is what i spent most of my “free” time on in recent months and, as explained in the beginning of this article, not the type of work that makes for good(quick) advertisement. Of course we have been working in other areas, too, but those, like story development and level design, are equally hard to show off.10

I originally intended to end this article with some random piece of code used in our projects, because I am, after all, a programmer at heart, and publishing something without a single line of code feels like heresy. Sadly all short enough fragments considered were either just not particularly interesting by themselves or might require a post as big as this one to adequately explain. Doing so would certainly be interesting and fun, but rather contrary to this articles stated purpose. If, however, even a single one of our readers11 expresses his or her interest in reading a purely programming related post containing some fascinating C++ templates i would be more than willing to satisfy their curiosity.

Well, that’s it for today. How did you like our very first blog post? What would you like to read more about? What improvements would you like to see in future posts?
More C++ code? More C++ template code? More pretty pictures? More pretty pictures ;-)? Please tell us. Praise, any form of criticism, constructive or otherwise, suggestions, insults and threats of violence can be addressed in the comments or you can contact us directly via email, skype or xmpp.

  1. My insuperable optimism is demonstrated in this plural form ;-) 

  2. I have a half finished article detailing how our past mistakes guided most of our current design
    decisions. If anyone is remotely interested I can finish and publish it 

  3. Both Saviour and Reblobed are planned as commercial releases. This does not mean they wont be open source. 

  4. Video Games are art, don’t you dare question it! 

  5. Alright, i admit it, NIH-Syndrom might have played a minor role, too. 

  6. This might actually win some award for most buzzwords in a single sentence. Sorry about that. 

  7. The word “pretty” is – of course – a euphemism in this context, as the editors, whilst being useable, have some serious quirks in need of fixing and are not yet ready for release in any form. Also, dont pay too much attention to the content, it does not represent the real status of any game but was quickly thrown together to have something to show without revealing too much regarding any of our projects. 

  8. I will gladly elaborate in a future post if anyone is interested. 

  9. Everyone should have a graphics artist at home. Its so useful ;-) 

  10. At least without ruining parts of the finished product, especially with story driven games, like Saviour 

  11. That is, all of them ;-) 

3 thoughts on “On communicating progress – Introducing RetroLeap”

  1. Wow a helpfull Article with many Informations.
    I thought realy you had break the Work on Saviour.

    Nice to hear that you did not forget us.
    Will be glad to get sometimes more Information on the forum.gp2x.de and the Pandora/Dremcast Version :-)

    When any Commercial Version of Saviour comes out,i will buy it and when anyone of you search a Betatester with Dreamcast(connected over VGA)/Pandora and other Systems….
    …then will i gladly help :-)

    Ingo Reis

  2. I liked the pictures you’ve provided so far. Reading this update is much more interesting and informative though :)
    Until now I perceived Saviour as a stand alone project. Seeing it as part of a bigger plan is pushing my anticipation even further!
    Have fun coding!

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax