Java AI Interface for Spring - Page 8

Java AI Interface for Spring

Here is where ideas can be collected for the skirmish AI in development

Moderators: hoijui, Moderators

tberthel
Posts: 59
Joined: 12 Jan 2008, 06:17

Re: Java AI Interface for Spring

Post by tberthel »

P:/Programme/Java/jdk1.6.0_03 but _05 is specified in the instructions?
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Java AI Interface for Spring

Post by hoijui »

whether using jdk1.6.0_03 or _05 should not make a difference at all, as these revisions are just for bug-fixing, so you can always use the latest (though JAI worked for me with _03).

i can not help you with the stuff from infolog alone. could you please attach all the log files in Bot-libs/JAI/log, plus possibly hotspot.log (in the spring main folder)? if there is one, please send also the hs*.log.
thanks!
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Java AI Interface for Spring

Post by hoijui »

somethign else:
i think the next version of JAI will be using the new AI C interface. i think i will have 2 interfaces, one with handleMessage, and posibly one that is quite like the current one, using the other interfaec with handleMessage behind the scenes.
tberthel
Posts: 59
Joined: 12 Jan 2008, 06:17

Re: Java AI Interface for Spring

Post by tberthel »

I did include the
Bot-libs/JAI/log
logs.

native-log.txt
native-SWIG-log.txt

were the only 2 I had.

JVM did not fail so no JVM log.
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Java AI Interface for Spring

Post by hoijui »

as you jvm logging enabled, it should log even if the JVM does not crash, no hs*log, but hotspot.log.

did you use hoijui.jar for testing?

to be honest, i dont think i will be able to find out what is wrong :/
tberthel
Posts: 59
Joined: 12 Jan 2008, 06:17

Re: Java AI Interface for Spring

Post by tberthel »

hotspot.log is only created for the debug VM. So no it was not generated.
tberthel
Posts: 59
Joined: 12 Jan 2008, 06:17

Re: Java AI Interface for Spring

Post by tberthel »

Well I could solve the problem, but it will probably be a while since I just want to use some of my generic game AI's I developed for other games in Spring.
tberthel
Posts: 59
Joined: 12 Jan 2008, 06:17

Re: Java AI Interface for Spring

Post by tberthel »

I ran it again with the debug VM for the hotspot.log

