Steam Sockets 사용하기

언리얼 엔진 프로젝트에 Steam 네트워크 프로토콜 레이어를 활성화하는 방법입니다.

Choose your operating system:

Windows

macOS

Linux

필요한 사전지식

이 페이지의 콘텐츠를 이해하고 활용하기 위해 다음 주제를 숙지해 주세요.

언리얼 엔진 4.27.0에서는 FUniqueNetIdSteam 구조체와 관련된 문제 때문에 Steam Sockets가 성공적인 연결을 생성하지 못했습니다. 이 문제는 4.27.2부터 해결되었습니다.

Steam Sockets 는 새 Steam 네트워크 프로토콜 레이어를 이용하는 네트워크 플러그인입니다. 언리얼 엔진Steamworks SDK 버전 1.46부터 이 플러그인을 지원합니다.

이 플러그인은 내장 DDoS 보호, 엔드 투 엔드 암호화, NAT Traversal을 갖춘 Steam의 커뮤니케이션 네트워크를 사용하여 기존 SteamNetworking 프로토콜에 비해 개선된 보안과 안정성을 제공합니다. 또한 Steam Sockets는 리슨 서버에 대한 핑 계산(ping calculation) 이 가능하며, 이는 사용자를 퍼포먼스가 더 좋은 서버에 매칭하는 매치메이킹 시스템에 사용될 수 있습니다. 사용자가 서버에 연결되기 전까지 핑 계산이 불가능했던 SteamNetworking에 비하면 크게 개선된 점입니다.

Steam Sockets는 언리얼 엔진의 디폴트 넷 드라이버 대신 자체 넷 드라이버를 사용하며, Steam Sockets로 생성된 빌드는 Steam Sockets를 통해서만 다른 빌드와 연결될 수 있습니다. 또한 Steam Sockets 빌드는 Windows, Mac, Linux 간에 크로스 플랫폼 플레이를 지원하지만, 그 외 다른 디바이스에는 지원하지 않습니다.

Steam Sockets 플러그인 활성화

Steam Sockets는 다음 단계를 따라 Windows, Mac, Linux 기반 빌드에서 활성화 가능합니다.

  1. 언리얼 에디터(Unreal Editor) 에서 프로젝트를 열고 편집(Edit) > 플러그인(Plugins) 을 클릭합니다.

  2. 플러그인(Plugins) 메뉴에서 내장 플러그인(Built-in Plugins) 아래의 네트워킹(Networking) 플러그인 그룹을 클릭합니다.

  3. Steam Sockets 플러그인을 찾아서 활성화 합니다. 변경 사항이 효과를 발휘하려면 언리얼 에디터를 재시작해야 합니다.

Steam Sockets 플러그인

  1. Steam Sockets 플러그인을 사용하려는 각 플랫폼의 Engine.ini 파일을 열고 넷 드라이버 정의(Net Driver Definitions) 를 변경하여 SteamSockets.SteamSocketsNetDriver 를 사용하게 합니다. 예를 들어 Windows 빌드에서 Steam Sockets를 사용하려면 WindowsEngine.ini 에 다음을 추가합니다.

    WindowsEngine.ini

    [/Script/Engine.GameEngine]
    !NetDriverDefinitions=ClearArray
    +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SteamSockets.SteamSocketsNetDriver",DriverClassNameFallback="/Script/SteamSockets.SteamNetSocketsNetDriver")

Windows, Mac, Linux 이외의 디바이스를 타기팅하는 빌드는 패키징 전에 Steam Sockets를 제거하고 UE4의 표준 네트워크 프로토콜로 디폴트 설정됩니다.

Windows의 Oculus 스토어처럼 위 OS 중 하나에서 Steam 외부의 플랫폼을 타기팅하는 경우, 빌드는 Steam의 넷 드라이버로 패키징되지만 해당 플랫폼에 올바른 세트가 아닙니다. 프로젝트를 다른 PC 기반 플랫폼에 배포된 빌드에 적합하게 환경설정해서 이 문제를 해결해야 합니다.

Steam Sockets 기능 사용

Steam Sockets는 대규모 함수 기능을 활성화 및 비활성화하기 위해 환경설정 파라미터로 커스터마이징될 수 있습니다.

OnlineSubsystemSteam.bUseSteamNetworking 은 SteamSockets SocketSubsystem이 디폴트 서브시스템인지 여부를 제어합니다. 이 파라미터는 디폴트로 true로 설정됩니다. 대부분의 프로젝트에선 이 세팅을 변경할 필요가 없으며, 주로 이전 SteamNetworking 프로토콜에서 마이그레이션하는 개발자를 위한 하위 호환 옵션으로 사용됩니다.

OnlineSubsystemSteam.bAllowP2PPacketRelay 는 전용 서버를 사용할 때 패킷이 Steam 커뮤니케이션 네트워크를 통과하는지 여부를 제어합니다. 이 파라미터는 디폴트로 true로 설정됩니다. 이 세팅이 비활성화되면 전용 서버가 연결 주소를 직접 노출하여 커스텀 구현을 가능하게 합니다. 이 세팅이 활성화되면 전용 서버가 Steam의 중계 네트워크를 통해 작동하여 DDoS 공격을 예방하고 보안을 강화합니다. P2P 리슨 서버는 이 세팅과 무관하게 항상 Steam의 커뮤니케이션 네트워크를 사용합니다.

핑 계산 등 다른 기능은 UE4의 기존 네트워크 인터페이스를 통해 제공됩니다.

Steamworks SDK에 대한 추가 정보는 Valve의 공식 문서를 참조하세요.

언리얼 엔진의 이전 버전을 위해 작성된 페이지입니다. 현재 언리얼 엔진 5 버전을 위해 업데이트되지 않았습니다.