Hogyan csináljunk mesterséges intelligencia DLL-t a Space Tactics III-hoz?

Bevezető:

Aki nagyon jó MI-t akar, annak érdemes saját MI DLL-t írnia a kolóniájához. Ehhez a szükséges összetevők itt vannak C nyelvű forrásként.

A DLL-hez 7 fájl kell, ezek itt vannak:

aiexp.h
profunit.h
comp.h
mi.h
comp.lib
profunit.lib
mi.lib

A DLL-ünk megfelő működéséhez be kell tartani a következő szabályokat:

- Win32 alá kell írni a DLL-t.
- 4 bájtos (32 bites) adatigazítást kell alkalmazni.
- Az MI eljárás belépési pontjának a neve AIExtFunc.
Definíciója:
void _pascal AIExtFunc();

- Az aiexp.h-ban definiálva van néhány változó, ami magától kap értéket:
PROFILE **Profiles[PROFILECOUNT]: A játékos profilok adatai
UNITDATA **UnitDatas[UNITDATACOUNT]: Egységek adatai
int Difficulty: Nehézségi fok 0: legkönnyebb, 1: könnyű ... 5: legnehezebb
PROFILE *ControlProf: Arra a profilra mutat, amit éppen irányítunk.
float MAPSIZE: A térkép mérete.

- Ez az alprogram kb. másodpercenként végrehajtódik, ezért úgy kell megcsinálni, hogy elég gyorsan végrehajtódjon.

- Továbbá van még néhány definiálandó alprogram, ami nélkül nem megy az MI:
void _pascal Initialize(); :A játék indításakor, és játék betöltésekor hajtódik végre.
void _pascal SaveProc(FILE*); :A játék mentésekor lehetőséget ad az MI-nak, hogy a fájl végére adatokat mentsen. Az egyetlen paraméter egy fájlra mutató handle.
void _pascal LoadProc(FILE*); :A játék mentésekor lehetőséget ad az MI-nak, hogy a fájl végéről adatokat töltsön be. Az egyetlen paraméter egy fájlra mutató handle.
void _pascal GetAIData(PROFILE**,UNITDATA**,int,PROFILE*,float); Ez az eljárás a program és az MI DLL közötti kommunikációt rendezi ez az alprogram már definiálva van, úgyhogy neked már nem kell.
 

-Az alprogramok neveit nagybetűkkel kell exportálni paraméterek nélkül, azaz: AIEXTFUNC, INITIALIZE, LOADPROC, SAVEPROC, GETAIDATA (Úgy tűnik, ha extern "C" megadást használsz, akkor nem kódolja le a nevet.)

- A DLL használatához a kolóniafájlodban (*.CLN fájban) az [AI] sor alatt a Mode kulcsot állítsd -1-re.
és írd alá ezt AIDllUsed=mymidll.dll vagy valami hasonlót, természetesen a saját dll-ed
nevét írd oda.

FONTOS:

- HA MÁR MI DLL-T CSINÁLSZ, ÜGYELJ ARRA, HOGY A DLL-ED JÁTÉKA FAIR LEGYEN! ÉRTEM EZEN AZT,
HOGY CSAK OLYAN DOLGOKAT TEHETSZ, AMIT EGY EMBERI JÁTÉKOS. CSAK A LÁTHATÓ EGYSÉGEKHEZ
FÉRJEN HOZZÁ, NE ÁLLÍTGASSA DIREKT MÓDON AZ ERŐFORRÁSOKAT. STB...

ÉS A FŐ: NE LEGYEN BENNE VÍRUS!!

Megjegyzés: Az mi.h-ban lévő alprogramok, fair-ül müködnek.

Én C-ben készítettem a saját MI DLL-jeimet, te készítheteted más nyelven is, de lényeg az, hogy működjön, megírhatod pascal nyelven is, csak azon elég macerás.