<?xml version='1.0' encoding='UTF-8'?>
<hotspot_log version='160 1' process='1008' time_ms='1214434775639'>
<vm_version>
<name>
Java HotSpot(TM) Client VM
</name>
<release>
10.0-b19
</release>
<info>
Java HotSpot(TM) Client VM (10.0-b19) for windows-x86 JRE (1.6.0_05-b13), built on Feb 22 2008 01:16:53 by "java_re" with MS VC++ 7.1
</info>
</vm_version>
<vm_arguments>
<args>
-Djava.library.path=AI/Bot-libs/JAI;AI/Bot-libs/JAI/lib -Xms4M -Xmx64M -Xss512K -Xoss400K -verbose:jni -Xcheck:jni -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput
</args>
<launcher>
generic
</launcher>
<properties>
java.vm.specification.version=1.0
java.vm.specification.name=Java Virtual Machine Specification
java.vm.specification.vendor=Sun Microsystems Inc.
java.vm.version=10.0-b19
java.vm.name=Java HotSpot(TM) Client VM
java.vm.vendor=Sun Microsystems Inc.
java.vm.info=mixed mode, sharing
java.ext.dirs=C:\jdk\1.6.0\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
java.endorsed.dirs=C:\jdk\1.6.0\jre\lib\endorsed
sun.boot.library.path=C:\jdk\1.6.0\jre\bin
java.library.path=AI/Bot-libs/JAI;AI/Bot-libs/JAI/lib
java.home=C:\jdk\1.6.0\jre
java.class.path=AI/Bot-libs/JAI/JAI.jar;AI/Bot-libs/JAI;AI/Bot-libs/JAI/lib/commons-lang-2.4.jar;AI/Bot-libs/JAI/lib/commons-logging-1.1.1.jar;AI/Bot-libs/JAI/lib/log4j-1.2.15.jar;AI/Bot-libs/JAI/lib/vecmath.jar;AI/Bot-libs/hoijui.jar;AI/Bot-libs/tst.jar
sun.boot.class.path=C:\jdk\1.6.0\jre\lib\resources.jar;C:\jdk\1.6.0\jre\lib\rt.jar;C:\jdk\1.6.0\jre\lib\sunrsasign.jar;C:\jdk\1.6.0\jre\lib\jsse.jar;C:\jdk\1.6.0\jre\lib\jce.jar;C:\jdk\1.6.0\jre\lib\charsets.jar;C:\jdk\1.6.0\jre\classes
</properties>
</vm_arguments>
<tty>
Checked JNI functions are being used to validate JNI usage
<writer thread='2904'/>
[Dynamic-linking native method java.lang.Object.registerNatives ... JNI]
[Registering JNI native method java.lang.Object.hashCode]
[Registering JNI native method java.lang.Object.wait]
[Registering JNI native method java.lang.Object.notify]
[Registering JNI native method java.lang.Object.notifyAll]
[Registering JNI native method java.lang.Object.clone]
[Dynamic-linking native method java.lang.System.registerNatives ... JNI]
[Registering JNI native method java.lang.System.currentTimeMillis]
[Registering JNI native method java.lang.System.nanoTime]
[Registering JNI native method java.lang.System.arraycopy]
[Dynamic-linking native method java.lang.Thread.registerNatives ... JNI]
[Registering JNI native method java.lang.Thread.start0]
[Registering JNI native method java.lang.Thread.stop0]
[Registering JNI native method java.lang.Thread.isAlive]
[Registering JNI native method java.lang.Thread.suspend0]
[Registering JNI native method java.lang.Thread.resume0]
[Registering JNI native method java.lang.Thread.setPriority0]
[Registering JNI native method java.lang.Thread.yield]
[Registering JNI native method java.lang.Thread.sleep]
[Registering JNI native method java.lang.Thread.currentThread]
[Registering JNI native method java.lang.Thread.countStackFrames]
[Registering JNI native method java.lang.Thread.interrupt0]
[Registering JNI native method java.lang.Thread.isInterrupted]
[Registering JNI native method java.lang.Thread.holdsLock]
[Registering JNI native method java.lang.Thread.getThreads]
[Registering JNI native method java.lang.Thread.dumpThreads]
[Dynamic-linking native method java.lang.Class.registerNatives ... JNI]
[Registering JNI native method java.lang.Class.getName0]
[Registering JNI native method java.lang.Class.getSuperclass]
[Registering JNI native method java.lang.Class.getInterfaces]
[Registering JNI native method java.lang.Class.getClassLoader0]
[Registering JNI native method java.lang.Class.isInterface]
[Registering JNI native method java.lang.Class.getSigners]
[Registering JNI native method java.lang.Class.setSigners]
[Registering JNI native method java.lang.Class.isArray]
[Registering JNI native method java.lang.Class.isPrimitive]
[Registering JNI native method java.lang.Class.getComponentType]
[Registering JNI native method java.lang.Class.getModifiers]
[Registering JNI native method java.lang.Class.getDeclaredFields0]
[Registering JNI native method java.lang.Class.getDeclaredMethods0]
[Registering JNI native method java.lang.Class.getDeclaredConstructors0]
[Registering JNI native method java.lang.Class.getProtectionDomain0]
[Registering JNI native method java.lang.Class.setProtectionDomain0]
[Registering JNI native method java.lang.Class.getDeclaredClasses0]
[Registering JNI native method java.lang.Class.getDeclaringClass]
[Registering JNI native method java.lang.Class.getGenericSignature]
[Registering JNI native method java.lang.Class.getRawAnnotations]
[Registering JNI native method java.lang.Class.getConstantPool]
[Registering JNI native method java.lang.Class.desiredAssertionStatus0]
[Registering JNI native method java.lang.Class.getEnclosingMethod0]
[Dynamic-linking native method java.lang.Class.getPrimitiveClass ... JNI]
[Dynamic-linking native method java.security.AccessController.getStackAccessControlContext ... JNI]
[Dynamic-linking native method java.security.AccessController.getInheritedAccessControlContext ... JNI]
[Dynamic-linking native method java.lang.ClassLoader.registerNatives ... JNI]
[Registering JNI native method java.lang.ClassLoader.retrieveDirectives]
[Dynamic-linking native method java.security.AccessController.doPrivileged ... JNI]
Checked JNI functions are being used to validate JNI usage
Checked JNI functions are being used to validate JNI usage
[Dynamic-linking native method java.lang.System.initProperties ... JNI]
[Dynamic-linking native method java.io.FileInputStream.initIDs ... JNI]
[Dynamic-linking native method java.io.FileDescriptor.initIDs ... JNI]
[Dynamic-linking native method java.io.FileDescriptor.set ... JNI]
[Dynamic-linking native method java.io.FileOutputStream.initIDs ... JNI]
[Dynamic-linking native method sun.misc.Unsafe.registerNatives ... JNI]
[Registering JNI native method sun.misc.Unsafe.getLoadAverage]
[Dynamic-linking native method java.lang.Throwable.fillInStackTrace ... JNI]
[Registering JNI native method sun.misc.Unsafe.setMemory]
[Registering JNI native method sun.misc.Unsafe.copyMemory]
[Registering JNI native method sun.misc.Unsafe.getObject]
[Registering JNI native method sun.misc.Unsafe.putObject]
[Registering JNI native method sun.misc.Unsafe.getObjectVolatile]
[Registering JNI native method sun.misc.Unsafe.putObjectVolatile]
[Registering JNI native method sun.misc.Unsafe.getBoolean]
[Registering JNI native method sun.misc.Unsafe.putBoolean]
[Registering JNI native method sun.misc.Unsafe.getBooleanVolatile]
[Registering JNI native method sun.misc.Unsafe.putBooleanVolatile]
[Registering JNI native method sun.misc.Unsafe.getByte]
[Registering JNI native method sun.misc.Unsafe.putByte]
[Registering JNI native method sun.misc.Unsafe.getByteVolatile]
[Registering JNI native method sun.misc.Unsafe.putByteVolatile]
[Registering JNI native method sun.misc.Unsafe.getShort]
[Registering JNI native method sun.misc.Unsafe.putShort]
[Registering JNI native method sun.misc.Unsafe.getShortVolatile]
[Registering JNI native method sun.misc.Unsafe.putShortVolatile]
[Registering JNI native method sun.misc.Unsafe.getChar]
[Registering JNI native method sun.misc.Unsafe.putChar]
[Registering JNI native method sun.misc.Unsafe.getCharVolatile]
[Registering JNI native method sun.misc.Unsafe.putCharVolatile]
[Registering JNI native method sun.misc.Unsafe.getInt]
[Registering JNI native method sun.misc.Unsafe.putInt]
[Registering JNI native method sun.misc.Unsafe.getIntVolatile]
[Registering JNI native method sun.misc.Unsafe.putIntVolatile]
[Registering JNI native method sun.misc.Unsafe.getLong]
[Registering JNI native method sun.misc.Unsafe.putLong]
[Registering JNI native method sun.misc.Unsafe.getLongVolatile]
[Registering JNI native method sun.misc.Unsafe.putLongVolatile]
[Registering JNI native method sun.misc.Unsafe.getFloat]
[Registering JNI native method sun.misc.Unsafe.putFloat]
[Registering JNI native method sun.misc.Unsafe.getFloatVolatile]
[Registering JNI native method sun.misc.Unsafe.putFloatVolatile]
[Registering JNI native method sun.misc.Unsafe.getDouble]
[Registering JNI native method sun.misc.Unsafe.putDouble]
[Registering JNI native method sun.misc.Unsafe.getDoubleVolatile]
[Registering JNI native method sun.misc.Unsafe.putDoubleVolatile]
[Registering JNI native method sun.misc.Unsafe.getByte]
[Registering JNI native method sun.misc.Unsafe.putByte]
[Registering JNI native method sun.misc.Unsafe.getShort]
[Registering JNI native method sun.misc.Unsafe.putShort]
[Registering JNI native method sun.misc.Unsafe.getChar]
[Registering JNI native method sun.misc.Unsafe.putChar]
[Registering JNI native method sun.misc.Unsafe.getInt]
[Registering JNI native method sun.misc.Unsafe.putInt]
[Registering JNI native method sun.misc.Unsafe.getLong]
[Registering JNI native method sun.misc.Unsafe.putLong]
[Registering JNI native method sun.misc.Unsafe.getFloat]
[Registering JNI native method sun.misc.Unsafe.putFloat]
[Registering JNI native method sun.misc.Unsafe.getDouble]
[Registering JNI native method sun.misc.Unsafe.putDouble]
[Registering JNI native method sun.misc.Unsafe.getAddress]
[Registering JNI native method sun.misc.Unsafe.putAddress]
[Registering JNI native method sun.misc.Unsafe.allocateMemory]
[Registering JNI native method sun.misc.Unsafe.reallocateMemory]
[Registering JNI native method sun.misc.Unsafe.freeMemory]
[Registering JNI native method sun.misc.Unsafe.objectFieldOffset]
[Registering JNI native method sun.misc.Unsafe.staticFieldOffset]
[Registering JNI native method sun.misc.Unsafe.staticFieldBase]
[Registering JNI native method sun.misc.Unsafe.ensureClassInitialized]
[Registering JNI native method sun.misc.Unsafe.arrayBaseOffset]
[Registering JNI native method sun.misc.Unsafe.arrayIndexScale]
[Registering JNI native method sun.misc.Unsafe.addressSize]
[Registering JNI native method sun.misc.Unsafe.pageSize]
[Registering JNI native method sun.misc.Unsafe.defineClass]
[Registering JNI native method sun.misc.Unsafe.defineClass]
[Registering JNI native method sun.misc.Unsafe.allocateInstance]
[Registering JNI native method sun.misc.Unsafe.monitorEnter]
[Registering JNI native method sun.misc.Unsafe.monitorExit]
[Registering JNI native method sun.misc.Unsafe.tryMonitorEnter]
[Registering JNI native method sun.misc.Unsafe.throwException]
[Registering JNI native method sun.misc.Unsafe.compareAndSwapObject]
[Registering JNI native method sun.misc.Unsafe.compareAndSwapInt]
[Registering JNI native method sun.misc.Unsafe.compareAndSwapLong]
[Registering JNI native method sun.misc.Unsafe.putOrderedObject]
[Registering JNI native method sun.misc.Unsafe.putOrderedInt]
[Registering JNI native method sun.misc.Unsafe.putOrderedLong]
[Registering JNI native method sun.misc.Unsafe.park]
[Registering JNI native method sun.misc.Unsafe.unpark]
[Dynamic-linking native method sun.reflect.Reflection.getCallerClass ... JNI]
[Dynamic-linking native method java.lang.String.intern ... JNI]
[Dynamic-linking native method java.lang.System.setIn0 ... JNI]
[Dynamic-linking native method java.lang.Float.floatToRawIntBits ... JNI]
[Dynamic-linking native method java.lang.Double.doubleToRawLongBits ... JNI]
[Dynamic-linking native method java.lang.Object.getClass ... JNI]
[Dynamic-linking native method java.lang.Class.forName0 ... JNI]
[Dynamic-linking native method sun.reflect.Reflection.getClassAccessFlags ... JNI]
[Dynamic-linking native method sun.reflect.NativeConstructorAccessorImpl.newInstance0 ... JNI]
[Dynamic-linking native method sun.misc.VM.initialize ... JNI]
[Dynamic-linking native method java.lang.Runtime.maxMemory ... JNI]
[Dynamic-linking native method java.lang.System.setOut0 ... JNI]
[Dynamic-linking native method java.lang.System.setErr0 ... JNI]
[Dynamic-linking native method java.io.FileSystem.getFileSystem ... JNI]
[Dynamic-linking native method java.io.Win32FileSystem.initIDs ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.initIDs ... JNI]
[Dynamic-linking native method java.lang.System.mapLibraryName ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.getBooleanAttributes ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.canonicalize0 ... JNI]
[Dynamic-linking native method java.lang.ClassLoader$NativeLibrary.load ... JNI]
[Dynamic-linking native method sun.misc.Signal.findSignal ... JNI]
[Dynamic-linking native method sun.misc.Signal.handle0 ... JNI]
[Dynamic-linking native method sun.io.Win32ErrorMode.setErrorMode ... JNI]
[Dynamic-linking native method java.lang.Compiler.registerNatives ... JNI]
[Registering JNI native method java.lang.Compiler.compileClass]
[Registering JNI native method java.lang.Compiler.compileClasses]
[Registering JNI native method java.lang.Compiler.command]
[Registering JNI native method java.lang.Compiler.enable]
[Registering JNI native method java.lang.Compiler.disable]
[Dynamic-linking native method java.lang.ClassLoader$NativeLibrary.find ... JNI]
[Dynamic-linking native method java.security.AccessController.doPrivileged ... JNI]
[Dynamic-linking native method java.io.FileInputStream.open ... JNI]
[Dynamic-linking native method java.io.FileInputStream.readBytes ... JNI]
[Dynamic-linking native method java.io.FileInputStream.available ... JNI]
[Dynamic-linking native method java.lang.reflect.Array.newArray ... JNI]
[Dynamic-linking native method java.io.ObjectStreamClass.initNative ... JNI]
[Dynamic-linking native method java.io.FileInputStream.close0 ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.list ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.canonicalizeWithPrefix0 ... JNI]
Checked JNI functions are being used to validate JNI usage
Checked JNI functions are being used to validate JNI usage
Checked JNI functions are being used to validate JNI usage
Checked JNI functions are being used to validate JNI usage
User avatar
AF
AI Developer
Posts: 20687
Joined: 14 Sep 2004, 11:32

