Artificial intelligence is my long-term hobby right now. I'm in the midst of designing a highly ambitious programming feat. It is an object-oriented language compiler that can be used for just about anything that runs in real time, including games.
So why design this language? Because I'll have it forever. Both Nibbler and Legend of the Cool Sword (see Ganglion) will use this engine.
I have been interested in this hobby for some time...since back in middle school. The design specs for the language took years to plan, but I've only actually done coding on it for a year, and it compiles just fine for Nibbler. Whether or not it works depends on the testing results that I will generate in the next few months.
If you're a TA, chances are you either are thinking, "Huh?" or "That's really cool!" with the most probable line of thought being the former. Well, hey, somebody's got to do it. This language makes HTML look like a sissy language.

See that picture? I draw all my own stuff that you see on these web pages. That's technically another hobby of mine, but I draw sporadically. This drawing and others constitute a series of sprites that my language animates. Below is an example of the frames involved when a crock, a game character, opens its mouth.

The code for the mouth-opening sequence is this:
:check sprite = turnru(CROCK, CROCK+1, dir); wait (4); chow = target (x1, y1), (x2, y2), (flags +B); if (!chow) goto check; if (chow.tag != T_EDIBLE) goto check; sprite = turnru(CROCKOPEN, CROCKOPEN+1, dir); run = 16; :openwide move [1, dir]; addvect (mytail.x, mytail.y), [1, dir]; run -= 1; wait (1); if (run) goto openwide; sprite = turnru(CROCKGAPING, CROCKGAPING+1, dir);
You can see that the terms CROCK, CROCKOPEN, and CROCKGAPING are defined macros for the sprites in the animation sequence. The wait command is used to signify the period of time, in frames (1 frame = 1/60th of a second), to wait before the object changes its activity. All other commands control the flow of interpretation, and variables are declared as needed.
The crocodile is not the only thing that animates. There may
be up to a thousand different objects that run at the same time. For
this reason, I invented the language to handle a large number of
simultaneous real-time events. Conventional languages, such as C++,
allow only for limited multitasking. Mine allows for practically
unlimited object behavior. Among some of the sharper specs:
Why am I not a CS major? Because CS majors have to take a class for this. An engineer is paid to solve a diversity of problems and design several things without the aid of a class. Without dissing CS majors too much, I just think that although there's a lot you can do with programming, designing and engineering the algorithms is the most important part. Bad design could have ruined my language from the very start--and so far, the testing process is flowing like milk.
It's possible I'll publish the artificial intelligence files along with the game itself. That way, more people could be interested in AI should they decide to change the way the game interacts.
Okay, I've said enough about the hobby without going into the
microscopic details. If you're bored (and have EVERY right
to be), take a hike on back to the main page with the link below.
Back to top
Contact me
about Nibbler or artificial intelligence
This page was created by Chris Allen. Last
revised: September 18, 2000.
Since this page has to be all official and everything, I may as well
state some copyright symbol © or something. Of course, that
really means a lot to intellectual property rights if there is
nothing to take!