1 of 10

Portfolio

Unity Client Developer

2 of 10

프로젝트 개요

개발 인원 및 기간

담당 업무

Github 주소

Unity 2D Mobile 방치형 게임 ‘’화살키우기’’

- 누구나 쉽게 즐기는 모바일 방치형 게임

- 자동 전투, 화살제작, 자원획득으로 플레이어의 피로도 감소

- 기물뽑기, 강화, 제작화살 등 성장체감 시스템

- 퀘스트 시스템으로 게임 튜토리얼 및 진행안내

- 개발 인원 : 총 1명

- 2024.08 ~ 2024.09

- Abstract class와 FSM을 이용한 Enemy 관리

- IPointerHandler interface를 통한 드로그앤드롭, 캐릭터 정보창 구현

- AI 기반 자동 전투 ,자동 화살제작 및 합성, 자원획득 등 방치시스템 구현

- 제작, 강화, 특수, 뽑기 시스템으로 플레이어 성장 시스템 구현

- Json을 통한 스텟, 퀘스트 저장 및 불러오기 구현

- Batch 최적화

동영상 링크

3 of 10

Unity 2D Mobile 방치형 게임 ‘’화살 키우기’’

기능 구현

기능

구현

Enemy 관리

    • BaseEnemy 추상클래스 생성, 공통되는 코드(이동, 피격 등)는 내부에 모두 구현

    • BaseEnemy를 상속받는 클래스는 Die클래스를 Overriding을 통해 재정의

화살 Slot

    • Gird Layout Group으로 화살 Slot 배치

    • IPointerHandler interface기능으로 Slot 드로그앤드롭 기능 구현

    • 드래그용 복사 Slot인 DragSlot을 싱글톤 패턴으로 생성, 드래그 시작시 DragSlot을 드로그앤드롭

자동 전투

    • 플레이어는 Enemy Collider가 감지되면 전방에 화살을 계속해서 발사

    • Enemy처치로 드랍된 자원은 MoveToswards함수로 자동이동되어 얻게되고 GameManager에서 자원을 관리

    • 자동 제작 버튼을 누르면 제작기능과 합성기능이 동시에 실행

제작 기능 : 제작 가능한 화살이 있으면 Slot에 순차적으로 배치

합성 기능 : Slot에 배치된 화살을 탐색하여 자동으로 합성

디자인 패턴

    • 싱글톤 패턴으로 객체를 관리하여 메모리 낭비 방지
    • FSM을 이용하여 Enemy동작을 직관적이고 효율적으로 관리

메모리 관리

    • 오브젝트 풀링을 사용하여 GC발생 최소화

최적화

    • dynamic batching과 Sprite Atlas를 이용하여 Batch 감소

데이터 관리

    • 플레이어 스텟, 퀘스트 정보를 Json으로 변환하여 저장, 로드

4 of 10

Unity 2D Mobile 방치형 게임 ‘’화살 키우기’’

문제 해결

문제 상황

해결

- 드로그앤드롭이 정상적으로 발생하지 않음

- Canvas의 Render Mode가 Screen Space - Camera 모드로 설정되어 있어 캔버스의 좌표계와 드래그 이벤트의 좌표계 간의 차이로 발생

- 코드를 통해 ScreenPointToLocalPointInRectangle을 사용하여 마우스의 스크린 좌표를 캔버스의 로컬 좌표로 변환하여 해결

- 화살 자동 합성 코드의 시간복잡가 O(n^2)가 되어 성능 저하가 문제가 될거라확인

- 딕셔너리를 사용하여 시간 시간복잡도를 slot의 갯수 만큼인 O(n)으로 줄여 성능 향샹

- Render Pipline Asset의 dynamic batching을 체크했음에도 batching이 제대로 이루어지지 않음

- 캐릭터들의 몸 파츠중 일부 material이 서로 달라서 문제가 발생한것을 확인

- 코드를 통해 자식객체의 모든 material을 동일하게 설정하여 전투중인 모든 캐릭터들이 1개의 Draw Dynamic을 batch하게됨