Re: Java AI Interface for Spring

Post by AF »

Please use a pastebin instead of pasting masses of text and stretching the forum out
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Java AI Interface for Spring

Post by hoijui »

hmm... :/ does not really help either :/

2 things:
* as AF mentioned already, for log files, it would be better to use either http://www.pastebin.com or attach the files as such to your posts, not copy the text into the post, as this is bad for the forum layout.
* as the JVM seems to load ok, there may be usefull info under AI/hoijui/log (if you use hoijui.jar for testing)

if we won't find the soon, i guess its easyer to wait till the new C interface is ready, and JAI ported to it (once the interface is ready, porting should take little time). possibly it will work then for you too.
tberthel
Posts: 59
Joined: 12 Jan 2008, 06:17

Re: Java AI Interface for Spring

Post by tberthel »

Okay I have built it for 5956 and it works a little with minor hacks.

Issues:

1.

This method "bool CreateClassPath(char* classPath)" fails most of the time. I have not written c++ in a while so it was not clear to me why. Although, by replacing the body with: strcat(classPath, HACK_CLASS_PATH); it works everytime.

The HACK_CLASS_PATH is the same path used when it does work.

2. It also crashed here most of the time. I remarked this out in the "GetJNIEnv" method:

/*
for (i = 0; i < vm_args.nOptions; i++) {
delete vm_args.options.optionString;
}
delete vm_args.options;
*/

