Let's Go Idol!
- 이번 프로젝트에서는 몇몇 추억의 게임들을 선택하여 그들을 현대적인 버전으로 재현해볼 것입니다.
- 게임 개발의 기초를 학습한 후, 그 핵심 요소 중 하나인 "충돌 처리"에 중점을 두고 진행됩니다.
- 프로젝트의 선택 구현 사항에서는 게임의 다양한 측면을 향상시키는 데 도움이 되는 기능들을 추가할 것입니다.
- 이런 과정을 통해 게임 개발의 창의성을 경험하고, 새로운 스킬을 습득할 수 있습니다.
>> 기반이 된 게임
주요기능
- 만약 목록에 만들어져있는 아이디와 비밀번호가 없다면 메인 게임시작씬으로 넘어가지 못합니다.
- 아이디와 비밀번호를 입력받아 각각 유저의 아바타 를 가지고 메인 게임시작씬으로 넘어갑니다.
- 아이디와 비밀번호를 입력받은뒤 각각 아이디에 따른 유저의 JSON 파일을 생성합니다.
- 아이디를 생성할때 유저 아바타를 선택하고 선택한아바타의 정보를 JSON파일로 저장합니다.
- 모두 저희 팀원 아바타입니다. (에이스프라이트 이용)
- 캐릭터 선택시 캐릭터 상세정보에 이름과 이미지가 나오게 됩니다.
- 각각 유저의 아이디에 따른 Player Object 를 생성한뒤 각각 필요한 GameObject를 연동합니다
- 연동이 끝나면 이제 Falling Object 가 하늘에서 떨어지기 시작합니다.
- 시간이 지날때마다 Falling Object 사이에 ItemObject 가 하나씩 떨어집니다.
- 각각 아이템은 고유의 효과를 지닙니다.
- 마이크- 특수스킬 추가, 헤드셋- 플레이어 크기 작게 조절, 앨범- 쉴드
- 특정 아이템을 획득시 캐릭터 근처의 Falling Object를 감지하고 키입력시 아이템을 소모하여 Falling Objcet 를 제거합니다.
- 게임에서 시간이 흐를때 랜덤한 이벤트가 발생하고 게임 플레이를 방해합니다.
- 각각 유저 아바타마다 키입력시 발생하는 Skill 기능을 구현했습니다
- Player 와 Falling Object 가 충돌한다면 현재점수를 저장하고 게임오버 씬으로 넘어갑니다.
- 각각 ID 별로 저장되어있는 최고점수와 현재점수를 비교하여 최고점수를 저장합니다.
- 게임오버 씬에서 처음으로 , 다시하기 버튼을 선택하면 씬을 다시 불러옵니다.
- 사운드와 배경이미지를 설정할 수 있습니다.
프로젝트 영상
>> 유튜브 바로가기
트러블 슈팅
플레이어 정보를 서버 없이 읽고 쓰기가 가능하게 만들기
- Resources 폴더안에 Json을 생성해놓고 불러와서 읽고 쓰게 하고싶었는데 이미 빌드중인 상태일때는 파일을 동적으로 수정하거나 할때는 사용하지않는다고 해서 고민을 했다. 회원가입시 아이디와 비밀번호를 Json파일에 저장해야하기 때문에 Application.persistentDataPath를 사용했다. 리소스 폴더는 쓰기가 안된다는걸 이번에 처음알았는데 서버를 쓰지도않고 유니티에서도 쉽게 저장할 수 있는 방법을 알게되었다.
이벤트 리스너 사용
- Toggle을 클릭했을때 Sound를 제어할 수 있는 리스너를 사용했는데 한번도 사용해보지않았어서 델리게이트를 사용해서 메서드를 전달하는 법 등을 아예 모르는 상태로 프로젝트를 개발했다. 하지만 막상 사용해보니 간단하고 편리하다는걸 깨닫고 활용하는 법을 더 익혀야겠다고 생각했다. 하지만 사운드 관련해서 문제가 있는데 파괴되지 않는 오브젝트로 설정을 했음에도 오디오 관련 파일 제외하고는 None이 되어서 리팩토링이 필요할 것 같다.
프로젝트 개인적인 평가 점수
느낀점 - 멀티 부분을 모두 구현하지 못해서 아쉬움이 남지만 어떤 프로젝트보다 애정을 담아서 개발을 했기때문에 굉장히 만족스러웠습니다.
잘한부분 - 정말 게임처럼 사운드, 디자인에 신경을 썼고 게임 기능도 부족하지않게 개발을 한 점
아쉬운점 - 처음 써보는 기능이 많아서 코드가 비효율적인 점
성과 - 클래스간 호출 기능 사용, AI사용, Json을 활용한 읽고 쓸 수 있는 파일 기능
추후 개선할 점 - 코드를 비효율적으로 짰더라도 리팩토링해서 수정하기
어려웠던 점
SetObject는 배경 사운드와 배경 이미지를 컨트롤하는 오브젝트인데 DontDestroyOnLoad로 선언을 했음에도 불구하고 씬을 이동했을때 토글과 이미지가 None이 되는걸 볼 수 있다. 노래는 계속 나오지만 다시 처음 씬으로 이동했을때는 컨트롤이 안된다.
이건 직접 할당을해서 그런 것 같은데 어떻게 수정해야할지 몰라서 아직 수정하지 못했다. 더 공부를해서 리팩토링을 해봐야겠다고 느꼈다.
뿌듯한 점
발표 이후 튜터님께서 아이돌 키우기 게임이 나오면 그 게임에 미니게임으로 넣어도 손색이 없을만큼 컨셉도 좋고 잘했다고 칭찬해주셔서 굉장히 뿌듯했다.
아직 뉴비 게임 개발자인 나한테는 굉장히 듣기 좋은 칭찬이였다!
AI를 이용해 이미지와 사운드 생성도 해봤던것도 좋은 경험이 된 것 같다.
'Record > TIL' 카테고리의 다른 글
[Unity] AI 네비게이션 (2) | 2024.05.27 |
---|---|
[Unity] SOLID 원칙 (4) | 2024.05.24 |
[Unity] Unity Image에 동영상 넣기 (0) | 2024.05.22 |
[Unity] Dictionary TryGetValue 메서드 활용하기 (ContainsKey와 차이점) (0) | 2024.05.21 |
[Unity] Unity Toggle 사용하기 (0) | 2024.05.20 |