2 minute read

오늘 진행한 내용

유니티 프로젝트1 팀원 찾기: 카드 뒤집기 게임

버그 수정

  1. update 함수에 무한루프 while문을 넣으면 첫 프레임도 만들어지지 않는다. 첫 프레임이 만들어지지 않으면 유니티가 시작도 안 되고 로딩만 하는 현상이 발생할 수 있다. update문에서 while 같은 루프문을 쓸 때 주의해야 한다.

챌린지 추가 구현

카드 파도타듯 등장하는 효과

  1. 카드를 만큼 오른쪽에서 생성시키고, sin 함수를 사용해 카드가 원래 자리로 돌아가는 방식으로 구현하려 했으나, 애니메이션으로 변경하기로 결정하여 취소.

카드 개수 변화 시 카드 크기 조절

  1. 카드 개수 변화 시 정사각형 모양이 유지되게 변경.
  2. 애니메이터 때문에 카드 크기 조절이 안 되는 현상이 발생. 애니메이션 중 크기 조절에 관여하는 애니메이션이 없는데도 이 현상이 지속되었기에, 부모 오브젝트인 Board의 크기를 대신 수정.

merge 진행

  1. 팀원 한 명씩 main에 업로드하고, 다른 팀원들이 그걸 받아서 각자 conflict를 수정하며 진행. 먼저 한 팀원의 것을 먼저 올리고, 반복해서 다음 팀원의 것을 진행.
  2. 초기에는 깃 merge에 필요한 내용을 잘 모른 채로 진행하여 겹치는 스크립트를 수정해 많은 conflict가 발생함.
  3. 다행히 모든 conflict를 해결하고 무사히 merge 완료.

남은 과제

  1. 사진을 모아서 게임에 필요한 사진들을 설정해야 함.
  2. 난이도 클리어 시 해금 시스템 추가 예정.

깃 공부

기본 개념

  1. history에서 amend로 commit을 수정할 수 있다.
  2. history에서 undo로 commit을 취소할 수 있다.
  3. history에서 revert는 취소했음을 기록으로 남긴다.
  4. history에서 commit 내용을 우클릭해 checkout commit으로 옛날 상황으로 되돌릴 수 있다.
  5. history 내용을 우클릭해 해당 시점을 기준으로 새 branch를 만들 수 있다.
  6. commit할 때 changes에서 우클릭으로 각 변화를 discard 기능으로 버릴 수 있어, 변화를 한 번에 쉽게 지울 수 있다.
  7. stash는 지우기는 싫고 저장해두고 싶을 때 사용. changes에서 사라지고 stash된다. 이를 복구할 수도 있고 그대로 버릴 수도 있다.
  8. merge할 때는 부모 branch를 merge해오고, 테스트 후 문제가 없으면 부모 branch로 merge한다.

깃 충돌

같은 줄을 수정하면 충돌 가능

  1. 충돌 나면 고쳐줘야 하고 이를 피하려면 최대한 서로 같은 스크립트를 수정하지 않게 역할 분담하는 것이 좋다.
  2. 다른 사람의 스크립트를 수정할 경우 미리 말해서 합의를 봐야 한다.

Scene에서 물체 변화 충돌

  1. Scene을 서로 다르게 수정하면 충돌이 나는데, 이는 코드처럼 합의를 봐서 고칠 수 없고, 둘 중 한 명의 변화를 포기해야 한다.
  2. Scene은 한 명이 담당하는 것이 좋다.
  3. Scene을 만들 때 Script로 동적 생성하면 Scene 파일을 수정할 일이 없고, 코드만 수정하면 된다.

깃 플로우

  1. main branch에서 develop branch를 만든다.
  2. develop에서 feature branch를 만들어 각자 branch를 파서 기능을 만든다.
  3. 만든 기능들을 develop에 merge한다.
  4. develop 외에 release branch를 만들어둔다.
  5. develop가 충분히 만들어져 출시할만하면 release에 merge한다.
  6. main에서 따로 hotfix branch를 만들어 급한 수정을 한다.
  7. main은 큰 버전 변화가 있을 때 드물게 merge하여 업데이트 한다.

깃 컨벤션

  1. 깃을 수정할 때 어떻게 표현할지 정한 약속.
  2. 예를 들어 bug 수정한 경우 commit할 때 설명란 앞에 bug라고 쓰고, audio를 수정하면 audio라고 써주는 등.

마무리

깃 사용법을 배워서 정말 바빴다. 배우는 과정도 상당히 걸렸지만, 배운 후 우리가 진행한 방식이 conflict가 일어나기 너무 좋은 방식이었다. 앞으로 이런 일이 다시 생기지 않게 하겠지만, 당장은 진행한 대로 수정해야 했다. 각 팀원별로 많은 conflict가 있었지만, 겨우 모두 수정을 완료해 거의 완성된 게임을 main에 올리니 아주 뿌듯했다.