인벤토리 UX 패턴: 격자형 vs 리스트형, 플레이어 피로도를 줄이는 설계

인벤토리 UX 패턴: 격자형 vs 리스트형, 플레이어 피로도를 줄이는 설계

격자형과 리스트형 인벤토리의 장단점을 플레이 행동과 정보 구조 관점에서 비교한다. 선택 부담, 조작 횟수, 시선 이동을 줄이는 실무 기준과 Unity 구현 예시를 함께 정리한다.

인벤토리는 저장소가 아니라 반복 인터페이스다

인벤토리는 플레이어가 수십 번에서 수백 번 반복해서 여는 화면이다. 따라서 한 번에 많은 정보를 보여 주는 것만으로는 좋은 UX가 되지 않는다. 아이템을 찾고 비교하고 정리하고 버리는 과정에서 발생하는 선택 부담과 조작 부담을 함께 줄여야 한다.

격자형과 리스트형은 어느 쪽이 항상 우수한 패턴이 아니다. 게임의 아이템 구조, 사용하는 입력 장치, 인벤토리를 여는 빈도에 따라 적합한 답이 달라진다.

격자형과 리스트형 인벤토리에서 아이템 탐색 방식이 다른 모습을 비교한 화면

두 패턴의 핵심 차이

격자형 인벤토리

격자형은 아이템을 동일한 칸에 배치하는 방식이다. 아이콘을 빠르게 훑을 수 있고 공간을 제한 자원으로 만들기 쉽다. 아이템 크기와 배치가 게임 규칙이라면 그 자체가 플레이 경험이 된다.

대표적인 활용 상황은 다음과 같다.

  • 탄약, 회복약, 재료처럼 아이콘만으로 구분하기 쉬운 아이템이 많다.
  • 가방 칸 수와 아이템 크기가 자원 관리 규칙이다.
  • 마우스나 터치 입력으로 드래그 앤 드롭을 자연스럽게 제공할 수 있다.

반면 아이콘이 비슷하거나 속성이 많은 장비가 늘어나면 문제가 생긴다. 플레이어는 툴팁을 반복해서 열고 닫으며 정보를 확인해야 한다. 정렬이 되지 않거나 자동 배치 규칙이 예측하기 어렵다면 빈 칸을 맞추는 일이 게임 목표보다 앞서기 쉽다.

리스트형 인벤토리

리스트형은 아이템 한 줄에 이름, 수량, 등급, 무게, 장착 가능 여부 같은 정보를 함께 보여 주는 방식이다. 숫자 비교와 정렬, 검색에 강하다. 특히 전리품과 제작 재료가 많은 RPG, 생존 게임, 경영 게임에 잘 맞는다.

다만 한 화면에 보이는 아이템 수가 줄고 긴 목록을 스크롤해야 할 수 있다. 행마다 정보가 너무 많으면 읽는 피로도도 커진다. 중요한 정보만 기본 표시하고 세부 설명은 선택했을 때 확장하는 편이 안전하다.

어떤 패턴을 선택할지 판단하는 기준

다음 흐름은 인벤토리의 주된 목적을 기준으로 패턴을 고르는 데 도움이 된다.

flowchart TD
    A[인벤토리의 핵심 행동 정의] --> B{공간 배치가 게임 규칙인가?}
    B -- 예 --> C[격자형 우선 검토]
    B -- 아니오 --> D{수치 비교와 정렬이 빈번한가?}
    D -- 예 --> E[리스트형 우선 검토]
    D -- 아니오 --> F{아이콘만으로 빠르게 구분되는가?}
    F -- 예 --> C
    F -- 아니오 --> E
    C --> G[자동 정렬·명확한 선택 상태 제공]
    E --> H[정렬·필터·검색과 짧은 행 정보 제공]

실무에서는 혼합형이 가장 현실적인 경우도 많다. 예를 들어 소모품과 퀵슬롯은 격자로 보여 주고 장비와 재료 보관함은 리스트로 제공할 수 있다. 중요한 점은 화면마다 다른 패턴을 쓰는 것이 아니라 각 화면의 행동 목표가 분명해야 한다는 것이다.

플레이어 피로도를 만드는 세 가지 비용

인벤토리 피로도는 단순히 화면이 복잡해서 생기지 않는다. 반복 행동에 드는 비용이 누적되면서 발생한다.

1. 탐색 비용

원하는 아이템이 어디에 있는지 찾는 시간이다. 카테고리, 고정된 정렬 규칙, 명확한 아이콘 실루엣이 이를 줄인다. 자동 정렬을 제공한다면 정렬 기준을 숨기지 말고 현재 기준을 버튼에 표시해야 한다.

2. 판단 비용

아이템을 버릴지 장착할지 보관할지 결정하는 비용이다. 비교에 필요한 정보가 서로 다른 화면이나 툴팁에 흩어져 있으면 판단 비용이 커진다. 장비 비교에서는 현재 장비 대비 증감값을 한 위치에서 보여 주는 편이 좋다.

3. 조작 비용

클릭, 드래그, 키 입력, 확인 대화상자에 드는 비용이다. 자주 쓰는 행동은 단축키와 일괄 동작을 제공하고 위험한 행동만 추가 확인을 붙이는 방식이 효율적이다.

간단한 관찰 지표로는 다음처럼 행동당 부담을 정의할 수 있다.

F=aT+bD+cIF = aT + bD + cI

여기서 TT는 탐색 시간, DD는 결정을 위해 확인한 정보 수, II는 입력 횟수다. aa, bb, cc는 게임의 성격에 따라 다르게 둔다. 액션 게임은 시간을 더 크게 보고 장비 세팅이 중요한 RPG는 비교 정보 수의 비중을 높일 수 있다. 이 식은 절대적인 UX 점수를 만들기보다 개선 전후를 같은 조건에서 비교하기 위한 틀로 쓰는 것이 적절하다.

