• Unity 프로젝트_ 쿼터뷰 3D 액션 게임 개발 프로젝트_(1) 게임 설계

    2021. 9. 25.

    by. KAEY

     


    개발 목적

    해당 프로젝트는 3D가 지니는 특유의 3D 공간감과 다른 분야에 비하여 적응하고 사용하기 어려운 것을 남녀노소 가리지 않고 쉽게 사용할 수 있는 프로젝트를 만드는 것이다. 3D 분야는 앞으로 AR, VR 등외에도 많은 분야에서 응용될 가능성이 높지만 많은 사람들이 이러한 분야에 적응하는 것에 대해서는 불투명한 상황이다.

     

    따라서 3D의 공간감을 비교적 스트레스가 적은 쿼터뷰 시점을 채택하며, 게임의 영역에서 대다수의 경우에서 보편적으로 사용되는 조작 방법을 채택하여 해당 프로젝트를 통해 다양한 사람들에게 3D에 대한 접근성과 적응 능력을 높인다.

     

    이 프로젝트는 3D 분야의 탁월한 공간 표현 능력을 적용한다. 클라이언트는 해당 프로젝트를 진행하면서 기존의 게임들의 조작 방식과 직관적인 게임 디자인 표현으로 클라이언트가 낯선 느낌을 받지 않도록 주의한다.

     

    새로운 형식의 조작 시스템을 제공하면 클라이언트에게 오히려 기존의 시스템에 익숙해진 경험에서 오는 조작의 난해함과 불편함을 제공할 수 있다고 판단하여 기존의 게임들의 조작 방식을 최대한 채택한다.

     

     


    개발 환경

    구분 내용
    OS Windows 10 Pro, 64bit
    Development Tools Unity 2019.4.18f1 (64-bit)
    Programming language C#
    Debugging Tools Unity 2019.4.18f1 (64-bit), Android
    Open Source(Lib) Unity Asset Store

     

     


    시나리오

     

    마녀의 공간에 갇힌 마리모(캐릭터)를 안전하게 바깥 세상으로 도망칠 수 있도록 해주세요.

     

    스테이지마다 등장하는 괴물, 장애물을 피해 안전하게 마리모를 지켜주세요.

    스테이지를 진행하며 클리어하면 코인을 얻거나, 몬스터를 물리칠 경우 코인을 얻을 수 있습니다.

    중간에 상점이 등장하는 공간에서 무기를 획득하여 더욱 강력한 적에 맞설 수 있습니다.

    마지막에 등장하는 강력한 괴물을 잡고 열쇠를 얻어서 마녀의 공간에서 탈출해주세요.

     

     


    UI 소개

    <인게임 UI>

     

     

     

    <게임종료 UI>

     

     

     

    <상점 UI>

     

     

     

    <Map 내 오브젝트 배치>

     

     

     

    <게임 내 NPC 요소>

    모델링 출처 : UnityAssetStore

     

     


    게임 설계

    <오브젝트 설계>

     

     

     

    게임 내 제공되는 카메라 시점을 조절할 수 있는 Object Group이다.

     

     

     

    게임 내 제공되는 스테이지를 구성하는 요소들을 관리하는 Object Group이다.

     

     

     

    게임에 적용되는 UI를 관리할 수 있는 UI Canvas Group이다.

    캔버스 내에 자식 Object로 Menu, Game, GameOver Object가 존재한다.

    Menu Object는 게임 첫 메인 화면 UI를 구성하는 Object로 설계되어 있다.

    Game Object는 인게임 UI를 구성하는 Object로 설계되어 있다.

    GameOver Object는 게임 종료 UI를 설계하는 Object로 설계되어 있다.

     

     

     

    Zone은 사용자가 게임 내 요소를 확인할 수 있도록 설계한 Spawn 구역이다.

    게임 진행 중 확인이 가능하며, StartZone에 근접할 경우 STAGE가 시작된다.

    EnemyZone은 게임 내 몬스터가 등장하는 지점을 의미하며, 스테이지마다 임의의 지점에서 랜덤한 구역에서 Spawn 되도록 설계되어 게임이 획일화되지 않도록 유도한다.

     

     

     

    게임 내 상점 시스템을 관리하는 Group이다. 그룹 내 자식 Object로 ItemShop과  Weapon Shop이 존재한다. ItemShop의 ToonChicken과 WeaponShop의 DogPolyart는 상점 NPC를 구현한다.

    각각의 Object에서 Table과 Goods는 NPC앞에 구현되는 상자와 상자 위에 올려진 상품을 구현하는 Object이다.

    각각의 Object에서 Zoon은 사용자가 상점을 이용하기 위해 표시되는 지점으로 이동해야 한다라는 정보를 제공하기 위한 Object 이다.

    또한 Item Spawn 1, 2, 3은 사용자가 아이템을 구매하였을 때 해당 아이템이 Spawn 되는 지점이며, 해당 지점은 사용자에게 보이지 않지만, 상점의 바로 옆에 위치하여 사용자가 구매한 아이템을 획득할 수 있도록 유도한다.

     

     

     

    게임에서 제공되는 모든 Audio Source를 관리하도록 만들어진 Object Group이다.

     

     

     

    <오브젝트 Prefaps>

    유저의 별도 상호작용이 없어도 접근만으로 획득 가능합니다.

     

     

     

    <몬스터 Prefaps>

    몬스터에 대한 오브젝트 Prefaps 입니다.

    이를 이용하여 단순 배치 및 여러 개체를 배치할 수 있습니다.

     

     

     

    <아이템 Prefaps>

    유저의 별도 상호작용(R키)이 있어야 유저가 획득이 가능합니다.

     

     


    CLASS DIAGRAM

     


    캐릭터 애니메이션 로직

    <대기 상태 모션 애니메이션 로직>

    해당 게임이 시작되면 캐릭터의 움직임이 시작됩니다. (Entry -> Idle)

    기본 대기 상태의 캐릭터는 이동을 할 경우 Run의 상태로 바뀐다. (Idle -> Run)

    이동이 끝난 캐릭터의 상태는 다시 Idle이 된다. (Run->Idle)

    특수 이동키(Shift)를 누른 상태로 이동 시 Walk의 상태로 바뀐다. (Idle -> Walk)

    특수 이동이 종료되면 다시 Idle 상태가 된다. (Walk -> Idle)

     

     

     

    <특수 상황 모션 애니메이션 로직>

    특수한 상태가 감지되면 AnyState 상태에서 해당 상태로 애니메이션을 실행합니다.

    ①재장전의 조건이 만족됐을 때 ‘T’를 누른 경우 Reload의 애니메이션을 시작하고 Exit로 종료한다.

    ②무기를 변경할 수 있는 상황에서 ‘1’ 혹은 ‘2’를 누른 경우, Swap 애니메이션을 시작하고 Exit로 종료한다.

    ③캐릭터의 상태가 Idle일 때, 'SpaceBar'를 입력 시,

    Jump를 하고 Jump가 종료된 후 바닥으로 낙하하는 Land를 실행하고 Exit로 종료한다.

    ④캐릭터의 상태가 Walk 혹은 Run 일 때 'SpaceBar'를 입력 시, 'Dodge' 애니메이션을 실행하고 Exit로 종료한다.

    ⑤근접 무기를 손에 장착한 상태로 마우스 좌클릭(fire1)을 하면 'Swing' 애니메이션을 실행하고 Exit로 종료한다.

    ⑥원거리 무기를 손에 장착한 상태에서 총알이 장전된 상태일 때, 마우스 좌클릭(fire1)을 하면 'Shot' 애니메이션을 실행하고 Exit로 종료한다.

     

     


    구현된 게임에 대한 내용은 다음 페이지에 있습니다.

     

    Unity 프로젝트_ 쿼터뷰 3D 액션 게임 개발 프로젝트_(2) 게임 구현 :: HP (tistory.com)

     

    Unity 프로젝트_ 쿼터뷰 3D 액션 게임 개발 프로젝트_(2) 게임 구현

    Unity 프로젝트_ 쿼터뷰 3D 액션 게임 개발 프로젝트_(1) 게임 설계 :: HP (tistory.com) 에서 이어지는 프로젝트 소개 입니다. 캐릭터 움직임 구현 전체적인 움직임 표현입니다. 캐릭터 대기 모션 상태입

    kaey.tistory.com

     

     


    댓글 (비로그인 댓글 허용하지 않습니다.)