먼저 이 글은 게임산업진흥에 관한 법률 제32조 제1항 8호를 침해할 목적이 전혀없으며,
이를 통한 문제 시 언제든지 글을 삭제할 것을 미리 알립니다.
개인의 학습을 위하여 제작하였으며, 해당 프로그램의 소스코드 및 실행 파일의 배포는 절대 하지 않습니다.
제32조(불법게임물 등의 유통금지) 누구든지 게임물의 유통질서를 저해하는 다음 각호의 행위를 하여서는 아니 된다.
8호. 게임물의 정상적인 운영을 방해할 목적으로 게임물 관련사업자가 제공 또는 승인하지 아니한 컴퓨터 프로그램이나 기기 또는 장치를
배포하거나 배포할 목적으로 제작하는 행위
서문
한동안 작성자 본인이 참으로 즐겁게 했던 게임이다.
FPS를 기반으로 한 게임에 캐릭터마다 고유 능력과 스킬을 부여하므로써 신선하게 다가온 FPS였다.
게임을 하던 중 들던 생각이 있었는데,
만약 화면 내 특정 구역 내에서 상대방(적)의 피 게이지바를 인식하여,
그 위치에 적절히 하단으로 내려주면 힘들게 조준점을 맞추지 않고도 자동으로 맞춰줄수 있다고 생각하였다.
그래서 2016년 가을 즈음에 해당 프로그램을 제작하려 했으나,
마우스의 중심점의 좌표를 이동하면,
화면이 땅으로 깔려버리거나, 하늘로 솟구치는 문제가 발생하였다.
그래서 당시에 포기하였으나,
몇개월이 지나 구글링을 통하던 중에 FPS게임은 마우스 커서의 좌표가
FPS게임 조준점에 고정되어 있다는 사실을 알았는데,
이는 직접적인 동적 라이브러리 호출을 통해 해결할 수 있다는 정보 또한 알 수 있었다.
게다가 오토핫키 기반으로 만들어진 소스코드 까지 얻을 수 있었다.
이는 그를 기반으로 분석하여 조금만 수정한 프로그램이다.
시연
고찰
실제로 해당 프로그램을 시연을 통해 분석해본결 과
실제로 사용해서는 안되지만
만약 사용한다 하더라도
사용하기에는 참으로 아쉬운 점이 많은 프로그램이였다.
첫번째,
해당 프로그램은
마우스 왼쪽 버튼 클릭시에만 해당 피게이지바를 기반으로 상대방의 조준점으로 이동하는 이벤트가 등록되어있다.
화면을 움직이는 와중에 상대방의 HP 게이지바가 인식되면 지속적으로 해당 좌표로 이동하려 하기때문에
결과적으로 조준점이 흔들리는 증상을 보인다.
두번째,
상대방의 피 게이지 부분부터 얼마나 하단으로 이동할지가 정수값으로 하드코딩 되어 있었다.
이는 상대방으로부터 내가 어느정도 거리에 있는지와는 상관없이
멀리 있어도 해당 정수만큼 마우스를 밑으로 내리고
가까이 있어도 해당 정수만큼 마우스를 밑으로 내리기에
결과적으로 너무 가까이 있거나 너무 멀리있으면 상대방이 유효 사격 범위 안에 들지 않는 곳으로
에임을 고정하려 한다는 것이다.
이 두가지 점이 가장 큰 문제점이였으며,
첫번째 문제는
화면이 이동하는 경로에 따라서
피 게이지바도 이동하는 경로가 만들어 질 것이다.
그렇다면 대략 선형적으로 이동하는 경로의 경우
최소제곱법을 통해 선형적인 경로에 대한 방정식을 구하여
미리 해당 좌표에 가깝다고 예측하게 되면
이동 좌표값의 오차를 줄여 흔들림 또한
줄일 수 있지 않을까 조심스럽게 생각해보며,
두번째 문제는
리버스 엔지니어링을 통해, 만약
적과 나의 3차원 좌표값을 얻어올 수 있다면
둘 사이의 거리를 계산하여,
어느정도 하단으로 내려야 할 지를 대략적으로 예측할 수 있게 되어
더욱 정확도가 높은 에임봇을 만들 수 있을것이라 생각된다.
결론
게임은 게임으로서 즐기는게 정답인 것 같다.
'IT > 프로젝트 및 실습' 카테고리의 다른 글
컴퓨터 프로그래밍 설계 과제#4_HW02 (0) | 2017.12.13 |
---|---|
컴퓨터 프로그래밍 설계 과제#4_HW01 (0) | 2017.12.12 |
관망해석 프로그램 (0) | 2017.10.31 |
컴퓨터 프로그래밍 설계 과제#3_HW03 (0) | 2017.10.20 |
컴퓨터 프로그래밍 설계 과제#3_HW02 (0) | 2017.10.20 |