개인 자료란 (JE)

  서버 커뮤니티

Profile bluej**** 대표칭호 없음
Profile

질문하기 스크립트

게임 중 실시간 데이터 수집

2020.01.31 조회 수 362 추천 수 1


스크립트나 다른 방법을 통해 게임 중 데이터를 주기적으로 (초당 3회) 수집하고, 텍스트 형태로 저장하려고 합니다.


예를 들어, 캐릭터의 현재 좌표, 인벤토리 현황, 체력, 맵 상의 몬스터의 숫자와 현재 좌표, 캐릭터가 보고 있는 방향(마우스 방향)

등의 정보가 실시간으로 record되고 나중에 단일 파일로 저장되면 됩니다.

나아가 게임 플레이 화면이 mp4파일로 영상 저장되는 것도 되면 좋을 것 같습니다.


위의  목표가 실현 가능한지, 어떤 수단을 통해서 이루어질 수 있을지 도움이 필요합니다.






22개의 댓글

윈초
2020.01.31

어? 저도 해보고 싶네요!!

bluej****
2020.01.31

같이 제작 시도하실 분이나, 도움 주실 주 있는 고수분들의 활발한 댓글과 연락 바랍니다!

질문자님의 기능 전체를 담는것은 무리가 있다고봅니다.

인게임 안에서 초당 3회라는것은 생각보다 매우큽니다.

소스엔진을 예로 들어보자면

틱레이트라고 서버와 클라이언트내의 동기화수를 64번할지 128번할지 정할수있습니다.

틱레이트를 64번 으로했을떄는 서버에 무리가 없었으나

틱레이트를 128번으로 헀을떄는 서버에 무리가 매우  많이 갔었습니다.

뭐 같은 개념일지는 잘모르겠지만

저렇게 많은 방대하고 세세한 정보를 텍스트로 저장하는것부터

로그 전용 저장공간을 하나 설치하셔야되고..

서버내 동접자 수가 많아지면 서버의 자원이 많이 필요해질껍니다.

데이터를 수집하는것  흔히말해 로그는 플러그인으로 구현이되는걸로압니다.

블럭을 누가파괴했는지..

인벤에 뭐가있는지..

이런것들을 참고해보시면 좋을것같네요

결론은 질문자님께서 말씀하신 정보를 모두담는것은 힘들다 봅니다.

bluej****
2020.01.31
@라고솔로가말했습니다

아 기본적으로 멀티 플레이는 상정하고 있지 않습니다. 플레이어 자신과 환경 데이터(로그하고 하나요?)만 수집되면 됩니다.

혹시 구체적으로 어떤 플러그인을 통해 구현 가능할지, 참고할만한 링크나 자료가 있는지 여쭈어봐도 될까요?

@bluej****

https://www.spigotmc.org/resources/coreprotect.8631/

해당 문헌 참고하시면 좋을거같습니다.

bluej****
2020.01.31
@bluej****

또한, 만약 서버나 저장 공간에 문제가 있다고 한다면 초당 1~2회까지 줄이는 것도 가능할 것 같습니다.

@bluej****

저도 마인크래프트 서버를 열지않아서 잘은 모릅니다..

하지만 무리가 있을수도있다는 것을 알려드린겁니다.

bluej****
2020.01.31
@라고솔로가말했습니다

그렇군요~ 직접 돌려보면서 타협을 해야 한다는 것이군요. 혹시 게임 중 화면을 영상으로 캡쳐해서 저장하는 것도 가능할까요?

 

@bluej****

자신이 혼자 플레이하시고 녹화하시는거는

엔디비아 쉐도우 플레이 한번 참고 하시는것도 괜찮을것같네요

bluej****
2020.01.31
@라고솔로가말했습니다

아, 별도의 프로그램을 돌리기 애매한 것이 게임 데이터에 나오는 시간과 영상 시간이 일치하기를 바라기 때문입니다.

ex) 게임 시작 후 1.5초 뒤 케릭터 좌표 xyz가 저장됨 --> 영상 1.5초 지점을 재생하면 정확히 그 순간을 볼 수 있음

@bluej****

https://www.replaymod.com/

이런것도 있는거같네요 참고하시기바랍니다

bluej****
2020.01.31
@라고솔로가말했습니다

정말 그렇군요~ 감사합니다. 많은 도움이 됩니다. 이런 자료는 어떻게 찾으시는건지 ㅎㅎ 대단하시네요

또한 영상을 녹화하는 것도 방법이겠지만, 아랫분께서 말씀하신 것 처럼 아예 패킷을 통해 재현하는 것도 방법일 수 있겠네요~

KingCjy
2020.01.31

가능합니다.

nosql 같은곳에 데이터 계속 쏘시면 될듯요.

초당 3회를 바로바로저장하는게아니라 초당 3회를 객체에 저장해두고 특정 시간마다 db에 저장하면 될거같네요

bluej****
2020.01.31
@KingCjy

답변 감사드립니다. 혹시 관련 링크나 참고할만한 자료가 있을까요?

bluej****
2020.01.31
@bluej****

말씀하신 것 처럼 실시간으로 저장할 필요는 없고, 리스트 같은 곳에 데이터를 쌓아놨다가 나중에 저장되도 됩니다. 게임이 끝난 뒤 하나의 파일에 로그 데이터가 시간별로 정리되어 저장되어 있기만 하면 됩니다.

HeartPattern
2020.01.31

초당으로 저장하지 말고, 들어오는 패킷을 전부 잡아다 저장해놓고, 나중에 패킷을 똑같이 다시 보내주면 재현이 가능합니다.

bluej****
2020.01.31
@HeartPattern

들어오는 패킷이 해석 가능한 형태로 구성되어 있나요? 별도의 처리를 통해 후처리를 해서 제가 원하는 형태로 제단하면 시간, 좌표 등 제가 원하는 데이터만 추출할 수 있을까요?

HeartPattern
2020.01.31
@bluej****

네 가능하죠.

bluej****
2020.01.31
@HeartPattern

패킷을 받아서 저장하는 플러그인이나 제가 참고할만한 자료나 링크가 있을까요?

답변 감사드립니다

HeartPattern
2020.02.12
@bluej****

저는 ProtocolLib과 wiki.vg를 즐겨 사용합니다.

bluej****
2020.02.19
@HeartPattern

그렇군요~ 참고하겠습니다

레도
2020.03.08

3초당으로 저장하면 과부하가 걱정됩니다