본문 바로가기
자동차와 레이싱

아세토 코르사 주행 기록 저장하기

by 에일라거 2020. 10. 1.

이전에 이것과 비슷한 글을 쓰면서, 텔레메트리를 저장하기 위해 게임 내에서 사용할 수 있는 앱을 이용해서 데이터를 받아오는 과정을 올린 적이 있다.

 

1. 아세토 코르사 주행데이터 (텔레메트리) 뽑기

2. 아세토 코르사 주행데이터 (텔레메트리) 뽑기 2편

 

그런데 지금 써 보면, 그것과 연동된 별도 프로그램이 2개나 필요하고 저장 시간이 길어지면 자꾸 뻑이 나는 바람에... 모션 시뮬레이터 만들었을 때 썼던 방식을 이용해서 (Shared Memory) 프로그램을 하나 짜서 공유하려고 한다.

 

일단 프로그램은 아래와 같다. 

AC_SaveTelemetry.zip
0.10MB

크기도 100 kB밖에 안되고, 설치도 필요없다. 말 그대로 게임 실행시에 데이터를 받아와서 주행 데이터를 csv 파일로 저장해주는 프로그램. 저장된 파일은 실행 파일과 같은 폴더에 위치하게 된다.

 

프로그램을 실행하면 위와 같이 작은 창이 뜬다. 실행 순서는 아래와 같다.

 

1. 이 프로그램을 실행

2. 아세토 코르사를 실행하고, 트랙 주행 시작

3. 게임 화면에서 윈도우 키를 눌러서 살짝 실행중인 프로그램을 보고, 이 프로그램을 고른다.

4. 데이터를 저장할 간격을 고른다. 10ms (0.01초) 이상으로 골라야 에러가 없도록 해놨다.

5. 초기화 (INITIALIZE) 버튼 클릭

6. 기록 시작 버튼을 누르면 그때부터 파일에 기록이 시작된다.

7. 일시 정지 버튼을 누르면 시간은 흐르는 채로 파일에 기록만 되지 않는다.

8. 일시 정지 버튼을 다시 누르면, 파일에 다시 기록이 시작된다.

9. 기록 중지를 누르면 기록을 저장 중인 파일을 저장한 후 닫는다.

10. 기록 중지를 누른 후에는 기록 시작 버튼을 눌러 기록을 추가로 저장할 수 있다.

 

써 놓으니까 복잡한 거 같지만, 실제로 해 보면 그냥 게임 시작 전에 이 프로그램 틀어놓고 게임 시작한 후에 초기화하고 기록 시작/중지 하는 게 전부다.

 

AC_SaveTelemetry_source.zip
0.02MB

 

MFC로 짠 거라 자동으로 만들어지는 클래스가 이거저거 산재해 있긴 하지만, 핵심 부분이 되는 Dialog 클래스 cpp, h와 SharedMemory 부분을 구현해둔 SharedFileOut.h 파일을 공유합니다. (어디서 받은 것)

 

대충 프로그램 구조는...

 

 

뭐 이런 식으로 돼 있다. 시작하자마자 쓰레드 실행해서 무한루프 뺑뺑이 돌리면서 버튼으로 그때그때 데이터 얻고 저장할건지 말건지 결정하는 것

 

바이러스 그런 거 없으니 받아가서 쓰시면 됩니다. 바이러스 만들 실력 있었으면 이러고 안 있을 듯...

댓글