자바 FX 게임 개발 효율 에 대한 간단 한 설명

3839 단어 JavaFX
설명:  본 블 로그 글 의 오리지널 유형 은 모두 개인 오리지널, 판권 소유 입 니 다.전재 출처 를 밝 혀 주 십시오:  http://blog.csdn.net/ml3947, 그리고 본인 의 개인 블 로그: http://www.wjfxgame.com.
  한동안 블 로 그 를 쓰 지 않 았 지만 모든 것 이 일사 불 란 하 게 진행 되 고 있다.
  그동안 일이 없 었 을 때 자바 FX 기반 게임 엔진 인 WJFXGameEngine 의 효율 을 최적화 시 켰 습 니 다 (개인 블 로그 의 예 는 다시 올 리 지 않 았 습 니 다). 간단 한 2D 게임 은 제 PC 에서 가장 빨리 실행 하면 750 - 800 FPS 에 달 할 수 있 습 니 다.다음은 자바 FX 게임 개발 의 기본 적 인 문 제 를 간단히 이야기 하 겠 습 니 다.
  JavaFX 공식 게임 예제 인 BrickBreak 를 본 사람들 은 이 게임 의 그리 기와 논 리 는 Timeline 에서 진행 되 었 다 는 것 을 알 수 있다.자바 FX 의 타임 라인 은 내 가 사용 한 경험 에 따 르 면 효율 이 높 지 않 고 수량 이 너무 많 으 면 끊 길 수 있다.제 게임 엔진 에서 현재 의 간단 한 애니메이션 은 Timeline 으로 이 루어 졌 고 앞으로 크게 바 뀔 것 입 니 다.
  그리고 이전 튜 토리 얼 에서 자바 FX 의 간단 한 게임 프레임 워 크 에서 도 타임 라인 을 사용 했다.이것 은 실제로 매우 심각 한 문제 다.자바 FX 공식 예제 에 의 해 오도 되 었 다.
  현재 제 변경 사항 은 두 라인, 한 라인 처리 로 그립 니 다. 한 라인 처리 업데이트 작업 (이것 도 많은 게임 엔진 이 자주 사용 하 는 방법 입 니 다. 예 를 들 어 Android 게임 엔진 AndEngine) 입 니 다.물론, 그리 기 처 리 는 자바 FX MainThread 에서 실행 되 어야 하기 때문에 저 희 는 Platform. runLater 를 사용 하여 그리 기 동작 을 호출 합 니 다.주 스 레 드 에서 실행 되 고 있 지만 업데이트 속도 가 훨씬 빠 릅 니 다.기 존 에 했 던 자바 FX 게임 예시 에 서 는 총알 이 끼 는 등 현장 이 자주 나 왔 는데 이 제 는 나타 나 지 않 는 다.
  다음은 예제 코드 입 니 다.
  
		drawThread = new Thread(new Runnable() {
			
			@Override
			public void run() {
				while (isRunning) {
					try {
						Thread.sleep(waitTime);
					} catch (Exception e) {
					}
					Platform.runLater(new Runnable() {
						@Override
						public void run() {
							draw(getGraphicsContext2D());
						}
					});
					if (fpsMaker != null) {
						fpsMaker.makeFPS();
					}
				}
			}
		});
		
		updateThread = new Thread(new Runnable() {
			
			@Override
			public void run() {
				while (isRunning) {
					try {
						Thread.sleep(waitTime);
					} catch (Exception e) {
					}
					update();
				}
			}
		});

 
 
  이것 은 제 WScreen 클래스 의 코드 입 니 다.
  스 레 드 대기 시간 wait Time 이 낮 을 수록 FPS 가 빨 라 집 니 다.
  FPS 가 빠 르 면 또 다른 문제 가 있 습 니 다.업데이트 작업 이 잦 기 때문에 업데이트 등 작업 에서 도 move (4) 같은 방법 을 사용 하면 속도 가 매우 빠르다 는 것 을 알 게 될 것 입 니 다.
  그리고 FPS 가 안정 적 인 것 도 아니 기 때문에 서로 다른 설정 의 컴퓨터 에서 운행 하 는 상황 의 차이 가 매우 크다 는 것 을 알 게 될 것 이다. 그러면 우 리 는 또 다른 개념 인 Delta Time 을 사용 해 야 한다.
  델 타 타임 은 지난번 업데이트 시간 을 기록 했다.우리 가 매번 이동 하 는 속도 * Delta Time 은 프레임 율 의 영향 을 받 지 않 는 속도 로 이동 할 수 있다.
  물론 델 타 타임 은 거의 모든 게임 엔진 이나 프레임 워 크 에 이런 개념 을 가지 고 있다. 예 를 들 어 내 가 예전 에 사 용 했 던 마이크로소프트 의 XNA 게임 프레임 워 크, 현재 일 하고 있 는 유 니 티 3D 개발 등 이다.
   JavaFX游戏开发效率浅谈_第1张图片
  FPS 가 751 에 이 르 렀 고 같은 예 를 들 어 그 전에 효율 적 으로 발생 한 카드 문 제 를 잘 해결 한 것 을 볼 수 있다.
  
  본인 의 수준 이 제한 되 어 있 기 때문에 이 부분 은 참고 만 할 수 있 습 니 다.엔진 이 라면 Graphics 는 한 층 의 패 키 징 을 할 수 있 습 니 다.앞으로 효율 성 이 떨 어 지면 다른 OpenGL 등의 패 키 징 을 할 수 있다.
  전재 출처 를 밝 혀 주 십시오: http://blog.csdn.net/ml3947

좋은 웹페이지 즐겨찾기