Downtime..

Another server maintenance is due - our site may be down for a little within the next few days.. Don't panic - we'll be back! =P


A man's gotta do what a man's gotta do..

Do you want the good news or the bad news first?

Since you don't really have a choice I'll start with the bad news. It's no secret that we have a small team (effectively only a programmer and an artist) and we're totally independent - which is great in many ways, but sadly it also means we have no funding. I've worked full-time for years to pay the rent etc., and now Fivemagics have had to take a full-time job also, and naturally, will have less time to work on the project.

The good news is that we are not canceling development of WOF. We are not even thinking about canceling it. We will have to cut some corners and probably lower our ambitions in some areas, and while we have worked on it for a long time already, we wil have to work on it a little longer than we hoped for still.

Sometimes its good to be reminded of why we started to work on the project in the first place. We wanted full ownership which we could only get by being fully independent and carry all the expenses ourselves. Sadly we're not even remotely wealthy, so - while we're sad to not be able to work full-time on the game - we're happy that we still have a lot of inspiration and desire to finish the job. We can only hope that you will have continued patience with us and that you will like the game once its ready.

Que Sera, Sera.


Illness..

I haven't been around much lately. I'm suffering from strep throat and have been very sick for two weeks now. Fever, Pain in my throat and neck (swallowing and swollen glands) - penicillin destroyed my stomach - and 'finally' I got back and neck pain from lying down too much.. Headaches almost gone now and I'm back at work.. These last weeks have been pure hell for me.. Naturally - sadly - this means no work have been done, but like we say here in our team: 'real life wins' for better or for worse.


WOF nice old refernce gfx card passed away ...

my nice old nVidia Fx5200, that much of WOF was developed on / for, decided its time to go...







Materialization of a Mine Field

Source code, basically, is the materialization of an idea, and the more complex the idea is the more you see an explosion of possible ways to materialize it.

When in the process of materializing an idea (coding), multiple competing constraints emerge and try to influence the final materialized form.
Examples of constraints are performance, readability, maintainability, extensibility, time, elegance, typing economization and probably others as well.

This happens even when writing something as simple as the declaration of the function.
inline? virtual? pass arguments by reference? which arguments to pass? how to name the function, how to name the arguments, implement inside the header file?
each of those decisions can satisfy or break constraints and there is most often no way to satisfy all of them, and all we wanted is to declare a simple function.
One might thank that choosing which arguments to pass is obvious, but many times it is not, there are many variations and optional arguments that are handled and the decision has to be made to code many 'interfaces' to the function accepting slightly different arguments, this might satisfy readability constraints, but violate maintainability ones as I will in some examples at the end.

Moreover, the more the idea materializes, the more important 'piping' becomes, and the exact declarations start to become a big role, since nice 'piping' is also a very valid constraint. This means that it is not even possible to design beforehand a 'perfect' materialization, because the constraints we mention operate on the most microscopic level, and this would mean that the perfect design would need to go down to the lowest level, but then the design is the same as the actual coding, which beats the purpose of a high level design.

So all these decisions have to happen at the time of materialization (coding) and as soon as one form is chosen, some constraints are violated, this cannot be avoided, following the great wisdom of Japanese Anime Black Lagoon II: 'when you choose, you loose something', this is in fact unavoidable.
It is a really annoying fact, the better one wants to satisfy all constraints the more impossible it gets. This is a usual problem manifesting itself everywhere really, science, philosophy, every day life, everywhere really.  One might say that achieving a balanced form which satisfies most of the chosen constraints for the current context is optimal, and yes this is what we usually strive for, but it is still, a compromise and we still 'loose something'.

The important thing however when it comes to coding is to be AWARE of the chosen constraints and of any compromises that were made, and the consequences of all the forms that were chosen.
Awareness puts us in control instead of being unknowingly controlled by constraints sitting in our sub-conscious mind (readability freak, micro-optimization freak, code elegance freak, ...) and allows us to walk through the mine field with a headlight and a baseball bat, instead of blindly stepping on the mines totally unarmed.

