Image 01

21st Century AI

A blog about achieving meaningful Artificial Intelligence

Archive for the ‘Dinosaur AI’ Category

Creating a combat model for T. rex versus Edmontosaurus regalis.

Sunday, September 22nd, 2013

This article was originally posted at Dinosaur Island.

A T. rex is attacking an Edmontosaurus while it's companions flee (screen capture of the AI test bed program). Click to enlarge.(screen capture of the AI test bed program).

We are at the point in the development of the AI routines for the inhabitants of Dinosaur Island where it is time to make decisions about the combat models used to determine the resolution of hostile encounters. As shown in the screen capture of the Dinosaur Island AI testbed program (above), the simulation is placing the dinosaurs in various appropriate states such as: resting, eating, looking for food, looking for water, stalking prey, moving towards water, moving towards food, drinking, fighting and fleeing.

My first thought on the subject of modeling combat between T. rex and Edmontosaurus regalis, the first two resident species on the island, was that it would be handled similar to ‘melee combat’ models that I had previously used for my wargames.

Below is a page from the manual for UMS II: Nations at War explaining the 20 variable equation used to decide combat between tactical units.

The 20 variable equation used to calculate combat in our UMS II: Nations at War (c. 1992). (Scan from user's manual). Click to enlarge.

I was envisioning something similar for Dinosaur Island until I happened to see this video (below) which includes a sequence (starting at 4:45) describing hypothetical Edmontosaurus and T. rex combat.

 

What I took away from the video was:

  • Edmontosaurus regalis  is bigger than I thought. I understood the size mathematically and that they could easily grow up to 13 meters (~ 40 feet) but it wasn’t until I saw this video that it was put in to perspective, “they were as big as a railroad car.” And, “they could look into a second story window.”
  • The tail of an adult ‘bull’ Edmontosaurus regalis  was a formidable weapon.
  • T. rex, like many predators, would have preferred to attack adolescent or sick animals rather than encounter a full-size, and potentially lethal, ‘bull’.
  • The correct pronunciation is Ed-MONT-o-saur-us. I’ve been saying it wrong for the last six months!

While there is still debate about whether T. rex was a predator or a scavenger (“Tyrannosaurus rex may have been an apex predator, preying upon hadrosaurs, ceratopsians, and possibly sauropods, although some experts have suggested it was primarily a scavenger. The debate over Tyrannosaurus as apex predator or scavenger is among the longest running in paleontology.” – Wikipedia) we know of at least once case where a T. rex tooth was found in an Edmontosaurus tail that had healed from the attack (“T. rex Tooth Crown Found Embedded in an Edmontosaurus Tail – Predatory Behaviour?” “The healed bone growth indicates that the duck-billed dinosaur survived this encounter.  In February of this year, researchers from the University of Kansas and Florida reported on the discovery of evidence of a scar on fossilised skin tissue from just above the eye of an Edmontosaurus.  In a paper, published in “Cretaceous Research”, the scientists concluded that this too was evidence of an attack of a T. rex on an Edmontosaurus.”). From this we can conclude that:

  • Sometimes T. rex did attack a living Edmontosaurus.
  • Sometimes the Edmontosaurus survived the attack.

Furthermore, we know that some T. rex had suffered bone injuries during their lifetime (“An injury to the right shoulder region of Sue resulted in a damaged shoulder blade, a torn tendon in the right arm, and three broken ribs. This damage subsequently healed (though one rib healed into two separate pieces), indicating Sue survived the incident.” – Wikipedia) consistent with the type of damage that a 5 meter long tail (described as being “like a baseball bat,” in the above, video) could inflict.

In other words, combat between T. rex and Edmontosaurus regalis was not a foregone conclusion. Indeed, it was entirely possible that the Edmontosaurus could walk away unscathed while the T. rex could suffer some broken bones.

The AI for Dinosaur Island will reflect this. When deciding if the T. rex will attack the AI will have to analyze the T. rex‘s chances of victory and potential injuries (risk versus reward) considering the size of the T. rex, the age of the T. rex, the health of the T. rex, the size of the prey, the age of the prey and the health of the prey. And, when the two dinosaurs actually engage in combat the tactics employed by both will probably decide the outcome.

If the T. rex can sneak up on the Edmontosaurus until they are within 50 meters or less and then close the distance with a rush the advantage would certainly lie with the predator. If the Edmontosaurus has forewarning of the impending attack it would either attempt to flee or stand its ground and assume a defensive posture.

There is reason to believe that both Edmontosaurus and T. rex had well developed olfactory bulbs in their brains and smell was an important sense for both animals. We will add wind (and wind direction) to Dinosaur Island and incorporate this into the AI routines that control the dinosaurs. Predators will attempt to get ‘upwind’ of their prey; prey animals will ‘sniff’ the wind and respond if they smell a T. rex even if they can’t see it (see “Dinosaurs, tanks and line of sight algorithms” here).

T. rex (AI) successfully locates and hunts prey on Dinosaur Island.

Thursday, August 1st, 2013

A T. rex named George successfully found, tracked, pursued and attacked an Edmontosaurus named Julie. Click to enlarge.

A T. rex named George successfully found, tracked, pursued and attacked an Edmontosaurus named Julie. Click to enlarge.

This blog is reposted from my Dinosaur Island blog here.

It has been said that nobody wants to see how politics or sausages are made. Artificial Intelligence (AI), for some, may also be added to that list. Today’s blog topic is about achieving an important milestone in the AI behind Dinosaur Island: a T. rex ‘looked’ around his virtual world (using a 3D line of sight algorithm), spotted potential prey (an Edmontosaurus regalis named Donna) pursued it using an optimized A* least weighted path algorithm that avoided steep slopes and boggy terrain (the attack was up hill) , then saw a more attractive target (an Edmontosaurus regalis named Julie), changed his pursuit and successfully overtook the prey.

This AI is unique and probably the first time such a series of events has been demonstrated in a 3D virtual world environment. Below are step by step screen captures showing the events:

Screen capture with all AI tracing turned on. There are three dinosaurs in this image. George sees Donna (dark red line), Donna is looking almost due east (dark red line) at the forest of Araucaria trees where she wants to go to eat, the cloud of yellow is the AI looking at alternative paths for Donna to climb up a hill, Julie is also looking at the same forest of Araucaria trees to her northeast and the AI (yellow path) has plotted the best route for her to climb the hill. (Click to enlarge).

Screen capture with all AI tracing turned on. There are three dinosaurs in this image. George sees Donna (dark red line), Donna is looking almost due east (dark red line) at the forest of Araucaria trees where she wants to go to eat, the cloud of yellow is the AI looking at alternative paths for Donna to climb up a hill, Julie is also looking at the same forest of Araucaria trees to her northeast and the AI (yellow path) has plotted the best route for her to climb the hill. (Click to enlarge).

This screen capture taken 10 seconds later shows Donna approaching the Araucaria forest to the east and Julie climbing the hill towards the same forest to the northeast. George now sees that Julie is the closest prey and switches his attack to her (dark red line) and races toward her. (Click to enlarge).

This screen capture taken 10 seconds later shows Donna approaching the Araucaria forest to the east and Julie climbing the hill towards the same forest to the northeast. George now sees that Julie is the closest prey and switches his attack to her (dark red line) and races toward her. (Click to enlarge).

 

Ten seconds later, George has closed the distance and has attacked Julie from the flank. (Click to enlarge).

Ten seconds later, George has closed the distance and has attacked Julie from the flank. (Click to enlarge).

It’s important to remember that Dinosaur Island will ship in full 3D; these screen shots are of the AI testing environment which is in 2D.

Now that we have created a ‘perfect killing’ AI we will have to make it ‘stupider’ by adding distractions and imperfections.

Are we making the dinosaurs too smart?

Saturday, July 27th, 2013

Traces of the artificial intelligence (AI) calculations for dinosaurs' optimal paths to food. The AI chooses paths with least steep slopes and avoids terrain (like swamps) that would unnecessarily slow the dinosaur down. Screen capture.

Traces of the artificial intelligence (AI) calculations for dinosaurs’ optimal paths to food. The AI chooses paths with least steep slopes and avoids terrain (like swamps) that would unnecessarily slow the dinosaur down. Screen capture.

This article is reposted from my Dinosaur Island blog here.

Yes, I know in Jurassic Park velociraptors could open doors (I would post a picture, but I’m worried about lawsuits so here’s a link to the clip instead). Luckily, on Dinosaur Island we don’t have any doors, kitchens, cages, Land Rovers or electric fences so we don’t have to worry about writing the artificial intelligence (AI) routines for the dinosaurs to deal with these objects.

Instead, we’re interested in if the dinosaur can see the food (I discussed 3D line of sight algorithms in, “Dinosaurs, tanks and light of sight algorithms,” here). And, if and only if, the dinosaur can see the food, how does the dinosaur get to the food? The fastest way for the dinosaur to get to the food can be solved using a least weighted path algorithm which I discussed in this blog here.

Now, the question is, “are we making the dinosaurs too smart?” The image at the top of today’s blog is a screen capture of the AI ‘looking’ at different ways to get to the objective (in this case, food that has been identified previously using the 3D line of sight algorithm). From literally thousands of possible routes (some only deviating by a meter from another possible route) the optimal, or fastest route across the landscape (avoiding steep hills and terrain that would slow the dinosaur down) is chosen.

Is this really how a dinosaur thought?

Probably not. What I suspect, and again, I’m a computer scientist, not a paleontologist, is that dinosaurs, especially a dinosaur pursuing prey, ran straight towards the target until it encountered something (an obstacle, a steep hill, swampy land) and only then considered going on an alternative path.

So, I will probably rewrite the AI so it’s not optimal. But for now, we’ve got some really smart predators on Dinosaur Island. Not opening doors smart. But smarter than the real thing.

SmallRule

Below is a screen capture of the optimized AI least weighted path algorithm.

Screen shot of optimal least weighted path algorithms (taking slope and terrain into effect). Dark red lines: 3D Line of sight (the food that the dinosaur is looking at). Orange lines: final path for dinosaur. Yellow areas: alternative paths that were evaluated and discarded. Screen capture (click to enlarge).

Screen shot of optimal least weighted path algorithms (taking slope and terrain into effect). Dark red lines: 3D Line of sight (the food that the dinosaur is looking at). Orange lines: final path for dinosaur. Yellow areas: alternative paths that were evaluated and discarded. Screen capture (click to enlarge).

How a dinosaur is not like a tank.

Tuesday, July 23rd, 2013

A cross-section view of the elevation that a T. Rex (named Bob) will have to traverse to get to an Edmontosaurus regalis (named Gertie). A very steep riverbank is between Bob and Gertie. Vertical axis: elevation in meters, horizontal axis: distance to goal in meters. Click to enlarge.

A cross-section view of the elevation that a T. Rex (named Bob) will have to traverse to get to an Edmontosaurus regalis (named Gertie). A very steep riverbank is between Bob and Gertie. Vertical axis: elevation in meters, horizontal axis: distance to goal in meters. Click to enlarge.

(This blog is reposted from my other site: Dinosaur-Island.com)

A few days ago I wrote about Dinosaurs, tanks and line of sight algorithms and how my previous work in modeling and simulations (M&S) for military wargames (specifically line of light algorithms) was applicable in Dinosaur Island. Today I am working on the models for dinosaur movement, speed, and what are called “least weighted path” algorithms.

You are probably familiar with least weighted path algorithms even if the term is new to you. Least weighted path algorithms are used to calculate routes in GPS units for cars or smartphones or for various internet sites like MapQuest, Google or Bing. When calculating a route there are a number of criteria to chose from. Does the user want:

  • The fastest route?
  • The shortest route?
  • The most fuel efficient route?
  • The route that avoids certain features (such as specific terrain, topography or extreme slopes)?

These options are what ‘weight’ the potential routes in a ‘least weighted’ path algorithm. For example, taking the Interstate is often the fastest route (least amount of time) but frequently is not the shortest route (least amount of distance).

Back in grad school I did my ‘comprehensive exam’ for PhD students on the subject of least weighted path algorithms. There are two very popular algorithms that solve this problem: one is Dijkstra’s algorithm (which is an exhaustive search solution) and the other is the A* algorithm, by Peter Hart, Nils Nilsson and Bertram Raphael. The primary difference between Dijkstra’s algorithm and the A* algorithm is that Dijkstra’s is guaranteed to return the optimal solution but it often takes the most time to calculate. The A* algorithm is much faster to calculate but is not guaranteed to return the optimal (or perfect) solution. In computer games we almost always use the A* algorithm because speed of calculations (especially over large maps) is more important than having the absolutely perfect route. At the bottom of this blog are links to descriptions of these algorithms and my research paper discussing an optimization of A*.

But, what does this have to do with dinosaurs and tanks?

When working on an M&S involving vehicles (like tanks) our primary concern is finding the fastest way for the tank to get from Point A to Point B. Sometimes, we want the tank to avoid entering into an area where the enemy (called OPFOR, or ‘Opposition Forces’ in military parlance) can hit it with their weapons (this is called ‘range of influence’ or ROI). This is illustrated below:

This image shows how MATE will calculate the least weighted path for a unit using roads, terrain and elevation and avoiding enemy weapons range for 'path weights'. (Click to enlarge.)

This image shows how MATE will calculate the least weighted path for a unit using roads, terrain and elevation and avoiding enemy weapons range for ‘path weights’. (Click to enlarge.)

We also want the tank to take advantage of roads and avoid swamps, rivers and ponds.The maximum speed of a tank traveling on a road is higher than the maximum speed of a tank traveling across a field. This is not the case with a T. rex or an Edmontosaurus regalis.

Another difference between tanks and dinosaurs is that as long as a tank has fuel it can go at 100% of their maximum speed (on a specific terrain) without problems. This simply isn’t the case with dinosaurs. As dinosaurs expend energy (and remember, energy is the ‘currency’ of Dinosaur Island, see: The currency of Dinosaur Island) they get tired and they can’t run as fast or as far. Also, dinosaurs run at their maximum speed only for short distances and only in extreme emergencies or at the very end of a hunt when they attack.

The illustration at the top of the blog also points out another major difference between tanks and dinosaurs: modern tanks (specifically the M1A1) has a published specification of being able to climb a 60 degree slope at a speed of 7.2 km/h (see here). That’s pretty impressive. It’s unlikely that that a T. rex could navigate a slope that steep. In the cross-section at the top of this blog we show the slopes that Bob, the T. rex, will encounter following a straight line to Gertie, the Edmontosaurus.

Clearly we’re going to need to use a least weighted path algorithm for calculating dinosaur movement so that they will avoid steep riverbanks and crevices. We also will create a table of ‘energy costs’ that dinosaurs will incur as they travel across various terrains (like swamp). These values will be used in our least weighted path algorithm.

SmallRule

Some links about least weighted path algorithms:

  • Dijkstra’s algorithm on Wikipedia has a very easy to follow description with a couple of cool animations to show how it works. Link here.

  • A* search algorithm on Wikipedia also has a couple of very nice animations to show how it works and pseudocode. Link here. By the way, I once sent Nils Nilsson an email asking him what the ‘A’ in A* stood for and he replied, “algorithm.” Now you know.

  • “An Analysis of Dimdal’s (ex-Jonsson’s) ‘An Optimal Pathfinder for Vehicles in Real-World Terrain Maps,‘ the paper for my Comprehensive Exam can be downloaded here.

Thirst or hunger? What is more important to a dinosaur?

Tuesday, July 16th, 2013

A drinking hadrosaur from a set of 1916 German collector cards "Tiere der Urwelt" (Animals of the Prehistoric World) by Heinrich Harder, from here. (Copyright expired.)

A drinking hadrosaur from a set of 1916 German collector cards “Tiere der Urwelt” (Animals of the Prehistoric World) by Heinrich Harder, from here. (Copyright expired.)

(This blog is reposted from my other site: Dinosaur-Island.com) What is more important to an animal that is very hungry and very thirsty: water or food? I just encountered this problem when writing the AI code for dinosaurs finding food and water. When ‘new’ dinosaurs are currently created in Dinosaur Island they haven’t yet eaten or drunk water so the stored values for every new animal is ’0′. Obviously, we can, and will, change that so ‘new’ dinosaurs are created with some values (these ‘new’ dinosaurs are not ‘just hatched’ dinosaurs but rather adult animals that are created and placed on Dinosaur Island for testing purposes).

Screen capture showing a very thirsty Edmontosaurus named Gertie who is now walking towards the closest observable water (click to enlarge).

Screen capture showing a very thirsty Edmontosaurus named Gertie who is now walking towards the closest observable water (click to enlarge).

The above screen capture from Dinosaur Island shows a very thirsty Edmontosaurus, named Gertie, that can see fresh water (solid blue line) in a nearby tributary. It is interesting to note that because of the height of the river bank Gertie can only see the water on the far side of the tributary. Nonetheless, Gertie is now moving towards the water she can see and will stop and drink as soon as she encounters it.

While working on the AI routines for a dinosaur finding water (see also Dinosaurs, tanks and line of sight algorithms here) I realized that some dinosaurs travel in herds and that where the herd goes is the decision of the leader. Consequently, we will need to have the ability to designate one dinosaur in a group as the leader and the others as followers. Were dinosaur herds matriarchal (led by the senior female, like elephants)? Were dinosaur herds patriarchal (like buffalo)? We just don’t know the answer to these questions but we will be able to explore the possibilities by using Dinosaur Island and observing the results.SmallRule

After posting yesterday’s blog I received an email from my friend, Siobhan, who wrote, “I think dinosaurs are closer to elephants than buffalo, and thus require a matriarch.  Please tell me who I need to pay off and how to see a matriarch implemented! (that’s me subtly casting a vote).

Bribery isn’t necessary. We believe Dinosaur Island should be flexible enough to allow the user to set up any scenario they wish. Today we added the following to the ‘Dinosaur Species’ dialog box:

The just added Herd Leadership variable (Matriarch, Patriarch or Neither in bottom right). Edmontonsosaurus, by default, is now a matriarchal herd. Screen capture (click to enlarge).

The just added Herd Leadership variable (Matriarch, Patriarch or Neither in bottom right). Edmontonsosaurus, by default, is now a matriarchal herd. Screen capture (click to enlarge).

Edmontosaurus regalis is now, by default, a matriarchal herd which means that the senior female decides where the herd goes, where it eats, where it drinks, where it rests and how to avoid predators. The default for Tyrannosaurus rex is ‘Neither’ or no herd leadership.

 

Dinosaurs, tanks and line of sight algorithms

Sunday, July 14th, 2013

A screen capture of MATE (Machine Analysis of Tactical Environments). Note the blue armor unit (labeled '0') just left of the center of the screen. Click to enlarge.

A screen capture of MATE (Machine Analysis of Tactical Environments). Note the blue armor unit (labeled ’0′) just left of the center of the screen. Click to enlarge.

MATE screen capture showing the calculated line of sight of Armor Unit 0 (click to enlarge).

MATE screen capture showing the calculated line of sight of Armor Unit 0 (click to enlarge).

 

Adjusting the height of an object in MATE to calculate its line of sight.

Adjusting the height of an object in MATE to calculate its line of sight.

(This article is cross-posted in my “Dinosaur Island” blog).

My doctoral research involved ‘computational military reasoning’¹, a phrase that I coined that means, “computers making tactical combat decisions.” My research was supported in part by DARPA (Defense Advanced Research Projects Agency, the people that really invented the internet). I was able to demonstrate in my MATE (Machine Analysis of Tactical Environments) program that a computer could make what computer scientist John Laird, called, “Human-Level” decisions and could do so very rapidly (see here for more information about MATE). Indeed, my friend, retired Lieutenant Colonel Mike Robel, once said that a computer Course of Action (COA) program like MATE was vitally important because “it’s hard to make your best decision when someone is trying to kill you.”

When I first began working on the design of Dinosaur Island I joked with some colleagues that the AI (Artificial Intelligence) wouldn’t be too difficult as I would just use my MATE program and cross out ‘tank’ and insert ‘triceratops’. There is some truth to that, as we will see today.

One of the first AI routines that I’m adding to Dinosaur Island enables the dinosaurs to find food and water. How does a dinosaur do this? Well, there are actually three ways that a dinosaur finds food and water:

  1. The dinosaur looks around for food or water.
  2. The dinosaur smells food or water.
  3. The dinosaur remembers where it last found food or water.

Right now we’re interested in the first option: looking around (this will also come in handy for spotting predators, too). How does a computer dinosaur ‘look around’?

Luckily, I’ve already solved this problem some years ago in grad school with TIGER (the predecessor of MATE). The solution is a 3D Bresenham line algorithm (I’m not going to write out the algorithm because you can see it here). The Bresenham line algorithm was invented by Jack Bresenham in 1962 when he was working at IBM and it was originally used for controlling a pen plotter (a type of printer that would pick up colored pens with a mechanical arm and draw on rolls of paper). However, if we have a 3D landscape (and we do in Dinosaur Island), we can take Bresenham’s two dimensional algorithm and extrapolate it into three dimensional space to determine if the terrain blocks an object’s view in a particular direction. If we do this in all 360 degrees and plot what can be seen (and what is obscured) we’ll have an image like the second screen shot, above.

Now, in MATE, I had to add a little dialog box so the user could input the height of the observer (the third screen shot showing the height of a tank). But in Dinosaur Island I realized that not only the height of every dinosaur can be calculated (just like the length and weight) but that taller dinosaurs, like the giant sauropods, might have a great advantage because they’ll be able to see farther. This will help them find food and water and see predators before the predators can see them.

Next, I’ll work on the ‘smell algorithm’ which will involve wind direction and speed. Luckily, I solved that problem a long time ago with a game/simulation I did in 1989 called, “UMS II: Nations at War.”

SmallRule

1) My doctoral thesis, “TIGER: An Unsupervised Machine Learning Tactical inference Generator,” can be download here. TIGER was an earlier version of MATE.

