Darkened Software

Artificial Intelligence

Richard Dawkins TED Talk on Militant Atheists

by on Apr.20, 2010, under Artificial Intelligence

Besides being a huge fan of his books and theories I really like his call to action in this video for atheists to stop taking the easy way out of calling themselves people of agnostic faith.   I do understand their want to avoid controversy with the established religions in work type situations where it could have a dramatically effect their careers.  The problem is it is just plain weak, sort of like when a girl say they are not breaking up with you but they just need some space.

We are not back in the days were telling people you believed in science could result in the church having you burnt at the stake or imprisoned for the rest of your life.  So really there is no good excuse to not be honest about it every time it comes up.  While religion has built in recruiting system to ensure it not only survives but grows the atheists believe that in time everyone will naturally come around to the scientific facts.  I believe that would naturally happen on its own but given that religion has 2000 years of  head start we need to promote it if we want this to happen any time soon.   This lack of active support by the atheists is the reason that we may be going backward in some places like Texas with evolution and Tomas Jefferson getting remove from the school system.

You have to let people know it is OK to believe in science…

Leave a Comment :, , more...

Think about how people could interpret your resume, Part 1

by on May.05, 2009, under Artificial Intelligence, Industry, Interviews, Lessons

I have gone to 100’s of pre-interview resume reviews with other programmers to discuss our thoughts on a candidate and determine what everyone will quiz them about.  I am always still amazed how everyone can read the same resume and have completely different take on what could possibly be good or bad about this candidate .  It is a different trigger for everyone, sometimes if anything is a little vague or over sounds overstated people get turned off and suddenly the interviewee  is fighting an up hill battle.

Be very careful with the resume wording because given the chance people will often interpret it completely wrong…

Even if you write the clearest resume possible it is not even close to 100% so you still have to then anticipate all the ways they could take everything on your resume wrong and and figure out how you are are going to convince them of the right story on the phone or during the live interview.  Is it a pain, yes.  Is it right, probably not.  But you literally have to be prepared to defend everything on your resume to make the interview go well.  Some people will always come to the interview assuming the worst about the candidate and you will have to change their mind about every point.

Lets hit the examples:

Worked for company X for a long time.

You might be thinking that it shows loyalty to the company, dedication to your job and that your not a quitter during tough times.  You might also be rightly thinking that is shows how valued of a employ you were, you survived 8 round of layoffs and your position was never in danger.

Others might see X years and think that means you have no ambition at all.   They instantly think you are one of those  people that found a place to hide and have just been collecting a paycheck for X years.

Defending working at a company for a long time, sounds silly right?  When they comment that you about working for a company for a long time.  Don’t just answer yes.  If you started during the beginning, talk about how you helped grow the company and it was pride thing. If you got shares then talk about the ownership responsibility.  If you did not have the above then talk about the great projects you got to work on or great friends you made or how much you learned there.  Make sure they believe you had reasons to stay and now have a even bigger reason to leave.

Have a bunch of grind tasks on your resume.

Say you have done UI, TCR’s and some of the other grind tasks that people do not generally like to do.  You might think this shows you are willing to take one for the team and do what is needed to get the game out.  You might even think is shows you are not a prima donna and will not be bitching all the time.

Others will see it and think that you must not have any real skills if you have been given grind tasks.  They will automatically rank you intern status because that is usually who they give those tasks too (yet they wonder why they often fail first submission).

Defending grind tasks.  If you were on a time line explain that the project could not afford to be kicked and had to get through first time, it was an insurance policy thing.  If you were doing other tasks as well explain that the grind tasks were in addition and you are really a super man in human cloths.  If you were really only doing UI / TCR’s then explain how you were building tools and infrastructure so it would be less work for those that followed you. Point is to make sure they do not believe that you were tasked with grind work against you will or that you were not happy with it.  Make it seem like it was a challenge or accomplishment.

There will be a second part to this topic as there are many more potential issues.  Big take away should be to read your resume over and try to predict how people could take it wrong and be prepared to talk them down from that position.  The thing is they will not ask you to defend your work experience, they will just drop an off hand comment on something and you need to detect it and then take over the conversation till you get your point across.  Missing these small hints in the conversation means people will be leaving the interview with bad thoughts still and you have lost.

2 Comments :, , , more...

Vision and Hearing models in games

by on Mar.23, 2009, under Artificial Intelligence, Programming

Two more big frustrations with games of late.

  1. Just because I am in your NPC’s cone of vision does not mean you automatically know everything about me.
  2. Sounds drown each other out for the user since they get mixed and converted to analog, but for NPC’s they get each sound individually and effectively hear perfectly.

Vision models, we the programmers do way to much cheating in them and it makes stealth and military games frustrating.

  • Humans do not have a perfect vision with their 200 degrees of range, the back 20 degrees is only for motion at best.
  • Farther a item is from the center line of our vision, the worse we are at telling if it is moving, depth perception and details.
  • Farther out it is from us the less detail we have have on judging direction, speed and details.
  • The further out the longer it takes us watching to judge movement direction and speed, it is not instant.
  • If we match colors of our surrounding ( camo or shadows ),  that harder it is be spotted if stationary or slowly moving.
  • In the dark we have much less range, takes much longer to focus and switch from light to dark area’s.
  • In the dark any bright area reduces are ability to see into the dark area’s again for a long time.
  • In really bright light we see outlines better but details less and can not look toward the sun at all.
  • If there is multiple things moving it does not slow them down as they process all of them instantly.

