2010-04-09 5 views
2

저는 이것이 꽤 열린 질문입니다 만 사람들이 게임을 "플레이"하거나 어떤 식 으로든 조작하는 스크립트를 작성하는 방법에 대해 궁금합니다. 나는 재미있는 게임을하기 위해 일하는 AI를 얻으려고 노력할 것이지만, 어디서부터 시작해야할지 모를조차 생각했다. 이것을 배울 좋은 자원이 있습니까? 사용할 좋은 언어는 무엇입니까? 언어가 생기면 어떻게 스크립트를 게임에 넣을 수 있습니까? 그게 도움이된다면 단순한 플래시 게임을 사용하려고 생각하고있었습니다.어떻게 게임에 연결하여 조작하는 스크립트를 작성합니까?

감사합니다.

+1

오호호, 너는 악몽 같은 땅에 발을 들여 놓고있다. – Ben

답변

1

당신은 당신이 스크립팅 환경으로 문자 나 게임 세계를 노출 할 수 있습니다 예를 들어, 스크립트 환경 으로 객체 자바 응용 프로그램에서/기능을 노출 아주 간단하게 자바 6

  1. 에서이 작업을 수행 할 수 있습니다 스크립트가 스크립트를 제어 할 수있게합니다.

  2. 자바 환경의 스크립트 함수/메소드 호출 스크립트가 동작을 사용자 정의하고 새 동작을 추가 할 수있게합니다. 또 다른 방법은 게임 규칙의 기본 빌드를 무시하고 자신의 집 규칙을로드하는 것입니다. 또 다른 용도는 매크로 기능입니다. 게임이이 임무를 기반으로 SpaceHulk을 좋아에 일반적으로이 메인 게임 루프

  3. 사용 예를 들어 데이터/레벨 파일 로 스크립트의 일부가 될 것입니다, 당신은 게임 특정 DSL을 정의하는 스크립트를 사용할 수 있습니다 , 그리고 우리에게 새로운 임무를 정의하는이 DSL. 게임이 시작되면 데이터 파일을 평가하고 게임 모델을 만듭니다.

단순히 스크립트에서 함수를 호출하려면 스크립트 환경

