I saw down with the source code for Storytron and went to work examining how I would implement the change required for Siboot. There’s only one change: Sentence structures must be made plastic. Currently the WordSocket assignments for a Sentence are made by the Verb: each Verb has a fixed array called ’socketData’ that defines the WordSockets required for any Sentence controlled by that Verb.
But now I must modify the system so that, when a specific Verb is added to the Sentence, that Verb must add its characteristic WordSockets to the Sentence. For example, consider the simple Verb ‘declare’. It requires a 3DirObject and a 4Verb. That 4Verb is entered at runtime, so the system cannot know what WordSockets will be active until the last Verb has been entered. Let’s use this sentence as an example:
I have added numerals indicating the order in which the Words are added to the sentence. When Word 3 (here, the verb ‘trust’) is about to be added, the system has no way of knowing that WordSockets 4, 5, and 6 will require values. As soon as the verb ‘trust’ is placed in WordSocket 3, the system must add the WordSocket values of WordSockets 4, 5, and 6 to the current Sentence. It will do so by consulting the socketData for the Verb ‘trust’ and inserting its values into the Sentence. But this raises a new complexity, as shown in this table:
WordSocket | Sentence | declare | trust |
---|---|---|---|
Subject | Subject | ||
Verb | Verb | ||
DirObject | DirObject | ||
Verb2 | Verb | Verb | |
Subject2 | Subject | ||
DirObject2 | DirObject | ||
Quantifier | Quantifier |
Note how the WordSockets for ‘trust’ have to be rearranged to fit into the Sentence structure. This is going to be a mess.
I’m feeling daunted by this. I look over all the source code and ask myself, am I competent to make changes like this? Will the whole thing just blow up in my face? I am reluctant to take the plunge.
9:30 PM
It just got worse: I realized that there’s absolutely no way to design the scripts to devise such Plans. If an Actor is reacting to an Event, how can he plan through a second Verb? The Option, for example, might be ‘demand’, taking as a subclause the verb ‘reveal auracount’ – but how could he figure that Plan? Sure, he could use PickBestVerb, but the internal scripts for that would be hairy hell. This is beginning to look just too tricky.
Is there an alternative? Could I somehow hardwire a bunch of double-clause Verbs into a multitude of single-clause Verbs? That completely throws away all the combinatorial power of the Deikto system – but is it necessary? That’s what I’ll research tomorrow.