드디어 첫 번째 보고서가 완성됐어.
보고서를 만들면 내가 뭘 만들고 있는지 좀더 직관적으로 이해할 수 있어서 나중에 프로그램을 확장/유지보수할 때 매우 유용하게 쓰일 수 있어.
어떻게 보면 보고서를 만드는 것이 많은 시간이 걸리고 비효율적이라고 생각할 수 있는데, 지금은 쉬운 개념인 오브젝트 풀이지만 만약 프로그램이 더 복잡해진다면 코드의 에러나 꼬인 부분을 디버그하는 데 드는 비용이 더 들 수도 있어 - 이런 경우를 예전에 많이 겪어 봤는데, 이런 디버그는 시간도 시간이지만 매우 피곤하고 심하면 번아웃으로 이어질 수도 있더라고. 그래서 되도록이면 처음부터 탄탄하게 가는 쪽으로 개발 방향을 잡게 되었어.
이번 보고서는 쓰는데 무려 7일이나 걸렸어. 원래는 3일을 목표로 했지만, 보고서 작성 방식을 생각하느라 4일이 더 들게 되었어.
하지만 지연의 원인이 번아웃이나 논리적 stuck이 아닌 보고서 작성 방법에 대한 문제와 이의 해결방안 탐색이었기 때문에 4일의 추가 시간은 유의미한 투자였다고 생각해. 보고서 방식의 개선은 시간이 들지만, 그만큼 프로그램의 로직에 대해 고민하는 시간을 줄이고 더 직관적인 프레젠테이션을 가능하게 하기 떄문이야.
다만, 아직은 Unit Test가 너무 많은 작업량을 요구하는 것 같아서 이를 단순하게 할 수 있는 방안을 생각 중이야.
이제 오후부터는 Geo 개념에 대한 보고서 작성을 시작하려고 해.
열심히 작성해서 완성하면 또 올려볼께 :)
프로그램 개요
Pool은 생성과 파괴가 번거롭거나 오래 걸리는 객체를 미리 생성해 두어 빠르게 제공하며, 사용을 마친 객체를 임시로 저장하여 시스템이 여유가 있을 때 파괴하거나 차후 재사용할 수 있게 하는 도구이다.
기획 목적
수많은 객체들이 생성과 소멸을 반복하는 – 특히 GameObject 객체들의 생성과 소멸이 빈번하게 발생하는 시뮬레이션 프로그램의 경우 생성이 오래 걸리는 객체들을 수시로 생성함으로서 컴퓨터의 처리 자원을 잡아먹고 많은 가비지가 발생하는 등 프로그램의 최적화에 문제가 되는 현상이 발생하였다.
이러한 문제를 해결하기 위하여, 생성과 소멸이 오래 걸리는 객체들을 임시로 보관하여 필요할 때마다 꺼내 쓸 수 있게 해주는 도구인 Pool이 개발되었다.
사양
Pool은 궁극적으로 시스템이 여유가 있을 때 객체의 생성이나 파괴를 함으로써 컴퓨터의 부담을 최소화할 수 있게끔 설계되었다. 하지만 UE의 1단계 사양에서 자원의 계산이 구축되지 않으므로 1단계의 Pool은 해당 기능을 제외한 아래의 기능의 구현을 목표로 한다.
- 풀링을 할 객체의 지정
- 필요시마다 풀에서 객체를 가져오거나 반납 가능
- 풀의 최신 상태 유지 : 일정 시간마다 체크하여 풀에 있는 오브젝트를 적정 수준으로 유지
2단계의 풀링은 1단계를 바탕으로 아래의 기능을 추가하는 것을 목표로 한다.
- 풀의 최신 상태 유지 : 시스템이 여유가 있을 때 체크하여 풀에 있는 오브젝트를 적정 수준으로 유지
- 풀 용량 최적화 : 일정 시간마다 오브젝트 유입량과 유출량, 생성량 데이터를 체크하여 최적의 풀 용량을 맞춘다.
Process Flow Diagram
Unit Test Report
Pool의 정상 작동을 확인하기 위해 PFD의 항목들을 InOut Verify 기법으로 검사하였다.
SPool
1. Construct : Pass
2. Get : Pass
3. Release : Pass
4. Optimize : Pass
Pool
1. Register : Pass
2. Get : Pass
3. Release : Pass
Pool의 롤백을 위하여, 현재 버전의 비공개 Git 링크를 첨부합니다(유니티 버전 2019.4.9f1) :
https://github.com/dove-creative/UniEngine/commit/96f8f1ba8e9e6406036b366611a4e4fe4a0b58d0
Unit Test에 대한 자세한 정보는 다음 링크를 참조하세요 : https://blog.naver.com/dove_creative/222103589844
어셋스토어에 많이 있는 오브젝트풀들과 비교했을 때 차이점이 뭐야?
아마 크게 없을걸
좀 너무나간 것 같기는 함. 그림 이쁘다
하다보면 나아지겠지... 일단 올해까지는 이렇기 기본적인 도구들을 만들어나가려고 함.
rtrt
얼마나 성능이 향상됐는지도 있으면 좋겠네
성능 향상보다는 깨끗한 코드와 유지보수를 위한 목적이 더 커서, 성능면에선 기존과 비슷할거야.
와 지렸구연 - dc App