5 of 10

프로젝트 개요

개발 인원 및 기간

담당 업무

Github 주소

Unity 3D ARPG ‘’데릭의 모험’’

- 몬스터를 사냥하고 퀘스트를 클리어하며 캐릭터를 성장시키는 3D 액션 RPG

- 개발 인원 : 총 2명

- 2023.03 ~ 2023.06 (약 10주)

- 플레이어 조작, 스킬, 공격 이펙트 구현

- 등급별 총 13개 Enemy의 공격, 피격, 이동 구현

- 인벤토리, 상점, 스텟창, 스킬창, 미니맵 등 UGUI작업

- 조작법, 사운드 및 감도, 저장을 위한 설정 시스템 구현

동영상 링크

6 of 10

Unity 3D ARPG ‘’데릭의 모험’’

핵심 기능 구현 - Player

기능

구현

조작

    • TPS 조작 방식을 사용, Slerp함수로 부드러운 회전을 구현

공격

    • 기본 공격 - Blend Tree의 Exit Time을 조절하여 최대 3단 콤보가 가능한 기본공격 시스템 구현

    • 근거리 공격 - Animation event 함수로 특정구간에 collider를 활성화하여 Enemy Tag감지시 데미지 활성화

    • 원거리 공격 - OverlapSphere로 감지된 모든 Enemy collider를 배열을 통해 데미지 활성화

이펙트

    • Particle System을 이용해 기본공격, 피격 등 공격 이펙트 구현

    • 다운받은 에셋의 Particle System값들을 조정하여 스킬등 다른 이펙트 변경

애니메이션

    • Mixamo 사이트를 통해 10개 이상의 애니메이션 리깅

    • 특정 동작은 Avatar Mask를 이용하여 상하체 별로 다른 애니메이션 수행

7 of 10

Unity 3D ARPG ‘’데릭의 모험’’

핵심 기능 구현 - Enemy

기능

구현

이동

    • NavMeshAgent를 이용해 플레이어 추적을 구현

공격

    • Random함수를 통해 나온값이 0이면 근거리, 1이면 원거리 공격, 두번째 Random함수를 실행하고 공격할 패턴 실행(원거리 공격은 플레이어의 방향으로 투사체를 날리고 근거리 공격은 전방에 플레이어가 감지되면 실행)

피격

    • World space 캔버스로 slider 체력바 및 데미지 텍스트 생성

    • 체력바는 피격시 Lerp함수로 인해 부드럽게 감소, RotateTowards 함수로 항상 플레이어를 바라보도록 구현

    • 피격 Paricle을 SetActive를 통해 실행, 받은 데미지를 데미지 텍스트에 띄우도록 구현

생성

    • 오브젝트 풀링을 이용하여 GC호출 최소화

8 of 10

Unity 3D ARPG ‘’데릭의 모험’’

핵심 기능 구현 - UGUI

기능

구현

미니맵

    • Render Textures와 Raw Image를 이용해 플레이어를 따라다니는 미니맵 생성, NPC나 Enemy는 다른 이미지를 넣어 미니맵에서 구분이 가능하게 구현

상점, 인벤토리, 스텟창

    • Event Handler를 통해 장비의 상세정보 확인가능하게 구현
    • Scriptable Object로 장비, 스텟을 관리

설정

    • PlayerPrefs를 통한 저장기능 구현
    • 싱글톤 패턴으로 사운드를 구현하여 메모리 낭비 방지

9 of 10

Unity 3D ARPG ‘’데릭의 모험’’

문제 상황

해결

- 플레이어가 벽을 통과하는 물리버그

- 플레이어의 이동속도가 일정수준 이상빨라지면 벽을 통과하는 것을 확인

- 플레이어 전방에 레이어를 발사하여 앞에 오브젝트가 감지되면 속도를 줄여 문제를 해결

문제 해결

10 of 10

Portfolio

Backend Developer

읽어주셔서 감사합니다.