Tuesday, August 26, 2008

Into the Sea

The knots are tight, full sails, hearts prepared, fear crushed ... ready to cross the sea, into the chaos... everywhere is dark ...fight the infinite waves and furious pirates in the way ...

Well, the modern day version of the above is the situation of our team getting prepared to participate in the second Digital Media Festival. What we are planning to do is to prepare a playable demo version of Soshiant. How much work does it need? Lots, lots and lots... enough to make what we want to do seem like wishing for a miracle and favor insanity over rationality.

Our team, Syrous, Farshid, Peyman, Soheil, Yaser and Faham, being the symbols of bravery and courage have all united and prepared themselves for the Uber-Challenge. At last we know that we have got "the Force" with us!

Every second counts from now and is lived, life begins!

Wednesday, August 20, 2008

Lets get disconnected from Time!

How can some code behave absolutely fine when being inspected under a debugger, and go absolutely nuts once running free!!?
Well, enter Real Time code which is synchronized with the time we measure! This happens in the Soshiant project. The project is real time, although "Soft Real-time" since it has to respond in a specific time frame, known as each Frame of the application which one main loop executes, and also dependent on the actual time which goes by in our real world. Every frame knows the time passed since the last one, for example 16ms. This time is used as an input value to different algorithms in the code, such as the animation code which uses it to find out about the correct transformations that needs to be applied to the characeter bones in the current frame.
What the debugger does is to first of all stop the execution of the program on a specific point, the break point, and enable you to trace the code line by line from that point on. Stopping the execution means stopping the main loop and bringing its frequency down but the real time which we sense is of course not going to stop so the result is loss of synchronization between the frames and the time. If in normal execution the 10th frame is performed at time 300ms, tracing line by line using the debugger will cause the 10th frame to be executed at time 900ms. This would mean that this frame would witness different states for functions which are dependent on the real time while debugging. A practical problem as a result of this problem would be when you see wierd behavior during two animations being blended into each other which happens during 0.2 seconds, but breaking the code execution at the start of the blend will not let you follow the logic as it happens since that 0.2 seconds of real time will pass as soon as your debugger stops the code for you to evaluate.
Solutions? Short answer, to output trace what you want to monitor while the application is running and not to use break points. Not a real nice solution and sometimes cumbersome. Other solution might be to decouple the algorithms which rely on time from the real time we measure and provide a virtual time system for the application. Speaking about time, we might not be able to find out which time is the real one and which is virtual, relativity anyone?


Sunday, August 17, 2008

9.69s


A little correction is needed due to the spectacular performance of yesterday!

Lightning Bolt.

9.69

Saturday, August 16, 2008

9.72s

The Olympic Games are beautiful. All the athletes from all around the world, each showing huge mastery in a specific field, all competing. Yes it has its ugly spikes too but overall the level of beauty is huge.

My favorite to watch, the 100m sprint, where a whole life is lived in less than 10 seconds, very short, very strong and focused, no tiny mistakes. After all isn't our whole life a 100 m sprint also?

One sight from the opening ceremony of the Olympics made think a bit, most of the athletes in the parade had a digital camera or a handicam in their hands, capturing the moment, it was a reflective experience where you would doubt in who is the real audience, the people watching the athletes or the athletes watching the people?

The Art of Basketball



An artist showing off his art!

Yeah Wade!

Monday, August 11, 2008

Today is a gift

Kung Fu Panda is fun to watch.The 3D rendering has a unique style which makes it seem like traditional 2D animation, the animation weights and timing are tremendous, unlike the 3D animations from the previous years where every character seemed like a robot, overall lighting and colors look beautiful, not to mention the whole story concept which revolves around Kung Fu which is great. I specially enjoyed the Zen quotes of the master, "Oogway", and this one:"Yesterday is history, tomorrow is a mystery, but today is a gift. That is why it is called the present.".

Saturday, August 09, 2008

Black-Risks

The best parts of development in a coding project is when you don't know what you want to do, and once you decide, you simply implement. The worst parts, project wise, are the parts when you know exactly what you want to do, but do not know how to do it. The reason for not knowing is usually due to abstractions inside the frameworks and libraries you are using. These are the real risks which can take a lot of time the first time they are encountered and get solved right away the next times. These are the issues which make deterministic project effort requirements almost impossible. A good name for such things might be "Semantic Black Holes".
We are faced with a lot in Soshiant.
Of course it is possible to reach deep inside these black holes and find out everything about how things are done and need to be done but the only thing lost during this process is the single crucial parameter usually represented using the "t" symbol.
On the other end the same frameworks speed up and help out in many tasks and provide lots of useful features which if you wanted to start and implement yourself it would have needed lots of time too.
Time saved for needed features which exist in a library and can be used: t1
Time spent to find out how the library can tweak to provide the exact need that you have: t2
Happiness = t1 - t2

Thursday, August 07, 2008

The Team

Ardeshir recently found this piece of old newspaper and interestingly enough I saw it today which is August 7th and the date of the news is August 7th also, although minus 11 years from today.

Anyway this was our dream team, lots of great guys, most of them distributed throughout the world now, we had huge fun and huge success in the city of Tabriz. My big salute to all the brave team mates and our very talented coach Danesh.

A little reminder to you guys all: "Kalmasse Boyer Ahmadi!!"

Looking ahead ...


I hope our viewpoints converge in the future ...
Seems more like 180 now ...

Where they merge

Interesting things happen to you when you work in the field of game development. Things like your niece who is 3 years old walking into the office and telling you: "Hey Uncle, are you working or are you playing games!??".

And it would be hard to explain to her that I'm trying to setup the interaction calbacks of the main character's physics representations with the game world that we are developing. ;) Because it seems that no matter what you say .. she has already got that ".. yeah Right!!" look on her face!

Sunday, August 03, 2008

Root of all evil

"Premature optimization is the root of all evil" ,Donald Knuth

Well, whether the above statement is always valid or not, we are following the guideline from the master these days in the Soshiant project and it seems to work out well at this stage by saving us from falling in the local minima traps of code development.

A second part should probably be added to the above statement, something like: ".... and don't forget to perform the prioritized optimizations to the level needed when the base code has matured ....".

This is where the hard part is, prioritizing the optimization efforts based on their real effects on performance and finding out the "Good Enough" level.

We are currently in the easy and happy stage of leaving all the hard thinking for the future...

By the way, this is the first post using the ScribeFire plugin written while offline.. so exciting ;)

Dynast Blade



Another international achievement for our very talented 3D modeler, Syros. This time he got the third place in the "Army of Small" challenge of Game-Artist.net.

Good luck bro and keep it up!

ScribeFire

Let me see if ScribeFire actually works...
hmm...