Posts Tagged ‘independent’

Win That War! is on Steam Greenlight.

The Greenlight is now officially launched, and is only waiting for your votes!

We’re counting on you, not only to show your interest by offering us some green thumbs, but also to spread  the word of the Greenlight on your Steam community. Having Win That War! available on Steam is up to you now.

I love splines!


A curve

In Mathematics, a Spline is a numeric Function that is Piecewise-defined by Polynomial function, and which possesses a high degree of smoothness at the places where the polynomial pieces connect (which are known as knots)“. Thank you dear Wikipedia, I couldn’t have said it better myself.

“But, what link can there possibly be between Splines and Polygons?” you may ask yourself. And that’s a legitimate question, since I usually write about polygons and cake (made from polygons too).

Well, you have to know you can actually create 3D models by using these famous splines. That’s right!

A basic spline

As you may know, I mainly use 3DS Max to model my vehicles, buildings, etc. 3DS  taught me to use the word “spline” to define a 3D Bezier curve when it comes to design.

Actually, It’s a commonly used technique in automotive design. Seeing as I mostly model vehicles, it makes perfect sense for me to be working with curves.

However, I apologize in advance, because somehow, I have the feeling this post will feel like a tutorial.

The 3DS Max “Lathe” tool works just like an actual shaping tool and allows to easily sculpt an object  with a very smooth shape.
So, as an example, I’ve made a pretty bowl for you:

The process to use Lathe modifier.

I’ve got another little trick for you : You also can do what is called a “Sweep”. This is actually a  standard shape that you’ll select and with which you’ll “sweep” the previously drawn curve.  The shape is then multiplied to create the desired object.
Here is another example for you, and be prepared, I went a bit crazy and I’m now modeling…a mug!

The process to use Sweep modifier.

Anyway, now that you see how it works, let’s get serious and I’ll show you how you can apply it to your 3D modeling.

Once, in my student days, I was looking for a tool to model by using Splines, and I finally found a tool called SURFACE. At the beginning, Surface was a third party plugin, then Kinetix eventually bought the licence and included the tool in 3DS Max 3.0. I don’t know who this third-party is, but I owe him a big “thanks”.

Digging through my archives, I found the following model. That’s what it looked like the first time I tried to use this tool, based on three pieces of circles intersecting with each other.

The use of a Surface modifier

How did the software turn this into that? I don’t have a clue. Voodoo magic?
Well, and so… how do you put this technique into practice? Among other things, you can  use these tricks to model a vehicle. An airplane, for example.

Use of spline in modeling

It can also be used for specific organic creations.
Like for this wonderful purple…marshmallow.
I could probably have made something sexier, but you get the idea.


In short, I love modeling using Splines . The tool “Surface modifier ” is probably my favorite, it’s part of the workflow for all my vehicles .

I also think it’s a good starting point to model an object with a lot of rounded surfaces .

However , be aware that Splines, alone, are difficult to comprehend in 3D for our poor humanoid eyes that can’t decide whether a form is curved or hollow. So we will have to get used to the tool and rotate around your model, regularly move the camera angle to visualize the form , and then use the Surface modifier.

If you’re not using this technique already, I can only recommend you try it asap!



Utopiales and Art to Play: November fairs

Putting aside our recent penchant for recruitment and furnitures assembly, we are still (yes, we do!) collecting all your feedbacks to improve the game. And game fairs, show, conventions are the best for us. Really, it’s amazing to meet you all, watch your reactions while you’re playing WinThatWar! and talk about it with you. And, in November, we were kinda lucky since we were present at the Utopiales and Art to Play, both of these fairs taking place in Nantes.

Just like last year, the Utopiales public was really… young. Anyway, he also was very enthusiastic, and from the beginning of the afternoon, the kids were just there, staying at our stand, helping out and teaching the new comers how to play WinThatWar! That was really great for us to see the youngers able to understand the game and how to play it. Sometimes, at the expense of the elders! Hold on, don’t get mad, “elders”, we know most of you will become some really badass strategists as soon as the game will offer more features and options.

