관리 메뉴

STIKA-DEV

3번째 팀 프로젝트 < Burning Marble> 본문

프로그래밍/프로젝트

3번째 팀 프로젝트 < Burning Marble>

STIKA 2024. 2. 16. 21:48

24.02.09 Fri ~ 설 연휴 ~ 24.02.16 Fri

 

❤️  불타는 13조의 금요일 ❤️ 

Burning Marble - 타워 디펜스

https://www.youtube.com/watch?v=sFpiWr-rcq0

 

https://github.com/STlCA/BurningMarble13

 

GitHub - STlCA/BurningMarble13: 유니티 3기 13조의 불타는 구슬

유니티 3기 13조의 불타는 구슬. Contribute to STlCA/BurningMarble13 development by creating an account on GitHub.

github.com


✏️ 작업 현황

24.02.15 Thu

 

✔️ 로직 예정 - 제거
1스테이지 보상 - 구슬2개
2스테이지 보상 - 구슬2개
3스테이지 보상 - 구슬3개

 

✔️ 로직 확정

처음부터 모든 구슬 사용가능


✔️ 구현 예정
골드 - 구슬 업그레이드, 구슬 팔기
보경님 보스 연결->보스별 스킬?
->보스 5웨이브마다 나오고 체력설정은 완성

몬스터에 체력바 달기
게임씬 마무리

 

✔️ 작업중
보상고민 -> 보상없이?
스테이지 종료일때 보상
버그
구슬연결
스테이지 종료UI(이뿌게)
메인메뉴 메달
골드 사용(구슬작업 끝나면) - 처음 설치시는 완성
-> 이어서 선택한 구슬 prefab로드 해야함
구슬받아서 정리

 

✔️ 구현 완료
5스테이지별 보스
wave가 올라갈 수록 몬스터 체력 수정
웨이브당 보스 체력 수정
보스죽으면 목숨2개깎임
게임오버 UI 연결
무한모드(infinity모드)
UI 구현된것들 연결
스테이지 종료
인피니티모드 체력증가->기능추가가능(추가구현으로보류)
스테이지 종료UI 만들어지면 연결 - 경섭님 진행상황 -> 넣을것들 상의
보스 이미지 - 커비
구슬범위 전역 맨앞부터 조지기->영호튜터님이 해결
구슬이 범위별로때리기
인피니티모드 체력증가
메인메뉴에서 구슬저장되는거 게임씬에 적용


✔️추가 구현 예정

웨이브당 몬스터수
인벤토리에서 구슬강화
랜덤몬스터 떄리기
게임매니저 DontDestroyOnLoad(gameObject)

몬스터가 공격받았을때 데미지 띄우기

BGM 넣기

-> Start / Inventory / Game


✏️ 트러블 슈팅

  1. 몬스터 한 마리가 안죽고 빠져나가면 게임이 멈춰버림
    killMonster와 goalMonster를 다르게 측정해서 9마리잡고 1마리는 골인해버리면 생기는 문제
    골인지점에 닿아도 killMonster가 증가되게끔 해서 해결

  2. 재시작, 메인에 갔다가 시작했을 때 몬스터가 안나옴
    Retry버튼을 눌렀을 때 맵이 활성화가 되도 몬스터가 안나오는 문제 발생

    GameOverUI가 생겼을때 timeScale을 0으로 변경했으나 팀원간에 소통의 오류로 생긴 문제
    GameManager에 Start에서 Time.timeScale을 1로 변경

  3. 인피니티 모드 재시작 하면 맵이 사라짐
    WaveSystem.cs에서 메인메뉴를 나갔다가 들어오면 새로운 맵이 로드
    Retry의 경우 나왔던 맵을 저장해서 다시 로드를 구혔했는데
    Stage1,2,3에는 구현이 되어있으나 Infinity부분에는 구현이 안되서 생겼던 오류

  4. 보스로 죽으면 게임오버 UI가 안나옴
    Life가 3개가 있는데 3개가 사라지면 GameOverUI가 뜨게끔 구현
    goalMonster로 죽은 횟수 측정을 했는데 보스는 목숨이 2개가 닳게끔 구현
    Life가 1개가 남았을때 보스가 골인을 하면 goalMonster가 4개가 되서 UI가 안뜸
    goalMonster >= 3으로 변경

  5. 인피니티 10단계에서 보스가 직진함
    게임 테스트 중에 다른 창을 선택하게 되면
    unity안에서 딜레이가 발생해 일어나는 버그였음
    팀원분이 놀래서 같은부분을 10번이상 테스트를 해본 결과
    다른 브라우저는 괜찮은데 zep만 가끔 충돌난다는 것을 알게됨


  6. 1단계를 클리어 하고 메인메뉴로 이동 한 뒤 다른 스테이지를 선택하여
    골에 몬스터가 한 마리라도 들어가면 게임 오버가 됨
    다른 팀원이 작업한 UI를 받아와서 연결하는 작업 중에 생긴 오류였음
    스테이지 초기화를 하는 부분이 여러메서드에 나뉘어져 있어서
    어떤 메서드로 초기화를 했냐에 따라 초기화 값이 달라짐
    모든 초기화 부분을 메서드 하나에 담아서 그 값으로 초기화를 하게끔 만듬

  7. DontDestroyOnLoad(GameManager)
    MenuScene으로 GameScene의 값을 받아와야하는 상황이 생김
    마침 수준별 특강에서 DontDestroyOnLoad로 게임매니저를 사용하는 방법을 듣게 되었고
    그 방법으로 GameManager를 삭제되지 않게끔 하려 함

    근데 작업이 이미 꽤나 진행되어 있는 상태였고
    프로젝트 내부에서 LoadScene을 꽤나 사용을 하게 되면서
    GameManager Object가 삭제되고 재생성되는 걸 염두에 두고 스크립트를 만들었다
    그러다보니 DontDestroy로 만들고 나서 초기화가 되지 않는 부분들이 너무 많아져서

    굉장히 많은 부분의 코드를 손봐야 하게 되버림
    다른씬에 UIController를 만들고 스크립트를 만들어서 GameManager에 접근해 static값을
    받아오는 쪽으로 구현함

  8. MainScene충돌 - 다른 팀원의 트러블 슈팅
    각자의 분기를 만들어 작업하고 Dev 분기에서 병합하는 식으로 Git을 관리했는데

    한명은 MainScene을 작업하고 있었고 다른 팀원이 MainScene을 건드렸는데
    작업 내용의 소통이 잘 안되서 그 두개가 충돌,
    분기가 꼬인 실수로 Dev에서 작업을 했고 커밋이 되어있지 않아서
    MainScene담당 팀원의 작업물이 날라갈뻔 했던 위기가 있음
    다행히 튜터님의 도움과 담당 팀원이 작업내용을 기억하고 있어서 복구에 성공했으나
    프로젝트 제출 기한 6시간전에 생긴 일이여서 가장 무서웠던 트러블슈팅이였음
    GitHub에는 소통과 전달이 굉장히 중요하다는 걸 몸소 체험하게 된 경험이였음

 


