Monthly Archives: April 2011

The kickoff meeting

std::cout << “Hello World!”;

My name is Raphael Cruzeiro and I’m part of the mobile development team here at Inspira (though I still continue to participate on our other projects as I am more of a generalist programmer).  If you want to know more about me you can check my blog.

Laying the foundation

Today we had our first meeting on this project here at Inspira and it couldn’t have been better. Everyone was really excited and the meeting turned into a full fledged brainstorm (there was even more excitement then there was that time we bought those remote controlled helicopters). We’ve established not only the basic concepts of our game but we also laid out the basic architecture of the project and discussed the game mechanics. The game will be at first released for the iPhone and the iPad but we have plans to later port it to Android devices (I will discuss the details of how we plan to do this later) Oh, and we also have a codename for our game! Tubesliders.

Basically the concept we came up with is a small (and yet intellectually challenging for the team) but fun racing game. Two players will slide down a water tube; They can jump over one another, collide and the player will also have to compensate for the centripetal force on curves or he’ll fall off the tube.

Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away

Antoine de Saint-Exuper


Basic concepts of TubeslidersAs it is usual with several games, our map will be drawn with tiles and though the players will be drawn on a separate layer their path will be controlled by each piece of the track. Both players will be surrounded with a dynamic area on which we will apply physics algorithms (these dynamic areas exist as there is no need to apply physics to portions of the map that are distant from the players). On this dynamic layer we will move the player accordingly to it’s vector, the centripetal force of the curve and the player’s compensation.

The game will support both single and two-player mode one the same device (there are plans to add network multiplayer on the future).

Aiming for portability

As I said at the beginning of this post the initial release of our game will be for this iPhone and the iPad, however, we also have plans to port the game to Android Devices on the future and we want to do that with as little hassle as we can. With this in mind we have decided to separate the game in two layers: the device dependent and the portable core layer.

The architecture of TubeslidersThe device dependent layer is where we will leverage the capabilities of the cocos2d framework to draw and animate our game objects, handle user interactions, play audio, etc. As this layer will responsible for basically only the drawing and the user interactions all actions that change the game state will be delegated to the portable core layer. The device dependent layer will be written in Objective-C (with a little of C++ mixed in as we need to communicate with our portable core layer).

The portable core layer is where the heavy logic of the game will be (physics, game mechanics, etc). To be fully portable this layer will be fully written in platform agnostic C++. Not only this choice of language will create a portable core of logic and physics for our game but it will also help us in writing the most complex parts of our code as we can leverage from C++’s operator overload and template capabilities to greatly simplify the syntax our code leaving it more semantic and ,who knows, maybe we will even use the STL for some complex data structure, algorithm.

What’s next

We’ve finished the meeting with a list of initial tasks:

  • CK, Fukui and Alexandre will be responsible for the initial modeling of the game’s entities.
  • I’ll be responsible for creating the initial project structure, setting up our repository (we’ve decided to host this project on a Git server that I’ve setup on our Linux server) and, of course, writing this post to document this first stage.

Our first Open Dev Experience

Last week I exposed the  Open Development idea to our developers. As expected… excitement in the air.

For the first Open Dev project we are setting up a 4-5 developer group to create an iPad/iPhone game. I have something in mind… in fact a game with some concepts I’ve already developed in my early days as a Flash Games developer (about 5 years ago). Unofficially I have already told them some concept ideas of this game and they kind of liked ;)

At Inspira, the last two weeks were peculiar. We delivered four projects, finished one project sprint and started five new projects. At this point our load of sprint plans, kick-off meetings, client calls and other planning stuff are kind of high wich is demanding me a LOT of time. I’m not sure if I can manage to schedule this week the first project meeting, but I’ll try to make it happen this Thursday before our working day begins.


And How to Start?

And I was wondering how to start this “experience”. I think nothing can inspire us more than a cool game. Maybe thats a good way to start.

Of course I can’t just take some of the most brilliant developers out of the current projects in the house. Paying the bills first. I guess I’ll start by the “parallel project” approach where we can use the company infrastructure and some personal time to accomplish this. Let’s see…

Well, next steps: discuss with our developer team (aprox. 17  people) about these ideas, figure out who is up to the open development experience and schedule the First Open Development Meeting.

Guess is a good start.


Starting something here…

At Inspira we started a couple months ago to take some steps into mobile development. Our company exists since 2007 here in Brazil and until last year, our main focus was web applications and products under .NET platform, mainly (thank God!) .NET MVC.

The goal of this blog is to share our challenges, creative ideas, problems and solutions through cool projects and logging our steps here day-by-day (or almost…)

Thats it!


Follow

Get every new post delivered to your Inbox.