views:

111

answers:

3

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!

+2  A: 

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/

rajax
+2  A: 

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.

Ben Blank
+1  A: 

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.

cletus