"Skynet meets the Overmind" or the next level of AI developed at Berkeley

The old scarecrow of machines smarter than men becomes more plausible everyday.
No need to add on this great article from Ars Technica but really worth the read, for fans of video games but also the rest of the (doomed?) humans!
how-the-berkeley-overmind-won-the-2010-starcraft-ai-competition
On the plus side better artificial intelligences will breed incredibly helpful applications for humans...

What would be your dream usage of such an AI?

SG speaker at the Decision Science Forum 2010

We are pleased to announce that we will present Hermes on September, 6th 2010 at the Decision Science Forum organized by Systems Navigator (www.systemsnavigator.com) the editor of Scenario Navigator the only cross simulation engine editor!

The Decision Science Forum is a conference on decision support technology and applications based on simulation, optimization and serious gaming. It is hosted in Amsterdam near the Schiphol Airport. The conference lasts for three days with two days spent on training to Scenario Navigator, Arena and Simio (both being discrete event simulation engine).

At the conference we will speak about Hermes which is the first serious game application to a discrete event simulation engine.

If you cannot come to the event, feel free to ask us for a debriefing at the email address on the contact page (http://subversivegames.com/en/contactform). We would be happy to share a coffee and our thoughts about this conference be it in Paris or in Sydney.

Serious Games for Business Process Improvement

Serious Games are really seen now as an alternative to e-learning. We believe they are a lot more : by connecting to existing systems and software they can be a gateway to better business process, allowing simulation and collaborative work based on real company data. Follow this space as we will start showing new applications and start a discussion right here very soon!

HTC Desire review

I got a new HTC Desire (droid) and I think it's OK. It's true that it's not quite as well designed, ergonomically, as the Iphone, battery life is shorter, number of apps available are less etc, but it does have one big advantage over it... It's not Apple! It's taken a bit of getting used to after two years of Iphone but I'm getting there. I'm yet to put any music on it but when I do I'm going to enjoy not having to use Itunes. I think the thing with many of these new smart phones is that they are designed around social networking and other things take second priority. That's OK though. I'm learning to like facebook and recentely I've done all my posting to it through my droid rather than the PC. It's a lot cheaper than the Iphone and Telstra give it away for free with a $49.00 plan (and a two year contract). I think it would probably be a good investment to put a bigger SSD card in when first bought. It comes with 2Gig which is pretty small. So in conclusion it's a neat phone which does the job and I like the fact that I'm not supporting the Apple corporate machine any more.

Profiling in Unity3D.

I am very impressed with the new profiler that comes with Unity3D. It is very simple to use and is so easy to understand, that even I can use it!

In 20 literal minutes, I've been able to optimise my current project from 14 fps to 60 fps. Excellent! 

Here is a general performance tip I've come to appreciate: - Don't use dynamic scaling of meshes to produce animation. It triggers a mesh rebuild and sucks your CPU cycles in a big way. If you really must change the scale property of a mesh, don't do it every frame!

Three Unity WheelCollider Tips

1. If you're dynamically creating WheelCollider components in your game, make sure you position/transform the GameObject instance BEFORE you call AddComponent("WheelCollider").

This will save you much frustration.

2. Always adjust the centreOfMass attribute of the rigid body of your vehicle AFTER you've attached the WheelCollider components. Otherwise, the centreOfMass attribute appears to be reset, resulting in much unstableness (unless your vehicle is particularly well designed).

3. Depending on your objective, you probably will get the best results if you set the centreOfMass to just below your wheel axles.

Metrics for Serious Games

Most of the interlocutors we meet ask us about metrics for Serious Games. In short, how do I evaluate the impact of a Serious Game? It is an important question before undertaking any project and we introduce alternative measures to the classic Return on Investment (ROI) in order to understand the impact of a serious game. Much more important is the question what are the results expected of the application you want?

According to the expected impact you have already a first answer; if I design a game to increase adoption in a decision-making system, I can measure the percentage of users of this system X months after launching the game. But one might ask aren't there general metrics for games?

First, let us clear a point. When evaluating the results of a program, a confusion is often made between evaluating the application and evaluating the participants. Participants evaluation is often made through the Learning Management System and is traditional in the sense that metrics are well-known whereas evaluating the impact of the game is much more complex.

Metrics for serious games explain a bit of this media evolution (this slow rampant gameification) we have witnessed. The first widespread category of serious games were "advertgames" which had a nice panoply of measures coming from the advertisement sector (cost per mille, conversion rate, cost per click etc...). Those games were easier to present to clients as one could deliver figures and offer clients a straightforward ROI that was computed internally. More elaborate marketing games target all stakeholders of an organization (employees, clients, suppliers, etc...) and hence call for 360 degrees evaluation in which one surveys a sample of each stakeholder and synthesize it to define an opinion or a grade. Unfortunately, those metrics do not apply to most serious games which are designed for training.

The most common measure for any game which is the one that makes most sense to many is the number of sessions played. If I say Ninjaman was played more than 40 million times over the Internet, there is the proof of success. Replayability is also important when mining your data (one might name it addiction), in the end, how many active users do you have and how many of them come each week or each month to spend some time with your application. Those measures are particularly adapted to casual games and social games. But video games are more than just a number of sessions played, they involve emotions (particularly excitement and frustration) and as such isn't the best metric remembrance or anecdotes? You ask how successful was this serious game, I will answer with this question how many of the players can remember the good time they had when using the application?

There, is the metric all serious games should share.

A Pattern for Background Tasks in Unity.

This class allows the programmer to schedule tasks for background execution, and be notified when they complete.
The notification occurs in the main Unity thread, so it is safe to modify other components inside the notifications.

This could be useful when running database queries, or loading large files from disk, or any random-long-running game computation.

using UnityEngine;
using System.Threading;
using System.Collections.Generic;

public class BackgroundTaskComponent : MonoBehaviour
{

delegate void AnonymousMethod();

List<AnonymousMethod> callbacks = new List<AnonymousMethod>();

void Background(AnonymousMethod task, AnonymousMethod ready) {

ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object state) {

task();

callbacks.Add(ready);

}));

}

void Update() {

foreach(AnonymousMethod fn in callbacks)

fn();

callbacks.Clear();

}

void Test() {

Background(delegate() {

// I will take some time to execute, but won't 

// interfere with the game.

}, delegate() {
//I will be called when finished.
//safely inside the Update Method.
});
}
}