프로그래밍/게임개발

4학년 1학기 플젝 리뷰[가상현실]

b1ackhand 2023. 6. 25. 23:39

1학기에 서로 다른 장르의 게임을 2개를 만들어야 되는 현실을 마주하게 되었다.

현실이 가상현실인 것 같았다.

 

한가지는 캡스톤프로젝트의 게임개발 이었고 

두번째는 가상현실수업의 term project였다.

 

상대적으로 주어지는 시간도 짧고 좀더 가벼운느낌이었는데 2명이 1팀으로 게임잼하듯 빠른 시간에 간단한 게임 개발을 하였다. 수업시간에 유니티를 조금 배우지만 다른 팀원 1명은 유니티를 처음 배워서 개발하는데 시간이 조금 걸렸다.

 

용량이커서 유튜브 사용

https://youtu.be/pr8Offp2SQg

 

 

https://github.com/sjmjys954646/unirun

 

GitHub - sjmjys954646/unirun

Contribute to sjmjys954646/unirun development by creating an account on GitHub.

github.com

조작키 및 빌드버전은 github 에 남겨 두었다.

내가 개발한 내용은 다음과 같다.

 

[Intro Scene]

시나리오 매니저 -> 싱글톤 사용, UnityEngine.SceneManagement 사용
Text, Button 시나리오매니저에서 해당 이동함수 불러오기

[GameSelect Scene]

시나리오매니저 및 버튼매니저 사용하여 각 게임으로 이동
마우스 올라갔을때 정보나오는건 EventHandler 함수 이용

[Platformer]

GameManager

UI매니저를 따로 만들어야 됬지만 스케일이 작아서 병행
게임매니저가 스코어 담당
점프 횟수를 플레이어가 담당


게임시작시 time.scale = 0으로 일시정지
스페이스바 누르면 1로 변경하고 게임시작
게임 끝날시 Wait()코루틴으로 2초뒤 종료, 스코어표기 및 다시시작 버튼
버튼은 시나리오매니저 담당

Player
- 플레이어가 점프를 하는순간 addforce로 더해주는데 떨어지는 속도가 늘어나기때문에
이를 additional JumPower로 조정했다.

해당 소스 부분 : 현재 점프 개수 * 추가적인 점프힘
그리고 아래에 pipeUI조정까지 땅에 다으면 pipe개수 초기화

정교한 계산이 아니라 화면 밖으로 나갈 수 있기 때문에 천장 콜라이더 추가

나머지 부분은 수업시간과 과제부분과 동일

RandomDispensor
Bullet

구간 별 랜덤화
1. 생성시간 간격
2. 총알의 속도
3. 총알의 Y좌표

총알을 Instantiate 하면서 속도를 할당.
총알은 왼쪽을 향해서 날아감.
x좌표가 -10 이하때 삭제되면서 점수 추가

[Rhythm game]

유니티 제공의 스카이 박스 사용
유니 어셋 애니메이션 재생
배경 캐논 노래 

FileSetter

채보에 대한 설명

엑셀파일을 보여준다.
csv UTF-8 저장
CSVReader.cs 텍스트 어셋으로 읽게함.
파싱해서 만들어놓은 자료형에넣는다.


SpawnGameObject에 대한 설명
대충 삼각형과 비율 설명하면서 거리
9개 공간으로 나눠져서 생성되는 원리 소개

RhythmBox

가지고 있는변수 소개
TriggerEnter로 파괴될수 있는지점 도착시 변수변경
유저 지나가면 MISS
Particle
GetterSetter


MouseCursor

GetMousebuttonDown, GetMouseButtonUp
게임시작, 라인렌더러
가로로 그었는지 세로로 그었는지 판단 방법
벡터의 내적길이로

x축 y축 내적했을때 긴쪽이 베는 방향

가장 앞에 있는 큐가 Breakable인지 확인
가로 세로로 잘 잘랐는지 확인
제거 후보면 점수판정
점수판정 색다른 부분의 x좌표 값으로 구분 (거리감 떄문에 좀 안맞아서 살짝 땡겼음)
베고 파티클생성

GameManager
싱글톤패턴
1. 노드 생성
2. 점수관리
3. UI 설정

노드관리 자료구조 큐를 이용
처음에 가져온 자료구조를 큐에 생성위치 별로 나눠 넣는다.
노드 종류는 랜덤
노드 생성 y좌표는 랜덤
노드 생성 x좌표는 고정
x는 고정이냐? 원래 2d 로 할려고 채보라는 시스템을 쓸려고했는데
3d가 되면서 버리가 아까웠다.

 

 

 

발표 준비하면서 작성한 내용이라 뭔가 필요없는 말도 많이 섞여있다. FPS는 내가 아닌 팀원이 만들었다. 다 구현된 어셋을 많이 쓰긴했지만 처음 구현한것 치고는 잘한 것 같다.

 

후기 : 

팀원 한명이 git을 사용할지 몰랐는데 머지하는 당일 뭔가 하나가 충돌나서 약간 애를 먹었지만 잘 해결 되었다. 원래 다 2d 기반으로 어느정도 개발을 끝내놓고 종강을 준비하고 있었는데, 교수님께서 게임이 3d 여야된다고 하여 모두 갈아엎느라 시간이 좀 걸렸다. 시스템적인 기획은 어느 정도 되어있어서 구현하는데 조금 고생했지만 그외에 어려움은 없었던 것 같다.

'프로그래밍 > 게임개발' 카테고리의 다른 글

Godot Engine 사용기 2  (0) 2024.11.08
Godot Engine 사용기 1  (0) 2024.11.08
캡스톤 게임개발 이야기 3(최종)  (0) 2023.06.25
캡스톤 게임개발 이야기 2  (0) 2023.05.03
캡스톤 게임개발 이야기 1  (0) 2023.04.28