View Code? Open in Web Editor
NEW
Unreal Engine 4 Client + CPP IOCP Server
C# 1.68%
C++ 95.00%
C 3.32%
sungminworld's Introduction
Sungmin World 에 오신걸 환영합니다. 본 프로젝트는 게임회사 서버/네트워크 직군 구직용으로 사용할 개인 포트폴리오 입니다.
(클릭시 이동)
sungminworld's People
Contributors
sungminworld's Issues
현재 성민월드의 최대 클라이언트 갯수는 100개로 제한되어 있습니다
클라이언트는 0~99 사이의 숫자를 랜덤 생성해 서버에게 등록을 하고요
하지만 이 방식은 동일한 세션 아이디도 나올 수 있고 관리가 어려워지기 때문에
사용자 계정을 기준으로 세션을 생성해 서버에서 관리할 필요가 있습니다
완료 조건
클라이언트가 비정상종료되면 서버에 반영이 안되 정보가 그대로 남아있는 문제가 있습니다.
서버에서 스레드하나를 추가로 만들어 일정 시간마다 전체 클라이언트 소켓에게 신호를 쏴
응답이 없는 클라이언트가 있는지 감시하는 기능이 필요합니다.
완료 조건
iocp 클래스 재편 후 채팅시 서버가 hang 상태가 되는 버그가 있습니다
완료 조건
플레이어 동기화는 각각 클라이언트가 틱마다 서버에게 자신의 정보를 전달하고 서버는 다른 플레이어의 정보를 클라이언트에게 전송해주는 방식을 사용하고 있습니다.
하지만 매 틱마다 통신을 시도하기에 부하가 굉장히 많이 걸립니다. (144hz 인경우 초당 144번 통신)
따라서 매 틱이 아닌 일정 시간마다 동기화 할 수 있도록 해야합니다.
완료 조건
현재 클라이언트에선 새 플레이어 입장했을때 스폰 처리를 비효율적으로 하고 있습니다
매 틱마다 서버의 정보를 토대로 월드를 스캔해 없으면 스폰하는 방식을 사용하고 있지요
이를 개선해 서버에서 새 플레이어 입장 신호가 있을때만 클라이언트에서 스폰할 수 있도록 해야합니다
완료 조건
다른 플레이어의 캐릭터를 SetActorLocation
를 통해 옮기면
위치만 옮겨지고 애니메이션이 보여지지 않는 문제가 있음
완료 조건
지금 로그인 기능은 중복 로그인 확인을 안하고있습니다
이미 로그인된 계정엔 들어갈 수 없도록 개선해야합니다
완료 조건
현재 로그인 화면에서 로그인시 사용자의 암호가 평문 그대로 전달되고 있습니다
이를 암호화 한 후 서버에게 전달할 필요가 있지요
완료 조건
Hy, can you translate to english maybe?
switch 문을 이용해 패킷의 종류에 따라 처리하는 방식은 case가 많아질수록 성능이 저하될 수 있습니다
관리도 어려워지고 가독성도 떨어지지요
이를 함수 포인터로 관리할 수 있도록 해야합니다
완료 조건
현재 클라이언트의 socket recv 스레드는 ClientSocket
클래스를 통해 PlayerController
에서 만들어지고 있습니다.
하지만 이를 Game Instance
클래스로 옮길 필요가 있습니다.
Player Controller
는 없어지거나 변경될 수 있는 반면 Game Instance
는 게임이 종료될 때 까지 없어지지 않거든요.
나중에 게임의 레벨이 여러개가 되었을때 공유 자원 정보를 담아두기에도 안전할 것 같고요
완료 조건
지금은 하나의 iocp 서버가 모든 패킷을 처리하고 있지만, 로그인 서버 DB 서버 메인 로직 서버등으로 나눠 분산처리 할 필요가 있습니다
이를 위한 base iocp 클래스 구현이 필요합니다
완료 조건
다른 플레이어의 정보가 게임에 전혀 노출되지 않습니다.
이름과 체력등의 정보를 캐릭터 위에 HUD로 보여줄 필요가 있습니다.
완료 사항
지금은 플레이어들끼리만 게임에서 볼 수 있습니다.
이걸로도 충분할 수 있지만 몬스터가 추가되면 더 재밌겠지요.
언리얼 엔진의 비헤이비어트리 를 활용해 AI 몬스터를 추가 해야합니다.
이 몬스터들에 대한 서버와 클라이언트의 동기화가 상당히 까다로울 것 같군요
완료 조건
게임에 아무런 오디오가 없이 굉장히 밋밋합니다.
이동, 점프, 타격, 배경음악 등을 추가해 좀 더 다이나믹한 게임을 만들 필요가 있습니다
이부분은 전적으로 클라이언트단에서 이루어질것이기 때문에 블루프린트를 잘 활용해야겠군요
완료 조건
SungminWorld 프로젝트는 구직 및 공부 목적으로 만들어지는 포트폴리오 입니다.
클라이언트는 Unreal Engine 4 를 사용
서버는 C++ IOCP 모델을 사용하였습니다
서버 / 네트워크 직군 신입으로 구직할것이기 때문에 서버사이드 위주로 개발 예정입니다..
아래 각 조건에 대해 서브 이슈를 만들어 처리할 예정입니다
완료 조건(Acceptance criteria)
현재 패킷의 종류를 담은 구조체인 EPacketType 은 서버/클라이언트의 enum 값을 모두 담고있습니다
이를 서버/클라이언트로 분리해 관리할 필요가 있습니다
완료 조건
서버는 패킷 클래스 모듈을 임포트해서 쓰고 있지만 언리얼 클라이언트는 그대로 복사만 해서 사용하고 있습니다
클라이언트쪽에도 dll 모듈을 쓸 수 있도록 해야합니다
사실 예전에 시도했었는데 언리얼 빌드 시스템이 잘 이해되지 않아 팬딩했던.... 다시 시도해야겠음
완료 조건
타격/피격 기능은 있지만 애니메이션이 플레이 되지 않고 있습니다
좀 더 다이나믹안 게임 경험을 위해 애니메이션을 추가하도록 합시다
완료 조건
SUNGMIN WORLD
프로젝트 설명
Sungmin World 에 오신걸 환영합니다. 본 프로젝트는 게임회사 서버/네트워크 직군 구직용으로 사용할 개인 포트폴리오 입니다.
시연 영상
(클릭시 이동)
서버 클래스
구현 기능