2017-03-17 7 views
4

을 방지하는 방법, 나는 하이브리드 게임 응용 프로그램을 가지고 있고, 나는 내 게임에 보상 시스템을 가지고 :자바 스크립트 | 그래서 Date.now() 조작

if(Date.now() - lastFreeCoinsTime > 3600000){ //lastFreeCoinsTime is also Date.now() 
    giveCoins(); 
    lastFreeCoinsTime = Date.now(); 
} 

매 시간 당신은 동전의 X 양을 얻을 수 있습니다. 전화 번호 설정 : 날짜 변경 (예 : 18/03 -> 23/03) 이제 보상을 다시받을 수 있습니다. 어떻게 피할 수 있습니까?

+0

서버에서'redis'를 사용하여 사용자가 이미 보상을 받았는지 여부와 키에 1 시간 만료를 설정했는지 여부를 저장합니다. 클라이언트가 아닌 서버에서 시간을 확보하십시오. 이전 보상 시간을 localStorage/sessionStorage/cookies에 저장하고 'Date.now()'가 이전 시간보다 작지 않은지 확인하십시오. 치어 리더가 게임을하지 못하도록하십시오 ;-) –

+0

사용자가 조작 할 수없는 독립적 인 출처로 확인하십시오. – RobG

+1

관련 "현재 GMT 세계 시간 받기": http://stackoverflow.com/questions/489581/getting-the-current-gmt-world-time –

답변

0

나는 특정한 행동을 피할 수는 없을 것이라고 생각하지만, 현재 시간이 lastFreeCoinsTime보다 작 으면 동전을 다시 줄임으로써 누군가가 그것을 반복해서 악용하는 것을 막을 수 있습니다. Candy Crush의 창작자가 그것을 얻을 수 없다면 꽤 어려워 질 것입니다.

0

이와 같은 사용자 보상은 사용자가 제어하는 ​​외부 서버에 의해 처리되어야합니다. 그렇게하면 자신의 시간과 기타 데이터를 추적 할 수 있고 클라이언트 (게임)는 서버의 정보를 유일한 진원지로 사용합니다. 단점은 분명히 사용자가 보상을 받으려면 인터넷 연결이 필요하다는 것입니다. 그러나 게임의 핵심 기능이 인터넷 연결 없이도 재생 가능한 한 오프라인에서 게임을 즐길 수 있으며, 보상 기능과 같은 작은 기능 세트 만 연결하면됩니다.

사용자가 "부정 행위"하는 것을 막을만한 가치가 있는지 고려하십시오. 보상 시스템이 어떤 종류의 "freemium"모델로 돈을 벌기 위해 어떻게 든 고안 되었으면, 보상을 확보하고 통제하는 방법에 대해 많은 생각을 분명히해야합니다. 그러나 이것이 캐주얼 또는 무료 게임이고 스테이크가 적다면, 정말로 중요합니까? 사용자 중 극소수 만 실제로 실제로 시도하고 속일 시간을 갖습니다. 그리고 그들이하는 경우에, 누구가 걱정합니까? 그들이 게임을 즐기는 방식으로 게임을하게하십시오. 결국에는 즐겁게 게임을 즐길 수 있습니다.

관련 문제