Utopiales Insane Unity

We neither regret the Art to Play weekend. At the contrary! You were so many to stop by our stand, 14yo young women to 60yo grown men, testing the game and tormenting us with your countless and unusual questions (Actually we love that, it makes us look deeper into the game mechanics, so please don’t stop!), and also encouraging us. Well, we won’t lie, this weekend was exhausting (like really, it killed us. 5 days later we’re sleeping on the tables at the studio. I barely exaggerate, promise) but still, it was really rewarding. We wrote a lot of your feedbacks and ideas on our notepads. Plus, that was a good opportunity to see if you’d like the tokens/strategy icons, as it was a brand new feature in the game. Unless I’m mistaken, i think you liked it, and the map general view have seduced many (mini-map “are so 2014” anyway.).

In short, if we should summarize those 2 weekends:

  • The younger are the players, the rougher they play. They just spend their time building turrets.
  • We can easily welcome 13 players at the same time on our stand, even if it’s only 2 computers.
  • Trying to give some explanations about our game when Matthieu Sommet (SLG – a french famous youtuber) or Ganglion (J-rock band) are standing on the stage, about 10 meters far from you, can be a quite difficult excercise. That’s why we just gave up our vocal cords there.

Art to Play Insane Unity

Again, thank you to every single player who came to these conventions.

Roadmap little changes

Hi people!

It’s been a long time I haven’t wrote anything on this blog. That’s why I take advantage of this post-return of summer holidays break to bring you some general news.

From movie the mummy found on tumblr

So! Insane Unity is doing well. Doom is still working on his network stack (which has quite progressed), and Philemon get back to a concept arts phase (which are also in a good way). Also… our two trainees abandoned us last week (sob).

Anyway, we’re still looking for financing and that takes a lot of time, but we’re doing our best to stick to our roadmap at the same time. And as you’ll see below, that was not as effective as we expected. Let’s see what we forecast for September:

  • HUD (tactical information)
  • Tutorial
  • Multiplayer over the Internet
  • Gameplay-guided music

Hum. Well, the HUD is functional, as you may already know if you receive our newsletter, but we’re waiting for Philemon to find a moment to draw some pretty strategy icons miniatures before we let you test it.

About the tutorial, we’re waiting to finish fixing every single interface issues. But, here is the point: Since I had loads of administrative tasks to handle these months, I barely made progress on the interface. Maybe I should buy a tie (just kidding). Even though, I found some times to work on the AI, and that’s the good news. Be patient, I’ll wrote a  post about that later.

Multiplayer over the Internet mode is working! Here is another good news, right? At least, one of us is doing his job, here: Doom. The connecting time between two players is just melting like an icecube on the top of an uranium battery, and the stack is getting stronger and  more and more efficient. Maybe Doom will also write a post about this in a couple weeks.

Last but not least, about the gameplay-guided music, we just have to integrate in the engine the loops CiD produced on Wwise.

I think I’ve nothing else to add. I just wanted to be honest with you and confess my mea culpa before sneakily going to modify the roadmap on WinThatWar! website.

Bye everyone, and thanks again for all your support.


XNA is dead… Long live SharpDX !

The rumor has been around for a while …. It is now official, XNA is dead, or soon will be, since it is to be retired on April 2014. Lots of regrets from indie game developers could be found on the net. “Those were the days !” … at least when it came to the high-level API in C# and its Content Pipeline system.

But do not worry, some solutions exist 😉 In our case, I chose to port to SharpDX, more specifically SharpDX toolkit, the high-level API based on DirectX 11. This API is yet not fully mature, but it is already efficient and has a very responsive community. Last time I had a problem, the author Alexandre Mutel provided me with a patch within the day.

