- 문제상황
cocos creator 실행중, fixed update가 따로 없어, 기기사양에 따라 프레임이 저하되면 정확한
update로 시간을 체크, 측정하는 tween 이나, schedule이 정확한 시간을 보장하지 못하는 문제가 생김
기기 사양에 문제가 발생해 update에서 delta time이 너무 커지거나, 작아지는경우 정확한 delay, interval시간을 보장하지 못하는 문제가 발생한다.
환경정보
빌드 - web-mobile
기기 - galaxy tab A7
cocos 버전 - 2.4.12
- 조사결과
엔진 코드를 따로 살펴본결과, tween과 schedule모두, delay나 interval 체크시 update를 사용하여 시간을 체크하는것을 확인
tween의 경우, 2.x 버전에서는 action class 를 wrapping해서 사용하였으므로, CCActionManager.js 에서 update부분을 확인해줄 수 있다.

shcedule의 경우 CCScheduler.js 에서 interval관련 함수부분에서 다음과 같이, delta time을 이용하여 추가해주는 것을 확인 할 수 있었다.

https://docs.cocos.com/creator/2.4/manual/en/scripting/life-cycle-callbacks.html
Life cycle callback | Cocos Creator
docs.cocos.com
https://github.com/cocos/cocos-engine/issues/16145
Component Life Cycle Adds FixedUpdate · Issue #16145 · cocos/cocos-engine
github.com
공식문서 자료 조사
cocos creator에 fixedupdate가 따로 없는 것을 확인
또한 github에 올려진 cocos coreator engine 의 issue중 fixedupdate관련하여 조사결과 따로 fixedupdate를 추가할 계획은 없는 것으로 확인된다.
( web의경우 싱글스레드로 굴려져서 제대로 안된다는데, 추가 조사필요)
- fixed update를 따로 구현할 수는 없는가?
-> 보통 fixed update는 물리관련 연산을 정확하게 수행하기 위해서 넣었는데..
-> unity의 경우 물리단계에서 fixed update수행이후, update를 수행해주는 lifecycle이 있음
ㄴ update와 fixed update를 둘다 굴리면서 실행해보면, 한 프레임에 fixedupdate가 여러개 수행되는것도 확인가능함, 즉 fixed update는 보통 설정한 interval보다 실제 프레임간격(update간격) 이 짧으면 어떤 프레임에서는 fixed update가 호출이 안됨(중요한건 여기서 왜 가끔, fixed update에 키 입력관련 함수를 놓았을때 실제 실행에서 키 입력이 씹히는 경우가 발생하는데, 해당 키를 입력한 프레임에서 fixed update가 실행 되지 않아 키 입력을 잡지 못한것이다.)
https://rito15.github.io/posts/unity-fixed-update-and-physics-loop/
유니티 - FixedUpdate()와 Physics Loop에 대한 이해
Update()와 Game Loop
rito15.github.io
-> 다시 본론으로 돌아와서 unity의 fixed update를 살펴본결과, update내에서 dt으로 누적시간을 따로 계산하고
따로 설정한 interval을 넘을경우, fixedupdate 실행, interval의 2, 3배 이상을 넘을경우 해당 update내에서 fixedupdate를 2번, 3번 실행하는 방법으로 fixedupdate를 따라하는 것은 가능하다.
-> 다만 엔진레벨에서 돌아가는 것이 아니므로 물리와 관련한 연산과는 따로 상호작용이 되지 않을것이다. (그럼 따라해서 얻는것이 무엇이 있는가..., 물리 아니면 딱히 얻는게 없는거같은데 )
-> animation time을 이용하는 방법도 생각해봐야하는데, 엔진에서 animation 관련을 뒤적여보자
-> 확인결과, animation time의 방법도 같은 방법으로 dt을 이용하여 구성해준것을 확인할 수 있었다.
-> 그럼 스레드를 따로 파서 시간을 측정하는 방법이 있을까..? 그러면 스레드간 값은 어떻게 참조해주면 될까
-> 단일스레드에서 작동하는 엔진을 멀티로..? 스레드간 값 참조에도 많은 오류가 발생하며, 공사가 많이 크기도하고 효율도 안좋다.
'개발' 카테고리의 다른 글
| [뉴비겜톤] 멘토링 내용, 진행내용 정리 (0) | 2025.08.12 |
|---|---|
| 2년동안 근무하며 (0) | 2025.01.21 |