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.