It really is similar to XNA, but has the power of DirectX11, and is compatible with Windows 8 (including mobile version) and Visual Studio 2012. Of course it also works with older GPU classes : our new project WTW targets DirectX 10 cards.

The main drawback of SharpDX toolkit is the absence of the Content Pipeline. I solved the problem by using a custom MSBuild project and homemade MSBuild tasks to process the contents. I also use the lib Assimp for 3D models, and the effect compiler of SharpDX to process shaders. You can directly use DDS for the textures. As for the sounds, I don’t know, I haven’t searched yet: p

So basically, it means a little extra work, but it is worth the effort. Here is a screenshot of the new engine:


Next : the video that fits, when the porting will be complete :)

Only fools never change their minds !

In these two posts, here and here, I spoke of my tests on the level of detail management when rendering terrain …

But first… Some time ago, Timous, our master of communication, scolded me on several of my articles, including an unpublished one (there seems to be censorship even here at IU :( ):

“Timous (to the wind): Tell me, Michel, your article on optimizing things, it is not bad …

Doom (very happy): Yeah?

Timous (glacial): But it’s just incomprehensible, you kidding me or what?

Doom (sheepishly): Um, bah it’s not that complicated …

Timous: There’s not even an intro, images are ugly, and my 11 years old little sister did not understand anything!

Doom: Bah this is an “Hardcore technical” article…

Timous: I don’t care, everybody must understand!”

So I will make some effort to introduce… this time 😛

In a 3D game, each image is calculated from a scene consisting of triangles. A graphics card can process and display a fixed number of triangles per second. The purpose of the management of level of detail (or LOD)  is to reduce the number of triangles to be processed in order to optimize the display time of each image (if it is not clear let me comment :D). In these two articles, I introduced the method of LOD that I had to use… Ultimately, I changed my mind and choose another method. This is what will remain, this time, in Robinson (is it a good for intro, Timmy?)

So I’ve implemented an algorithm called CDLOD for “Distance-Dependent Continuous Level of Detail Rendering for Heightmaps”, developed by a Filip Strugar. I’ll spare you the technical details that are very well explained by the author in this document… Here is a short demonstration video of my implementation for Robinson:

The more observant will have noticed the reduction in the number of triangle as they move away from the camera, and the progressive subdivision of the mesh. This algorithm is very fast and requires no pre-calculation, contrary to my initial algorithm. However, it has the disadvantage of ignoring the kind of terrain, resulting in a simplification of very poor quality on regular or geometric terrain. But as natural scenes are usually very irregular, this should not be a problem … Life is cool, does’nt it?

Planning of agile free-time work.

At the very time when we started the development of Robinson 2150 (the game-concept we were working on before Win That War!), planning issues arose. How to evaluate the development time for it (and thus the cost)? When our first demo will be ready? When will we announce it? and so on.

seeking the perfect planning tool

Alas, finding a planning tool well adapted to our way of working is a hard job.

First, the amount of time we spend in developing Robinson 2150 is hard to predict, as it relies on the amount of free-time we have (which varies according to professional workload, personal life constraints or leisure, etc.) That’s why usual project management tools won’t fit.

Second, we self-organize in an agile way, similar to the SCRUM method, but without formalizing sprints, nor having any Scrum Master or Product Owner. Each team member is responsible for a portion of product, the and we just hold a weekly progress meeting.

I tried ICEScrum, a perfect tool for SCRUM. I was convinced by its colorful post-it and the relevance of its indicators (sprint burn-down, release burn-up, etc.). It has unfortunately some problems for us:

  • It consumes too much RAM for our small dedicated server…
  • It is a bit slow
  • We do not do sprints!

I also tried a bunch of ticket-oriented tools like TRAC (with some SCRUM plugins) and JIRA (with greenhopper) but was not convinced. They lack ergonomy, they are difficult to use during a meeting, and above all, they do not give a sufficiently clear and synthetic vision of the project.

That’s why I decided to restart from scratch and design a tool that perfectly fits our needs!

So I implemented TODO, a very simple tool :

  • 800 lines of javascript (using jquery) ;
  • 150 lines of SQL ;
  • 100 lines of php.

The interface of TODO provides three views:

  • the backlog, which contains the tasks, grouped by functionality and sorted by priority ;
  • a table, to estimate the tasks in an agile-manner (i.e. relatively, using the Fibonacci sequence) ;
  • a chart, that summarizes the history of the work done, and presents forecasts for the tasks remaining in the backlog.

Well, a video is worth a thousand words:

Finally, we have a simple and ergonomic tool, which is easy to deploy on a server and easy to use during a meeting. Thanks to it, we already have a better insight of our planning.

Some features remain to implement, like undo/redo and real-time update with the actions of other users connected to the same server, but other subjects currently hold my attention (as the AI of Robinson 2150…) If I can found the time for that, I will place TODO on googlecode. You can still contact me if you want to try it!

RSS Feeds & Language Localisation

At last! A good news for all our French readers: language localization is available on Insane Unity!

You may already have noticed that, for few days now, little flags has appeared at the top right of the blog. You can now choose which language you want to read :

Language localisation with country flags on Insane Unity

Country flags for language selection

By default, the site tries to detect the country you are coming from and displays the contents using the right language. But sometimes not (it depends on your provider, your browser and maybe also according to the weather forecast.) In this case, the flags are here to sort the words in the right order :)

