Voor een grote groepsopdracht voor mijn studie informatica aan de Universiteit Utrecht is het nodig dat we een spel maken waarbij de AI in JAVA wordt geschreven. Een andere eis van de opdrachtgever is dat we fancy 3d-graphics opleveren. Dit gaat natuurlijk niet echt goed samen: JAVA en fancy 3d-graphics. Vandaar dat we graag de engine in C++ zouden laten draaien en de AI dus in JAVA.
Hiervoor wilden we JNI gebruiken, want dit is daar tenslotte voor bedoeld. Het grote probleem van JNI is echter dat het erg omslachtig lijkt te zijn en daardoor veel tijd kost. Mijn vraag is dan ook: is dit überhaupt haalbaar? Kunnen we soepele 3d-graphics uit C++ krijgen wanneer we veel met JNI doen?
En wat zou sneller zijn? Wanneer we alles behalve de AI in C++ doen en vervolgens voor de AI via JNI JAVA-klassen aanroepen, of wanneer we alles in JAVA doen en alleen de engine in C++ laten doen?
Ik heb tot nog toe nog weinig kunnen vinden over de snelheid van JNI, alleen over de mogelijkheden. Wel heb ik deze natuurlijk gevonden:
http://java.sun.com/j2se/1.4.2/docs/guide/jni/
Alwaar ik ook las dat er speciaal voor graphics de AWT native interface is, die hopelijk flink versnelt. Maar is dat snel genoeg? Of is JNI dusdanig traag dat we beter álles in JAVA kunnen doen, zelfs de engine? Dat laatste lijkt me niet bepaald wenselijk, maar misschien toch?
En zijn er nog algemene tips om JNI zo snel en optimaal mogelijk te laten werken? Valkuilen die je moet ontwijken wanneer je snelheid wilt?
Hiervoor wilden we JNI gebruiken, want dit is daar tenslotte voor bedoeld. Het grote probleem van JNI is echter dat het erg omslachtig lijkt te zijn en daardoor veel tijd kost. Mijn vraag is dan ook: is dit überhaupt haalbaar? Kunnen we soepele 3d-graphics uit C++ krijgen wanneer we veel met JNI doen?
En wat zou sneller zijn? Wanneer we alles behalve de AI in C++ doen en vervolgens voor de AI via JNI JAVA-klassen aanroepen, of wanneer we alles in JAVA doen en alleen de engine in C++ laten doen?
Ik heb tot nog toe nog weinig kunnen vinden over de snelheid van JNI, alleen over de mogelijkheden. Wel heb ik deze natuurlijk gevonden:
http://java.sun.com/j2se/1.4.2/docs/guide/jni/
Alwaar ik ook las dat er speciaal voor graphics de AWT native interface is, die hopelijk flink versnelt. Maar is dat snel genoeg? Of is JNI dusdanig traag dat we beter álles in JAVA kunnen doen, zelfs de engine? Dat laatste lijkt me niet bepaald wenselijk, maar misschien toch?
En zijn er nog algemene tips om JNI zo snel en optimaal mogelijk te laten werken? Valkuilen die je moet ontwijken wanneer je snelheid wilt?
Devblog / portfolio
Swords & Soldiers
Awesomenauts
Proun
Cello Fortress