현재 RTS 게임을 진행 중입니다. 제국은 게임이 실행되는 시스템 시간에 따라 리소스를 얻는 곳입니다. 문제는 시스템 시간을 앞으로 변경하는 경우입니다. 게임이 다시 실행되면 리소스가 즉시 증가합니다. 다시 말하지만, 저는 제 iPad에서이 게임을했습니다. Injustice : 우리 사이의 신들. 시간을 줄이면 에너지가 다시 복원되고 에너지가 보충되기를 기다리지 않고도 게임을 즐길 수 있습니다. 이러한 유형의 해킹은 매우 쉽고 큰 회사에게는 성가시다. 그런 대기업이 만든 게임에는 많은 결함이 있습니다. 완벽한 시간 기반 게임을 어떻게 구현하고이 문제를 극복 할 수 있습니까? 나는 this post도 읽었지 만, 나는 완벽한 해답을 얻지 못했다.Game Maker에서 결함없이 시간 기반 게임 이벤트를 구현하는 방법
답변
인터넷상의 다른 장치와 통신하지 않고는 적절한 방법이 없습니다. 큰 회사가 많은 돈을 요하는 문제를 해결할 수 없다면 GM의 제한된 환경에서 문제를 해결할 방법이 없습니다.
링크 된 게시물에 베타가 가장 많이 언급되었습니다. 시간을 다른 곳에서 찾으십시오. 한 가지 방법은 시스템 시간을 반환하는 것 외에는 아무것도 수행하지 않는 서버에서 실행할 수있는 작은 도구를 만드는 것입니다.
시간이 다시 설정되면 획득 한 자원을 제거하고 부정적인 값을 허용하는 등의 또 다른 방법이있을 수 있습니다.
인터넷 연결에 대한 확장 Gemoron의 포스트로서 저는 최근 Game Maker에서 인터넷을 통해 데이터를 얻는 방법을 발견했습니다.
WGet이라는 무료 오픈 소스 프로그램이 있습니다. 단순히 개별적으로 실행되는 VBS 스크립트를 통해 GM8 (Studio에서는이 작업을 수행 할 수 없음)의 코드에서 실행하고 작업 디렉토리에 제공 한 링크의 데이터를 저장합니다.
프로그램을 실행하고 대기 루프 (시간 초과 이스케이프 포함)에 넣고 파일이 있으면 텍스트 파일로 열고 라인을 변수로 읽고 텍스트 파일을 닫고 삭제합니다 문자열을 포함하는 변수를 반환합니다.
일단 스크립트가 작성되면 정보를 검색하는 데 총 한 줄이 필요합니다.
시간 = getOnlineData ("http://www.example.com/path/to/data")
당신은 물론, 인터넷 연결이 필요 방화벽을 통해 wget과 프로그램을 허용해야합니다. 나는 이것을 큰 효과를 내기 위해 사용했고, 그것은 훌륭하게 작동한다. 더 큰 파일을 테스트하지는 못했지만 500B 파일이 완료되고 테스트에서 몇 분의 1 초 안에 문자열이로드됩니다.
그래서,이 스크립트는 시간 (및 단지 시간)을 유지하는 웹 페이지에서 실행 한 다음 게임에서 사용할 수있는 시간으로 구문 분석합니다. 당신이 시스템을 설정할 때
//Get game start time from previously saved file.
startTime=getStartTime()
//Get current time from site
currTime=getOnlineData("http://whatsthetimemrwolf.com")
//If it is in standard javascript date format, it's easy from here. Subtraction gives the time passed in milliseconds.
passedTime=currTime-startTime
쉬운 :
그래서, 당신은 그것을 아래로있을 수 있습니다. 경고로 시작 시간은 저장 파일에서 변경할 수 있지만 게임에 내장 된 간단한 암호화 프로세스로 임의의 변조를 방지해야합니다.
Goodluck 및 행복한 프로그래밍. :)