Moreover, the Blog and the Twitter have their own RSS feeds, which make you able to follow any of our twists and turns. To subscribe, click here for the English version of the RSS feed and here for the French one.

For the Twitter feed, click here (but is it really useful?).

However, there is no RSS feed for the RSS feed itself… but we are thinking hard about it! :)

Artificial Intelligence part 1: path-finding with collision avoidance

…and then I chose Flowfield

According to what I have found over the web, whenever you want to put a first step in game AI development, you have to start by A* algorithm.

Perhaps because I do not want to do like everybody, I preferred to try a different approach : the flowfield path-finding, as used in Supreme Commander 2. A good start is this very good paper.

Contrary to A* which implies that we have to compute the path of all agent separately, one interest of this approach is that the calculation is done only once. A cost field is globally computed over the map, from which the speed and direction of each agent are then deduced.

A wolf in the AI

For example, imagine a dozen of wolves attacking a poor, lonely, human. Every wolf has the same objective:  “bite the human”. The distance field to that human is common to all the wolves and can be computed once only per step. Other fields like density, comfort or threat can also be computed once for all. If there is more than one human on the map, the common target can become “bite the nearest human”, and so on we can also set high-level objectives.

In the next video,  you can see a round unit moving toward its objective (a square). The cost field to reach that target is in blue. The speed of the unit is computed based on field values in the surrounding squares.

In Robinson 2150, the terrain is about to be a very big and procedurally generated planet. That’s why the field is not computed over the whole map, but we stop as soon as every unit has been reached.

Now we have a bunch of units moving according to a field, we can add collision-enforcement and try a group-crossing simulation. In fact, crowd simulation can be seen as path-finding with moving obstacles. The first try was fun… Adding speed and density fields in the equation shown acceptable results :

At this point, our units know how to move towards an objective, but they still cannot choose this objective by themselves. This will be the next step of my work.

HDR rendering

Last week, I’ve worked on our home-made Insanity Engine and especially on HDR rendering. High Dynamic Range rendering simply refers to lighting computation in 4x floating point  (higher range) instead of the traditional 32bits RGBA format. In addition to be able to manage very bright and dark lights, HDRR enables to use a lots of secondary effects that make the rendering more realist.

The video below shows the famous Sponza Atrium test scene displayed with the current version of Insanity, showing tone mapping, luminance adaptation and bloom effect.

The result is not too bad on my HD5870, but I still have to work on performance for lower-end systems.

Return top