상세검색
최근 검색어 전체 삭제
다국어입력
즐겨찾기0
한국컴퓨터게임학회논문지 제35권 3호.jpg
KCI등재 학술저널

유니티에서 주기성을 보장하기 위한 방법에 관한 연구

게임을 구현하는 동안 주기성을 보장해야될 필요성이 있는 경우가 많이 있다. 예를 들어 많은 경우에 캐릭터의 충돌은 주기적으로 처리되어야 될 필요성이 있는데 주기적으로 처리하지 못하는 경우 게임에서 충돌을 감지하지 못하는 경우가 발생할 수 있다. 또한 슈팅 게임에서는 많은 경우에 사용자의 편의를 위하여 특정 버튼을 누르면 무기를 자동적으로 발사하는 기능을 포함하고 있어 주기적으로 무기를 발사해야될 필요성이 있다. 한편 유니티를 사용하여 게임을 구현할 때 이러한 주기성을 보장하기 위해서 WaitForSeconds로 지연을 발생시킨 코루틴, InvokeRepeating, FixedUpdate, .NET의 Timers.Timer가 사용될 수 있다. 그러나 이러한 다양한 방법들로 인하여 방법의 선택에 어려움이 있어 연구를 진행하였다. 본 연구에서는 1분 동안 6000번 메서드를 주기적으로 실행하고 주기성과 횟수를 측정하였다. 또한 다양한 환경에서의 실험을 위하여 추가의 모델 렌더링이 없는 경우와 렌더링을 추가한 경우, 다양한 해상도에서 주기성과 메서드 호출 횟수를 모두 측정했다. 실험 결과, 부하가 적은 환경에서는 InvokeRepeating이 가장 6000회에 가까웠으며 부하가 큰 환경에서는 Timers.Timer가 가장 6000회에 가까웠으며 실행 주기의 편차가 가장 적었다. 이러한 실험들을 통하여 유니티를 통하여 게임을 구현할 때 일정 시간 내에 실행되는 횟수가 중요한 게임에서 성능 부하가 크지 않은 경우 InvokeRepeating을, 성능 부하가 크다면 .NET의 Timer를 쓰는 것이 적합함을 알아내었다. 본 연구를 통하여 개발자는 유니티에서 제공되는 주기성 제공 방법들 중에서 적절한 방법을 선택할 수 있다.

There are many cases where it is necessary to ensure periodicity while implementing the game. For example, collision checks need to be handled periodically, and the game may not detect collisions when they are not handled periodically. In addition, shooting games include the function of automatically firing weapons when a specific button is pressed for the user's convenience. As a result, it is necessary to fire weapons periodically. To ensure this periodicity when implementing games using Unity, Timers.Timer of .Net, InvokeRepeating, FixedUpdate, and coroutine with WaitForSeconds, can be used. However, it was difficult to select one of the methods due to the variety, so this research was conducted to help the choice. In this study, a method was periodically executed 6000 times per minute. And, both the periodicity and the executed number of method calls were measured. We also measured them at various resolutions, with additional model rendering and without it for experiments. As a result of the experiment, the number of method calls was the closest to 6000 times when InvokeRendering was used in a low-workload case. When Timers.Timer was used, it was the closest to 6000 times in a high-workload environment, and the deviation of the execution cycle was the least. Through these experiments, we concluded that InvokeRepeating was appropriate if the workload was not high in a game. However, it was appropriate to use the Timer within .NET in the case where the workload was high. Through this study, the developers can choose one of the provided methods by Unity.

1. Introduction

2. Related Works

3. Experiment

4. Conclusion

Acknowledgement

Reference

로딩중