ETC/Tip

Tip :: 게임의 데이터 관련 이슈

VallistA2015. 6. 2. 11:57

 - 데이터 용량 이슈

 

 데이터가 많은 커넥트 게임의 경우 패킷이 계속 전달됨에 따라서 용량 최적화 이슈가 존재한다.

 보통 스마트폰 게임의 경우 웹서버로 서버를 구축해서 데이터만 전송하는 간단한 서버가 되는데, 전송하는 데이터들은 보통 Json으로 묶어서 전달하게 된다. (Json이 아니라 다르게 전달도 할 수 있다) 하지만 이렇게 전달하게 되면 용량의 이슈가 등장한다. Json의 경우 텍스트의 줄이 많아짐에 따라서 용량이 매우 증가하며, 용량이 증가하면 한 회에 전달되는 패킷량이 많아진다. 그러면 게임을 플레이하는 유저는 엄청 많은 요금 손해를 볼 것이고 이 것은 심각한 문제를 초래하는데 그에따라서 최적화를 해줘야한다.

 

먼저 Json 데이터 째로 보내지 않는다. Json째로 보내면 용량적 문제가 있기 때문에 비교적 가벼워 지는 바이너리를 이용한다.

서버에서 바이너리 데이터를 받고 그 바이너리 데이터를 해제 시킨후 그 데이터를 클라이언트에서 쓸 곳에 넣는다.

이러한 일련의 과정을 거치면 훌륭한 메모리 가공이 된다. 클라이언트 에서는 이것을 읽는 비용이 발생한다.


 - 데이터 파싱 이슈

 

 서버에서 받는 데이터를 최적화 해서 데이터 전송이 정말 원활해졌다.

 근데 이제 클라이언트에서 압축된 데이터를 풀어야 하는데 이 데이터를 압축하는 비용이 존재할 것이다.

 이 압축하는 비용의 경우를 생각해두고 xml 같이 구조체를 만들어서 넣어주는 것은 올바르지 않다.

 어떤 느낌이냐면. 데이터를 바로 메모리에 올리는 느낌처럼 소스코드를 짜면 될 것이다.

 

 근데 이제 메모리에 올리면 이슈가 또 존재하는데..

 

 - 데이터 메모리 암호화 이슈

 

 데이터를 메모리에 아이템을 생으로 올릴 경우에는 당연히 메모리를 조작하여 데이터를 만들어버리는 꼼수가 존재해서 여러가지 크랙으로 뚫리는 경우가 허다하다. 이러한 메모리를 보호하기 위해서 우리는 무엇을 해야할 것인가?

당연히 간단한 메모리 암호화를 하는게 필요하다.

 

http://www.slideshare.net/innover/revival-20109213

[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규

 

굉장히 도움이 될만한 PPT 라고 생각한다.

 

 - 로컬 데이터 암호화 이슈

 

보통 데이터를 세이브 하는 Android나 IOS의 경우 SQLite를 이용하여 하게되는데, 그 과정에서 암호화가 들어가야 한다.

암호화를 무엇을 사용하냐면 C#에서 지원하는 AES Rijndael를 사용해서 해도 성공적이다.

 

불과 몇년전 까지만 해도 Rijndael은 미국 국방부에서도 쓸 정도였으니... (말다함)

Rijndael은 간편하고 푸는속도도 빠르기 때문에 게임에 쓰길 권장한다.

 

데이터 -> 암호화 -> 암호화된 데이터를 저장

암호화된 데이터 -> 암호 해제 -> 데이터

 

생각나는대로 추가를 하도록 하자..

댓글

  • Nessia2015.07.09 13:22 안녕하세요 이제 COCOS2d-x 게임개발 1주차인.. 초보자입니다.
    ^^ 우연히 여기 알게되었는데 정말로 좋은글들이 많이있네요.!!
  • BlogIcon VallistA2015.07.09 15:53 신고 안녕하세요 ^^
    제 블로그에서 도움될게 있으셨으면 좋겠어요

    좋은 개발하시길 기원합니다..!
  • 2016.08.12 12:46 비밀댓글입니다
  • BlogIcon VallistA2016.08.16 21:29 신고 JAVA, Android 에서도 sqlite를 지원하므로 그것을 사용하시면 좋을것 같습니다.

    제가 알기로는 Google Play Service에서는 유저 데이터를 저장할 수 없는 것으로 알고있는데..

    만약 된다면 레인달 알고리즘으로 암호화 하셔서 넣으시면 될 것 같습니다.

    제 개인적인 생각으로는 sqlite로 내장데이터에 암호화해서 넣는게 가장 낫지 않나 합니다.
  • BlogIcon 만델라2016.10.27 03:39 신고 데이터 -> 암호화 -> 암호화된 데이터를 저장
    암호화된 데이터 -> 암호 해제 -> 데이터

    이방식을 해보려고 하다가 궁금한게 생겼습니다.
    첫단계인 데이터 -> 암호화에서 암호화 하기직전에 메모리해킹이란걸 해버리면 결국...
    변형된 데이터들이 그 후의 로직을 타게 되니... 결국 털리게 되려나요??
    의견을 주세요~!
  • 2016.10.31 17:37 그렇겟죵.. 예전에 금융권도 그 방식으로 암호화 햇지만
    암호화 되기전에 메모리 해킹 되서 털렸던 사건이 있었던걸로 기억해요.

    요즘엔 어떤 방식인진 모르겟지만..
댓글쓰기 폼

VallistA

병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.

자고 싶습니다. ㅠㅠ

페이스북    :: 링크
카카오톡    :: kingbye1
Github      :: 링크

궁금한점 문의 주시면 답변드리도록 하겠습니다

VISITED

Today : 72

Total : 413,765

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