Thoughts about dinosaur thinking.

Friday, June 28th, 2013

A dinosaur brain. Image copyright http://www.Pharynula.org

A dinosaur brain. Image copyright http://www.Pharynula.org

I haven’t been posting recently in the 21st Century AI blog because all of my efforts are over at Dinosaur Island . So, if you haven’t done so already, I would like to encourage you to click on the last link and take a look.

I’ve just finished the basic tools for creating the island, indicating terrain types, ‘planting vegetation’ and am now working on the food chain models. After that the next job is actually creating the AI for the dinosaurs.

I’ve been thinking: after creating AI that can perform tactical analysis as quickly and accurately as human subject matter experts (see TIGER: An unsupervised machine learning tactical inference generator) writing the AI that controls giant herbivores and T. rex (the jury is still out if T. rex was a hunter or a scavenger) seems like it will be pretty easy. Indeed, my thoughts last night were that I need to keep the AI really simple and not to over-think the problem.

In turn-based game AI (like chess) we use the term ‘ply’ to indicate one move by one side. For example, if in chess, white makes a move and then black makes a move that is “two plies”. When Garry Kasparov was asked how many moves ahead he thinks he replied, “… that it depended on the positions of the pieces. “Normally, I would calculate three to five moves,” he said. “You don’t need more…. But I can go much deeper if it is required.” For example, in a position involving forced moves, it’s possible to look ahead as many as 12 or 14 moves, he noted.” (Ivars Peterson’s MathTrek). With dinosaur AI we’re definitely looking at 1-ply thinking; that is to say, dinosaurs didn’t think ahead at all.

