2016-11-30 7 views
0

저는 게임 디자인과 관련하여 숙련 된 kivy 사용자에게 몇 가지 우려 사항에 대해 질문 할 필요가있을 때 항상 최적화에 대해 걱정하고 있습니다.Kivy - 핸드 헬드 (안드로이드, IOS 등)를위한 최적화

진정한 속도는 어느 것입니까?

그래픽 명령어를 클래스 속성에 저장한다고 가정 해 보겠습니다. 매 프레임마다 화면에서 그래픽을 업데이트 할 예정이지만 캔버스를 추가하거나 제거하지 않으면 Ask_Update가 적합한 선택 인 것으로 보입니다.

그래픽 조각을 충분히 추가하고 제거한다고 가정 해 보겠습니다. 캔버스와 캔버스를 지우는 것이 더 낫겠습니까? 저장된 지침을 다시 추가 하시겠습니까?

또는

은 모든 제거 또는 첨가 한 후 삭제를 호출하는 것이 더 있을까? 그것은 테일과 클리어링 및 캔버스의 통증처럼 보일 것입니다. 그래픽을 다시 추가하십시오.

벡터 ....

벡터는 얼마나 최적화되어 있습니까? 함수/메소드가 느린 프로세스입니까? 과거에 3D 엔진을 사용했기 때문에 느린 통화가 있었고 일반적으로 수학적인 것들 이었기 때문에 궁금합니다.

휴대 기기에서 실행되는 게임 앱의 좋은 프레임 속도는 무엇입니까?

인스턴스 삭제에 대해서도 궁금합니다. kivy는 인스턴스를 삭제하기위한 특별한 호출을 가지고 있습니까 (아니면 정리 함수를 실행 한 후) 평범한 델 호출이고 파이썬 가비지 콜렉션으로 충분합니까?

내가 Kivy의 도스 앤 도너츠를 알지 못한다는 것을 깨닫기 위해 뭔가를 개발하고 싶지 않기 때문에 지금 연구 중입니다.

답변

0

캔버스 지우기는 비효율적입니다. 실제로 모든 것을 제거하지 않는 한 그렇게하지 마십시오.

일반적으로 ask_update를 호출 할 필요가 없습니다.

Kivy의 벡터는 특별히 최적화되지 않았지만 목록 주위의 래퍼 일 뿐이지 만 실제로는 문제가되지 않습니다.

좋은 프레임 속도 목표는 60fps입니다.

Kivy의 성능이 특히 우수한 게임 엔진의 경우 KivEnt을 볼 수 있습니다.

+0

나는 테스트를 실시하여 캔버스를 지우지 않으면 프레임 속도가 떨어지는 것을 발견했습니다. 3D 엔진의 작동 방식을 생각하면 각 프레임이 새로 그려 지므로 마지막으로 그려진 프레임을 삭제합니다. 캔버스를 지우고 다시 그릴 때도 같은 논리가 뒤 따른다. 당신이하고있는 일은 장면 그래프를 만드는 것입니다 ... gpu에 그려야 할 것을 보내고 다음 프레임에서 전혀 그릴 필요가없는 것을 보내지 마십시오 (죽은 괴물이 제거되는 것과 같이). 캔버스를 지우지 않으면 마지막 프레임 내용이 그대로 남아있어 프레임 속도 충돌을 설명합니다. – chitondihk

+0

캔버스를 지우지 않았지만 각 프레임에 새로운 것을 추가 한 것처럼 들립니다. 그러지 마시고 이미 캔버스에 추가 된 기존 캔버스 객체를 업데이트하십시오. – inclement

+0

그리고 개체를 추가/제거하려면 해당 개체를 추가하거나 제거해야합니다. 이렇게하면 모든 것이 강제로 CPU에서 다시 계산되고 gpu로 다시 전달됩니다. 이는 정확히 수행하지 않으려는 것입니다. – inclement