Archive for the ‘Programming’ Category

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…)

Book review : The Art of Multiprocessor Programming

Monday, December 29th, 2008

The Art of Multiprocessor Programming Console has recently pushed a new paradigm in the hand of game programmers. Multi-thread programming is now in our everyday life. The transformation of a sequential game engine into a multi-threaded engine is far from being trivial, and no references exists on this particular topic. Even if multithread programming is far from being new, few books are focused on concept and theory. Books about API are good, but they don’t teach you the good way to use the APIs from a design point of view. This book introduces theory and then apply it with code samples. Everything is programmed in java, but it applies to C++ as well.

The first chapters introduce abstract theoretical concepts, such as memory models. The next chapters cover concrete datas structures that help understanding concepts exposed earlier. The approaches and concepts used will help the reader to understand the phase one must follow to transform a sequential algorithm into a multi-threaded one. Most of the book is oriented around collection, but the result is good: each collection touches a new problem and exposes a new solution. Going from lock-based to lock-free algorithm, the process shows step by step transformations of collections such as set, list, hash map. To finish, work distribution and transactional memory are explained. Those chapters also introduce concepts that may appear in future architectures. The book closes with a huge appendix that exposes platform specific knowledge that one must know to address unexplained behaviors.

Elegantly written, this book is a bible, the code provided is clear, and the difficulty increases smoothly chapter after chapter. This book must be putted into every game programmer’s hands. But if they do not have any multiprocessor knowledge, the dive may be hard to stand.

Amazon
Elsevier

Fishing Cactus is a Nintendo Official Developer

Wednesday, December 3rd, 2008

We recently received our access to Nintendo development tools. Dev kits have been ordered and are on their way. We are really excited to see our projects taking life on such amazing platforms. Until now our Wii targeted softwares have been developed on PC. We hope it won’t take long until our games run on the console as we’ve already quite an extensive experience on GameCube (it’s not that different from the specs point of view). The next step is to play with the Wii Remote and see if our concepts prove to be correct.

Stay tuned, news will soon flow about our first Nintendo project.