jsEngine.put("avatar", avatarObject); 
    //An avatar object is now available in myscript.js 
    jsEngine.eval(new FileReader("myscript.js"); 

에 객체를 노출하기 위해이

ScriptEngineManager mgr = new ScriptEngineManager(); 
    ScriptEngine jsEngine = mgr.getEngineByExtension("js"); 
    jsEngine.eval("print('Hello world!'); 

을 자바로 스크립팅 엔진을 통합하려면

jsEngine.eval("function hello(name) ... "); 
    Invocable inv = (Invocable)jsEngine; 
    inv.invokeFunction("hello", "Fred"); 

스크립트를 사용하면 스크립트가 전체 응용 프로그램에 액세스 할 수 있습니다. ScriptEngineManager 인스턴스를 만들 때 클래스 로더를 설정하여 스크립트에서 볼 수있는 것을 제한 할 수 있습니다. Java 6에는 번들로 제공되는 JavaScript 엔진이 함께 제공됩니다. 그러나 Groovy를 선호하고 Groovy를로드하면 기본적으로 getEngineByExtension()에서 'js'가 'groovy'로 변경된다는 의미입니다.

저는 많은 사람들이 자바가 게임에서는 빠르다고 말하지 만, 당신이 차례를 기반으로하는 게임이나 Farmville과 같은 소셜 게임을 작성하는 것이 적절하다고 생각합니다.

C/C++ 기반 게임의 경우 선호하는 스크립트 엔진은 Lua입니다. 나는 그것에 대해 언급 할 수 없도록 그것을 사용하지 않았다.

+0

당신은 체크 표시를 얻는다. 객체/함수를 스크립팅 환경에 노출시키는 것은 정확히 무엇을 의미합니까? 어떻게 그 일을합니까? 어딘가에 가이드가 있습니까? – Ethan

+0

jsEngine.put을 사용하여 위의 예제를 살펴보면 avatarObject를 'avatar'라는 이름 호출에 바인딩한다는 것을 알 수 있습니다. myscript.js 스크립트를 실행하면 미리 정의 된 객체 호출 인 'avatar'가 생깁니다. 수행 할 수있는 작업에 대한 자세한 내용은 http://java.sun.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html을 참조하십시오. –

2

기존 게임을 "재생"하거나 스크립트로 작성할 수있는 일종의 게임을 작성 하시겠습니까?

전자의 경우 해당 게임의 API를 찾아 적절한 언어로 코드 작성을 시작하십시오. 예 : Unreal 기반 게임은 UnrealScript를 사용하고 새로운 기능을 포함 할 수 있도록 툴과 함께 제공됩니다. 이처럼 "in"을 남기는 게임 제작자에게 당신은 거의 의존합니다 ...

... 당신이 완전히 열매 맺고 실행 파일 자체를 해킹하여 어떻게 든 자신의 코드를 실행하고 싶지 않다면 .... 이를 수행하는 방법에 대한 정보는 게임 "강사"에 대한 정보를 검색하십시오. 검색 용어의 큰 집합이 무엇인지 모르겠지만 많은 게임에 강사가 출시 된 것을 알고 있습니다. 따라서 "trainer <my_favorite_game>"을 입력하고 무엇을 얻을 수 있는지 확인하십시오.

+0

기존 게임을 "재생"하려고합니다. 그것은 플래시로 만들어졌습니다. – Ethan

+0

그러면 화면을 "볼"수 있고 마우스 이벤트를 플래시 응용 프로그램을 호스팅하는 창에 보낼 수있는 소프트웨어를 작성해야합니다. 플래시 앱에 "플러그인"할 수있는 방법이 없습니다 (어쨌든 대부분 암호화되어 있다고 생각합니까?). –

1

게임을 제공하는 가장 좋은 방법은 게임에서 제공하는 API를 사용하는 것입니다. 예를 들어 Civilization 게임에는 원하는 모든 것을 스크립트로 작성할 수있는 매우 완벽한 modding 엔진이 있습니다. Age of Empires와 다양한 게임에 대해서도 마찬가지입니다.

간단한 플래시 게임? 힘들거야. 그것들은 일반적으로 스크립트를 지원하는 어떤 방법도 제공하지 않으므로, 여러분은 시뮬레이션 입력을 남겨 둘 것입니다. 힘들거야.

+0

시도하고 싶다고 가정 할 때, 어떤 언어로이 작업을 수행 할 것을 제안하겠습니까? 어떻게 입력 할 수 있습니까? – Ethan

+0

당신이 js를 사용할 수 있는지 궁금해하는데, 그것을 들여다보고있다. – borrel

0

쉬운 방법은 autoit으로 마우스와 키보드 기능을 제어하는 ​​것입니다. 화면에서 정보를 읽을 수도 있지만 약간 제한되어 있습니다. 제한된 양의 가능성이있는 경우 사물이 변경되었는지 또는 화면의 특정 영역에서 무엇이 체크되어 있는지 확인하는 것이 좋습니다. 텍스트를 읽고 해석하기가 쉽지 않습니다. Autoit은 농장과 같은 게임을 자동화하는 데 탁월합니다. 나는 또한 온라인 카지노를위한 블랙 잭 봇을 만들었다. 작고 평범하고 반복적 인 (제조) 작업을 RPG에 사용하십시오. 하지만 RTS 나 FPS를위한 인공 지능을 구축 할 생각은 없습니다. Google에서 Autoit을 쉽게 찾을 수 있습니다. 빠르고 작은 다운로드. Excelent 문서 및 당신은 일 안에 그것을 배울 수 있습니다.

어려운 길은 사람들이 여기 위에 쓴 것 같습니다. 게임 데이터와 상호 작용합니다. 그 정보를 찾는 것은 나를 여기에 데려왔다. C++ 또는 Java를 사용합니다. 언어가 모두 비슷하고 1을 배우면 모두 사용할 수 있지만 복잡한 학습 환경을 통해 학습에 많은 시간이 소요됩니다. 뭔가를 실제로 신뢰할 수있는 가능성과 기회는 훨씬 더 큽니다.

관련 문제