Okay with those two fixes it runs every load, but I get an Sync error and some of the commands crash. Specifically, 2,4, and 7 fail.

So I will paste bin the sync error with the hot spot. Also note before the fixes the JVM was not always loading.

I also noticed that you should use "#define SWIG_JAVA_ATTACH_CURRENT_THREAD_AS_DAEMON"

I would appreciate the SVN location of this stuff. The download page says it is in the SVN i.e., but I don't see it. I know it must be GPL since it uses GPL, but I would like to see that in the headers or a license file if your keeping it out of SVN.

Sync Error I get:

Sync warning: FPUCW 0x027F instead of 0x003A or 0x003F ("CGame::SimFrame")
tberthel
Posts: 59
Joined: 12 Jan 2008, 06:17

Re: Java AI Interface for Spring

Post by tberthel »

NVM on the post bin. Since it is the same thing over and over.
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Java AI Interface for Spring

Post by hoijui »

Wow, nice! :-)
thanks for that!
rightnow, i have no access to the code, but i will check some things when back home, especially about

Code: Select all

#define SWIG_JAVA_ATTACH_CURRENT_THREAD_AS_DAEMON
there is no JAI source on the SVN, as i do not have write access to it, and it is also still not very stable, as you saw ;-)

i will check the class-path stuff as well. what i did not understand, is what you mean with commands 2, 4 and 7. you mean Commandwith id=7 eg?

