2011-05-06 66 views
1

我正在嘗試爲遊戲引擎創建腳本式AI,以便爲樂趣而努力。我決定嘗試使用Groovy來創建。GroovyClasses中加載的.groovy行爲文件,然後將其轉換爲我的行爲界面。問題是,這是令人難以置信的緩慢。我正在執行每個遊戲週期的更新,並且腳本化的AI類將程序抓取。我的問題是,有沒有辦法加快嵌入式Groovy速度,還是有更好的方式來做我正在做的事情?謝謝你的幫助。加速Java中的嵌入式Groovy

下面是相關代碼:

public interface Behavior { 
    public void execute(GameComponent component, float time); 
} 

Groovy文件在初始化時加載並投GroovyClasses:

public boolean cacheScript(String key, String path) { 

     try { 
      Class groovyClass = loader.parseClass(ClassLoader 
        .getSystemResourceAsStream(path)); 
      Object object = groovyClass.newInstance(); 
      scripts.put(key, (Behavior) object); 
     } catch (InstantiationException e) { 
      return false; 
     } catch (IllegalAccessException e) { 
      return false; 
     } 

     return true; 
    } 

然後一個GameComponent執行此代碼這樣

engine.getBehavior(key).execute(component, time); 
+0

我可以問一下你在Groovy中使用這些行爲文件的好處嗎?是否需要某種動態編輯? – 2011-05-06 20:03:02

+0

你確定你正在執行的groovy代碼正在做你期望的速度?也許代碼很慢,這不是它是groovy腳本代碼的錯。 – Buhb 2011-05-06 20:12:10

+0

@java飲酒我現在不需要任何東西。這只是爲了好玩。我主要是通過這本書http://www.amazon.com/Artificial-Intelligence-Kaufmann-Interactive-Technology/dp/0124977820的方式工作,他們有一個關於腳本AI的部分,我想與groovy一起玩。他們在談論lua(類似於WOW如何創建附加組件),所以我認爲groovy會非常適合腳本化的AI。 – Loomer 2011-05-06 20:48:02

回答

0

無法看清整個項目,無法判斷瓶頸是否合併不經意地加載和編譯Groovy代碼,或者在加載後運行實際的Groovy代碼。如果你的問題是,一旦你的遊戲加載了Groovy代碼,它將花費很長時間來執行看看Groovy++我不確定它的工作效果如何,因爲它還處於早期階段,但如果這是一個學習項目,它可能會對你來說足夠穩定。

+0

好,如果你真的有興趣看看代碼是在https://github.com/l00mer/ibengine。感謝Groovy ++鏈接。我會檢查一下。運行samples.java將只用java執行代碼。如果你用任何arg運行samples.java,它將運行腳本化的ai,而且速度很慢。 – Loomer 2011-05-06 20:50:26