Reputation: 13
I'm trying to write a simple Java game. I have a NPC class, with a function Dialog which returns what the npc would say, which would depend on various conditions.
I'm thinking that it would probably make sense to offload the logic of deciding what each npc would say to a scripting language, so that it could be changed updated easily. That way, I can create each NPC instance using something like
npc Mayor = new npc("mayor.php");
or something to that effect. So I googled around and found a bunch of technologies (PHP/Java Bridge, Querticus, Java Servlet SAPI, etc.) but only got confused what each did and whether it provides the functionality I'm looking for.
I'm not really limited to PHP, but that's just the one I'm most used to, and since I have the flag conditions that decide the npc's dialog stored in a local mysql database. I'd rather not have the scripts available online, so maybe a different scripting language would be more useful in this case?
I'm open to any ideas or suggestions on how I should implement this. Thanks!
Upvotes: 1
Views: 915
Reputation: 625037
There are several non-Java languages that run on the "Java" VM such as Groovy, Scala, Jython, Clojure and others.
One of these is Quercus, a port of PHP to the VM. With that you should be able to call Java from PHP and vice versa.
Upvotes: 1
Reputation: 56572
If you're familiar with Python, have a look at Jython, which is a Python interpreter written in Java and allows you to call Python code from Java and vice-versa.
Upvotes: 2
Reputation: 720
Scripting in games is often done using Lua. However, since you are using Java, I might recommend a Java-based scripting language such as Groovy, JRuby or Jython.
In Java 6, you can now call scripting language directly from Java. For example, with JavaSCript:
import javax.script.*;
public class EvalScript {
public static void main(String[] args) throws Exception {
// create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();
// create a JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");
// evaluate JavaScript code from String
engine.eval("print('Hello, World')");
}
}
There is a scripting project hosted by Sun in which you various scripting languages (including Python and AWK) have been integrated with the new Java 6 scripting engine. PHP is unfortunately not yet on this list, although there is a third-party implementation here:
http://php-java-bridge.sourceforge.net/
Upvotes: 2