Wednesday, December 29, 2010

Pure Random

After another night of deep discussions with a couple of friends, it seems that one of the basic questions that still has remained un-answered for me is the existence of pure/real randomness. Is there such a thing as a random behavior which has no scientific explanations? Not something seeming random due to lack of contextual information but something random for god itself.

This question easily leads to the concept of free will and its existence.

Will I ever find the answer?

Sunday, October 24, 2010

Eternal Sunshine

After a long period of not seeing that many movies and watching crappy mediocre ones every once in a while, I enjoyed this movie really a lot, absolutely fantastic : "Eternal Sunshine of the Spotless mind"... phewww...

Thanks to Yaser for providing it and Kasra for recommending it :).

Friday, October 01, 2010

Post Storm

It sure feels strange ... a project we were engaged with seriously for the past couple of years is out of the door, leaving a mesmerizing calm atmosphere behind for us ... a rather static state, it is, which brings out confusion at times, confused in breaking the symmetry and selecting among the infinite options ... something which was away for a long time ... in times where there was one thing to do every day and every second, and that was to push the whole project into a converging state of acceptable quality ... something which would ride you everyday... a storm that showed you absolute failure inches away a lot of was quite fun... it was quite hard ... it had a world to learn from ... it added a lot more scars ... scars that are seeds to power ...

Sunday, August 15, 2010

GDC 2010 Europe

Getting ready for GDC 2010 in cologne tomorrow. There are quite a few interesting sessions which I've already marked. Lets see how things go.

Sunday, August 01, 2010

Game Engine Design Course

We will be running a Game Engine Design and Implementation course for those interested in knowing more about the topics and gaining some insight into the inner workings of modern Game Engines.
More information can be found here.

Monday, June 21, 2010

Real Men

Tough times ... really dense ... no chance for under-achieving ... focus necessary ... hard work ... hope ... fighting desperation ... patience ... hanging tight ... patience ... holding together ... believing ... patience ... trying ... ignoring exhaustion ...

All that fuels me in this final path is the real men around me ... oh these are the real warriors ... how rare ... how mighty ... how blessed I must be ...

believing ... patience ...

Thursday, June 10, 2010


Oh dear lord ... forgive me for I have sinned ... forgive me for the unforgivable sin ... a sin with deep roots in ignorance ... a sin of not being conscious over memory usage from the first day ... having blind eyes, deaf ears and irresponsible hands...
Upon my forgiveness ... I shall promise thee to be memory conscious from the first line in the next evolution step of the code base ... acceptance of all these sacrifices is all I hope ... every bit will be measured ... I shall tame the beast ...

Saturday, May 15, 2010

3D Challenge

We are holding a 3D modelling challenge with the help of society and several notable others for aspiring and experienced game artists. You can read every thing about it over here.

Let all the artists know about this event.

Friday, May 07, 2010

To OOP or not to OOP !!

Object Oriented Programming has been the buzz word for quite a long time in computer programming. The concept has even leaked to higher level issues such as OO Design and OO Analysis.

Just like any other buzz word in the world of information technology, Object Oriented programming has received much more attention than what it deserves.

But what does it really do? We all know that eventually all code written in a programming language needs to be translated into machine code and once in machine code, it is all the same, no matter writing your code in VB or python, it will end up in a unified language of instructions which the target machine knows well.

Object Oriented Design/Programming, is a way of adding a few conceptual layers between the problem domain in our real world and the instructions which need to be run by the target machine, a way of making a smooth transition between the layers of abstraction, a way to help our mind understand the problem and find a proper solution for it. After all, Object Oriented Programming is something to help us human beings overcome our limitations and be able to make better computer programs. Some argue that Object Oriented Programming brings with it new functionality which was not possible to have before such as Inheritance and Polymorphism, however, simple C structs and function pointers are all that you need in a structure programming language such as C to simulate inheritance and polymorphism.

All of these added values toward writing easier code for the programmers come with costs, sometimes huge costs. In other words intellectual manageability which is probably the most important aspect of Object Oriented Design comes with major costs, the most significant side effect is always performance.

Real-time simulation software have usually performance high on their priority list and so Object Oriented Design in such programs, such as games, needs some second thoughts. Such applications usually see their world as groups of data rather than groups of objects which contain data and behavior, unlike the way we see our world.