All these factors are ignored in most if not all games right now.  As soon as you enter their view cone of an NPC, they spot you, instantly know your speed, distance, and can lead you with  lobbing weapon perfectly.  They know what weapons you are armed with and if they should move in or hang back.  Everything that the military would tell you to do is useless because they are doing a cone check and line trace instead of trying to pick information out of a noisy frame buffer.

Not saying we want to start comparing old frame buffers rendered from the NPC’s point of view and try to pick out moving blobs in them.  That would make AI very expensive and not scale well at all.  But we can modify our current model to take into consideration some of these human deficiencies.

Hearing Models, this is even worse as most engine do any testing to see if NPC’s can hear something.

  • The just use range tests to see if something could be heard, no ray traces even.
  • If there is multiple sounds they test all individually, there is no concept of sounds getting downed out.
  • Sound speed is not taken into consideration, all sounds are heard instantly regardless of distance from the source.
  • NPC’s know the direction and movement of a sound instantly unlike humans that have to listen for a couple of seconds awhile gather that info.
  • The confusing effects of bounced sounds and echo’s are ignored, locations are picked instantly.
  • No difference between the travel of high and low frequency sounds.

There is a reason most games do not try to account for all this, it would be very expensive.  Since sound bounces around corners and move through walls, it is not easy to model fall off and propagation.  Inside a portal system you have a little more information about enclosed area’s but still not enough to calculate it properly.  To properly model this you would need flags for wall materials, openings, graphs of multiple paths and distances, all objects between you and the sound source, ground shape, echo’s and other constant noises.  Not something you could do in real time, but something you could do offline and bake out into the map like we use to for a PVS ( Potential Visibility Set ).

Then we could quickly query the zone the sound is in and our NPC is in, determine if we can hear it, how damppend it is, how much reverbe would be added between here and there.

It could be great…

Leave a Comment :, , more...

I really do not like the user interface in RTS games

by on Mar.18, 2009, under Artificial Intelligence, Programming

My first problem comes from trying to select units, you usually only have two options.

  1. Select every unit of a certain type that you click on.  Only useful in about 5% of the cases.
  2. Select everything in a click and drag rectangle / circle that you grow.  This is used the other 95% of the time but only because there is no better solution offered.  It is still not really that useful.

Most of the time I want a mix of units but they are standing in groups out front of  their spawn-er type building.  I do not have time to individually pick them and move them somewhere I could group them with other units.  Trying to select them in a rectangle is not accurate as they stand on top of each other in odd patterns and if you have limited group sizes you need exact numbers.

Why can I not just draw a closed pattern on the screen with my mouse and have it select all the units enclosed into a group.  Ensuring an joined spline is not that hard and projecting that onto the terrain to detect the units is not hard either.  It just needs to be done.

Second problem comes from trying to move groups of units around.

  1. I do not have time to manually set a way point and wait till they get there before setting another to manually move units around map dangers.

Really what I want to do is take my group and start drawing points on the 2D overview map until I get to my destination.  The group should then follow the spline until it gets attacked or reaches its end point at which time it informs me.

This would make RTS games a lot more fun.  There was nothing worse than a bunch of humans in Command and Conquer taking a straight line to the destination through the plant fields that took their health.  Either make the AI better, path-finding better or allow me to compensate for both by doing it for you.

3 Comments :, , more...

Variable Reaction times in game AI’s

by on Mar.11, 2009, under Artificial Intelligence, Programming

There are two interesting instant reaction problems that fall out of most games AI’s systems right now.

  1. It is very hard to get the jump on them, you get one shot only as they react instantly making the value of surprise of limited value.
  2. You loose a lot of the value of attacking in gangs if they can react to everyone immediately then you do not get the benefit of them being distracted and not identifying the biggest threat right away.

Having the concept of variable reaction times should fix these and make it a lot more life like.

Lets look at the first one, any time your focused on something else, your reaction time for events not pertaining to what your focused on is slowed.  Not only is it slowed but for the first little while it is scared and your reaction makes no sense.  If your sitting around idle then your reaction time is a bit better as you do not have to un-focus, but your still going to be startled.  Games need to account for this.  If I jump someone from behind and the only reason I might get off a second shot is if he randomly misses, something is wrong.  He should have very little chance to survive as I should get multiple shots off before he even knows which way to turn around.

Second one is interesting because it should drastically change a game play.  If you are fighting on person then you reaction time is 100- 200 ms.  If your fighting 2 people then it slows down quite a bit as your brain has to think before every move, what is my biggest threat of the two opponents.  Having done a lot of martial arts I know this to be true and it has a big impact on how the sparing should be done.

  1. Do not go for big attacks, he can not decide quickly what to block so go for quick jabs and he should not have any chance to respond.
  2. The people in front that he is focused on should faint a lot of stuff, but the people behind and in the sides should be making the attacks.  The reaction should be a lot slower.
  3. People use noise for positioning, so if your attacking in a group you would want a drowned out noise around to limit your opponents ability to detect attacks from behind.  If there is noise then their reaction should go down again.

Just like we apply multipliers to someones accuracy if they are moving vs crouched, we should put a system in place for reaction times.

Leave a Comment :, , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...