본문 바로가기
다이어리/내일배움 개발일지

게임개발캠프 - 최종프로젝트 1~3일차

by E.Clone 2024. 3. 8.

과정명 : 내일배움캠프 Unity 게임개발 3기

전체진행도 : 51일차

부분진행도 : ChapterF - 3일차

작성일자 : 2024.03.08(금)

개발일지 목록 : 클릭


1. 진행중인 과정에 대해

3D 탄막게임을 최종 과제의 주제로 두어, 나는 업적 시스템과 탄막 시스템의 개발을 맡았다.

먼저 탄막 시스템을 개발하여 게임의 스타일을 잡은 후, 업적 시스템을 개발하는 것으로 정했다.

2. 현재까지 진행 한 작업

다이어그램

도전과제와 탄막 매니저의 모습에 대한 구상은 아래와 같다.

도전과제 확인 화면의 와이어 프레임
탄막 매니저가 탄막을 생성하고 관리하는 대략적인 로직
Todo 대략적인 다이어그램

탄막 매니저 기술적 요소

탄막 매니저를 구성하기 위한 기술적인 내용은 아래와 같다.

1. Pool Manager

탄막 오브젝트 풀을 이용하여 Instantiate와 Destroy의 사용을 줄여 성능을 최적화

2. Coroutine

탄막 로직 중 Delay가 필요한 곳에 사용. 불필요한 연산을 줄여 성능 최적화에 좋을 것으로 판단하여 사용.

3. Scriptable Object

몹들의 공격 페이즈 별 한 개의 파일로 저장.
Gen() 호출 시, 경과 시간 별 호출할 탄막 패턴과 그 상세 내용에 대해 모두 작성.
단순한 몹은 하나의 파일을, 보스몹은 페이즈 당 하나의 파일을 가지게 될 것.
(추가내용) 탄막 패턴별로 각 디폴트값을 저장할 SO도 구성한다.

기타 메모한 팁

Pool에 이미 반환한 오브젝트를 또 반환하려고 하면 에러를 표시한다.

// 탄막위치가 y > 5가 될 경우 삭제
if (this.transform.position.y > 5)
{
    // 오브젝트 풀에 반환
    Pool.Release(this.gameObject);
    Pool.Release(this.gameObject); // 이미 없는 오브젝트를 반환하려고 할 시, 에러 발생.
    Pool.Release(this.gameObject);
    Pool.Release(this.gameObject);
    Pool.Release(this.gameObject);
}

Invoke와 코루틴 성능차이

https://wonsang98.tistory.com/entry/Unity-C-인보크Invoke

https://velog.io/@livelyjuseok/유니티-코루틴과-Invoke의-차이

  • 어느쪽이든 사용해도 괜찮다면, 적게나마 코루틴이 성능적으로 앞섬.

int와 float의 차이(기술면접 참고)

https://velog.io/@ysh096/float과-부동소수점

코루틴 사용 시 new 반복사용 x

Awake, Start 대신 OnEnable 사용

setActive로 재사용할 경우에도, Active 될 때 마다 구문을 사용하도록 할 수 있음

탄막 여러가지 정보를 초기화한다.

랜덤 Vector

// 반지름이 1인 원 안에서 위치를 Vector2로 가져옴
Vector2 randCirclePos = Random.insideUnitCircle;
// 반지름이 1인 구 안에서 위치를 Vector3로 가져옴
Vector3 randSpherePos = Random.insideUnitSphere;
// 반지름이 1인 구 위의 점 위치를 Vector3로 가져옴
Vector3 randOnSpherePos = Random.onUnitSphere;

3. 과제에 대해

  • 탄막 매니저의 틀을 잡기에 아직 생각이 정리가 되지 않아 더 고민해야한다.

4. 참고자료

반응형