An example for the above is the way the main loop for a physics simulation engine works, all it cares about is a few data related to the physical properties and for it, other properties of an object such as its visual properties, sound and game related meta data is of no use.

In these cases, when a part of an application needs to work on specific data, in order to best utilize the system cache and increase the performance, it would be best to provide the relevant data to the sub-system rather than pushing in a whole object containing lots of data, just because handling the code in an object oriented manner is easier for us programmers. Multi-Processing can be managed easier once related data is batched together.

Enter Data Oriented Design. A rather harder way to look at the problem domain and to model which is by far easier and more efficient to process by the machine.

A very good article regarding Data Oriented Design can be found here:
Data-Oriented Design (Or Why You Might Be Shooting Yourself in The Foot With OOP)

And another very inspiring article is from Sony Research:
Pitfalls of Object Oriented Programming

Also a very nice presentation by Mike Acton:
Three Big lies: Typical design failures in game programming

Monday, April 26, 2010

Latest Garshasp Trailer

Hi resolution version of the trailer can be downloaded from:

New Garshasp Blog

The Farsi weblog for Garshasp is up:

Saturday, April 17, 2010

The Sinking Philosopher

When the black days fill the skies ... when achievement is an unreachable wish ... when nothing works the way it should in a team ... you hear words of wisdom ... words about how all the processes and beings around the individual went wrong ... how everything outside the responsibilities of the individual went wrong ... how they are all right and everything else outside their circle is all wrong ... everyone is a philosopher all of a sudden ... they all know it all ... nothing they could've done ... it all seems so obvious to fail and the individual is so immune ... karma is karma ... millions of reasons pop up for under-achievement ... the blame arrow is spinning like a merry go round ... never ever facing the individual ...

When the storm is away and time allows emotions to sink ... you can focus and look deep into some realities ... looking closely opens your eyes to two realities glowing like gems, lying underneath everything else like the roots of an ancient tree... FEAR and LAZINESS ... the two primal and universal characteristics of human beings ... the source of any under-achievement ... two attributes that sometimes compete and sometimes cooperate ... either way always helping the individual to sink deeper and during this descent, beautifully casting all kinds of layers around them for the individual and helping the disguise ... even transforming the person into the philosopher who knows about all the sources of failure ... the philosopher who assembles the chains of reasons leading to the failure ... the chain which never touches the self ... unconscious that this is not the chain which can be used to climb back up ... how beautiful!

Friday, April 09, 2010

Eternal Leader (of children and leadership)

Leadership. What a deep word. A leader is usually the person in charge of leading some others towards a specific goal. We all seem to get the basics and it just seems very clear but there seems to be lots of twists and significant details hidden inside the semantics of this simple word.

What is the relationship between management and leadership? Is a teacher a leader? How about a the captain of a ship as the leader? Is the lead programmer really a leader?

At first glance leadership and management might seem the same and all of the above examples be types of leaders but can this be true?

Doing some historical analysis on this important meaning gives us a sense that the definitions of a leader are isolated in a shell which is quite tough to penetrate and perceive and ignoring the details might lead us to believing that any boss or authority figure is simply a leader. How unfair to the true leaders in time.

I have always been really curious about this word and thinking about it felt valuable since the whole idea of some one who can lead others and take them to a place they wish seems really significant and makes the position highly critical and as beautiful as the positive outcomes are, the negative results are scary and have the potential of leading people to failure is a hell of a responsibility. This has been the source of all my excitements for teaching, believing that a teacher needs to be a leader and the leaders role can have huge outcomes in a wide range. A belief that generate euphoric as well as worrying emotions.

A new experience in my life has been an inspiration for delving into the subject and reaching new insights. The experience of becoming a parent.

Being a parent, you are the automatic leader of the child (at least while he/she is a child) and you will try to do all you can to guide the child in the path towards the many short term and long term goals which you believe make the path. One issue is always related to the goals themselves and what goals are right and which are wrong, I am not going to work on this aspect at the moment and my focus is on the other part which is "leading towards the set goals", assuming all parties involved have accepted that as a goal.

