-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAI manual.htm
763 lines (671 loc) · 40 KB
/
AI manual.htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 9">
<meta name=Originator content="Microsoft Word 9">
<link rel=File-List href="./AI%20manual_files/filelist.xml">
<title>Bridge Commander</title>
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Author>Totally Games</o:Author>
<o:Template>Normal</o:Template>
<o:LastAuthor>Totally Games</o:LastAuthor>
<o:Revision>2</o:Revision>
<o:TotalTime>51</o:TotalTime>
<o:Created>2002-03-13T23:12:00Z</o:Created>
<o:LastSaved>2002-03-13T23:12:00Z</o:LastSaved>
<o:Pages>3</o:Pages>
<o:Words>1382</o:Words>
<o:Characters>7882</o:Characters>
<o:Company>Totally Games</o:Company>
<o:Lines>65</o:Lines>
<o:Paragraphs>15</o:Paragraphs>
<o:CharactersWithSpaces>9679</o:CharactersWithSpaces>
<o:Version>9.3821</o:Version>
</o:DocumentProperties>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:TrackRevisions/>
<w:DoNotShowRevisions/>
</w:WordDocument>
</xml><![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;
mso-font-charset:2;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:0 268435456 0 0 -2147483648 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
h1
{mso-style-next:Normal;
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:1;
font-size:12.0pt;
font-family:"Times New Roman";
mso-font-kerning:0pt;}
h3
{mso-style-next:Normal;
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:3;
font-size:13.0pt;
font-family:Arial;}
p.MsoBodyText, li.MsoBodyText, div.MsoBodyText
{margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
tab-stops:3.0in;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
color:black;}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{color:purple;
text-decoration:underline;
text-underline:single;}
ins
{mso-style-type:export-only;
text-decoration:none;}
span.msoDel
{mso-style-type:export-only;
mso-style-name:"";
text-decoration:line-through;
display:none;
color:red;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{mso-list-id:103694272;
mso-list-type:hybrid;
mso-list-template-ids:1450454386 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-tab-stop:.25in;
mso-level-number-position:left;
margin-left:.25in;
text-indent:-.25in;}
@list l1
{mso-list-id:1262684036;
mso-list-type:hybrid;
mso-list-template-ids:69242108 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
{mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2
{mso-list-id:1412045063;
mso-list-type:hybrid;
mso-list-template-ids:-1967486334 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l2:level1
{mso-level-tab-stop:.25in;
mso-level-number-position:left;
margin-left:.25in;
text-indent:-.25in;}
@list l3
{mso-list-id:1672610445;
mso-list-type:hybrid;
mso-list-template-ids:758270114 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l3:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l4
{mso-list-id:1731920174;
mso-list-type:hybrid;
mso-list-template-ids:-1126140752 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l4:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l5
{mso-list-id:1801415889;
mso-list-type:hybrid;
mso-list-template-ids:79957124 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l5:level1
{mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level2
{mso-level-start-at:0;
mso-level-legal-format:yes;
mso-level-text:"%1\.%2";
mso-level-tab-stop:.5in;
mso-level-number-position:left;
margin-left:.5in;
text-indent:-.25in;}
@list l5:level3
{mso-level-legal-format:yes;
mso-level-text:"%1\.%2\.%3";
mso-level-tab-stop:.75in;
mso-level-number-position:left;
margin-left:.75in;
text-indent:-.5in;}
@list l5:level4
{mso-level-legal-format:yes;
mso-level-text:"%1\.%2\.%3\.%4";
mso-level-tab-stop:.75in;
mso-level-number-position:left;
margin-left:.75in;
text-indent:-.5in;}
@list l5:level5
{mso-level-legal-format:yes;
mso-level-text:"%1\.%2\.%3\.%4\.%5";
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
margin-left:1.0in;
text-indent:-.75in;}
@list l5:level6
{mso-level-legal-format:yes;
mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6";
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
margin-left:1.0in;
text-indent:-.75in;}
@list l5:level7
{mso-level-legal-format:yes;
mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7";
mso-level-tab-stop:1.25in;
mso-level-number-position:left;
margin-left:1.25in;
text-indent:-1.0in;}
@list l5:level8
{mso-level-legal-format:yes;
mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8";
mso-level-tab-stop:1.25in;
mso-level-number-position:left;
margin-left:1.25in;
text-indent:-1.0in;}
@list l5:level9
{mso-level-legal-format:yes;
mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9";
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
margin-left:1.5in;
text-indent:-1.25in;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
-->
</style>
</head>
<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
<div class=Section1>
<h3 align=center style='text-align:center'>Bridge Commander</h3>
<h3 align=center style='text-align:center'>AI Editor Instruction Manual</h3>
<h1>TOC</h1>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l5 level1 lfo1;
mso-list-change:"%1\:1\:0\:\." "Totally Games" 20020206T1722;tab-stops:list .5in'><![if !supportLists]>1.<span
style='font:7.0pt "Times New Roman"'> </span><![endif]>Introduction</p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l5 level1 lfo1;
mso-list-change:"%1\:2\:0\:\." "Totally Games" 20020206T1722;tab-stops:list .5in'><![if !supportLists]>2.<span
style='font:7.0pt "Times New Roman"'> </span><![endif]>Requirements</p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l5 level1 lfo1;
mso-list-change:"%1\:3\:0\:\." "Totally Games" 20020206T1722;tab-stops:list .5in'><![if !supportLists]>3.<span
style='font:7.0pt "Times New Roman"'> </span><![endif]>Menu
Buttons</p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l5 level1 lfo1;
mso-list-change:"%1\:4\:0\:\." "Totally Games" 20020206T1722;tab-stops:list .5in'><![if !supportLists]>4.<span
style='font:7.0pt "Times New Roman"'> </span><![endif]>Tutorial</p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l5 level1 lfo1;
mso-list-ins:"Totally Games" 20020211T1606;tab-stops:list .5in'><![if !supportLists]><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:06">5.<span
style='font:7.0pt "Times New Roman"'> </span></ins><![endif]><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:06">Conditionals<o:p></o:p></ins></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l5 level1 lfo1;
mso-list-ins:"Totally Games" 20020206T1809;tab-stops:list .5in'><![if !supportLists]><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:09">6.<span
style='font:7.0pt "Times New Roman"'> </span></ins><![endif]><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:09">Conclusion<o:p></o:p></ins></p>
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<h1>1.0 Introduction</h1>
<p class=MsoNormal>This document will explain how to build <span class=msoDel><del
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:14">AIs</del></span><ins
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:14">AIs</ins> for ships,
bases and other objects in Bridge Commander. You will find the editor works to
build <span class=msoDel><del cite="mailto:Erik%20Novales"
datetime="2002-02-19T18:14">AIs</del></span><ins cite="mailto:Erik%20Novales"
datetime="2002-02-19T18:14">AIs</ins> much like building a flow chart, allowing
you to set different priorities and depending on the situation<ins
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:10">.</ins><span
class=msoDel><del cite="mailto:Erik%20Novales" datetime="2002-02-19T18:10"> </del></span></p>
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<h1>2.0 Requirements</h1>
<p class=MsoNormal style='mso-list:none;mso-list-ins:Unknown 19000000T0000'>You
will need the Python interpreter installed on your computer. It can be obtained
in a variety of ways, including at <a href="http://www.python.org/">www.python.org</a>.<ins
cite="mailto:Kevin%20Deus" datetime="2002-02-06T17:50"><span
style="mso-spacerun: yes"> </span>You will also need Python MegaWidgets: see </ins><ins
cite="mailto:Kevin%20Deus" datetime="2002-02-06T17:55">pmw.sourceforge.net.<span
style="mso-spacerun: yes"> </span>During development, we used Python version
1.52, and PMW version </ins><ins cite="mailto:Kevin%20Deus"
datetime="2002-02-06T17:56">0.8.4.</ins></p>
<h1><![if !supportEmptyParas]> <![endif]><o:p></o:p></h1>
<h1>3.0 Menu Buttons</h1>
<p class=MsoNormal>Here is a quick explanation of the options you have
available from the menus.</p>
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoNormal><b>File</b> Here you can Load, Save and Quit, which are
all self-explanatory. Clear All will clear the editors main window. Warning:
you will not be prompted to save you work when clearing, quitting or loading a
new AI, so be sure to save often.</p>
<p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoNormal><b>Create AI</b> This is the most important function of
the editor. Here you can add a variety of AI components to your AI. These will
be explained in more detail later, but here is a quick run down</p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l3 level1 lfo4;
mso-list-change:\F0B7 "Totally Games" 20020206T1722;tab-stops:list .5in left 3.0in'><![if !supportLists]><span
style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b>Conditional</b> Use this to check the environment
around the AI. Such as: what other ships are in the same set, how much damage
has been taken, etc. This AI will link to another one, and when the condition
is met it will activate (or deactivate) the AI component it is attached to.</p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l3 level1 lfo4;
mso-list-change:\F0B7 "Totally Games" 20020206T1722;tab-stops:list .5in left 3.0in'><![if !supportLists]><span
style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b>Scripted (plain)</b> This AI component will tell
the ship with the AI to do something, such as: stay in place, circle another
object, flee from an object, etc.</p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l3 level1 lfo4;
mso-list-change:\F0B7 "Totally Games" 20020206T1722;tab-stops:list .5in left 3.0in'><![if !supportLists]><span
style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b>Preprocessing</b> <span style='color:black'><span
class=msoDel><del cite="mailto:Kevin%20Deus" datetime="2002-02-06T17:56">Um,
</del></span><ins
cite="mailto:Kevin%20Deus" datetime="2002-02-06T17:56">Preprocessing <span
class=msoDel><del cite="mailto:Erik%20Novales" datetime="2002-02-19T18:14"><ins
datetime="2002-02-06T17:56">AIs</ins></del></span></ins><ins
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:14">AIs</ins><ins
cite="mailto:Kevin%20Deus" datetime="2002-02-06T17:56"> are special scripts
that run in addition to the <span class=msoDel><del cite="mailto:Erik%20Novales"
datetime="2002-02-19T18:14"><ins datetime="2002-02-06T17:56">AI</ins></del></span></ins><ins
cite="mailto:Kevin%20Deus" datetime="2002-02-06T17:57"><span class=msoDel><del
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:14">s</del></span></ins><ins
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:14">AIs</ins><ins
cite="mailto:Kevin%20Deus" datetime="2002-02-06T17:57"> they contain.<span
style="mso-spacerun: yes"> </span>An example is the weapon firing preprocess:
whenever AI contained by the firing preprocess is running, the ship will </ins><ins
cite="mailto:Kevin%20Deus" datetime="2002-02-06T17:58">try to fire its weapons.</ins></span></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l3 level1 lfo4;
mso-list-change:\F0B7 "Totally Games" 20020206T1722;tab-stops:list .5in left 3.0in'><![if !supportLists]><span
style='font-family:Symbol;color:black'>·<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b><span style='color:black'>Priority list</span></b><span
style='color:black'> As its name suggests, use this AI component to set the
priorities of other AI components.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l3 level1 lfo4;
mso-list-change:\F0B7 "Totally Games" 20020206T1722;tab-stops:list .5in left 3.0in'><![if !supportLists]><span
style='font-family:Symbol;color:black'>·<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b><span style='color:black'>Sequence</span></b><span
style='color:black'> As its name suggests, use this to have other AI
components happen in order.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l3 level1 lfo4;
mso-list-change:\F0B7 "Totally Games" 20020206T1722;tab-stops:list .5in left 3.0in'><![if !supportLists]><span
style='font-family:Symbol;color:black'>·<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b><span style='color:black'>Random</span></b><span
style='color:black'> As its name suggests, use this to have other AI
components occur in a random order.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l3 level1 lfo4;
mso-list-change:\F0B7 "Totally Games" 20020206T1722;tab-stops:list .5in left 3.0in'><![if !supportLists]><span
style='font-family:Symbol;color:black'>·<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b><span style='color:black'>Compound</span></b><span
style='color:black'> <span class=msoDel><del cite="mailto:Kevin%20Deus"
datetime="2002-02-06T17:58">Um,
</del></span><ins cite="mailto:Kevin%20Deus"
datetime="2002-02-06T17:58">These are just AI files that have been saved
elsewhere.<span style="mso-spacerun: yes"> </span>If you create an AI and you
want to use that AI within another, larger AI, then you can insert it as a
Compound AI.</ins><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l3 level1 lfo4;
mso-list-change:\F0B7 "Totally Games" 20020206T1722;tab-stops:list .5in left 3.0in'><![if !supportLists]><span
style='font-family:Symbol;color:black'>·<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b><span style='color:black'>Special</span></b><span
style='color:black'> These are common but specialized AI components that have
been pre-built for your convenience. The most common is the Avoid Obstacles
Preprocess, which will keep your ship from hitting other objects in the set. <o:p></o:p></span></p>
<p class=MsoNormal style='tab-stops:3.0in'><b><span style='color:black'>Advanced</span></b><span
style='color:black'> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l4 level1 lfo5;
mso-list-change:\F0B7 "Totally Games" 20020206T1722;tab-stops:list .5in left 3.0in'><![if !supportLists]><span
style='font-family:Symbol;color:black'>·<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b><span style='color:black'>Edit Pre-AI Save Text</span></b><span
style='color:black'> <span class=msoDel><del cite="mailto:Kevin%20Deus"
datetime="2002-02-06T17:59">Um,
</del></span><ins cite="mailto:Kevin%20Deus"
datetime="2002-02-06T17:59">AI files are just scripts.<span
style="mso-spacerun: yes"> </span>This allows you to edit the beginning of the
script.<span style="mso-spacerun: yes"> </span>This is useful if you want to
pass additional arguments to an AI file</ins><ins cite="mailto:Kevin%20Deus"
datetime="2002-02-06T18:00">s Create() function.</ins><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l4 level1 lfo5;
mso-list-change:\F0B7 "Totally Games" 20020206T1722;tab-stops:list .5in left 3.0in'><![if !supportLists]><span
style='font-family:Symbol;color:black;mso-bidi-font-weight:bold'>·<span
style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b><span style='color:black'>AI Distr<ins
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:11">i</ins><span
class=msoDel><del cite="mailto:Erik%20Novales" datetime="2002-02-19T18:11">u</del></span>b<span
class=msoDel><del cite="mailto:Erik%20Novales" datetime="2002-02-19T18:11">i</del></span>utes
Building</span></b><span style='color:black'> - <span class=msoDel><del
cite="mailto:Kevin%20Deus" datetime="2002-02-06T18:00">Um,
</del></span><ins
cite="mailto:Kevin%20Deus" datetime="2002-02-06T18:00">An extremely painful
feature that should probably be avoided.<span style="mso-spacerun: yes">
</span><span class=msoDel><del cite="mailto:Totally%20Games"
datetime="2002-02-11T16:11"><ins datetime="2002-02-06T18:00">=)<span
style="mso-spacerun: yes"> </span>It</ins></del></span></ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:11">=)<span
style="mso-spacerun: yes"> </span>It</ins><ins cite="mailto:Kevin%20Deus"
datetime="2002-02-06T18:00"> requires some <span class=msoDel><del
cite="mailto:Totally%20Games" datetime="2002-02-11T16:11"><ins
datetime="2002-02-06T18:00">hand-processing</ins></del></span></ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:11">hand processing</ins><ins
cite="mailto:Kevin%20Deus" datetime="2002-02-06T18:00"> of the AI file to work
properly.<span style="mso-spacerun: yes"> </span>If its enabled, the game
will take a little longer to create your AI, distributing its work across
several frames, so that it doesn</ins><ins cite="mailto:Kevin%20Deus"
datetime="2002-02-06T18:01">t hitch the <span class=msoDel><del
cite="mailto:Totally%20Games" datetime="2002-02-11T16:11"><ins
datetime="2002-02-06T18:01">framerate</ins></del></span></ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:11">frame rate</ins><ins
cite="mailto:Kevin%20Deus" datetime="2002-02-06T18:01"> too badly on any one
frame.</ins><b><o:p></o:p></b></span></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l4 level1 lfo5;
mso-list-change:\F0B7 "Totally Games" 20020206T1722;tab-stops:list .5in left 3.0in'><![if !supportLists]><span
style='font-family:Symbol;color:black'>·<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b><span style='color:black'>Advanced Features</span></b><span
style='color:black'> - <span class=msoDel><del cite="mailto:Kevin%20Deus"
datetime="2002-02-06T18:01">Um,
</del></span><ins cite="mailto:Kevin%20Deus"
datetime="2002-02-06T18:01">Enables Scripted AI<span class=msoDel><del
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:11"><ins
datetime="2002-02-06T18:01"></ins></del></span>s that should normally not be <span
class=msoDel><del cite="mailto:Totally%20Games" datetime="2002-02-11T16:11"><ins
datetime="2002-02-06T18:01">available,</ins></del></span></ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:11">available</ins><ins
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:11">, </ins><ins
cite="mailto:Kevin%20Deus" datetime="2002-02-06T18:01"><span class=msoDel><del
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:11"><span
style="mso-spacerun: yes"> </span></del></span><ins datetime="2002-02-06T18:01">unimplemented
features in some of the Compound AI<span class=msoDel><del
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:11"><ins
datetime="2002-02-06T18:01"></ins></del></span>s, and the Edit Post-AI Save
Text</ins><ins datetime="2002-02-06T18:02"> button in AI configuration.<span
style="mso-spacerun: yes"> </span>Advanced Features should normally be Off
(not checked).</ins></ins><o:p></o:p></span></p>
<p class=MsoNormal style='tab-stops:3.0in'><b><span style='color:black'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></b></p>
<p class=MsoNormal style='tab-stops:3.0in'><b><span style='color:black'>4.0
Tutorial<o:p></o:p></span></b></p>
<p class=MsoNormal style='tab-stops:3.0in'><span style='color:black'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=MsoBodyText>So, how the heck do you make an AI? This little tutorial
will teach you how to make a basic <span class=msoDel><del
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:11"><span
style="mso-spacerun: yes"> </span></del></span>combat AI:</p>
<p class=MsoBodyText><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoBodyText>Open the AI editor by double clicking the AIEditor.py
file. Open the Create AI menu and select (compound). You will notice a
white box with a purple outline appear in the editors main window (it says compound).
You can hold left click on this box and move it around the main window. Right
click on this box.</p>
<p class=MsoBodyText><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoBodyText>Right clicking on this box will give you more detail about
the AI component and allow you to modify it. You can rename this component at
the top of the detail window by typing over the word compound. Rename this AI
component ChickenKiller (each component must have its own name, and we may
have more AI components named compound).</p>
<p class=MsoBodyText><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoBodyText>Press the select file button, then select
BasicAttack.py. You will see the detail window change, as this component is
now a basic attack AI component. You will see options such as Difficulty,
MaxFiringRange, UseCloaking and others. </p>
<p class=MsoBodyText><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoBodyText>Next you will have to name the target for this AI. In the
window next to the words Function Arguments, type the following: </p>
<p class=MsoBodyText><span style='mso-tab-count:1'> </span>pShip,
Chicken</p>
<p class=MsoBodyText>Click OK at the bottom of the detail window to return to
the main window. This AI will now cause the ship it is assigned to attack any
ship named Chicken.</p>
<p class=MsoBodyText><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoBodyText>Good. But when you put this AI in the game you notice your
ChickenKiller ship seems to enjoy flying into the star base and planets. No
problem. Open the Create AI menu again and open the special sub-menu, and
select Avoid Obstacles Preprocess. An AI Component with a green border will
appear in the main window (right click to re-name it). It may cover your
ChickenKiller component, if so left click it and drag it to move it away. You
will notice a little hat on the top of this component. Right click on this hat
and drag to draw a line to the ChickenKiller component. Your AI will now make
a point of avoiding collisions before attacking Chicken.</p>
<p class=MsoBodyText><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoBodyText>Great, but what if you want more than one enemy to attack?
Simple. One option is to just add the next target to your basic attack. i.e.:</p>
<p class=MsoBodyText><span style='mso-tab-count:1'> </span>pShip,
Chicken 1, Chicken 2</p>
<p class=MsoBodyText>You can also set the priority or order Chicken 1 and
Chicken 2 are attacked. Lets try priority. </p>
<p class=MsoBodyText><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoBodyText>Select Create AI, and then choose Priority List. You
will se a Yellow box with a line to a small box with a 1 in it. Right click
to re-name this component and change the number of <span class=msoDel><del
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:14">AIs</del></span><ins
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:14">AIs</ins> to 2, then
press OK. There should now be two small boxes, 1 and 2. Connect the hat
on your Avoid Obstacles to the PriorityList component by right clicking and
dragging, just as you did before. You can now Right click and drag from the
small box called 1 to your Basic Attack component. Next, right click on the
Basic Attack component and press the copy button. This will create a second
Attack AI component called ChickenKiller_2. Right-click on this new
component, change the target name from Chicken to Chicken 2 and press OK.
Attach the small 2 box to this new Attack AI component.</p>
<p class=MsoBodyText><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoBodyText>Bingo. Now your ship will attack Chicken if it can, and
then it will attack Chicken 2. Follow exactly the same steps for Sequence or
Random.</p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1606'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:06"><![if !supportEmptyParas]> <![endif]><o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:Unknown 19000000T0000'><b><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:07">5.0 </ins><span
style='mso-prop-change:"Totally Games" 20020211T1607'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:06"><span
style='mso-prop-change:"Totally Games" 20020211T1607'>Conditionals<span
style='mso-prop-change:"Totally Games" 20020211T1607'><o:p></o:p></span></span></ins></span></b></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1606'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:06"><![if !supportEmptyParas]> <![endif]><o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1606'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:06">A major AI component
not covered in the</ins><ins cite="mailto:Erik%20Novales"
datetime="2002-02-19T18:12"> above</ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:06"> tutorial is the conditional.</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:07"> A conditional is
used to check the surroundings </ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:13">or situation </ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:07">of the ship(s) assigned your AI. You could use a
conditional </ins><ins cite="mailto:Totally%20Games" datetime="2002-02-11T16:13">component
</ins><ins cite="mailto:Totally%20Games" datetime="2002-02-11T16:07">to do
things </ins><ins cite="mailto:Totally%20Games" datetime="2002-02-11T16:08">such
</ins><ins cite="mailto:Totally%20Games" datetime="2002-02-11T16:07">as</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:08">: check what other
ships are in the same set, check what set your ship is in, check how much
damage </ins><ins cite="mailto:Totally%20Games" datetime="2002-02-11T16:09">the</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:08"> ship has taken,
check</ins><ins cite="mailto:Totally%20Games" datetime="2002-02-11T16:09"> who
is attacking the ship</ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:14"> or who the ship is attacking</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:09">, </ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:14">what is in a set
range of the ship, </ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:09">etc.</ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:14"><o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1614'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:14"><![if !supportEmptyParas]> <![endif]><o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1614'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:14">Lets take our sample
AI from the tutorial and add a condition to it.</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:16"> As it stands the
ship assigned the sample AI will attack Chicken as its top priority, and
Chicken 2 as its next target. Lets </ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:17">add a conditional to check the range of Chicken
to the ship, and if it is too far away we will target Chicken 2</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:18"><o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1618'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:18"><![if !supportEmptyParas]> <![endif]><o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1618'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:18">Add a conditional by
selecting </ins><ins cite="mailto:Totally%20Games" datetime="2002-02-11T16:20">Conditional</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:18"> from the Create
AI menu. A box with a red border will appear. Connect the small </ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:19">1 box to this
conditional, then connect the conditional to the ChickenKiller</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:20"> attack component
(as described in the tutorial, right click and drag from the small 1 box to
the conditional component, then right click and drag from the conditional</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:21">s hat to the attack
AI). Now right click on the conditional and re-name it in the detail window.</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:23"><o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1623'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:23"><![if !supportEmptyParas]> <![endif]><o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1623'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:24">Find </ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:23">the button </ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:24">Add Conditional,
and click it. </ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:26">This will open a new window where y</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:24">ou will see a variety
of potential conditions you can check</ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:26">. F</ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:24">ind the one called </ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:25">ConditionInRange
and click its radio button.</ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:26"> At the top of this window you can name this
condition, name it </ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:27">IsChickenInRange. At the bottom you can specify
the parameters, in this case distance and object. Type </ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:34">the following in the
parameters:<o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1634'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:34"><span
style='mso-tab-count:1'> </span></ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:35">240</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:34">, Chicken<o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1634'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:34">Note: </ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:35">240</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:34"> is in </ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:37"></ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:34">game units</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:37"></ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:35">,</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:34"> which translates to
approx</ins><ins cite="mailto:Totally%20Games" datetime="2002-02-11T16:35"> 4</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:37">2</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:35">km (1km = 5.71428
game units)</ins><ins cite="mailto:Totally%20Games" datetime="2002-02-11T16:38"><o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1638'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:38">Good, now press OK.
You will see IsChickenInRange listed as a condition in the detail window of the
conditional component.</ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:41"> Now, in the def window (the big white window)
add the following:<o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1642'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:42"><span
style='mso-tab-count:1'> </span>if(bIsChickenInRange):<o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1642'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:42"><span
style='mso-tab-count:1'> </span><span style='mso-tab-count:
1'> </span>return ACTIVE<o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1642'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:42"><span
style='mso-tab-count:1'> </span>return DORMANT<o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1642'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:42">Note: the second line
has a tab in front of the word </ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:43"></ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:42">return</ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:43">.<o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1643'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:43"><![if !supportEmptyParas]> <![endif]><o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1643'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:43">So, what does this
mean? It means: if Chicken within 240gm of the ship assigned this AI</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:44">, this conditional
will be active, or it will pass on to the attack AI component after the
conditional, and thus the ship will attack Chicken. If the ship is further than
240gm it the conditional will become </ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:45">dormant so the AI will go to the next item on the
priority list, thus attacking Chicken 2.</ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:46"><o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1646'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:46"><![if !supportEmptyParas]> <![endif]><o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020211T1646'><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:46">Please look at the
AIs included as samples for other uses of the conditional component.</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-11T16:06"><o:p></o:p></ins></p>
<p class=MsoBodyText><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoBodyText><b><ins cite="mailto:Totally%20Games"
datetime="2002-02-11T16:06">6</ins><ins cite="mailto:Totally%20Games"
datetime="2002-02-06T18:10">.0 </ins><span style='mso-prop-change:"Totally Games" 20020206T1809'><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:09"><span
style='mso-prop-change:"Totally Games" 20020206T1809'>Conclusion<o:p></o:p></span></ins></span></b></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020206T1809'><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:09"><![if !supportEmptyParas]> <![endif]><o:p></o:p></ins></p>
<p class=MsoBodyText style='mso-list:none;mso-list-ins:"Totally Games" 20020206T1809'><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:09">This document could
be 200 pages long and still not cover everything the AI editor can do.</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:10"> Therefore we have
included all <span class=msoDel><del cite="mailto:Erik%20Novales"
datetime="2002-02-19T18:14"><ins datetime="2002-02-06T18:10">AIs</ins></del></span></ins><ins
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:14">AIs</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:10"> that were </ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:11">made for th</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:10">e game. Please </ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:11">look </ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:12">closely</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:11"> </ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:12">at </ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:10">these <span
class=msoDel><del cite="mailto:Erik%20Novales" datetime="2002-02-19T18:14"><ins
datetime="2002-02-06T18:10">AI</ins></del></span></ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:11"><span class=msoDel><del
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:14">s</del></span></ins><ins
cite="mailto:Erik%20Novales" datetime="2002-02-19T18:14">AIs</ins><ins
cite="mailto:Totally%20Games" datetime="2002-02-06T18:10"> for more examples of
how to make </ins><ins cite="mailto:Totally%20Games" datetime="2002-02-06T18:11">AI
for Bridge Commander.</ins><span style='mso-prop-change:"Totally Games" 20020206T1809'><span
style='mso-prop-change:"Totally Games" 20020206T1809'><o:p></o:p></span></span></p>
<p class=MsoBodyText><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
<p class=MsoBodyText><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
</div>
</body>
</html>