주의) 밑에 3줄요약이 있음
프로그래밍과 관련되었지만, 레포데 했던 사람이라면 흥미롭게 볼 수 있을것
현재까지도 패치를 진행(8년만에)한 갓겜 레포데
2009년 게임임에도 아직 서버에 대기방이 넘쳐흐르고 있다
(아무튼 넘쳐흐름)
이런 갓겜에도 한가지 치명적인 버그가 있는데
(자료출처- HS Top 유튜브 : https://www.youtube.com/watch?v=kz-F9tyUSpU&t=25s&ab_channel=HSTop)
특정 조건을 만족하게 되면 이동속도가 급격하게 올라가는 버그다
주로 고인물들의 스피드런 같은 곳에 많이 사용되는 버그이며, 소스엔진 특유의 버그이기 때문에 모든 소스엔진 겜에서 가능한 버그라고 할 수 있다.
??? : 이동속도가 빨라지면 뭐가좋음? 어차피 좀비 썰고 다니면서 하는 게임 아님?
라고 물어볼 수 있는데
참고로 레포데에서는 대전 모드라는게 있어서 내가 좀비가 되어 다른 사람들을 썰 수 있다.
위와 같은 탱크가 되어서 버니합을 쓰고 다니게 되면
원래는 총맞으면 느려지는 덩치 큰 좀비지만, 버니합을 쓰면 영상처럼 인간보다 훨씬빠르게 접근이 가능하다
(자료출처 - n1njaaa 유튜브 : https://www.youtube.com/watch?v=6dysf1iq3gw&ab_channel=n1njaaa)
??? : 그럼 버그면 누구나 다 쓰면 되는거아님?
이라고 생각할수 있는데 말로만 버그지 사실상 피지컬이나 다름이 없다
버니합의 조건은 총 2가지다
1. 점프를 한 상태로 마우스를 움직이며 해당 방향으로 좌, 우 키를 누를것
1의 조건을 만족하면 현재의 속도에 비례해서 이동속도가 증가하는 소스엔진 특유의 버그다.
다른 소스엔진 게임의 경우 속도 제한을 두는 것으로 버그를 막았지만, 레포데는 최근 패치했던 09/26 패치로도 막히지 않았다.
2. 바닥에 닿음과 동시에 바로 점프할것(약 1~2프레임 내)
속도가 계속 증가하면서, 해당 버그가 버니합으로 불리우는 이유다.
바닥에 착지한 이후에 바로 다시 점프하면 현재 내 이동속도가 온전히 보존되는 버그다.
롤에서 리븐이 땅을 찍고 평타를 치면 스킬 이후에 바로 평타를 쓸수있는 버그처럼 아무나 할 수 있는게 아니다
심지어 레포데 맵의 경우 평지가 거의 없다시피 해 매크로로 점프를 주기적으로 만들수도 없으며,
짧은시간 안에 입력을 할 경우 아예 인식을 안해버리기 때문에 하드웨어적으로도 매크로를 만들 수 없다.
맨날 대전만 가면 버니합때문에 쳐발리는 나는 버니합을 하기 위한 프로그램을 한번 만들어 볼려고했다.
할줄아는게 파이썬 밖에 없으므로 파이썬을 이용해서 자동 점프를 만들어 보려고 생각했다.
먼저 1~2 프레임 내에 점프해야 하므로 땅에 닿았을 때의 물리적인 변화를 관측해야겠다
레포데 콘솔창을 이용해서 모든걸 실험해봤지만 얻을 수 있는 정보는
땅바닥에 닿았을 때 앉아있다는 표시가 나타나는 저 앉은 그림 하나다
다행스럽게도
저 앉은 상태가 나타났을때 바로 스페이스바를 누르면 2의 조건을 만족한다는 것을 직접 플레이를 통해 확인했다
이제 조건을 만족하는 러닝 모델을 만들고 실험에 착수해보았다.
먼저 내가 직접 모델만들수는 없으니 갓 구글님이 만드신 텐서플로 외에 데이터 수집을 도와줄 친구들, 매크로가 될 친구들을 불러온다
내 썩은 프로그래밍 실력을 보완해줄 아주 착한 친구들이다.
앉음 표시가 나타날때와 없을때의 데이터를 얻기 위해 각각 1000장씩 이미지를 확인한다.
앉아있을때에는 컨트롤을 눌러서 cc(숫자) 라는 값으로 저장하고, 서있을 때는 nc(숫자) 라는 사진으로 저장한다.
저 앉음 표시의 경우 모니터 범위 1855, 945 에서 45, 50 만큼의 이미지에 딱 맞는다
파일이 각각 1000개씩 모였다.
저장된 스크린샷 이미지를 불러오고
CNN 모델로 간단하게 만들어봤다.
(앉은 상태의 특징이 너무 차이가 나서 깊을 필요가 없다)
파라미터 수도 줄일려고 일부터 컨볼루전 필터 사이즈도 겁나 크게 만들었다.
텐서플로 2.0에서는 누구라도 쉽게 이렇게 딥러닝 모델을 만들 수 있다.
모델을 만들었다.
국룰의 아담과 원핫이 아니기 때문에 그냥 로스도 스파스 크엔으로 썻다
트레이닝과 테스트는 8:2로
총 3번만 러닝해도 테스트에서 99.5프로의 정확도가 나오는 것을 볼수있다.
이제 실제로 동작을 확인해보자 현재 화면을 빠르게 받아오기 위해 cv2를 썻다
결과는?
실제로 앉은 상태가 나타나니 점프를 하는것을 확인할 수 있다 (스페이스바는 전혀 누르지 않았다)
하지만 약간의 버그로 인해서 앉음 이모티콘이 나오는 위치에 밝은 전등이 들어가면 점프를 뛰는 버그가 있긴하지만
모든 맵에 전등이 있는건 아니니 이정도는 넘어갈만 하다.
오늘의 실험 장소이다
소스엔진은 또 이상한 버그가 있는데
비탈길에서 버니합을 위치 에너지가 속도 에너지로 전환되어 이동속도가 빨라지는 버그다
사실 버니합의 1번조건도 잘 못하는 나는 여기서 확인을 해보기로 한다.
실험이 반쯤 성공한거같다
gif 상으로는 프레임이 딸려서 앉은 상태가 찍히진 않았지만 첫 4번의 점프는 성공했다
하지만 화면 인식 시간에 약간 시간이 걸리는건지 끝까지 완벽하게 하지는 못하는 것을 볼 수 있다.
이상 간단한 코딩과 함께라면 누구든지 할수있는 버니합 시간이었다.
3줄요약
1. 인식률이 더 빠르고, 적당히 좋은 컴퓨터만 있으면 프로그래밍으로도 버니합이 가능하다.
2. 난 내가 만든걸로도 버니합을 못한다.
3. 버니합 쓰고 싶다.
(IP보기클릭)118.38.***.***
(IP보기클릭)1.244.***.***
(IP보기클릭)1.244.***.***
특히 로켓점프 속도 유지하는 버니는 ㅅㅂ 어떻게 하는거야 | 20.10.05 20:02 | | |
(IP보기클릭)141.223.***.***
(IP보기클릭)175.207.***.***
앉음파일이 이미지 못찾겠어요 ㅜㅜ | 20.10.05 20:09 | | |
(IP보기클릭)223.38.***.***
(IP보기클릭)223.38.***.***
퀘이크 챔피언스는 아예 스피드 찍어줘서 저게 얼마나 무서운지 알수 있지만 | 20.10.05 20:03 | | |