Now lets analyze one of the scenarios in this leadership model: The child, still being an infant, crawls towards the electricity socket with a device attached and tries to experiment a little with the stuff over there, what will the leader do? Put the child back probably since that is rather something dangerous. The child repeats, the parent repeats. The next day, the same, next week, same thing... this heroic act of the parent to save the life of the child might repeat for hundreds of times before the neural system of the child learns that something might be really dangerous with this experiment.

The above scenario is just one of the many daily struggles of a parent as a leader, of course the word patience might try to prove itself here as the necessary trait of a leader but as important as patience is for leadership, there is another major characteristic here which is fundamental and that is the bond. The bond between the leader and leading. Can the parent one day say, "hey, you don't get it.. the hell with it ... go ahead and see what happens!". Probably no. The parent feels that he has to remain the leader and he can not run away from the responsibility in the hopes of letting evolution and nature itself do the leadership and training. It is a case for conflict when the leader knows the correct thing to do and the leading person disagrees for any reason. The leader has two options now, try to make the leading do what is right, this can be done by any kind of creative technique (which needs a lot of energy) or he can just say, OK, you don't get it, I am not your leader anymore, I will seek someone who will do it and replace that person with you.

How about your boss? Lets say you have to turn in the report, you don't. He will try to explain to you some important aspects of the report, if he is really nice. You do not hand it to him. He gets a bit mad and warns you, you still won't do it and you end up looking for a job, he delegates the responsibility of leading you to the society and the society might yet transfer this role to other social systems up in the hierarchy and you might end up with mother nature herself after some time. The bond between the boss as the leader and you as leading can easily be broken by the boss (leader?) by the conventional corporate laws.

This is a missing feature for the parental relationship. So when you feel that just giving up is not an option, when "The hell with it!" is not part of your literature, when you and those following you are stuck together with all the adhesives in the world, that is when the leader in you comes out, that is the absolutely necessary trait for a leader. This leader will now use all the forces in the world and all the magic hidden from the world to make the followers succeed. Delegation of responsibility is just not an option.

It seems like a big trap which exists very close to the leaders is "Giving In" and having this option is exactly falling in the trap. A trap which differentiates the leaders from the managers.

A teacher can work hard to educate the students but one day he might think, "... there is nothing more I can do ... they will fail and then they will know .... ", and this is how the devil himself will take away the leadership crown from this hard working teacher which was hunted down by the arrow of desperation. I have to admit that I was hit by this arrow quite a few times during my teaching experiences.

In the case of the lead programmer, if this person has some human resource authorities or office politics to be able to fire those working under him, then the trap of giving in and just hoping to replace the programmers if they don't perform well is all he needs to be reduced to a programmer manager from the Heavenly role of Lead Programmer.

It is a matter of a mental attitude and mental belief, however odd it might seem to the modern culture of efficiency and work habits, a true leader needs to be built on the foundation of that belief. A leader might not be cost effective for a company in the short run but cost effective managers will never really be leaders either.

The leaders have been cursed to remain the leaders of those they lead for EVER and this curse is what shapes their daily courageous journey of truth and makes them loved by their followers. Only those who have been under this curse will ever see the word "Leader" next to their names when they are reviewed in history ...

A leader is always a leader, if not he never was ....

Beware of the trap!

Sunday, March 07, 2010

CGS Sharif

Sharif University is running an event on Game Development this week. Here is more information:

Garshasp developers will be running technical sessions in this event, Soheil will have a talk about game character and environment design also.

Thursday, February 25, 2010

The Lost Art of Game Design

Computer games used to be simple, where the focus was on the design of the game as an interactive media, where the designers were there with no armor on the arena ready to battle the huge magical monsters of making a game fun.

Many layers have been added these days to games including detailed graphics, cinematic sequences, polished music compositions, surround audio effects, physical simulations, visual effects and etc. which are actually armors and weapons that the designers can wear and these all together can help and bury some lack of game design talents deep under. Not to mention marketing hype which is quite influential in itself and can mesmerize a player into thinking that they like something.

Game used to bring the thrilling moments to the players every second but it is quite hard to achieve that in most modern games.

