플러그인(Plugin)
플러그인은 프로그램이나 엔진의 기능을 확장하기 위해 추가로 설치하는 모듈이다.
기본 기능에는 포함되어 있지 않지만,
필요한 기능을 쉽게 추가할 수 있도록 만들어진 독립적인 코드 묶음이다.
플러그인을 사용하는 이유
- 기능을 재사용할 수 있음
- 프로젝트를 모듈화할 수 있음
- 필요한 기능만 추가 가능
- 유지보수가 쉬움
- 직접 구현하는 시간 절약
언리얼 엔진에서의 플러그인
언리얼 엔진의 플러그인은 다음과 같은 기능을 추가하기 위해 사용된다.
- 새로운 기능 추가
- 에디터 기능 확장
- 온라인 서비스 연동
- AI 기능 추가
- 멀티플레이어 기능 추가
예시
- OnlineSubsystemSteam
- GameplayAbilities(GAS)
- CommonUI
- Enhanced Input
- EOS(Epic Online Services)
플러그인의 구조
플러그인은 일반적으로 다음과 같은 구조를 가진다.
Plugin/
├── Source/
│ ├── PluginModule/
│ │ ├── Public/
│ │ └── Private/
│
├── Resources/
│
└── PluginName.uplugin
플러그인은 메시나 텍스처와 같은 다른 자산을 포함하지 않음.
개별 작업을 캡슐화하고 모듈이 설계된 대상에게만 책임을 지게함
uplugin
플러그인 정보를 저장하는 설정 파일
- 플러그인 이름
- 버전
- 로드 여부
- 의존성 정보
등을 관리한다.
언리얼 프로젝트에서 플러그인 활성화
- Edit -> Plugins

- 원하는 플러그인 검색
- 체크박스 활성화
- 에디터 재시작
플러그인과 직접 구현의 차이
| 구분 | 플러그인 사용 | 직접 구현 |
|---|---|---|
| 개발 속도 | 빠름 | 느림 |
| 유지보수 | 쉬움 | 직접 관리 |
| 엔진 버전 영향 | 받을 수 있음 | 상대적으로 적음 |
| 커스터마이징 | 제한적 | 자유로움 |
실제 예시
Steam 멀티플레이어
플러그인 사용
OnlineSessionInterface->CreateSession(...);
직접 구현
// 소켓 생성
// 클라이언트 연결 관리
// 패킷 송수신
// 세션 관리
// 로비 시스템 구현
장점
- 빠르게 기능을 추가할 수 있음
- 검증된 기능을 사용할 수 있음
- 유지보수가 편함
- 개발 시간을 크게 줄일 수 있음
단점
- 엔진 버전에 영향을 받을 수 있음
- 내부 동작을 이해하기 어려울 수 있음
- 플러그인 업데이트에 의존하게 됨
- 원하는 기능 수정이 어려울 수 있음
정리
- 플러그인은 기능을 추가하는 독립적인 모듈이다.
- 필요한 기능을 빠르게 사용할 수 있다.
- 언리얼에서는 Steam, GAS, Enhanced Input 등도 플러그인 형태로 제공된다.
- 플러그인 없이도 구현은 가능하지만 개발 시간이 훨씬 오래 걸린다.
- 실무에서는 대부분 플러그인을 활용하고 필요한 부분만 수정해서 사용한다.