1

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!

4
  • PHP is a web server scripting language. I don't know if it's used elsewhere though. Commented Oct 1, 2009 at 0:07
  • 2
    I think you should do some more research into object-oriented programming and the Java programming language - specifically classes, inheritance, and design patterns. This is a wrong approach to solving your problem. Commented Oct 1, 2009 at 0:09
  • Thats not necessarily true when it comes to games development, the main development is normally done in an object-oriented language such as C++ and add-ons and such are done in scripting languages such as Lua. Commented Oct 1, 2009 at 0:30
  • I would suggest managing your NPC selection configuration parameters in an XML or even INI file. As @Thomas Owens suggested, incorporating a separate scripting language seems like the wrong approach. Commented Oct 1, 2009 at 0:33

3 Answers 3

2

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/

Sign up to request clarification or add additional context in comments.

Comments

2

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.

Comments

1

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.