Some recent examples, Darksiders, while great at character design and ok at graphics and wonderful visual effects and sound and very polished game play mechanics, the game design throws you out of the immersed world a lot of times and you feel the silly repetitive tasks they have put in there just to increase the length of the game which becomes offensive sometimes. When a game becomes complex in story and features and visuals, then the game designer needs to be much more committed to issues such as the cohesion of all these elements around the element of fun, which is not quite like balancing the game of pac man but more like understanding user emotions, psychology, gaming history, technical issues and lots more. This should be the modern day game design, a highly evolved task, something much much more than level designing.

Assassin's creed, great technically and wonderful visuals but the wide array of possibilities for the player needs exponential design thoughts as how to bring the non stop fun for the player which clearly this game has not been able to provide.

Prince of Persia 4 is another big failure example for game design in my opinion. If the designers had improved half of what the other departments have achieved, then we would have experienced a breath taking product.

Batman, Arkham Asylum, great in many aspects such as a cinematic experience and animation and physics but a very simple game where you do not sense the challenge you usually expect from games and nothing bold in the area of game design, the feelings experienced are much closer to what you have while watching movies than what you used to feel playing Space Invaders.

There was a time when game designers did not have a position in game development and it was all programmers making games, they showed up and helped make better interactive media, they are gone once again today, although not gone int he credits, but really gone and they need to come back and help the industry, they need to come back many many times stronger than what they were with multi-disciplinary knowledge, talent and courage. They need to take our all the superficial armors and weapons of technology, story and cinematics and show that they can be a warrior without all that and bring the gaming to a newer level.

Wednesday, February 24, 2010

The event

The event at Amir Kabir University went quite well.

Here is some more information:

Monday, February 08, 2010

Gang at Polytechnic

The dev dudes will be at Amir Kabir University (Polytechnic) on 3rd of Esfand. The session will be geared towards the development process of Garshasp inclined towards the technical aspects.

More info can be found here:

Saturday, February 06, 2010


Aldous Huxley:

"Who lives longer: the man who takes heroin for two years and dies, or the man who lives on roast beef, water, and potatoes till ninety-five? One passes his twenty-four months in eternity. All the years of the beef-eater are lived only in time."

Saturday, January 23, 2010

The roots

I find myself at the office with only two guys quite often these days. One is Syros and the other Peyman. The same two which helped us start our ambitious project more than 3 years ago. We've come a long way from that time and experienced many many things and a lot of change has occurred, however their determination, attitude, passion and professionalism is exactly today like it was three years ago, they have never let down anything related to this work even once. This project would have never been close to its current status without them. It sure feels wonderful to be working next to these guys...

Monday, January 18, 2010


.... and a friend says : "... we've got many enemies out there ..." and all I can think of is this great statement:
"A great civilization is not conquered from without until it has destroyed itself from within." W. Durant

Friday, January 15, 2010

Real coder's arena

One thing we, a few guys on our tech team, wish we could experience is console development. Being able to make software for one specific hardware platform is quite exciting. The root of this excitement comes from many different factors. All the hardware specification is fixed and known beforehand, unlike PC development where every machine is different, knowing the hardware is fixed, you can try and create the best code possible to run on that machine, you can always compare this with what others are doing and any enhancement in software means something because everybody is running on the same ground. The memory is fixed, and very limited too, and a new dimension of memory consciousness while coding needs to be added to the development process and the art of the coder should come up with elegant memory solutions to support the whole product.
You would need to know the hardware very well in order to utilize it best and the border line between software and hardware really tends to become non existent. The depth of the abstraction layers while doing software engineering is much more in this case, all the way de-abstracting to the hardware itself.
The machine stays the same for a few years, the games enhance, the only way this could happen is by writing better and more efficient code and better using the hardware, unlike the usual trend in PC application development which is to write less efficient bloated code every year and rely on the enhancements in hardware performance.
Modern consoles are all multi-processor machines and they are a great platform for parallel software development which is quite complex and exciting. The best system in this area is the Cell processor on the PS3 with the 8 processing cores.
All of the above is quite a lot of work and needs tremendous amount of work but the whole idea of console development seems to be a fair and well defined game and challenge. Playing in a game where the rules are changed randomly isn't quite fun.
Hope to engage in the real coder's arena one day soon.