게임내 서버기능 적용문의

안녕하세요.
이번에 차기작에 서버를 사용한 게임을 만들어볼려고하는데요.
저희 회사에 서버프로그래머가 없어 차기작에 들어갈 서버 기능을
클라이언트 프로그래머가 구현해야하는 상황입니다.

아직 정확한 기획은 나오지 않았지만 기능 중 핵심은 아래 4가지 입니다.
1.로그인(닉네임)
2.PvP(비동기)
3.랭킹(비실시간)
4.채팅

게임 규모는 “원시인형님 키우기” 같은 정도입니다.(로그인, pvp, 랭킹, 채팅 기능)

  1. 실제 뒤끝서버를 사용하는 회사중에 저희처럼 서버프로그래머 없이 뒤끝서버에서 서포트를 받아
    게임구현 및 서비스 진행중인 회사가 있나요?

  2. 서버전문가 없어도 서비스할 수준의 구현이 가능할지? 혹은 지원받아 가능한지요.

  3. 만약 저 4가지 기능을 게임에 적용한다고 하면 기간이 얼마나 걸릴까요?

  4. 서버 적용하는 시점은 처음 기획단계에서 부터 해야하는지 뒤에 추가로 넣어도 되는지요.

  5. 제가 걱정되는 부분은 서버와의 통신이 언제 어떤 데이터를 주고받느냐이고, 그에따른 비용이
    얼마나 나오냐 인데요. 이런부분에 대해서도 서포트 가능한지 궁금합니다.(패킷 최적화, 통신 시점 등)

  6. 인앱 기능이 있기때문에 게임내 재화 어뷰징에 대한 서포트 받을수 있을까요?

질문이 좀 많았는데 차기작 서버 적용시 꼭 필요한 정보라 답변부탁드립니다.

안녕하세요 개발자님

순서대로 답변드리겠습니다.

  1. 대부분의 저희 고객사에서 서버프로그래머 없이 뒤끝서버를 운용중에 있습니다.

  2. 서버 전문가 없이도 서비스 할 수준의 구현이 가능합니다. 클라이언트와 서버의 통신은 관련 지식 없이 SDK에서 함수 호출만으로 가능합니다.
    다만 DB 구조를 최적화 하는 데 있어서는 관련 지식이 필요합니다.
    이 경우 커뮤니티에 질문을 올려주시면 저희가 도움을 드릴 수 있습니다.

  3. 각각 게임의 기획, 원하시는 구현 방향, 규모가 다르기 때문에 정확히 어느정도 기간이 걸린다고 답변드리기는 어려운 점이 있습니다.
    대략적으로 생각하기에는

  • 로그인 & 닉네임 : 1 ~ 3시간

  • 실시간 랭킹 : 1 ~ 2시간

  • 비실시간 랭킹 : 6 ~ 24시간
    (비실시간 랭킹의 경우 6시간 간격으로 갱신되기 때문에 결과 확인에 시간이 더 걸리고, 갱신되지 않을 경우 DB 구조의 확인도 필요하기에 시간이 더 걸립니다.)

  • 채팅 : 1 시간 이상
    (채탱의 경우 튜토리얼 프로젝트와 실제로 채팅이 붙은 예제게임의 전체 소스코드를 제공하여 금방 붙일 수 있습니다.
    다만 게임에 맞게 수정하고 채팅의 전체적인 구조와 작동방식을 이해하는 데는 게임의 기획, 규모에 따라 달라질 수 있습니다.)

  • 비동기 PvP : 비동기 PvP 기능의 경우 저희가 공식적으로 지원하지 않지만, 랭킹 기능을 활용하면 구현이 가능합니다.
    이 부분은 랭킹 구현과 비슷한 시간이 소요될 것으로 예상됩니다.
    (랭킹에서 특정 점수의 유저와 해당 유저 위 아래 n명 까지의 유저를 불러오는 기능이 있습니다.)

  1. 이 부분도 게임에 따라 달라져 확답을 드리기는 어려울 것 같습니다.
    다만 장단점이 존재하는데요 게임 완성 후 서버를 붙이면 이미 클라이언트에서 동작하던 것을 서버와 송수신하는 로직을 추가함으로써 로직이 복잡해져 어려움이 발생할 수 있으나 게임 자체의 기능을 만드는 데는 수훨할 수 있습니다.

    반면 서버를 처음부터 붙여서 작업하면 서버 로직을 처음부터 고려하고 클라이언트 로직을 작성하니 로직이 복잡해질 염려는 없지만, 스테이지 진입, 클리어 등의 로직이 모두 서버와 연동되어 있으면 빠르게 20,30판의 테스트가 필요할 때 테스트를 위해 클라이언트 만의 별도의 로직을 작성해야 하는 경우가 발생할 수 있습니다.

  2. 관련해서 질문 주시면 저희가 도움 드릴 수 있습니다.

  3. 인앱 결제의 경우 영수증 검증 기능을 제공하고 있어 유저가 유효한 영수증으로 결제를 진행하고 재화를 충전하는지 확인할 수 있습니다.

    또한 로그 남기는 기능 등을 활용하시면 어뷰징이 일어나는지 충분히 확인 하실 수 있습니다.
    이 부분도 구현하실 때 문의 주시면 도움 드릴 수 있습니다.

도움이 필요하시거나 질문이 있으시면 커뮤니티로 언제든 글 남겨주세요.

감사합니다.