Feeds:
Posts
Comments

First assets

and so it begins:

many more to come =)

Although most of our team lives in Portugal, there’s one element whose efforts have helped a lot to make this game come together. I’m talking about nGene’s creator Wojciech Toman. This guy created an engine from the ground up all by himself and what’s even more unbelievable, a very good one (judging by his productivity we still doubt that he’s human…).

In this post I’ll describe what it’s like to work with a remote team member and although he’s not included in the about page, we consider him one of us considering all his help.

As some of you know, nGene it’s still in its early teens and we were lucky enough to be the first team to use it in a project. Well this could have a bad side because this also means that we’re the first ones to try the engine in quite a big project but the help of its creator has eased all the problems that could have arisen.
In normal circumstances this would mean that we would be in trouble (for example if we would have chosen to use another engine…), since when something didn’t work we’d have to fix it ourselves. The same goes for missing features, modifications, adaptations, etc…but not in our
case :-) Wojciech has been something like a super hero fixing all the bugs that we report, adding the missing features and well, I just feel we owe him a lot. Hopefully Flamey will do his baby justice.

So how does this work? Well, although we don’t use a very sophisticated methodology, we try to follow some rules on our side so as not to flood Wojciech (usually we end up spamming him anyway… ).

When we think that something is broken we try to check it ourselves, sometimes asking for another team member’s help. After that, we decide on what to do next, report it immediately or try to fix it, as the bug can be insignificant or a serious one…
As I said in the previous post about working methodologies as we decompose our work in several small tasks, we try to get around the problems and diminish the dependencies that missing features or bugs may add to our project. This has made our lives a little easier because if something is not working, we just skip on to the next task and avoid just crossing our arms.

Lua

Lua is probably the most used scripting language for games. Its lightweight execution is one of the most attractive features since game programming is a computer engineering area where performance comes first.

Scripting languages in what game programming is concerned have two main advantages: they allow for load time application configuration, meaning that you can change the behaviour of the game without having to recompile the whole application (expert gamers usually like this); they allow for a higher-level programming since in general scripting languages facilitate some programming tasks comparing to general programming languages (this is mainly an advantage for programmers).

However, a scripting language is only useful if it can integrate easily with the general programming language in which the game is being developed.

For Flamey the general programming language is C++, because one of the early development decisions was to use nGENE Tech game engine which is written in C++, and the scripting language is Lua, because nGENE Tech already comes with Lua support. These languages are therefore consequences of our decision to use nGENE Tech.

Our experience with Lua has been quite a positive one since Lua has allowed us to defer application configuration to load time and tune some parameters without having to recompile the whole application. However, as I said before, a scripting language can only be useful if it can integrate well with the general programming language it is supporting. This is where Luabind comes into play.

Luabind is responsible for handling all the communication between the Lua code and the C++ code. For example, if you wan’t to call a function from Lua that is defined in your C++ code you have to register that function in Luabind so that your Lua code can find that function. This is the procedure you have to follow whenever you wan’t your Lua code to know something about the C++ code.

I have to say I was quite surprised when I discovered how easy it was to expose C++ symbols (i.e., variables, classes, functions) using Luabind. It is as easy as calling a function. However, from a programming point of view we have to understand what we are doing. What we’re doing is that we are manually programming the reification of our symbols so that at runtime we can use them. This happens because C++ has no reflective mechanism that allows for accessing the symbol information at runtime so that this process can be done automatically. This manual reification is a tedious, error-prone and most of all stupid task because you writing the same code twice.

Despite all these theoretical problems that seem to keep me thinkative, Lua and Luabind work and they bring many advantages to the project and that’s probably the most important reason one should be worried about.

Basic Level Layout

I just wanted to show the level layout/sketch of the 3rd section in the first level. It’s mainly a puzzle section but I can’t really tell more, Paulo and Anabela are working really hard to release a true masterpiece :-)

I think that you’ll be blown away by what they’re cooking, stay tuned!