📝 이번 프로젝트 마무리

팀원 한명과 GameManager부분을 맡게 되었다.


다른 팀원들이 각자의 파트를 구현한 작업물들을 받아서

서로의 작업물들이 서로 상호작용이 되게끔 연결하는 작업을 했다.

 

그러다보니 연결하는 과정중에 자잘하지만 굉장히 많은 트러블 슈팅이 발생되었다.


그래도 팀원들이 각자 작업을 할때 서로의 연결을 염두에 두고 작업을 해서
연결 도중에 새로운 코드를 작성하거나 연결하는 일 자체에는 많은 시간이 들지는 않았다.


그런데 그러다보니 오히려 연결하는 과정중에 사용하지 않게 되는 부분들이 생겨서 그 부분을 정리하는 일도 있었다.

 

오늘 마지막 작업으로 월드좌표와 스크린좌표를 ScreenToWorldPoint를 이용해서
변환하는 과정이 있었는데 그 과정중 오류가났었다.

 

튜터님과 디버깅과 직접실행창을 사용해서 확인해본 결과 작업환경은 2D인데

메인카메라의 프로젝션이 3D에 쓰이는perspective로 되어있었어서 좌표를 변환할때 오류가 났었다.

 

잠시 확인을 하려고 바꿔놨던 부분을 원래대로 돌려놓지 않은채로 GitHub에 Push를 했고

그걸 Pull해와서 작업을 했던것 같다는 예상을 하고 있다.


덕분에 오브젝트 위치가 살짝씩 어긋나서 마지막에 급하게 정리했지만 그래도 생각보다 깔끔하게 마무리가 되었다.

 

그리고 프로젝트

 

이번에 역대급으로 좋은 팀원들을 만나서 다같이 밝은 분위기로 힘내면서 작업할 수 있었고
서로서로 알려주고 회의를 하면서 협업을 많이 할 수 있었던거 같다.

 

이번에 GameManager를 맡게 되면서

게임의 모든 부분이 서로서로 굉장히 긴밀하게 연결이 되어있다는 것을 많이 체감을 했다.


그래서 더더욱이 협업하는 사람들끼리 소통을 많이 하고, 의도를 전달하고

작업물의 병합과 충돌, GitHub 관리가이 굉장히 중요하다는 것을 한번 더 크게 체감을 하게 되었다.


이번 팀원들이 각자 잘 하는 부분들이 다양했고 실력이 다들 좋았다.

 

그래서 덕분에 팀원들의 다양한 방식의 코드도 많이 보고, 설명도 들으면서 많이 배우게됐다.

 

정말 손에 꼽을 만큼 즐겁고 좋은 경험이였다.

'프로그래밍 > 프로젝트' 카테고리의 다른 글

4번째 팀 프로젝트 < Magic Cafe >  (0) 2024.03.07