In the examples, and yes they are almost ridiculous, I chose very simple functions, and one might think that this is exaggerated, but one can notice that at every example decision  some constraint were broken in the favor or others and hence a compromise was made.

Example1:

    1. float dist(const Vector3 &a, const Vector3 &b);
   
    nice and short, however, 'distance' is more precise, more readable, but needs more typing ...

    2. float distance(const Vector3 &a, const Vector3 &b); //more readable

    but it is more performant to determine the squared distance and it is all whats needed     in many cases

    float distanceSquared(const Vector3 &a, const Vector3 &b);

    this is too much typing

    float distSq(const Vector3 &a, const Vector3 &b);

    this is too cryptic

    float distanceSq(const Vector3 &a, const Vector3 &b);

    but how to implement this?

    inline float distance(const Vector3 &a, const Vector3 &b) { return              sqrtf(distanceSq(a, b); }

    but makes the header file look dirty, let the compiler do the inline optimization for us

    float distanceSq(const Vector3 &a, const Vector3 &b); //implemented inside .cpp

Example2:

    1. float distance(const Vector3& segA, const Vector3& segB, const Vector3& pt);
   
    segA? what's that? too cryptic
   
    2. float distance(const Vector3& segmentPointA, const Vector3& segmentPointB, const Vector3& point);

    that cost more typing, but ok, now I have an Idea why don't we write it like this?

    3. float distance(const Segment& segment, const Vector3& point);

    let's make this cleaner and move it into the Segment class.

    3. float Segment::distance(const Vector3& point);
    
    but sometimes the code needs to compute the distance directly from 2 points, without having a segment,
    but we still want this version, saves typing when dealing with segments.
   
   4. inline float distance(const Segment& segment, const Vector3& point) { ... }
        or
    inline float Segment::distance(const Segment& segment, const Vector3& point) { ... }

    now we need that squared version again

    5. float distanceSq(const Vector3& segmentPointA, const Vector3& segmentPointB, const Vector3& point);

    but now we need to maintain 2 functions that do the same because of decision 3, so now we need to add

    6. inline float distanceSq(const Segment& segment, const Vector3& point) { ... }

    that's all!!, but no wait, many times, we need to extract the closest point at the same time, ok, add

    5. float distanceSq(const Vector3& segmentPointA, const Vector3& segmentPointB, const Vector3& point, ector3& closestPt);

    but wait, we can merge the 2 to have less maintenance into

    6. float distanceSq(const Vector3& segmentPointA, const Vector3& segmentPointB, const Vector3& point, Vector3* pClosestPt = NULL);

    but that costs the callers that don't need to calculate the closest point some performance.
    doesn't matter, this is good enough.
    there is one more thing though sometimes all we need is the resulting interpolation value 'u', 
    specially when using this implementation:

        float u =  ((point.x - segmentA.x)*(segmentB.x - segmentA.x) + (point.y - segmentA.y)*(segmentB.y - segmentA.y) + (point.z - segmentA.z)*(segmentB.z - segmentA.z))
                        / ((segmentB.x - segmentA.x)*(segmentB.x - segmentA.x) + (segmentB.y - segmentA.y)*(segmentB.y - segmentA.y) + (segmentB.z - segmentA.z)*(segmentB.z -                     segmentA.z));
        interpolate using u

    no need to calculate the exact closest point... ok

    7. float distanceSq(const Vector3& segmentPointA, const Vector3& segmentPointB, const Vector3& point, float& u);

    or maybe

    8. float distanceSq(const Vector3& segmentPointA, const Vector3& segmentPointB, const Vector3& point, float* pU = NULL);

    or even

    8. float distanceSq(const Vector3& segmentPointA, const Vector3& segmentPointB, const Vector3& point, float* pU = NULL, Vector3* pClosestPt = NULL);
    
    nah, too much checking NULL pointers, so better write many versions, but that's         more annoying to maintain

    9. ......................you get the point, and those are only declaration of simple functions................






'Experienced' AI

Since some time, and you would know it if you have been following our blog, we are at the stage of working on WOF's AI since the basic gameplay mechanics are finally in place.

We had a first 'flirt with AI' iteration and posted videos of the results.
We are now at the second iteration which should already produce some useful fun-playable behavior. I decided to start with the goalie. after some coding and much thinking I came to the conclusion that I will probably have to include some AI 'experience' that the AI footballers' brains will be able to use.
The reasons for this are simple: without this, a goalie's brain would be running full steam the whole time trying to estimate and reestimate the same things. things that real life goalies know by 'experience' because when a footballer steps in the pitch ... he has years of playing experience and training behind him ... can this be simply discarded? well yes and no.

If we choose to give the footballers no experience, they will need much more processing power to compute potential ball positions after shots, potential shots to make, how dangerous a shot could be given the situation..... it's possible but both expensive in terms of processing power and therefore hurting game performance, too 'machinistic' in terms of precision ...

the footballer would be able to estimate to with exact precision if per example the goalie can catch a ball if it was shot in some way, but also and on a finer level probably too predictable for the human player who would then find a situation where he could score once and repeat it forever because the AI would never try to fix whatever went wrong with their estimation.

Now how on earth do we give our AI experience?
A neural network brain comes to mind ... a brain that knows nothing at first and is trained through a huge number of iterations until it has learned something... but nahhhh its too unpredictable, fragile, uncontrollable, unmoddable and is better left as an exercise to academics. the goal here is a fun game ...

I will try to use some time at load time, before the match starts, and use it to make the AI learn a bit about what shots can be made using the current match situation (ball paramters, pitch parameters, player characteristics) and they will then be able to use this as 'experience' and in a totally human way act based on approximations and even try to fine those approximations when they find they didn't work.

its more or less like sending the team to the pitch for a short training before the game, so that they get their brains in-tune with the match's parameters and so that u don't play against a totally 'unexperienced machine precise hard coded AI' team.

I hope it will work well. this might again take some time ... but it is a topic of huge importance!

so until the next vids, stay tuned! icon_mrgreen


Kimera Studios site updated..

The Kimera Studios site has been updated with a new look and logo.. Click the preview image below to go to the main site..




Downtime..

I've managed to get a shoulder injury.. Very painful, and my entire arm is numb like it's sleeping. Because of Easter I can't see a doctor before tuesday. So I'm hoping that it will get better with a few days rest.

Fivemagics is on - much deserved - short vacation, so I guess this is one week we can take out of the calendar..


AI babysteps..

AI development is going very well. Footballers can now be told to 'protect' an area - blocking the way into it, and the keeper can jump to get to the ball. The next step is telling the AI to tackle, run with the ball and pass etc.

The movie below show the described actions - it was put together rather quickly as I only finished some stuff late tonight - there's no edits either, except for when one recording ends and another begins. As you can see the 'Barca' defender gave me a hard time, and when I finally got a shot on target the keeper made the save - bastards! =P

You can also catch a glimpse of the HUD - as mentioned earlier all names and logos are placeholders only, as we do not have the official licenses. We hope you will enjoy the movie!

Uploading to youtube really destroys the quality, making the ball hard to see sometimes - so you can also download the movie in a slightly better quality in wmv format here.. (We also have a 227MB quicktime version - but I didn't think anybody would care to download a file that big - send us an email if you want it..).


The world is catching up ...

(WARNING: yes you guessed it! this is a rant)

Again and again,

I have to justify the in-existence of a release schedule for WOF to almost everybody I know, from friends who just care about me to friends who are software engineers themselves and who keep on wisely preaching me on how the mere existence of a schedule would auto-magically accelerate the development process.

I usually reply to those with proofs of the too many to mention 'professional' and super planned projects which end up being discarded with millions of $'s of losses because in the end, the schedule was not met anyway ...

Of course, if I had employees who's primary goal was to produce as few sweat drops as possible while still getting their salary at the end of the month then yes, schedules and deadlines and manages on top of managers hunting each other with dates would have been the way to go. And that is probably why this is needed in dinosaur sized companies where passion has no place, and people do the work with the salary as the ultimate goal, except maybe for the arrogant narcistic managers, sitting at the top, getting their fat salaries and bonuses, having a good life, and then just for the fun of it trying to push their company forward to show off in front of their friend managers, then preaching their employees about passion, with their own passion coming from the wrong place.

BUT we are an INDEPENDENT studio, we sweat and torment our brains every day and we do it because we want to, we need to and we want to make our dream game, and try to make it financially successful just to be able to repeat and re-repeat that. That is why for us, a schedule is just a hurdle in the way of a perfect game. It's existence will not make us work faster or better, because we already do that and only that!

In any case, it seems the world of dinosaurs is catching up and realizing that actually, its us who have been doing it right from the beginning and that they need to revise the way they develop: using a manager and a schedule ... suddenly it's starting to become hip to do things our way! yes ... agile development is the new hip way to do it, http://www.agilemanifesto.org/, and look there! IBM wakes up thinks so as well ... http://www.infoworld.com/archives/emailPrint.jsp?R=printThis&A=/article/08/03/04/IBM-promotes-agile-development_1.html stange? not to us!

Our and your dream game will be done when it's done! (because that's the only path to a dream game).

Fivemagics*


HUD Teaser..

Head Up Display (HUD) - the score, player names and all that. As discussed at our forum, we had planned to show a little update last weekend. Sadly I fell ill with a stomach bug, but now that I'm feeling a bit better I had time to get a little work done. All elements are not completely in place yet, but here's a little teaser image of what you can expect to see in the movie - that will be ready this weekend if all goes to plan..

Disclaimer: WOF will not use real names or logos. I've used these images and names as placeholders only, we will have to make custom logos and altered names for all teams and footballers instead.


Bug hunting and AI..

The last few weeks have been spent on gathering feedback from our devoted and patient testers - and fixing the errors.

Our testers have been very good at delivering information that we can use and willing to do some tests and discovery on their own. We're very pleased with the help we're getting, and we hope you'll continue to be patient with us going forward! =)

It's also satisfying that most reports have to do with technical aspects - incompatibility with certain graphics cards, or getting the game to run on the Vista platform - and only very few design flaw or implementation errors. Below is an example of how things can go wrong when a graphic card is not fully supported - but this have been fixed now btw.:

Most bugs have been sorted, and Fivemagics have begun on actual implementation of our AI concepts. It's already great for me to see the footballers run around and from here on it will only get better. In the video below you can see a first glimpse of some really basic stuff in action; footballers running to positions, and a footballer anticipating where the ball will land and running to that position and intercepting the ball.

As some might have noticed the stadium is still incomplete. We have decided to upgrade our art-pipeline, which means using another exporter programme for the 3D files. This exercise has been postponed until the AI is further underway though, so you will not see an update in the surrounding graphics for some time.. Maybe that only hurts my pride - but we're sticking to our initial plans and putting gameplay over eye-candy.


Redhair's avatar in-game..

Today Redhair became the first person to get his 'name-in-game-avatar' into a build.. Redhair is the red #25 of German club Kaiserslautern facing off against Turkish side Fenerbahçe.

The process is not yet automated (we're not focusing on that yet) - but it was fun seeing his avatar running around in-game all the same - and I'm sure he'll feel the same once he gets to do so himself - and hopefully that goes for all of you too! ;)

Image



New hairstyle available!

Dreadlocks! I don't smoke weed, honestly, I hardly even drink! - But I do like reggae and the rasta look. Not for myself though, but then again, no 'look' really suits my deformed face! Anyway, enough mindless ranting - and sorry if anybody got offended and worry that I might think that all people wearing dreadlocks smoke weed... and, to get the disclaimers out of the way, I'm pretty clueless about the rastafari traditions and beliefs also... =)

Aaaanyway, here's how it looks:

Image

Here's how it looks in-game at the moment.. Please pay no attention to the incomplete stadium in the background! ;)

Image



Testing feedback..

This weekend we had a lot of feedback on the first test build - and as expected, there were some technical issues, that are currently being dealt with. It is mainly problems with graphic cards and gamepads, which is one of the many pleasures of working with the PC platform...

The responses to the gameplay and control setup are very positive also - for the few negatives, I get the impression that for some it's mostly a case of breaking some habits that stem from years of playing SWOS or KO with a joystick using only one button.

One of the most encouraging comments was from a person who is a leading figure in the sensiblesoccer.de community (I will not reveal his name in case he want to stay anonymous), who told me that this build was already better than the final release of Sensible Soccer 2006 - and he wasn't even able to see the bodies of the footballers (only the hair) due to the aforementioned graphic card issues! =)

If it sounds like I'm bragging or feeling over-confident, I'm sorry, but it was not without a little uncertainty that we 'exposed' our game to outsiders, and that it was received so well was a bit over our expectations.. Not that we didn't have faith in our concept, but it's very nice to have it confirmed also!

For now, Fivemagics will mostly focus on fixing the few issues the test release have revealed, while I'm fine-tuning the Tactic & Formation concept with help from new consultants, that were 'recruited' this weekend..


Testing 1-2-3...

Tonight we made a build available for a few selected testers, and now we're anxiously awaiting feedback - hopefully mostly positive, and hopefully no hardware/software related bugs either! Time will tell.

Even though it's only an early test bulid I'm almost too excited to sleep, but I'm also very tired, and I know that goes for Fivemagics too.. Still, it's a normal work-day tomorrow, so I better find my way to my tooth brush and after that my bed. Bye for now.. icon_wink


Spectators! Part 1

Making a believable crowd have always been high on my list, when it comes to atmosphere its pretty much a must have. Kimera Park is the name of the stadium I'm currently working on - and the default stadium in WOF - for the moment at least.

Check out this video of the spectators in-game. Its still incomplete, but I'm getting closer. Expect the spectators to stand less orderly also, at the moment they line up too nicely..

Below are a few images showing the earlier stages of adding spectators..

Image

Image

Image

Image




'Near-playable'..

As promised earlier at our forum we've put together a little teaser showing the progress we've made. We've dubbed it 'near-playabe' because a few fundamental things, such as AI and rules, are still missing for it to be a fully first-playable build..

In the movie below, you can see my brother Dan playing as 'Manchester Devils' versus me as 'Juventus Zebras'. My 'experience' with the game shows; I have played this build and previous builds extensively and I am naturally more familiar with the controls and so on, so all in all Dan was at a clear disadvantage. That didn't hold him back though, and we got to record a few clips for you:

Things are still a bit rough, and some 'issues' are more clear than others - we've spent almost zero time on the eye-candy, so you can see arrows at the borders of the screen when they're not supposed to be there and a few animations aren't finalized or properly tweaked. The power-bar below the footballers is also a quick hack - the final design is not yet implemented, but that's just a trivial task now that we know the concept works in practice. Sadly, the 'fraps' sign overlaps the score which is actually recorded.. I wasn't able to find a piece of music that really fits the mood I wanted, so please don't pay any attention to that..

As mentioned there's no AI or rules yet, but now that the very basics of the player-input part of the gameplay works we're almost ready to start work on adding tactics and all that goes with it. So, in closing, we're very happy with how things are going and we hope that you can appreciate the effort we've put in to it also. As always we're grinding away at it - and if all goes well we'll be able to release a public demo sooner rather than later..

I'll sign off by wishing you all a Merry Xmas and a Happy New Year on behalf of the team! Take care! =)


New menu designs..

Here's yet another preview of the menu screens that I'm working on, on and off..

I've said it before, so its going to sound stupid - or at least not very convincing, but I'm quite happy with the current design and will stick to it from now on..

Below are two images in an almost finished state - some minor details are missing but the look and feel is intact. Click on the images to see bigger versions..




WOF gets ImageMagick'al

From now on, powered by the combination of a scripting language (Squirrel) and an Image Manipulation Library (ImageMagick),
WOF enables us to do funky things to it's image based assets and that, without changing one bit of WOF's code. (think modding ...) icon_twisted

I realy don't have time to waste, crunching on our beloved WOF, but I simply had to have some fun 'modding' our unfinished test stadium, and here are the results. (click to enlarge)

Reference screenie (the way the 'stadium' ususally looks like)


Auto-Generated Boards and Saturated Green Pitch
(this was simple text generation, more complex boards with images and all kinds of things are also possible)


Close Up icon_mrgreen

Yes it does! or more accurately, it will! icon_biggrin



'Interactive'..

'Interactive' - one of the most used buzz-words about games some years ago. It shouldn't take you long to find a dozen game and movie companies that all had interactive incorporated to their name. What we're busy doing now is working on the interactivity - how the gamer have input on what's going on in the game - but also how the 'brains' and bodies of the virtual footballers react to what's going on in the virtual football stadium.

This introduction have probably been way too long already, so short story; we're adding moves and refining them as we go - sliding tackles and stuff like that already work, but now its stuff like how you chest down the ball, diving headers and such.

Its also tied into the stats of the footballers - a more skilled footballer stands a better chance of controlling a pass well etc. - and as most football fans will agree, a good first touch is often the difference between being great or just good.. The fitnes level has some impact, and will deteriate the longer a footballer takes part in the match. This should give you an impression of how enourmous this task is - its the implementation of the seemingly simple set of values that will make or break the gameplay, and its a long process.

We've making great advances though, even if we're not showing it publicly yet - you'll just have to take my word for it! ;)


Save! Goal!

Here's a little example of what happens when Fivemagics combines the ball physics and the script for animation and the ball and footballer collisions...

How cool is that! icon_cool


Robust collisions..

Here's a video captured by Fivemagics showing the footballer v footballer and footballer v environment collisions. He's a man of few words, and I'll probably get some stick for quoting him, but here's a rare opportunity to hear his own words about it:

'smooth action, while keeping totally robust non-penetration and footballer blocking (for tactical purposes) and still allowing for dramatic and funky tackles while keeping totally robust non-penetration with random world geometry'

We weren't sure whether to release this clip, but we thought why not. It is not polished in any way and only made to show the collisions in action - its not a gameplay movie! You'll see footballers NOT going through objects when running or sliding etc. and not getting stuck on objects either. Sounds simple but it is anything but.. =)

At the very end you can catch a glimpse of the early work on the keeper movement using a very clever custom script.. more to come later on this.




Vacation update..

The final week of my vacation is drawing to an end and things have gone differently than I expected, meaning that I have spent most of my time on 'family stuff/real vacation' rather than working on WOF, but I think this is about to change; it has been a long summer - almost without any football on tv and I feel I've been missing some inspiration - we're at a time where a lot of the things are already decided and designed but also where a lot of things depend on us finishing the crucial basic stuff that everything else is built upon. Fivemagics made great progress before going on vacation and with him gone for a few more weeks I'm happy that the football season is finally underway with lots of entertainment to come.

We're keeping a close eye on the development of other football games also, new iterations of PES and FIFA will be coming soon - but judging on what we've seen so far it seems that there's still room for WOF as what Konami and EA are offering isn't radically new or even close to what we're doing.

We're of course aware that not much is happening on our site and forum but that's just the way it is - I just want to assure any doubters that we're still here and doing our stuff.. ;)


GUI update.. Main Menu

Click the image to see a larger version..




Page :  1 2 3