유니티 13개
Post
안녕하세요!
9월개발일지로 돌아온 '여우는 오늘도 친구를 구한다' 개발중인 wisen입니다!
9월에는 8월개발일지에서 작성한 것 처럼
다국어 번역, 힌트 시스템 구현, BIC피드백 반영
을 진행했습니다.
1. 다국어 번역
유니티 Localization 기능 이용해서 다국어 적용했습니다!
사실 게임에 글이 그렇게 많지 않기에 파파고 이용해서 간단하게 번역진행했습니다.
구현할 때 크게 어려운 점은 없었지만 UI에 text 하나하나에 대응 시켜야 한다는 게 조금 번거로웠고..
챕터가 변경될 땐 해당 챕터의 제목이 적용되도록 다른 key값을 적용해야 했는데, 이걸 인스펙터 창에서 애초에 key값을 넣어두면 스크립트 상에서 변경하도록 해도 적용이 안되는 상황이 있었습니다.
text양이 은근 있어서 이런 세밀한 점이라던가 그 뒤로도 언어별로 크기 이슈 등 놓치기 쉬운 점이 많았던 것 같습니다.
폰트의 경우에는 각 언어별로 폰트를 지정하기 매우 귀찮은 상황이 있을 수 있는데,
이 경우에는 대표가 되는 폰트의 인스펙터 창에서 Fallback Font Assets안에
각 언어별 폰트를 다 넣어주면 해결이 됩니다 :D 짱!
그리고 TMP 폰트 생성할때, 'Packing Method' 를 Fast로 꼭꼭합시다..
저는 무지해서 Optimum으로 하고 중국어 생성할려고 했다가
몇시간동안 계속하길래 이게 맞는건가..다들 어떻게 하는거지..생각했습니다..
아마 그땐 Charecter Sequence도 문제였겠지만 패킹메소드가 아마 큰 이유인 것 같네요..
참고로 바꾸고나서는 별로 걸리지도 않았습니다.
뭔가 한국어로만 계속 보다가 외국어로 보니까 생각보다 잘어울려서 뿌듯했습니다.
지금 이렇게 모든 언어를 두고 보니까 제가 한국인이라서 그런지 몰라도
한국어 제목을 제일 못 적은 것 같긴 하네요..
2. 힌트(정답) 시스템 구현
퍼즐게임의 너무 당연한 아이템!
힌트(정답) 아이템을 구현하였습니다.
원래는 아예 정답이 아니라 힌트를 주면 좋겠다고 생각을 했는데,
아무리 생각해도 힌트를 어떻게 줘야할지 모르겠더라고요..
그때 생각한건 '동물을 다 구하는 것 까지만 루트를 알려주자'
'전체 정답(루트)중 반틈만 길 안내를 해주자' 였는데,
실제 나와있는 퍼즐게임들을 보고 정답을 아예 알려주는 게
깔끔하겠다란 생각이 들어 해당 시스템을 구현하게 되었습니다.
아마 정식 출시를 할 땐, 광고를 봐야 정답을 볼 수 있도록 구현할 것 같습니다.
3, 메인 오브젝트 디자인 수정
항상 메인화면을 볼때마다 거슬렸던 3D 오브젝트들의 디자인을 수정했습니다.
실제로 땅모양이 사각형이 아닌 좀 더 행성이라던가 땅 모양이면 좋겠다는 의견도 많아서
이번에 직접 만들어보고자 해서 처음 블렌더를 사용해보았습니다.
이번에 디자인을 완벽하게 하는게 아니더라도, 제가 생각한 느낌이라도 주고자 했는데
생각보다 블렌더가 많이 어렵더라고요...
일단 제일 어려웠던 점은 유니티에서 화면 조작하던 마우스 컨트롤이 달라서
그 점이 계속해서 힘들었고, 단축키.. 단축키가 많아서 당황했습니다.
그래도 머리 속으로 생각했던거랑 어느정도 닮아가는 모습을 보면 되게 뿌듯해서
나중에 시간이 된다면 제대로 배워서 써먹어 보고싶네요 ㅎㅎ
바뀐 디자인은 최대한 전보다는 좀 더 밝고 아기자기하고 동글동글한 느낌이 들도록 했습니다.
4. 하드모드 시스템 기반마련
피드백으로 많은 분들이 좀 더 어려운 느낌이 들면 좋겠다~, 횟수가 제한되면 좀더 집중되고 좋을 것 같다~
라는 의견들이 있기도 했고, 처음 게임을 만들 때도 횟수제한을 생각해보았기에
횟수제한을 둔 하드모드를 만들게되었습니다.
<하드모드 클리어(좌), 하드모드 실패(우)>
하드모드는 플레이어가 UFO를 움직여 스테이지내에 있는 동물들을 모두
빨아들이면 스테이지를 클리어할 수 있습니다.
그리고 제한된 횟수를 초과하게되면 Fail이 되며
전체 횟수 중 Target횟수 전에 클리어를 하게되면 별 개수를 높게 받을 수 있습니다.
다만, 이 기준은 직관적이지 않은 것 같아서 앞으로 UI배치를 조정하며 해당 부분도 보완해야 할 것 같습니다.
아, 그리고 이 부분을 구현하면서 처음으로 '감시자 패턴'을 적용하게 되었는데,
위의 영상이 많은 도움이 되었습니다.
특히 영상에서 이 부분보면서 영어로 의존성이 잔뜩 있는 스파게티 코드라고 얘기하는데..
영어 잘 못하는 제가 들어도 너무 찔리더라고요 ㅋㅋㅋㅋㅋ...
그리고 실제로 해당 패턴을 적용하니 신세계였습니다.
이때까지 좀 찝찝했던 코드들이 아마 이런 부분이지 않았을까 싶은데
뭔가 공부할때 보던 이론을 이렇게 실제로 적용하니까 되게 신기하기도하고
좋은 친구인거 알고 친해지고 싶은데 아직 만난지 얼마 안돼서 어색한 친구느낌이네요..
저는 해당 패턴 이용해서 변수의 값이 변경되면
UI의 숫자도 변경되도록 적용했습니다.
그 외에는
연출면에서 새로운 창이 뜰 때, 그냥 '짠' 나타나는게 아니라 '또잉'하는 느낌으로 나타내게 했습니다.
그리고 스테이지 클리어시에도 좀 더 귀여운 느낌이 들도록 파티클 효과를 조정 하였습니다.
음~ 그리고 캐릭터가 땅에 도착하면 해당 땅도 조금 흔들리게했고,
플레이화면에 보이는 땅의 디자인도 수정이 되었네요!
조금조금씩 수정을 하다보니 깃허브 커밋보고
다시 되새기고있습니다 ㅋㅋㅋ
아마 다른 주요 커밋에 묻힌 다른 것들도 있을 것 같긴한데,
9월달은 일단 이렇게 개발했습니다.
.
.
.
앞으로는
1. 하드모드 완전 구현
2. 6챕터 구현
3. 스테이지 추가개설
을 할 것 같습니다.
틀을 잡아놓은 하드모드를 완성하고, 6챕터를 새로 구현하는게 10월의 최종목표입니다.
좀 더 여유가 있다면 스테이지들도 추가로 개설하고싶네요 ㅎㅎ
다들 갑자기 날씨가 쌀쌀해졌는데 감기 조심하시고 개발 화이팅입니다! (๑•̀ㅂ•́)+✧
피드백이 있으시면
언제든지 환영입니다!
봐주셔서 감사합니다! :D
---------------------------------------------------------------------------------------------------------------------------
인스타그램 : https://www.instagram.com/wise__devart/?img_index=10
사전체험판 : https://play.google.com/store/apps/details?id=com.wise.FoxSeeksFriends
'PROJECT' 카테고리의 다른 글
[여우는 오늘도 친구를 구한다] 11월 개발일지 (2) | 2023.12.06 |
---|---|
[여우는 오늘도 친구를 구한다] 10월 개발일지 (0) | 2023.11.08 |
[여우는 오늘도 친구를 구한다] 8월 개발일지 (0) | 2023.11.08 |
[개발일지] 5. 스토리 추가, 상점 구현 (6) | 2023.07.29 |
[윈터데브캠프] 팀매칭 및 오리엔테이션 (0) | 2023.03.02 |
Post
인스타그램에서 개발일지를 간단하게 작성중이긴한데, 상세하게 얘기하기에는 너무 짧기도하고
자세하게 작성한 개발일지들은 모두 커뮤니티에 작성을 한 상태라서 블로그에다가
밀린 일지를 작성하고자 합니다! 8월 개발일지부터 다시 차근차근 작성할게요!
안녕하세요!
8월개발일지로 돌아온 '여우는 오늘도 친구를 구한다' 개발중인 wisen입니다!
8월에는 7월개발일지에서 작성한 것 처럼
디자인개선, 새로운 챕터 기획 및 테스트, BIC굿즈 및 이벤트 준비
를 진행했습니다.
1. 디자인개선
디자인개선은 이전부터 계속해서 언젠가는 해야지라며 미뤄둔 숙제였습니다.
예쁘긴 예쁜데, 지금은 이것보단 다른걸 먼저 해야지! 라는 생각으로 계속해서 미뤄두니
뭔가 미묘하게 어울리지 않는 디자인이 있었습니다.
바로 구출동물과 챕터선택 등 고풍스런 프레임이였는데요...
보기에는 꽤 괜찮고 나쁘지않지만 왠지 게임과 조금 이질적인 부분이 있다고 생각했습니다.
그리고 디자인과 관련해서 미대교수님께 현재 화면들을 보여주며 어떻게하면 개선할 수 있을지를 물어보니
해상도 문제도 있었고, 메인화면에있는 버튼들이 무슨 기능을 하는지 명확하게 하는게 좋겠다 등 피드백들을 들었습니다.
그러면서 'Figma' 라는 프로그램을 추천해주셔서 사용해보니 신세계더군요....
이때까지는 그냥 클립스튜디오에서 그림을 그리던가, 파워포인트로 UI를 제작했었는데
시간과 노력들이 너무 아까워지는 순간들이었습니다 ㅠ
그렇게 메인화면의 UI도 바뀌고 pinterest와 구글플레이스토어를 들어가 다른 게임들과 모바일어플에서의 UI를 참고하며
디자인도 변경하고 색상도 비교하며 변경을 해나갔습니다.
메인화면에서는 버튼이 어떤 역할을 하는지를 글자로 나타냈고,
좀 더 귀여운 분위기에 어울리게 UI를 직접 그렸습니다.
참고로 플레이 버튼을 누르면 UFO빛이 나옵니다 ㅎㅎ
따로 하드모드를 만들어서 하드모드에선 빨간색 빛이 나오게 할 예정이었으나...
하드모드는 어떻게 될지 잘 모르겠네요...
그리고 알림창 또한 고풍스런(?) 분위기에서 깔끔하게 바꿨습니다.
그냥 도형으로 하긴 밋밋해서 행성 느낌에 맞게 디자인도 해보았습니다.
음.. 이전 디자인이 나쁜건 아니지만 좀 더 깔끔한걸 원해서 최대한 심플하게 할 수 있도록 해보았고,
제가 원하는 느낌의 게임이 색감이 좀 편안한? 채도가 낮은 느낌이라서 그에 맞게 색도 조정해보았습니다.
그리고 결과창 또한 변경하였습니다.
알림 창을 변경하였으니 알림 창에 쓰였던 디자인이 다른 데에서 또 똑같이 쓰이는 걸 원치 않아
결과 창 또한 최대한 깔끔하면서도 알아보기 편하게 바꿨습니다.
그리고 구출한 친구를 볼 수 있는 화면이 사실 변경하게 된 시작점입니다.
제일 고풍스런 디자인이죠... 그래서 아예 분위기를 바꿔 귀엽게 집에 들어가 있는걸로 생각하고 바꿨습니다.
여러분.. Figma는.. 정말....최고입니다..
아직 준비중인 동물들은 블라인드가 닫혀져 있는 걸로 표현했습니다.
그리고 폰트라던가 전체적으로 귀엽게 바꿨습니다.
누르면 뽀짝 소리도 납니다..!
그리고 챕터선택화면 디자인도 바뀌게 되었습니다.
왜냐하면 챕터별로 선택을 하게되면 메인화면이 해당 챕터에 맞게끔 바뀌고
메인화면에서는 해당 챕터에서 구출한 동물들만 나오도록 할 것이기 때문이죠!
그래서 기존의 챕터선택 -> 스테이지 선택 -> 플레이
라는 로직을 바꿔야했고, 디자인도 바로 해당 챕터 메인화면을 볼 수 있도록 해야했습니다!
그래서 챕터를 선택하는 화면에서 바로 해당 챕터 메인화면을 보여줄 수 있도록 하였습니다.
그리고 챕터선택화면에서 '선택'을 누르면 메인화면에 나오는 행성(땅)이 변경되고
나오는 동물들도 해당 챕터에서 구출한 친구들과 해당하는 오브젝트들로 바뀌게됩니다.
그리고 여기서 플레이 버튼을 누르면 해당 챕터의 스테이지 선택화면으로 바뀌게됩니다.
음~ 디자인은 아마 이전꺼가 좀 더 귀엽고 왠지 정감이 가긴 가는데,
게임의 분위기를 고려하고 좀 더 내가 원하는 느낌을 내기 위해서 한번은 갈아엎어야지! 라고 생각은 했는데
생각보다 더 큰 작업이 되었던 것 같습니다. 앞으로는 UI는 이제 크게 손을 데진 않을 것 같은데,
이번 BIC때 피드백으로 시각적인(디자인) 요소가 많이 부족하단 말을 들어서
플레이 화면이나 메인화면 등 3D 오브젝트에 조금 더 신경을 쓸 것 같긴하네요....
정말 디자인이 제일 어려운 것 같습니다..모양도 모양이지만
색감도 그렇고 정말.. 다들 대단하시네요....
2. 새로운 챕터 기획 및 테스트
그리고 새로운 5챕터를 기획하고 구현하였습니다.
원래는 테스트만하고 밑작업만 할려고 했는데, 욕심이 생겨 구현까지 다하게되었습니다.
게임의 각 챕터마다 고유환경이 존재하기에
5챕터는 물이 나오며 바다를 배경으로 생각했습니다.
그리고 물에 빠지면 Fail이 되도록 하는걸 목표로했죠!
근데 단순히 물에 빠지기만 해서는 왠지 재미가 없을 것 같아
스토리도 짤막하게 추가할겸 조력자를 추가하였습니다.
바로 '거북이' 를 이용해 플레이어가 한번 움직일때마다 거북이도 특정 패턴으로 이동하도록하여
거북이가 오는 타이밍에 맞춰 여우가 물을 지나갈 수 있도록 하는 기믹을 만들었습니다.
네, 보시는 것 처럼 거북이를 잘 이용하면 우주선과 만나지 않고 바로 도착지점까지 도달가능합니다.
그리고 물에빠지면 둥둥뜨고 바로 스테이지를 실패하게됩니다.
그리고 챕터5의 조력자인 거북이도 우주선에 빨려들어갈 수 있는데..
거북이가 납치된 채로 클리어를 해도 별이 깎이게됩니다 ㅠ..
(거북이도 소중한 동물친구...)
3. BIC굿즈 및 이벤트 준비
BIC 전시 참가 후기 : https://gall.dcinside.com/mgallery/board/view?id=game_dev&no=134115
BIC와 관련해서는 후기 게시물을 따로 올렸으니 혹시나
후기가 궁금하신 분들은 따로 봐주시면 감사하겠습니다!
BIC 굿즈를 준비하기 위해서 이전부터 계속 고민을 해왔고
좀 더 오래간직할 수 있고 귀여움을 잘 나타낼 수 있는
스티커와 핀뱃지를 결정하게되었습니다.
스티커의 경우에는 칼선이 필요한데, 보통 어도비 일러스트레이터 프로그램을 사용해서
따로 레이어를 추가하고.. 음.. 칼선을 만들고 하는 것 같던데..
저는 어도비 프로그램도 없고! 그렇게 칼선을 수작업으로 따는 능력도 안되기때문에
자체적으로 칼선을 생성해주는 스티커 제조 업체에게(레드프린팅) 맡겨서 진행했습니다.
어우..사진을 그냥 카톡으로 보내기만해서 너무 풍파되었는데,
아무튼 다른데서 작업한 캐릭터들을 배치하여 스티커를 제작하면 됩니다.
다만, 칼선을 자동으로 만들어주는 것이기때문에
이렇게 캐릭터 외곽선을 다른 색으로 하면 실제로 칼선부분이 캐릭터 외곽선이 들어갈 수도, 외곽선이 안들어갈 수 도 있습니다.,
그래서 해당 캐릭터 색상에 맞춰서 외곽선 색상을 칠해줘야합니다!
안그러면 연락이 와서 외곽선으로 인해서 다시 작업을 해달라고 요청이 오더라고요 ㅠㅜ
꼼꼼해서 좋았지만, 제가 아직 무지해서 벌어진 일이기에 여러분은 일을 두번하지 마세요!
그리고 핀뱃지의 경우에는 주변 게임팀에게 정말 좋은 사이트를 추천받아 해당 업체에서 진행했습니다! (뺏지스토어)
해당 사이트에서는 수량을 결정한 뒤, 결제를 먼저 진행하고 난다음에
담당자에게 이미지 파일을 따로 전달하면 됩니다.
이미지 파일의 경우에는
그냥 핀뱃지 사이즈의 배경이미지에 캐릭터를 추가해서 이미지 작업을했습니다.
스티커 작업을 먼저하고나서 뱃지 작업을 하니까 편하고 좋았습니다 ㅎㅎ
물론 뱃지그림을 따로 그리긴했지만 결국은 스티커를 너무..잘 그려서.. 해당 이미지로 작업했네요...
+) 그 외
- 조작설정 (오른손, 왼손, 스와이프)
- 챕터5 메인화면 꾸미기
- 상점 아이템 UI 제작
또 그 외에 뭔가 있을 것 같긴한데..
현재 생각나는건 여기까지네요...
사실 8월안에 개발일지를 작성해야 했었는데
늦어버렸습니다 ㅠㅠ
.
.
.
.
앞으로는
1. 다국어 번역
2. 힌트 시스템 구현
3. ........ BIC 피드백.......
를 할 것 같습니다.
사실 막연하게 횟수를 제한으로 두는 하드모드를 구현할려고 생각하였으나
똑같은 스테이지를 왜 사람들이 하드모드로 한번 더 할거라 생각하느냐? 란 물음이 들려왔습니다.
너무 당연한 말이라 반박을 할 수 없었고..
하우징시스템(나만의 공간 꾸미기)과 퍼즐시스템 두개 중 어떤 것에 비중을 둬야할 지 결정을 해야할 것이다.
란 피드백 또한 있었습니다. 저는 너무 막연하게 스테이지를 클리어해서 재화를 주고 해당 재화를 통해서
메인화면을 꾸밀 수 있다면 좀 더 플레이할 맛이 나지 않을까? 만 생각했었는데 너무 안일했다고 생각합니다..
좀 더 전체적인 면을 보지 못한거죠.. 그래서 원래 퍼즐을 잘 푸는 사람들을 위해
좀 더 제한적인 요소를 둔 하드모드가 아닌 기존 플레이 시스템에서 일정 움직임 횟수 안에
클리어 한 사람들을 위한 시스템을 만드는게 좀 더 효율적이라고 생각이 들기도합니다.
그리고 계속 같은 느낌으로만 스테이지가 전개되어 지루함을 호소하는 사람들이 있기에
스테이지 개수를 대폭 줄였고, 하드모드에서 스테이지를 더 많이 보여주니 상관없겠지라고 생각했었는데
하드모드를 없애고나니 스테이지 개수가 너무 부족해보였고.. 실제로 볼륨을 키워야 한다는 얘기를 많이들었습니다.
그래서 아마 해당 챕터에 맞는 좀 더 특별한 기믹을 넣어 스테이지를 좀 더 구현해나가거나 해야하지 않을까 싶습니다.
사실 이런 기획적인 부분들은 이미 확실하게 정해야하는거였는데
제가 처음이라 아직 미숙해서 붕뜬 느낌이 드네요..
이럴 땐, 팀원이 있었다면 너무 미안할 것 같아서 한편으론 1인개발이 다행이란 생각이 듭니다 ㅎㅎ
아무튼
8월에는 보여지는 영역에 힘을 실었다면
9월달에는 시스템적인 측면에서 기획을 좀 더 확실하게 해야할 것 같습니다.
피드백이 있으시면
언제든지 환영입니다! ㅎㅎ
봐주셔서 감사합니다! :D
'PROJECT' 카테고리의 다른 글
[여우는 오늘도 친구를 구한다] 10월 개발일지 (0) | 2023.11.08 |
---|---|
[여우는 오늘도 친구를 구한다] 9월 개발일지 (0) | 2023.11.08 |
[개발일지] 5. 스토리 추가, 상점 구현 (6) | 2023.07.29 |
[윈터데브캠프] 팀매칭 및 오리엔테이션 (0) | 2023.03.02 |
[윈터데브캠프] AI와 면접하기 (0) | 2023.03.01 |
Post
처음 시작할때 글을 쓰지 않았지만, 벌써 후기를 적는다.
제일 최근일이기때문에 생생할때 먼저 적을려구하고, 처음부터 일들은 차근차근 적어나갈 예정!
최종발표는 수료식 전날, 23일에 진행하였다.
이렇게 시간표만 받았을땐, 다들 피드백시간이 있는데
왜 우리는 휴게시간이지?? 😥 하면서 팀원들과 피드백을 우린 못받는건가?? 싶었는데
그냥 한팀한팀 끝날때마다 피드백 해주셨다.
따로 스터디카페 사진이 없어서 당시에 회의하면서 찍은 화이트보드
최종발표를 위해서 10일부터인가 2월중순부터 계속 오전10시~오후10시까지
스터디카페에 모여서 프로젝트를 진행했다. 각자 맡은 역할을 다 끝내고
이제는 백엔드와 클라이언트 연결만 하면 되기에!
ㅠㅠㅠ 하지만 너무 힘들었다. 연결하는 과정에서 발견되는 버그들도 많았고
내가 개인적으로 테스트를 진행했을때의 코드를 진짜 다 뜯어고쳐야만 했었기에
사실상 내쪽에서 거의 문제가 발생해서 팀원들에게 너무 미안했다.
백엔드 분들이 서버정보들을 다 잘 전달해줬는데..! 내가 ..! 내가 ㅠㅠ
화면에 제대로 나타내질 못해서..!!
그래서 결국 미완인 상태로 프로젝트가 끝이나고야 말았다.
3D연결을 못한건 물론이고, 2D게임조차 제대로 못하는 상황..!
심지어 발표자료도 정말 허겁지겁 만들었다. 왜냐하면 시연영상에 쓰일 프로젝트모습이라도 제대로 갖추고자!
발표자료에 쓰일 캡쳐본이라도 제대로 보이고자!
애써 계속 노력했었는데, 애초에 설계를 잘못했던터라 끝끝내 완성을 못했고
심지어 시연영상에서보면 버그가 아주 잘 보인다 ㅋㅋㅋ..
대표적인 버그는 팀이 결성되고 난 다음에, 팀 채팅창에 누군가 글을 썻을때
다른 사람이 전체챗을 보다가 팀챗으로 바꿔서 채팅창을 봤을때 아무 글자도 없는것!
또, 게임에 접속중인 유저가 오른쪽 목록에 뜨는데, 몇명이상이 될 시에 한명씩 목록에서 빠져보이는것!
위 버그들은 캠프기간이 끝난 다음에 고쳤고,
포커게임 관련해서는 아직도 계속 고치고 있는중이다.
아무래도 백엔드팀원이 서버를 계속 켜줘야하고 ..
비정상 종료를 하게 될 경우 서버에 남아있는 기록때문에 껏다킨 다음에 계속 테스트를 할 수 있기때문에..
조금 오래 걸리고 있는중이다.
그 당시에는 너무 정신도 없고 잠도 부족해서 더 못고친것같았다.
지금에서야 보면 조금만 생각하면 고칠 수 있을것같은데.. 그땐 너무 정신없었다 ㅠㅠ
당시에 최종발표 당일 새벽까지 작업하다가, 오전8시까지 PPT 제출이기에 새벽4시정도부터
PPT를 만들기 시작했고
끝끝내 발표자료를 만들어서 오전 7시58분인가 그때 업로드했다.
그 다음에 너무 잠와서 잠깐자고 10시에 일어나서 시연영상 만들고
오후에 있는 최종발표에 참석하게되었다.
최종발표는 P.Pool에서 진행하였다.
화면이 띄워진 세 분은, 캠프기간동안 열심히 지도해주신 멘토님들!
ㅠㅅㅠ 난 아직도 여승환 이사님앞에만 서면 무섭다...
이때 발표를 위해서 팀원 전부 다 캠을켰는데, 나지혜멘토님이 잠은 좀 주무셨냐고 물어보셨다..
내 꼴이..ㅋㅅㅋ...ㅋㅋ.. 조금.. 말이 아닌감..? 부끄러웠다.
발표 시간대에 우리가 마지막 순서였는데, 앞팀에 발표들이 되게 길어서
조금 졸면서 들었던거 같다. 다들 엄청 열심히했고 열정이 보이고
또 PPT 엄청 잘 만든거같아서 대단했다.
그리고 우리는 분량이 적어서 15분도 안될것같은데요?? ㅎㅎ.. 하면서 팀원들하고 얘기했는데
다 하고보니 우리도 30분정도 발표함;; 머지;; PPT도 엄청 간단했던거같은데..마술이다..
캠프가 끝난 이후에도 계속되는 껏켰 지옥..
생각보다 엄청급하게 준비한것치고는..잘 발표했던것같고
나로인해 완성을 못한것같아 그게 끝까지 마음에 걸려서
캠프가 끝난 현재까지도 계속해서 작업을 하고있다.
2월 24일 수료식
최종발표가 끝난 다음에는 밥도 안먹고 그냥 그 날 하루 전체를 다 잔 다음에
다음날 일어나서 밥먹고 수료식에 참석하였다.
아 맞다. 수료식선물도 받았다!
정말 몰입의 경험..잘 가져갔습니다 ^--^....!
선물에는 무선충전기, 텀블러, 미니선풍기, 마사지기, 마우스패드가 있었다.
ㅎ.,., 뜯기전에 스포당했지만..
ㅎㅎ... 스포를 피할려고 애썻는데 ㅠㅠㅋㅋㅋㅋㅋ 웃기댱
그리고 스포를 당하고싶은 사람.
생각해보면 팀원들도 다 잘 만났다..
그래서 더 인연을 오래이어가고싶은 느낌~.~
아유 왜 자꾸 딴길로 새지.
암튼 수료식은 이때까지 우리가 진행했던 활동들을 보여주면서
왠지 고등학교 수학여행?? 중학교 수련회때 마지막날 밤느낌으로 진행됐따.
음~ 오리엔테이션! 이때 점심시간때
밥먹고나서 판교 산책했는데 왕 추웠다.
이 오티관련도 게시물에 작성할 예정!
이때 각 스팟에서 사진찍고 몇팀 추첨해서 선물줬었는데,
감히 넡부러진 사진을 이길 수가 없었다.
정말 독특하게 할려면 저렇게 해야하구나 느꼈다.
캠프 초반부에 우리팀을 소개합니다~ 도 있었다.
이때 생각보다 다른팀들중에 게임하는 팀들이 별로 없어서
잉.. 싶었다... (´。_。`) 그래두 게임팀 5팀정도는 되는듯?
1인프로젝트를 먼저 시작했었는데..
음.. 나는 이때도 마지막쯤에 엄청 늦게자고 그랬던거같다.
나는 정마알.... 게으름뱅이구나???ㅋㅋ...
아님 끝으로 갈수록 효율이 좋아지는건가..암튼..
1인프로젝트 관련해서도 게시물 포스팅할거구
관련 레파지토리는 아래 링크에 있다!
참고로 계동원 캠프장님께 리드미 칭찬받았었다 o(〃^▽^〃)o
물론 리드미 내에 순서관련해서 진행상황그런건 순서를 조금 바꾸는게 좋다고들었지만
전반적으로 잘 작성했다고 칭찬들어서 뿌듯했다. 알고리즘들 어떤것들이 있고
어떤 고민했는지 보여서 좋다고도 들었고! 나는 이때까지 프로젝트를 하면서
칭찬보다 악평을 들은적이 너무 많아서 정말 자신감 지하 100층이었는데
조그마한 칭찬이라도 기분이 너무 좋았당 !
중간발표때인가? 중간에 설문조사겸 다짐에 대해서 적는게 있었는데
잘 기억은 안나지만 다들 할 수 있다! 화이팅! 열심히하자!
그런 글들을 보니 다들 똑같은 마음이구나 싶었다. 내가 봤을때 다들 진짜 잘하고
열심히하고 대단해보이고 그랬는데, 그런사람들도 계속 자신에게 화이팅하자! 라고 하고 있는게
나한테도 위로가된듯!
휴휴,,최종발표..
모든것을 쏟아부었지...
이렇게 12월부터 시작된 데브캠프가 끝이났다.
사실 12월한달을 개인프로젝트, 1월 중순까지는 계속 발표자료 만들고
기획얘기하다보니 실제 팀 프로젝트 개발시간은 한달반?? 한달?정도였지만
팀원들을 잘만나서인지 작동하는게 어느정도 잘 보였고,
이전까지 유니티로 쓰레드라던가 통신을 해본적 없었는데
덕분에 사용법에대해서도 알게되었다.
그리고 겸사겸사 Docker와 PostMan의 위대함도!
또 깃허브에 대한 사용법도 알게되었다!
원래 깃허브는 내 프로젝트 기록느낌으로만 계속 push하고 그랬는데
이번 기회를 통해서 충돌나거나 브랜치를 사용하여 병합하거나 등등
깃허브에 대한 다양한 사용법을 좀 더 잘 익힐 수 있었다.
또 MVC모델에 대한 적용도 해볼 수 있었다.
아무래도 서버와 통신하는거다보니 통신은 통신대로,
화면에서 보여주는 보여주는것대로, 데이터는 데이터대로
처리를 해야하기에 클래스를 나누어서 해당 모델을 적용하여 좀 더 잘 관리를 할 수 있었다.
그리고 백엔드 분들과 처음부터 어떠한 데이터를 주고받을지, 그런것들을 미리 정하고
말을 했다면 더 좋았을것같다. 어떤 데이터들이 필요한지에 대해서 서로 얘기를 나누지 않으니 나중에가서 수정해야할것들이 늘어났고 또 생각보다 연동하는 과정이 길어졌다.
나는 나 혼자대로 테스트를 진행한다고 코드들을 미리 짜놓았는데
생각보다 실제 서버와 연동하다보니 그 코드들을 버리는게 대부분이었고 오히려 로직을 방해하였다.
그 코드들을 미련없이 버리고 새로 .,. 짯어야했나 싶을정도로 돌아왔지만 현재는
많이 뜯어고쳐서 어느정도 턴이 진행되는 모습까지는 왔고 현재는 3D로 넘어가는것이 아닌
일반 인디언포커게임을 진행 할 수 있는 수준까지만이라도 개발완료하는것이 목표이다.
이렇게 백엔드와 같이 게임을 만들어 볼 수 있는 경험이 많은것도 아니고
신기하고 재밌었다. 그리고 덕분에 HTTP통신과 소켓통신에 대해서도 많이 알게되었고
네트워크시간때 정말 잠깐 봤던 와이어샤크를 실제 쓰는 팀원의 모습을 보고
또 신기하기도했다. 실제로 소켓데이터가 어떻게 생겼고 또 주고받는지 보여지는 과정들도 재밌었고
기회가 된다면 다른팀원이 주도했던 포톤 실시간서버도 공부해보고싶고 백엔드 쪽도 재밌어보인다.
다음에 이런기회가 있다면 또 참여해보고싶다.
역시 개발은 재밌는거같다.
얼른 취직도 하고 싶고 새로운사람들을 만나서 무언갈 한다는게 참 재밌다.
그 중에선 이렇게 무에서 유를 창조해낸다는게 .. 재밌는듯??ㅎㅎㅎㅎ
앞으로 졸작도 기대되고 또 그외에 프로젝트들도 기대가된다.
이렇게 윈터데브캠프 후기 끝~~!
'PROJECT' 카테고리의 다른 글
[여우는 오늘도 친구를 구한다] 8월 개발일지 (0) | 2023.11.08 |
---|---|
[개발일지] 5. 스토리 추가, 상점 구현 (6) | 2023.07.29 |
[윈터데브캠프] 팀매칭 및 오리엔테이션 (0) | 2023.03.02 |
[윈터데브캠프] AI와 면접하기 (0) | 2023.03.01 |
[윈터데브캠프] 서류준비 (0) | 2023.03.01 |
Post
null 체크를 하기위해서 다양한 방법들을 알아보았습니다.
그러던 중 신기한 것을 발견하였죠.
바로 같은역할을 하는 친구들이 모두 속도가 다르단 것입니다!
is, Equals ,==
(ReferenceEquals의 경우에는 is와 속도가 거의 같아서 is로 대체하였습니다.)
테스트 코드
void Start()
{
Stopwatch sw = new Stopwatch();
sw.Start();
Test test1= TestClass1;
for (int i=0;i<100000000;i++)
{
if ( test1 == null);
}
sw.Stop();
UnityEngine.Debug.Log("Object == null : " + sw.Elapsed);
}
일단 앞선 게시물에서 is가 ==보다는 왜 빠른지 알았습니다.
근데 Equals(object,object).. 이 친구는 ==보다는 빠른데, is보다는 느립니다..
어떤 원리일까요? 좀 더 안전하게 속도를 빨리 할 수 있는걸까요?
일단 FakeNull을 체크할 수 있는 지 확인해봅시다.
IEnumerator Start()
{
GameObject test = new GameObject();
yield return null;
Destroy(test);
yield return null;
Debug.Log("UnityEngine Null check : " + NullCheckUnityEngine(test));
Debug.Log("System Null check : " + NullCheckSystem(test));
}
string NullCheckUnityEngine(Object obj)
{
if (obj == null)
return "true";
else
return "false";
}
string NullCheckSystem(object obj)
{
if (obj == null)
return "true";
else
return "false";
}
일단, ==은 fake null체크를 진행합니다. 그 결과 true, false로 나오죠.
Equals(,)의 경우에는 어떨까요?
IEnumerator Start()
{
GameObject test = new GameObject();
yield return null;
Destroy(test);
yield return null;
Debug.Log("UnityEngine Null check : " + NullCheckUnityEngine(test));
Debug.Log("System Null check : " + NullCheckSystem(test));
}
string NullCheckUnityEngine(Object obj)
{
if (Equals(obj, null))
return "true";
else
return "false";
}
string NullCheckSystem(object obj)
{
if (Equals(obj, null))
return "true";
else
return "false";
}
이런.. fake null까지 체크하진 않군요.
실제 찾아보니 ==의 경우에는 UnityEngine.Object와 정의가 연결되어 있고
Equals나 ReferenceEquals 등 fakenull 을 체크하지 않는 친구들은 System.Object에 정의되어있습니다.
Equals(object, null)같은 경우는 fakenull을 체크하지 않아 연산에서 좀 더 시간이 빠르단걸 알게되었습니다.
그럼 왜 is나 ReferenceEquals보다는 느린걸까요??
둘다 시스템 상 null만 체크하는건 동일하지만
Reference.Equals(object, object)의 경우에는 두 개체의 참조만을 비교합니다.
참조만을 비교하니 서로 가리키는 것이 무엇인지만 파악하면 되기에 속도가 빠른것같습니다.
object is null의 경우에는 상수 또는 Null만을 비교함으로써
두가지의 경우만 있기에 좀 더 속도가 빠르게 진행되는것같습니다.
Equals(object,null) 의 경우에는 두개의 값 모두 null인지를 먼저 체크 한 다음에 값의 비교를 진행합니다
null인지도 체크하고, 그 다음에 값이 같은지까지 체크하니 좀 더 속도가 걸리는것같습니다.
그래서 결론적으로 속도차이는
object.Reference.Equals(object,null) = object is null > Equals(object,null) > object == null
이렇게 결론이 나게됩니다.
자세한 함수의 코드는 잘 모르지만 나와있는 문서의 정보라던가 사람들의 이야기를 들어보고 정리한 결과,
해당 함수가 어떤 기능을 수행하는지를 알게되어 속도가 왜 차이가 나는지에 대해서도 어느정도 이해가 되었습니다.
하지만 무조건 제 말이 옳은건 아닙니다.
저도 단지 원리를 보고 파악하는것이기때문에 피드백이 있다면 언제든지 환영입니다!
이걸로 null에 대한 여정 끝!
참고자료
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/is
'STUDY > 유니티' 카테고리의 다른 글
[C#] null을 비교하기위한 여정2, is 와 FakeNull (0) | 2023.01.21 |
---|---|
[C#] null을 비교하기위한 여정1, ==와 Equals() (0) | 2023.01.18 |
[Unity] 메지카복셀에서 내가 만든 캐릭터 유니티로 불러오기 (0) | 2022.09.10 |
[Unity] C# 문자열보간 (0) | 2022.08.02 |
[UniRx] UniRx에 대해서 알아보기 (0) | 2022.08.02 |