언리얼_엔진_게임개발_공부/언리얼 네트워크7 숫자 야구 게임 - 로비 기능 로비 구성 요소1. 로비 위젯 (각 클라이언트)- Ready 버튼- 유저네임 표시- Ready 버튼 클릭한 플레이어 표시 2. 플레이어 컨트롤러 (각 클라이언트 & 서버)- 위젯 생성 & 제어- 위젯-서버 간 통신 (준비 상태 알림) 3. 게임 모드 (서버)- Ready 클릭한 플레이어 수 추적 & 게임 라운드 시작- 컨트롤러 통해 모든 클라이언트에 준비된 플레이어 표시 명령- 모든 플레이어 Ready 클릭 시 모든 클라이언트에 로비 화면 퇴장 명령 로비 위젯로비에서 Ready 버튼 클릭 시 NotifyPlayerReady (Run on server) 바인딩컨트롤러 - NotifyPlayerReady (Run on server)1) 게임 모드에 플레이어의 Ready 버튼 클릭을 추적하는 "ServerPl.. 2025. 3. 27. C++ 로 채팅 예제 구현 - ChatWidget ~ GameMode & 유저네임 중복체크 / 색상 랜덤 부여 C++ 로 채팅 예제를 구현해보며 아래와 같은 기능을 만들어 보았다.1. 채팅 기능2. 서버에 유저네임 저장하여 중복 체크 & 메세지 출력 색상 지정 아래와 같은 요소들로 구현하였다.1. 채팅 기능- UEditableText 로 메세지 작성 & 커밋- 텍스트 커밋 시 플레이어 컨트롤러에서 서버 (게임모드) 로 전송- 게임모드에서 메세지 각 클라이언트 컨트롤러에 프린트하는 함수 호출2. 유저네임 저장 / 중복 체크 / 색상 지정- 게임모드에 TMap 으로 유저네임-색상 관리- 로그인 위젯에서 유저네임 설정 시 TMap 에 이미 등록되어 있는지 체크 후 유저네임-랜덤색상 페어 저장- 중복 시 안내 메세지 표시- 클라이언트에 메세지 출력 요청 시 해당 색상 전달하여 지정된 색상으로 출력 1. 채팅 기능1) 위.. 2025. 3. 20. C++로 채팅 예제 구현하기 - PlayerController ~ LoginWidget 강의에서 따라한 채팅 프로그램 예제를 C++로 옮겨보며 네트워크 replicate 하는 방식에 조금 더 익숙해지고자 한다.덤으로 버튼 위젯의 OnClicked, 텍스트 박스의 OnTextCommitted 등의 델리게이트에 함수를 바인딩하는 것도 활용하려 한다. 라는 결심으로 시작했는데 거의 시작하자마자 문제 하나를 맞닥뜨리게 되었다 ㅋ(그래서 좋았다!! 배운 게 하나 더 생겼으니 좋은 거지~) IsLocalController : 위젯 생성 시 로컬 컨트롤러인지 체크하기클라이언트에만 존재하는 위젯이 서버의 상태에 따라 변경되어야 한다면 플레이어 컨트롤러에서 요청/응답을 릴레이 해야 한다고 이해하고 있다. 그래서 로그인 위젯과 채팅 위젯을 플레이어 컨트롤러에서 생성했다. 그런데 에디터에서 실행시켜보니 오류가.. 2025. 3. 19. 데디케이티드 서버 활용 미로 게임 예제 분석 강의에서 데디케이티드 서버를 빌드해 에디터에서 접속할 수 있는 미로 게임을 예제로 다루었다.이 예제가 어떤 요소들로, 어떻게 서버/클라이언트의 로직이 구성되어 있는지 정리해보았다. 구성 & 역할 (게임플레이 프레임워크 순서대로)게임 인스턴스: 고유 ID 저장 / 별도 기능 없음접속 레벨 & 게임 모드: 클라이언트-서버 연결 트래킹 / 게임플레이 레벨 전환트랜지션 레벨 (TransitionMap): Seamless Travel 위한 중간 레벨 / 별도 기능 없음 게임플레이 레벨 & 게임 모드: 게임 로직 수행 / 승패 판단 / 게임 종료플레이어 컨트롤러 & 캐릭터: 클라이언트 (i.e. 위젯) - 서버 연동액터 (벽, 바닥, Goal 등): Goal - 충돌 감지하여 게임 종료 호출메인 메뉴 위젯: 접속 .. 2025. 3. 18. Run on server / Run on owning client 잘 구분하여 쓰기 강의 예제: 언리얼 엔진에서 리슨 서버 NetMode 로 채팅을 구현해 보는 예제 예제에서 구현한 로직[레벨 블루프린트] BeginPlay 1. IsServer 여부에 따라 플레이어 컨트롤러의 로그인 이벤트 호출 --> 인자 : "Host"(서버인 경우) / "Guest" (클라이언트인 경우)[플레이어 컨트롤러] 로그인 이벤트 (Run on server) 1. 멤버 변수 UserID = 매개변수로 받은 스트링 대입 2. 로그인 알리는 디스패처 호출 - 아래 위젯의 로그인 이벤트가 구독하고 있음[위젯] 로그인 이벤트 1. Construct 시 위의 디스패처에 바인드 되는 이벤트 2. 호출 시 Editable Text Box 를 전달받은 UserID 스트링으로 SetText 발생한 문제서버에.. 2025. 3. 13. 언리얼 엔진의 네트워크 / NetMode / Replication https://dev.epicgames.com/documentation/en-us/unreal-engine/networking-overview-for-unreal-engine#actorreplication언리얼 엔진에서 서버-클라이언트 통신하는 방법에 대해 강의를 들으며 추가로 참고한 위 링크에서 중요하다고 생각되는 내용을 정리할 것이다. 서버-클라이언트 관계 개요멀티플레이어 게임에서는 실제로 게임이 플레이되는 유일한 authoritative 게임 스테이트가 서버에 존재한다.클라이언트의 로컬 폰에서 서버에 존재하는 원격 폰으로 Remote Procedure Call (RPC) 을 보내 인게임 행동을 한다.서버는 게임스테이트 정보를 각 클라이언트로 복제한다. 이 정보는 액터의 위치, 행동 규칙, 변수 값 .. 2025. 3. 12. 이전 1 2 다음