Archive for the ‘Programming’ Category

AiGameDev Conference 2010: EVE Online Characters

Monday, July 19th, 2010

UPDATE: post is now under the right author name.

During the AiGameDev Conference 2010 at Paris Claudio Pedica, a researcher at CADIA Labs, Reykjavik University, currently collaborating with CCP Games presented us their new social interaction system in a talk titled Human Territoriality for EVE Online’s Socially Smart Characters.

(more…)

Open Source localization tool

Tuesday, March 30th, 2010


Fishing Cactus has the pleasure to announce that the team has started a localization tool. And the best for you, the tool will be released as open source ( the licence must still be decided ), as a google code project.

Our previous experience with localization has been pretty painful. Everybody can remember those German texts that were at least twice the control size. From our experience, we thought a tool could be use to help managing and creating localization. Especially when the task is outsourced to some studio living in another time zone. The goal is to provide an interface between the designer and the “localizators”. The tool will contain information about text extent and will provide a preview of the text inside its control.

The feature list will be announced in the following weeks. But here is a preview :
Qt has been chosen as Mojito, our proprietary engine, runs on the 3 main OSes. The file format will be XML, but the tool architecture will ease the implementation of other format as well. Platform specific text can be inserted ( such as specific hardware name ). Support for exotic language such as Chinese and Arabian is planned.

As the tool matures, we will discuss design choices we made on this blog. Developers in charge of a specific feature will also have the opportunity to expose their work.

Stay tuned, the first code release is approaching.

What do you drink? Piña COLLADA!

Wednesday, February 3rd, 2010

Collada Exporter / Importer in Mojito PipelineIn the best company of the world and with the most talented team (Belgians are famous for their self-derision), it is mandatory to use the most advanced technologies for creating our games. Of course just for your pleasure.

This is why we decided to automate our “Game Content Pipeline” with a continuous integration process. To do this, we used “Hudson” simply because it wasn’t too difficult to implement within the Mojito Engine and secondly because the solution is quite complete.

One of the first step I had to undertake within this pipeline was to import all assets from a graphical software and export them to a format our engine will be able to use. Collada is perfect for this job and this is why we went on to create a Collada importer and a viewer which runs in the Mojito Engine.

For the first time we are proud to present you, the star of all stars, “Mr. Duck” from Mojito’s viewer.

Pina Collada and Mojito

« Good night and good duck! »

Mojito on Linux – Diary #2

Monday, February 1st, 2010

As you may have read on this blog a week ago we began porting the Mojito Engine on the GNU/Linux platform.

It’s going pretty well, faster than I originally expected. I started by translating the display part, initially running with DirectX on the Windows version and now running with OpenGL. The result was as expected, and that’s how we were able to post the first screenshot you’ve seen in an earlier post. We rapidly figured out that the input system provided by GLUT was not exactly what we needed. So we decided to rewrite that specific engine part with SDL in order to have not only the keyboard but the joypad too!

And I’m proud to say that everything is now fully working :) My next task will be to port the sound system of the engine.

As you can see in World of Goo, created by 2D Boy, they had about 17% of their sales on the Linux platform. It looks like a lot of open source gamers are just waiting for some stuff to play on the penguin!

So, be ready, Linux-users! Because in a not so distant future, you will be able to run on your hardware some Fishing Cactus games and show off in front of all your friends!

Linux version of Mojito Engine on its way!

Friday, January 22nd, 2010

With the mondial crysis, it’s important to think about the people who are in need. They maybe can’t buy a fully functional Mac or an expensive Windows licence…

Luckily, they can discover the joy of working with the open-source “OS for the poor”, Linux!

We have already improved the most current platforms on the market with our kickass Mojito Engine, and we are now currently working on the Linux version.

And just because we like you guys, readers of this blog, we will offer you the exclusivity of the year : the first screenshot of a not-so-mysterious project, running on Ubuntu!

Awesome Mojito on Linux

I know how much it’s beautiful, but don’t cry yet, keep your tears when it will be fully functional so stay tuned!

Cross Platform Thread Local Storage (cont’d)

Monday, December 21st, 2009

In the first post, I introduced the thread local storage we use across all platforms. The main goal was to provide similar interface and features as __declspec( thread ) variables provided by some compilers. The previous post reproduced in pure C++ what gcc and cl.exe allowed as extension, but on every platform that supports at least 1 thread local storage. The goal of this post is to extend the existing system to all types including complex classes.

(more…)

Cross Platform Thread Local Storage

Monday, July 20th, 2009

It’s been a while since I post something technical here. We are currently really busy on our new secret project, but I have something to share.

Some compilers have an interesting property : __declspec(thread) for Microsoft cl.exe, __thread for Gcc. By using this declaration on a global variable, a copy of the variable is created for each thread. This is known as a Thread Local Storage (TLS). You can always use direct calls to the system’s API ( TLSGetValue and TLSSetValue for Windows, pthread_getspecific and pthread_setspecific for POSIX systems), but using automatic TLS variable is very comfy. As you may know, Mojito is available on several platforms, some of them does not provide those kind of variables. And if provided, those variables are limited to POD (Plain Ol’ data) variables. So we search for a solution that is close to what compiler can offer.

(more…)

GDC09 : Parallelism in AI & AIGamedev.net conf

Sunday, July 5th, 2009

At last GDC, I had the chance to talk about multithreading applied to AI. The talk was part of the AI summit. The summit was a great experience and I would recommend it to anybody interested in AI. I was also invited to talk about multithreading at the AIGameDev.net conference. You can find the notes and slides on the website. Gamedev.net also covered the event

It’s been a while since I posted a technical article, but I’ve one nearly ready to go. It will talk about Thread Local Storage.

The slides from GDC can be download here

Banana Scrum

Wednesday, April 15th, 2009

Banana Phone?Fishing Cactus is proud to announce that we are using Banana Scrum web management tool to track the progress of our projects using Scrum methodology of course. We are currently evaluating the tool with two internal projects.

And it’s free.

Banana Scrum tool includes the following features:

• project backlog with tagging and intuitive sorting through drag and drop, which allows you to put there items that need to be done in the project

• sprint planning that allows you to assign items with tasks to the sprint

• sprint backlog where you can add tasks,expected time of doing it and sign them to team members

• impediment list where you can place encountered difficulties during the sprint and add it’s description

• file uploading for each item to be done in the sprint

• tags managing which allows you to add new tags and mark your tasks

• CSV export that will export your backlog items to CSV file

• burndown chart that shows you on a diagram if your sprint is feeling fine

• admin panel with users managing and project managing options

• different roles including Product Owner, Scrum Master and Team Member

• intuitive, easy to use user interface

• separate accounts with multiple projects and users

If you want to know more about Banana Scrum you can go here or watch a small presentation video here.

You wonder why this tool has such a silly name? Remember the Agile Manifesto? “Individuals and interactions over processes and tools”. This is just a tool, nice and useful but just a tool. They don’t want to get too pompous about it.

Fixing C++ static and global variable initialization

Wednesday, January 28th, 2009

Order of static and global variables initialization is a well-known uncontrolled phenomena. There is no way you can change it, variables will be initialized in an order the compiler is the sole to decide. The singleton fixes this problem by postponing the initialization at the first time the object is used. But then creation time is unknown and multi-threading issues may appear. This article propose a simple technique to force order of initialization.
(more…)