한달 감상평 : 아무 생각 없이 한 달을 보낸 것 같다. 최근 들어 의욕이 많이 줄었는데, 어떤 요인에서 비롯된 것인지는 모르겠다. 이를 이겨내는 것이 6월의 목표이다. 운동과 독서를 꾸준히 하고 건강한 삶을 유지 할 계획이다. 사람이 갑자기 확 바뀌면 죽을 날이 가까워진다고 하는데, 이번 회고가 마지막일 수도 있다.
사이드 프로젝트
UI 구조
- 기존에 연구했던 VContainer(DI tool)을 사용하지 않기로 했다. 저번 달에 언급했던 단점 (학습 코스트, 기존의 코드 방식과 통일성 문제 등)때문에 새롭게 만들었는데, 단순하게 만들다 보니 크게 어려울 건 없었다.
- 한 가지 깨달은 점은 개발을 함에 있어, 본질적으로 중요한 것을 먼저 우선순위로 생각해야 한다는 것이다. 지금 필요한 것이 무엇인지, 이를 구현 하기 위해 가장 적절한 구현 방식이 무엇인지 등을 고려하는 것이 우선이고, 단순히 어떤 구조가 좋다더라 하고, 무작정 넣는 것은 위험부담이 크고, 단점 또한 클수도 있다. 이미 다 큰 성인이 성장기에 좋다는 텐텐을 백날 먹어봐야 혀만 즐거울 뿐이지 않겠는가. 이와 다를 바없다고 생각한다. 명심하도록 하자.
로컬 세이브
- 정말 간단하게 json 으로 serlialize/deserialize 하게 만들었다.
- 현재 구조의 명확한 단점은 save data 라는 하나의 타입만이 존재하여, 디렉토리안에 그 타입만을 넣을 수 있게 구현이 되어있다는 것이다. 이러한 점은, 추후에 데이터 타입이 더욱 다양화 되었을때, 보완 해야 할듯 하다.
오프라인 기획
- 팀 프로젝트 팀원과 만나서 처음에 제시 했던 개발 진행 방식에 대해 논의 해보았다. 기존의 방식은 서로 바쁜 일정과 사이드 프로젝트에 할애 할 수 있는 시간이 제한적이기에, 본인 이 프로젝트에 필요하다고 생각하는 부분에 대하여 기획을 자체적으로 한 뒤, 그 기획을 공유 할수 있는 공간(지금은 confluence)에서 확인 할수 있게 하였다. 각 개인의 시간이 보장된다는 것, 자유롭다는 점은 장점이었으나 프로젝트 관점에서 보았을 때는 기획에 대한 적절한 논의, 더 나은 아이디어가 나올 수 있도록 타인과의 브레인 스토밍 하는 효과가 없어졌기에 좋지안하다고 판단 되었다.
- 그동안의 단점, 그리고 게임의 완성을 보기가 아직 어렵다는 점을 고려하여, 새롭게 기획부터 오프라인 미팅을 통해 확고히 정하고, 소통을 더욱 늘리기로 하였다. 그리하여, 오프라인 미팅을 1회 진행 하였고, 생각했던 것보다 더 미팅이 잘 진행이 되었다. 이로 인해, 앞으로 개발될 게임에 대한 기대감이 상승하게 되었고, 서로가 그리는 프로젝트의 그림이 같이 그려지고 있다는 느낌을 받았다.
회사
게임 최적화 작업 : 스위치 포팅
- 현재 회사에서는 스위치 출시도 목표로 하고 있기 때문에, 스위치 빌드를 중간 체크 하는것은 필수적이다. 스위치는 게임 용량이 굉장히 제한 적이고, 참고 문헌도 스위치 전용 개발자 포털에서만 확인 할수 있기 때문에 어려움이 많다.
- 최적화 및 포팅 작업들을 순서대로 나열 해보겠다
- 가장 먼저 있었던 이슈는 키자마자, 크래시가 났다는 것이다. 다행히 스위치에서는 target manager라는 기기 연결 프로그램에서 디버그 로그 까지 확인 할수가 있었고, 거기서 크래시 이유도 같이 나왔다.
원인은 결국 urp(unity render pipeline) 즉 유니티의 그래픽 설정 문제였다.
20240513032639.nxgcd ------------ AbortObserver called: Detected GPU error Condition: NN_ABORT Function: GpuErrorHandler in D:\home\teamcity\work\sdk\Programs\Eris\Sources\Libraries\oe\oe_GpuErrorHandler.cpp:43 ------------ Detected GPU error:NVN_QUEUE_GET_ERROR_RESULT_GPU_ERROR_TIMEOUT
urp에는 원래 forward와 deferred가 있었다. 거기에 최근 forward+ 라는 설정이 나왔는데, light를 묶어서 표현해주는 최적화 기능을 담고 있어서 , 설정을 바꿔 줬다가 스위치 gpu와 호환이 되지 않아 결국 실행을 하고 얼마 되지 않아 바로 크래시가 나오게 되었다. 정확한 이유는 찾기가 어려웠는 데, 유니티 공식 document에서는 forward+가 지원이 안된다는 내용은 없었다. 다만 urp는 스위치를 지원 한다는 내용만 존재 할 뿐이었다...(스위치는 forward+ 가 안되나 보다..) - 그 다음 이슈는 프레임이 15 프레임정도 밖에 안나왔던 이슈다. (사진을 찍어뒀어야 했는데, 못찍었다..). 프로파일러로 확인해 본 결과, 주로 우리가 짠 script의 update문 혹은 유저 connection 에 대한 polliong 이슈였다. update를 unitask로 대체하여 주고, connection 폴링을 이벤트로 바꿔줬다.
이후, 프레임이 50 프레임까지 나오는 기적을 였보았다. (사진이 또한 없다... 하지만, 진짜임)
풀리지 않은 숙제 : 로컬 세이브 시스템
- 현재 스팀 빌드에는 easy save3라는 세이브 시스템 에셋을 가져다 쓰고 있다. 하지만, 이 easy save는 스위치에 적용이 안된다. 또한 스위치는 nnfilesystem이라는 sdk가 존재하여 이를 사용 해야한다. 그래서 다시 만들어 줘야 하는데, 기존에 세이브 시스템을 사용하던 방식을 그대로 사용 할수 있게 만들어야 하기 때문에 난항이다..
깨달은 점 : 효율적으로 일을 할수 있는 방안 있다면, 이것을 미루지 말고 그때 그때 처리 해야한다.
if(효율적 방안 개발에 드는 시간 > 그 방안으로 절감 되는 시간)
return 하지말자 이미 늦었다
Personal
자취 준비
- 드디어 자취를 하기 위해 집을 알아 보고 있는 중이다. 중기청으로 알아보고 있으나, 마음에 드는 집을 찾기는 어렵운 것 같다.
캠핑
- 아버지와 제천으로 캠핑을 다녀 왔다. 고기를 목살 한팩만 사서 갔는데, 당연하게도 고기가 부족했고, 캠핑장 사장님한테 고기 살수 있는 곳 있냐고 여쭤 봤더니, 삼겹살 한팩을 그냥 주셨다. (사장님 압도적 감사...)
배드민턴
- 거의 2년 만에 쳐봤는데, 어렵다. 배드민턴은 거의 쳐본적이 없어서, 많이 어색했다. 이제 농구는 거의 안하니, 대신 배드민턴을 열심히 해야겠다.
등산
- 등산 모임 첫번째로 북한산을 다녀왔다. 4명의 성인남자가 의기투합해서 다녀왔다. 고등학교 친구놈이 아침에 운동을 하고, 걸어서 불광까지 가자고 했다. 오랜만에 운동이라 흔쾌히 수락을 했지만, 이게 나락으로 가는 전조 일줄은 꿈에도 몰랐다.
- 원래 기존에 가고자 했던 루트는 북한산성 입구 -> 백운대 였다. 하지만, 백운대를 2 km 남짓 남겨둔 시점에서 낙석으로 인해 입구가 폐쇄 됐다는 소기을 접하고 결국, 북한산성 입구에서 비봉까지 찍었는데, 거진 5시간 반정도의 산행 코스였다.
4개정도의 봉우리를 찍고 가는 루트 였는데, 이번 산행은 사람이 살면서 경험하게 되는 몇 안되는 육체적으로 정말 경험 중 하나가 되었다. 예를 들어, 군대 행군, 마라톤, 국토 순례 와 같은 경험과 견줄만 했다.
- 산에 약수가 없다는 사실과 먹을 것을 챙겨서 가야 한다는 사실을 망각 한채로 오르다보니 4시간이 지난 시점에선, 몸에서 근육과 지방에 내제ㅔ된 에너지를 끌어다 쓰는게 느껴지기 시작했다. 이 시점엔 먹고 싶은 과일 이름 대면서 걸었던 것 같다. 지나가다 과일먹고 계시는 어르신이 보이면, 구걸 해야하나 하는 생각이 이때부터 점점 진지해져갔다.
- 내려가는 길에 장독대라는 음식점이 있어서, 거기서 1차를 하고, 2차를 가기로 했는데, 음식이 맛있고, 이미 탈진 상태라 1차에서 결국 배를 다 채우고, 뿔뿔이 흩어졌다.
20대 막바지에 즐
길수 있는 낭만이었다. 낭만은 가끔 비싼 비용을 치르기도 하는 것을 다시금 절감했다.
'Dev_Diary' 카테고리의 다른 글
24.03.14 회고 (4) | 2024.03.15 |
---|---|
회고 - 24.02.08 (1) | 2024.02.08 |
회고 - 12.04 (0) | 2023.12.03 |
회고 - 11.06 (0) | 2023.11.04 |
회고 - 23. 10. 10 (0) | 2023.10.12 |