Working methodologies

Less than 2 months have passed since we started developing Flamey…seems like a short time period but a lot has happened since then and a lot of work was done too.
Today I’ll introduce some concepts of our agile working methodology, what tools we use to aid us and our main communication methods.

Our development methodology is based on a variation of Scrum which means that we relaxed a couple of rules that wouldn’t really fit our project (e.g. nobody has the role of scrum master).
Before getting into the tools I think that it is important to explain WHY we take an agile approach to manage our work.
First of all, despite this game being mainly an academic project, it still has a pretty considerable size and so we would need a working methodology that would be flexible enough to respond to the delays and unexpected events that could arise. This brings me to my next point, it’s the first time that we all work as a team (I had experience working with Paulo & Anabela before) and the we’re also very inexperienced, at least on the programming side.
The lack of experience  was one of the main reasons why we thought that using this methodology would help us,  this way we can plan “small” sprints with several small and specific tasks easily implementable.

As far as the software goes, we’re using a great tool  (note the bold great), called ubidesk (You can find ubidesk at www.ubidesk.com) . It has a free plan so you can try it out to see if it fit your needs.

Basically it allows you to create and manage tasks, share files, have a discussion forum all in one place. For us it has been great because we can index old information, see what every member is doing (when a member wants to work on a task he just needs to assign it to himself) and this way we can avoid the situation where you don’t know what to do next.

Besides ubidesk we’re using a mailing list too. It serves to discuss minor issues, make requests and coordinate ourselves during the week.
Every weekend we try to make an on-site weekly meeting in order to make an evaluation of how the past week went, what problems we’ve encountered, update the tasks as needed and finally adapt our future work according to the development at that point.

What are we working on?

Hi all! Ufff… we’ve been really busy this past weeks.

Well I’m writing to tell you that Flamey is not stopped! To be honest, is more the other way around, we’ve been working really hard on it so that we can reach Checkpoint 2 (30th April) with almost everything related with game logic completed.

So you all can know what we’re doing, I’ll tell you what are the tasks assigned at the moment:
- I’m working on the fireball system, to optimize it so we can have a better usage of the resources.
- Zé is working on the game checkpoints and he’s also creating several ways to tune up our game.
- Zoran is working on the game puzzles logic and also on the trigger system.
- Our dear friend Wojciech is completing the collada animation system.
- Last but not the least, our art deptartment (Paulo + Anabela) are moddeling  sections of the 1st level with a neat look :-)

It’s not going to be today that we’ll show pictures of Flamey running, please bear with us some more time, we’re saving the eye candy for the 3rd checkpoint (game logic doesn’t work very well for pics….).

The game will be set in a fantasy world where, a long time ago, men lived peacefully alongside dragons. Dragons were magical creatures that, during a long existence, became smart and wise. Over the years, men became jealous of them and envied their splendor and power, so all they wanted to do was to rule or crush them. That lead to a war and unfortunately for mankind, the dragons won. They enslaved every living human being. They didn’t want to kill them,  sensible as they are, but they saw it as a convenient way to control the violent creature. Men of course weren’t gonna take it for long. As time went by, a seed of revolution was born. A group of workers secretly began to train their combat and war skills and, little by little, the small group turned into a real army that managed to free itself and in the end, exterminate the dragon race.

But, as a trophy and proof of their power, humans made a mistake. They kept one last dragon egg, placed inside a temple. They thought it was harmless, that it could never hatch without a mother, but one day, it did. A little dragon was born that would fight for his freedom, restore the dragon kind, and ultimately punish the human race.

The story that the player will follow begins with the hatching of the egg. The hero of the game basically is the last remaining dragon. When he wakes up, he sees that he’s trapped and by instinct, tried to find a way out. As he moves through the temple, he slowly discovers his abilities, like flying and fire-breathing. In the end, he escapes from the temple and that’s where the story ends…

Follow

Get every new post delivered to your Inbox.