i already changed this part of the code:

Code: Select all

        for (i = 0; i < vm_args.nOptions; i++) {
            delete vm_args.options[i].optionString;
        }
        delete vm_args.options;
cause itis not compatible with MinGW 4.

this leads us to the last thing, the sync error you get.
which OS and compiler do you use?
if you use MinGW 3 to compile JAI, and use spring from the buildbot (Which uses MinGW 4.2.1), this would explain the sync error.

we do not yet have a working description online of how to setup MinGW 4 on windows, to compile spring. on linux it is rather easy, to cross compile for windows (buildbot also cross-compiles on linux).

all these issues should vanish, once we have the new C AI interface working, as it should not matter anymore which compiler you use to compile JAI (or any other AI).

i will check everything on monday.
tberthel
Posts: 59
Joined: 12 Jan 2008, 06:17

Re: Java AI Interface for Spring

Post by tberthel »

I was referring to the message commands to get the test AI to do something.

I am using MinGW 5.1.4 and, I also built Spring with it as well. Obviously. That could be a problem. I guess I should use MinGW 4.2.1. Were did you get the info on the auto build version. That should be on both build pages.

I usually only write Java now days, and I had steered away from MinGW and SCONS for a long time. I couldn't resist a Java AI link into Spring. Well anyways I used this for the build:

