작성
·
645
0
안녕하세요. 두 가지 질문이 있습니다.
현업에서 서버 구축할 때 게임 만들 때 마다 매번 socket 기반작업과 관련된 구현(iocp 로 socket session manager, serializer 등등) 을 하나요? 웹서버 프레임워크처럼 게임서버 프레임워크같은건 사용 안하나요? 게임마다 조금씩은 다르겠지만 공통적으로 구현해야 하는 부분이 많을 것 같아서요. 만약 사용한다면 어떤 프레임워크를 자주 사용하나요?
또 다른 질문이 있는데요. object 간의 collison 같은 건 서버에서 확인하나요? 예를 들어 철권같은 게임에서 player 1 이 player2 를 때렸다면, 맞았다는 판단은 서버에서 내린 후 player1 과 player2 에게 전달되나요? 만약 그렇다면(서버에서 collison을 확인한다면) 서버에 물리엔진? 같은게 구현되어 있어야 할 것 같은데 그러면 좀 이상한 것 같고 그렇지 않다면(서버에서 collison을 확인하지 않는다면) 유저가 colision 을 판단해야 하는데 시간 차이때문에 서로 다른 판단이 일어날 수도 있고 packet 을 조작해서 맞았다고 하기도 쉬울 것 같아서요. 철권같이 판단에 아주 민감한 게임을 만들려고 하는데, 어떻게 하는게 좋을까요? 이미 알려진 아키텍쳐같은게 있다면 키워드로만 알려주시면 제가 찾아보겠습니다.
강의 잘 듣고 있습니다.
답변 1
1
현업에서 서버 구축할 때 게임 만들 때 마다 매번 socket 기반작업과 관련된 구현(iocp 로 socket session manager, serializer 등등) 을 하나요?
-> 그건 아니고 회사마다 레거시 코드가 있습니다.
리니지 계열, 블소 계열 이런 식으로 서버가 있고 돌려 쓰는거죠.
처음부터 작업할 수 있는 프로그래머가 많진 않습니다.
웹서버 프레임워크처럼 게임서버 프레임워크같은건 사용 안하나요? 게임마다 조금씩은 다르겠지만 공통적으로 구현해야 하는 부분이 많을 것 같아서요. 만약 사용한다면 어떤 프레임워크를 자주 사용하나요?
-> 대부분 자체 제작으로 합니다.
또 다른 질문이 있는데요. object 간의 collison 같은 건 서버에서 확인하나요?
-> 당연히 수학적 연산을 서버에서 시뮬레이션 합니다.
예를 들어 철권같은 게임에서 player 1 이 player2 를 때렸다면, 맞았다는 판단은 서버에서 내린 후 player1 과 player2 에게 전달되나요?
-> 물론 그래야 합니다.
철권같이 판단에 아주 민감한 게임을 만들려고 하는데, 어떻게 하는게 좋을까요?
-> 철권이나 롤, FPS 같이 프레임에 민감한 게임은
클라가 서로 상황을 다르게 오인하면 곤란하기 때문에
고정 프레임 (ex. 30프레임)으로 잡고
서버 또한 고정 프레임으로 돌면서 연산을 해야 합니다.