AdventurOS

Development Update #16

14 May 2015

It's been a long time since we started working on AdventurOS.

Before we even made public the concept, it came to life as a Pygame project.
As the project grew bigger, we started adding more content to the little engine and not much later it obviously started to slow down.
Most of you might already know Python/Pygame is not very efficient when it comes to games. That is why we decided to develop it using Game Maker when we launched the indiegogo campaign. We were all familiar with the tool and it was powerful enough to perform the way we had in mind.
By that moment we were using Game Maker 8, so part of the money of the crowdfunding went towards an upgrade of our license to GM:Studio.
The new version of the program, developed by Yoyo Games, was going to allow us to develop a cross platform game. "Code once, run everywhere", they said.
But reality is when we started coding the nightmare began. "Code once, suck everywhere".

    After the fresh installation we noticed several changes in the software.
Some were good, some were bad and some were just TERRIBLE.
AdventurOS' key feature is precisely the indexing of files and folders to generate the levels, monsters and adventures.
While game maker 8 was great at doing this, the newest version GM:S dramatically limited that to only ONE folder per operative system. Adventcalypse.
The documentation about it is very poor and there is no information to be found about OSX or Linux.
The program has a feature to add external libraries as a complement to the engine, but the only external libraries allowed are DLLs which of course don't work on any other platform than Windows, so there was really nothing we could to to bypass this limitation.
After asking on forums and contacting Yoyogames itself, all we got was pretty much a  "Go f**k yourself".

    By the time we launched the project, the NSA scandal was all over the internet and  people were skeptical about us indexing their system.
This meant that using any kind of networking to bypass the limitations of the engine was out of the question.
We refused, and still refuse, to send any package containing the user private information, not even locally. So, there was only one solution left.
We had to create a parallel process with Python in order to gather the information needed and store it as a temporary file on the game's directory.
Developing that is not as simple as it seems, specially when it is expected to work on all platforms. Right now the indexer is pretty awesome but it was one of the hardest challenges we had to face during the early development of the game.

We have always had modding support in mind.
We designed the source to include many modding capabilities so other people can do whatever they want with the core idea of using the computer as a procedural generator seed. But once again GM got on our way.
From the documentation: "These functions cannot be used any more due to changes in the underlying runner that GameMaker: Studio uses to generate the device specific packages making it impossible to generate objects, images or code "on the fly" as was done before." This means that all the resources have to be implemented, added and coded from within the GM IDE itself, so there was no way for us to allow any kind of modding without giving away all the game's source code. We are still looking into ways of doing this but we might have to wait a little bit longer.

    As for the gameplay itself, we are in continuous iteration.
It feels and looks very good, and lately we have been increasing the speed and adding variety to the enemies' IA. The latest additions to the hero's abilities are the bow and arrow, but there are still some other magic skills ready to be implemented.

    We have long wanted to give you this insight on the overall development process of the game since day 1, because there have been so many ups and downs, so many challenges to overcome! We are determined to accomplish our vision and deliver the best AdventurOS we can craft. Thank you for being so awesome!


❬ Back to blog
comments powered by Disqus