Vista and gcc version 3.4.5 (mingw-vista special r3)

Well you didn't say anything about the licensing. So I can't do anything until it is in SVN or a license file saying it is open.
tberthel
Posts: 59
Joined: 12 Jan 2008, 06:17

Re: Java AI Interface for Spring

Post by tberthel »

Also, is the auto build using 3.4.5 gcc?
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Java AI Interface for Spring

Post by hoijui »

The auto build of spring uses 4.2.1, there is no auto build of JAI, but my release was compiled with 3.4.5. So far, i always tested JAI with 3.4.5 (i also compiled spring with that) -> i did the same like you. if you compile JAI and spring with the same MinGW/gcc, it should not get sync errors.

About the licence: Sorry, am new to open source and did forget/not care about that so far. I though i would not put a licence until it is well usable, and then i would integrate it into spring main SVN. I could setup a project page with SVN, but i would prefer to port it to the C interface before doing big changes. i also don't really recommend doing an AI with it already, as it may change some after the port.

for small things: you can send them to me (by PM) also.
is it ok like this? or any other suggestion?
tberthel
Posts: 59
Joined: 12 Jan 2008, 06:17

Re: Java AI Interface for Spring

Post by tberthel »

When you get headers that have license info or a license file I could contribute. Until then I will wait. Getting it into the SVN would speed up the development.
tberthel
Posts: 59
Joined: 12 Jan 2008, 06:17

Re: Java AI Interface for Spring

Post by tberthel »

Is this in SVN now?
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Java AI Interface for Spring

Post by hoijui »

Not yet, but i started working on the Java interface wrapper of the C interface a few days ago. As soon as I have something at least remotely testable, i will put it on SVN with a NullJavaAI for testing. I hope this to happen in the upcomming week. The first test will be witout callback (as this will be a lot of work to wrap).
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Java AI Interface for Spring

Post by hoijui »

If you have not yet read the AI Interface redesign topic, you may do so now:
viewtopic.php?f=15&t=15019&p=321227#p321227

Get the branch:
https://spring.clan-sy.com/svn/spring/b ... iinterface

I hope some of you will help with testing. if you are mainly interested in the Java interface, you may want to have a look at NullOOJavaAI (NullJavaAI will not be interesting for you). please do not start writing your AI yet, but give feedback about the interface in general:
  • the (class-)structure of/behind OOAICallback: what would you change, how, and why?
  • is this way of handling AIEvents ok? (AI Events are messages from the engine to the AI)
  • ... what about AICommands? (messages from AI to engine that alter the engines state (in contrary to the methods reachable through OOAICallback))
ask here for help, if something is not working.
Last edited by hoijui on 10 Dec 2008, 16:55, edited 1 time in total.
Post Reply

Return to “AI”