2012-12-12 3 views
0

일반 Java (외부 라이브러리 없음)로 게임을 프로그래밍하고 있습니다. JRebel을 사용하여 프로젝트를 실행하면 성능이 저하되고 프레임 속도는 1fps 이하로 떨어집니다.게임 개발 (성능)의 JRebel

게임 개발에 JRebel을 사용할 수있는 방법이 있습니까? 코드를 변경 한 후에 JRebel을 "실행"하여 게임 속도를 늦추지 않아도 응용 프로그램을 다시 시작하지 않고도 변경 사항을 볼 수 있습니까?

Eclipse와 Java 1.6, 최신 JRebel을 사용하고 있습니다. JRevel에 대한 사전 경험이 없으므로 도움을받을 수 있습니다. 감사.

+0

일반적인 디버깅 환경으로 인해 JRebel은 물론 실행중인 코드베이스에 성능이 저하됩니다. 그것을 사용하여 무엇을 시도하고 있습니까? 전체 게임을 실행 상태로 유지해야 할 필요가 있습니까? 아니면 한 번에 전체 비트와 조각을 실행할 수 있습니까? – Makoto

+0

나는 게임 플레이를 즉시 변경할 수 있도록 노력하고 있습니다. 게임을 실행하는 동안 모든 것을 설정 파일에 넣고 단추를 만들어 설정을 다시로드하는 것이 더 적합할까요? 방금 JRebel 라이센스를 받았고 그걸로 뭔가를 얻을 수 있다면 해보고 싶었습니다. – Arttu

답변

3

이것은 JRebel에 적합하지 않습니다. 복잡한 WAR와 같이 재배포하는 데 오랜 시간이 걸리는 응용 프로그램을 실행하는 경우 즉시 클래스를 다시로드 할 수 있습니다. 게임을 다시 시작하는 데 얼마나 걸립니까?

웹 응용 프로그램은 요청이 발생하지 않을 때 거의 작업하지 않으므로 개발, 다시로드, 테스트 및 개발할 수 있습니다. 게임은 코드 작성과 같은 작업을 수행 할 가능성이 높습니다. 따라서 모든 프레임에 코드에 새로운 클래스 정의가 필요하기 때문에 JRebel은 입력하는 동안 클래스를 다시로드하는 데 어려움을 겪을 수 있습니다. 내 추측이야.

+0

맞습니다. 게임을 다시 시작하는 데 많은 시간이 필요하지 않습니다. 그러나 특정 장소에서 게임을하거나 이상한 일이 일어나는 장소를 찾는 데 시간이 더 걸릴 수 있습니다. 상황을 재시작하고 재현하지 않고도 코드를 수정하려고 할 때 문제가있는 부분을 계속해서 플레이 할 수 있습니다. – Arttu

+0

내가 말했듯이, 문제는 JRebel이 지속적인 작업을 수행하지 않는 애플리케이션으로 코드를 핫스왑하도록 설계되었다는 것입니다. 게임 루프는 지속적으로 게임 클래스를 여러 번 참조합니다. 즉, 편집 및 저장 중에 파일을 변경할 때마다 JRebel은 영향을받는 클래스를 즉시 다시로드해야합니다. 대기 시간이 예상되는 웹 응용 프로그램에서는 괜찮지만 여기서는 그렇지 않습니다. –

+0

사실, 응용 프로그램이 지속적으로 활성화되어 있다면 실제로 이런 유형의 응용 프로그램에 대해 JRebel을 사용하지 못합니다. 클래스가 외부에서 참조 될 때마다 클래스가 다시로드됩니다. 즉, public 메서드가 다른 클래스에서 호출됩니다. 따라서 게임 플레이가 진행되는 while 루프를 꽤 많이 가질 수 있습니다. 워크 플로가 루프에서 빠져 나오지 않으면 디버거가 현재 프레임을 삭제할 수 없으면 실제로 변경할 수 없습니다. 까다 롭지 만 JRebel이 게임 개발자에게 가치를 제공하는 것은 여전히 ​​가능합니다. 응용 프로그램이 어떻게 구현되는지에 따라 달라집니다. –