I will probably implement some form of ‘finite state machine’ (FSM) AI for the dinosaurs. With FSMs the dinosaur will always be in some ‘state’ (no, not Montana or Iowa). Typical states for a dinosaur are: finding food, eating food, sleeping and reproducing. One of the problems with FSMs is the transition from one state to another. Frequently, NPCs (Non Player Characters) in games are driven by FSMs. This is why NPCs often behave so ‘woodenly’ . A guard will either just stand in front of the cave entrance or march back and forth until something ‘trips’ (frequently it’s the player crossing an invisible tripwire) and the guard transitions to another state (attack the player). However, I’m thinking that dinosaurs really behaved that way: they had one thought – or better, ‘goal’ – at a time and that was it. No reasoning. No advanced planning. No cunning. Just input and reaction.

I’ve been reading a lot about dinosaurs recently (I really recommend The Complete Dinosaur, by the way) and looking at castings and reconstructions of dinosaur brains. Dinosaur brains were very primitive. The largest part of their brains were involved with input (usually smell but sometimes visual). They just didn’t have the resources for deep analysis.

So, for dinosaur AI, the key is going to be KISS: Keep It Simple Stupid.

 

AI for Dinosaurs!

Wednesday, May 15th, 2013

Dinosaur Island

Dinosaur Island

I’m starting work on the AI for a new (old) project called Dinosaur Island link here. The idea is to update a game I did in 1988 and port it to Windows and Xbox using XNA.  The original game, Designasaurus, was published by Britannica Software and sold about a gazillion units.

This is more than just a straight port and update. Of course the dinosaurs are going to be in 3D, but the AI is going to very complex. It’s really just now dawning on me how complex it’s going to be.

Anyway, I’m going to be posting my design notes on the AI over at the Dinosaur Island blog. Hope you stop by for a visit.