아이템 비교, 필터, 일괄 이동 기능이 있는 리스트형 인벤토리 예시

격자형을 피로하지 않게 만드는 방법

빈 칸 정리를 플레이어의 숙제로 만들지 않는다

테트리스식 배치가 핵심 재미가 아니라면 자동 정렬과 자동 보관을 기본으로 제공하는 편이 좋다. 아이템을 획득할 때 어디에 들어갔는지 짧게 강조하고 정렬 후에도 선택 중인 아이템의 위치를 유지하거나 다시 찾아 주어야 맥락이 끊기지 않는다.

드래그 외의 입력 경로를 준비한다

드래그 앤 드롭은 직관적이지만 컨트롤러와 키보드에서는 피로할 수 있다. 선택 후 이동, 빠른 보관, 반으로 나누기, 전부 옮기기 같은 명령을 제공한다. 터치 환경에서는 긴 누르기와 실수 방지 영역도 고려해야 한다.

선택 상태를 분명하게 표시한다

현재 선택한 칸, 장착 중인 아이템, 새로 획득한 아이템, 사용할 수 없는 아이템은 서로 다른 시각 신호를 가져야 한다. 색만으로 차이를 전달하지 말고 테두리, 아이콘, 텍스트를 함께 사용한다.

리스트형을 피로하지 않게 만드는 방법

정렬은 기능이 아니라 약속이다

이름순, 획득순, 무게순, 등급순 중 어떤 기준이 기본인지 일관되게 유지한다. 화면을 다시 열 때 정렬 기준이 임의로 바뀌면 플레이어는 목록을 다시 학습해야 한다.

필터는 결과 수를 줄여야 한다

카테고리 필터를 여러 개 노출하는 것보다 현재 행동에 맞는 빠른 필터가 효과적일 수 있다. 예를 들어 판매 화면에서는 ‘판매 가능’, 제작 화면에서는 ‘부족한 재료’를 바로 볼 수 있게 한다.

행 정보의 우선순위를 정한다

기본 행에는 이름, 수량, 핵심 상태처럼 즉시 판단에 필요한 정보만 둔다. 공격력, 무게, 내구도, 희귀도 등을 모두 같은 강도로 표시하면 오히려 빠른 비교가 어려워진다.

Unity에서 사용할 수 있는 데이터와 정렬 예시

UI 패턴과 무관하게 아이템 데이터와 표시 모델을 분리해 두면 격자형과 리스트형을 함께 운영하기 쉽다. 아래 예시는 표시용 정렬 기준을 분리한 간단한 구조다.

using System;
using System.Collections.Generic;
using System.Linq;

public enum ItemCategory
{
    Consumable,
    Equipment,
    Material
}

public sealed class InventoryItem
{
    public string Id { get; init; }
    public string DisplayName { get; init; }
    public ItemCategory Category { get; init; }
    public int Quantity { get; set; }
    public int SortPower { get; init; }
}

public static class InventorySort
{
    public static List<InventoryItem> ByCategoryThenName(
        IEnumerable<InventoryItem> items)
    {
        return items
            .OrderBy(item => item.Category)
            .ThenBy(item => item.DisplayName, StringComparer.CurrentCulture)
            .ToList();
    }

    public static List<InventoryItem> ByPowerDescending(
        IEnumerable<InventoryItem> items)
    {
        return items
            .OrderByDescending(item => item.SortPower)
            .ThenBy(item => item.DisplayName, StringComparer.CurrentCulture)
            .ToList();
    }
}

정렬 결과를 매 프레임 계산하지 않는 것도 중요하다. 아이템 획득, 수량 변경, 필터 변경, 정렬 변경처럼 목록이 실제로 바뀌는 시점에만 갱신한다. 많은 행을 다루는 리스트라면 화면에 보이는 항목만 생성하거나 재사용하는 가상화도 검토할 수 있다.

검증할 때는 ‘열기 횟수’보다 행동 완료를 본다

플레이테스트에서 인벤토리를 연 횟수가 많다고 해서 UX가 나쁜 것은 아니다. 게임의 루프상 인벤토리 확인이 자연스러울 수도 있다. 대신 다음 행동이 얼마나 매끄러운지 관찰하는 편이 낫다.

  • 전투 직후 회복 아이템을 찾고 사용하는 데 걸리는 시간
  • 전리품을 분류하고 보관하는 동안 되돌리기를 사용하는 횟수
  • 장비 두 개 중 더 좋은 것을 고를 때 툴팁을 다시 여는 횟수
  • 컨트롤러와 마우스 환경에서 동일 작업에 필요한 입력 수

관찰 결과는 한 번에 큰 구조를 바꾸기보다 작은 가설로 검증한다. 예를 들어 ‘재료 탭에 이름순 정렬을 기본 적용하면 제작 재료 탐색 시간이 줄어든다’처럼 측정 가능한 가설을 세운다.

마무리

격자형은 공간과 아이콘 중심의 빠른 조작에 강하고 리스트형은 비교와 관리에 강하다. 패턴 선택의 기준은 화면의 모양이 아니라 플레이어가 인벤토리에서 가장 자주 수행하는 행동이다.

공간 관리가 핵심 재미가 아니라면 자동 정리와 빠른 이동으로 마찰을 줄이고 수치 비교가 중요하다면 정렬과 필터, 비교 정보를 가까이 배치하자. 인벤토리 UX의 목표는 플레이어가 가방을 정리했다는 기억보다 다음 플레이로 자연스럽게 돌아갔다는 감각을 남기는 데 있다.

#게임 UX#인벤토리#Unity#UI 설계#접근성

계속 읽어보기

이런 글은 어떠세요?

< Back to Logs