Friday, January 18, 2013
Summary
Surely enough, I did manage to get more bang for my buck in terms of hours today
I worked on both AI as well as the interface (again). They're intimately related, obviously, since I'm trying to implement an interface for bossing your ships around.
In the past, I've talked at length about high-level AI versus low-level AI, and have generally made a very strong distinction between the two. Today, you'll notice that I just worked on "AI," not HLAI or LLAI...and yes, this minor issue of semantics was actually another moderately-sized breakthrough for me.
They're the same thing. Ok, maybe at this point you'll write me off as stupid and say it doesn't matter what you call it, it's an issue of semantics. But I think it's more than that. Previously, I really, deeply believed in separation of low-level and high-level AI. Maybe I even managed to convince readers of it. I believed very strongly that the mind does one thing, and the body does another. The mind makes a plan, reasons about the world, evaluates consequences, goals, values, and so on. And then the body is this boring thing that just carries out orders that the mind has constructed (biologists can protest this remark in the off-topic section if they so desire..). That was the reasoning that led me to a strong separation. So strong, in fact, that the two systems were separated at the highest level possible in my engine: different directories in the source tree.
And then, today, I realized how absolutely inconvenient I was making things. Information was getting laboriously translated through the wall between LLAI and HLAI, solely for the purpose of allowing the two to speak freely, which, indeed, suggests that they should never have been separated in the first place. That's when I started to realize that they shouldn't be separate. The mind constructs a plan, but in doing so, it careful considers the body that will implement its plan. The plan and that which will carry out the plan are intimately related! Only with great pain can they be separated. But it goes the other way as well: the body does not receive a plan from the mind and carry it out. No, the body must be given the plan in excruciating detail (discrete electrical signals) to carry it out. So the mind is really the one implementing the plan as well as constructing it (duh). But, it's important to realize that, at every level of granularity, the construction of the plan refers back to the level before it. It is not realistic to say that one constructs a neat and tidy plan at the high level, then hands it to the next level, which converts it to the next form, and so on, until we have a set of electrical signals (aka thruster impulse vectors in-game). Every level is constantly querying higher levels to make sure that the plan is being implemented correctly. Why? Because the plan must be
responsive. It must adapt to external factors, and we must constantly make sure that we're carrying it out correctly. We can't just queue up a day's worth of electrical signals and then expect to execute them to get the desired effect. And
that's why low-level and high-level cannot be separate. The high-level generates the low-level, yes, but the low-level must be in constant communication with the high-level in order to understand what is to be achieved. In this sense, it is just one big process. AI. Not HLAI, not LLAI. Just AI. And that, my friends, is
simple and clean.
(...subtle Kingdom Hearts reference?!?)
Sorry, that digression really did have to do with game programming, I promise. So I spent a lot of today mutilating yet another system in search of simplicity. And I found it
Thanks to that, the command interface is a lot closer to functioning.
So, excuse me for not seeing that AI should be unified in the first place. My bad. Now I know. One step closer to sentient computers.
Hour Tally
Coding: 5.40
Composing: 0.47
Internet: 4.53
Testing: 1.84
Total Logged Time: 12.24