본문 바로가기
횡설수설

디아블로2 포스팅에 관해서

by jw_choi 2021. 1. 4.

최근 디아블로2 스토리 정주행 글을 쓰다가 다 비공개로 돌렸다.

 

이유는 중간에 스크린샷 찍는게 귀찮아서 이제 녹화한다음 캡쳐한걸로 글을 쓸까 싶었는데, 액트2의 일부분이 녹화가 안되어있더라

 

일단 그 부분을 다시 가서 복구하기 전까지는 비공개로 돌려놓을 예정이다.

 

스태프 합치고 대충 그 언저리부분 퀘스트가 다 녹화 안 됨

그래도 액트2 스태프 만드는 부분정도면 그렇게 길게 걸리는 부분은 아니니 게임 진행 측면에서는 금방 복구 하겠는데,

 

중요한건 녹화된 모든 영상이 다음처럼 생겼다.

 

결국 창모드로 녹화해서 위에 윈도우 인터페이스까지 녹화 됨

전체화면으로 녹화했으면 아무 문제 없을텐데, 오래된 게임이라 윈도우10 기본 녹화프로그램이랑 엔비디아에서 지포스쓰면 제공하는 녹화 프로그램 둘 다 전체화면 녹화가 안된다. (게임으로 강제 인식시켜도 자동으로 풀려버림)

 

아무래도 원래 DirectX 지원을 하는 게임이 아닐 뿐더러 근본적으로 이미 죽은 기술인 글라이드써서 그런것 같은데, 사실 지금은 얘도 다렉X로 돌아가는 게임이라 이론상으론 문제없어야 한다

 

그래도 DirectX나 OpenCL기반 녹화프로그램들이 안 돌아가는거 보면 이거랑 관련된 레가시 코드 때문에 게임 자체적으로 꼬여서 이러는것 같다 첨부터 글라이드를 쓰지 말던가... (비전문가의 매우 주관적인 추론임)

 

이런식으로?

그럼 위 사진처럼 녹화 범위를 게임화면에만 집중되게 바꾸면 되지 않나? 싶기도 한데, 그러면 녹화 켤때마다 필연적으로 1, 2 픽셀씩 어긋날것이기 때문에 나중에 일괄적으로 대사자를때 모두가 사이좋게 한결같이 어긋나는 혐오스러운 상황이 발생하는게 안 봐도 보인다.

 

내가 간단하지만 깐깐한? 조건을 요구하는데, 이럴 때 가장 정확한 해결방법은 결국 코드를 작성해 돌리는것이다.

 

비효율적으로 보여도 내가 원하는 스타일의 녹화 프로그램을 직접 짜는것보다는 최소 2만배정도는 이게 효율적임

 

위는 전에 쓰던 함수

전에 포스팅 했던 함수를 그대로 가져와서 확장자랑 수치만 바꿨다.

이 때쯤이면 대충 두 함수를 합쳐도 되겠다는 생각이 드는데, 이때 머리속에 떠오르는 또 다른 개선점이 하나 있었다.

 

일괄적으로 자르기 때문에 굳이 대사치지 않는 부분도 크롭됨

NPC와 대화를 하는 것이 아닌 캡쳐들도 일괄적으로 다 잘리기 때문에, 폴더안이 상당히 더러워진다.

이 부분을 개선할려면 코드가 사진을 받았으면 이게 대화하는 장면인지 아닌지 판정을 해야한다.

 

처음에 떠올린 생각은 대화 인터페이스의 프레임의 색깔이 다 똑같은 것 같으니, 그 부분의 픽셀의 색상값은 다 같을 것이므로 인터페이스의 1~2개 픽셀을 뽑아서 판정하는 것 이었는데,

 

녹화 프로그램에서 발생하는 차이인지 아니면 주변 배경에 영향을 받는지는 몰라도(아마 녹화 프로그램에서 동영상을 압축해서 그런게 아닐까?) 대화 인터페이스의 프레임 색상이 기분나쁘게 1 ~ 2정도 다르다. 그래서 내가 얻은 값인 90하고 91에서 ±2해서 88~93 사이의 값을 대화 장면이 찍힌 캡처로 판별하기로 코드를 작성했다.

 

예전에 크롭한 이미지들을 똑같은 위치에서 다시 크롭해야 했었는데, 픽셀의 좌표를 안 적어놔서 똑같은 위치를 찾아야 했었다. 그떄는 랜덤으로 주변의 총 5개의 픽셀값을 찾는 코드를 짜서 정확한 위치를 찾아냈는데,

 

지금같은 상황에서는 원하지 않는 이미지가 몇개 걸려도 수작업으로 금방 걸러 낼 수 있다. 솔직히 여기서 더 하는게 더 비효율적이다.

 

실행 결과는 5개의 테스트 이미지를 넣으니 1. 알아서 잘라주고, 2. 잘린 이미지가 NPC와의 대화하는 장면이면, 3. 대화부분까지 깔끔하게 잘 잘라준다.

 

앞으로 200장 300장씩 넣으면 몇 개정도는 대화가 아니여도 걸러 질 수도 있겠지만, 캡쳐된 영상의 그 좌표의 픽셀값이 우연히 88~93사이에 있는데, 뭐 어쩌겠나

 

픽셀 3개 정도비교하면 디아블로2 모든 맵을 다찍어도 99.9999% 필터링 되겠지만 픽셀 값 눈으로 확인해서 작성해 넣는거랑(이게 코드 작성보다 훨씬 번거로움) 추가할 코드 작성도 사람이 하는거다.

아무리 생각해도 코드로 1픽셀 비교후 사람손으로 거르기가 코드로만 3픽셀 비교보다 사람이 할 일이 적다. ㅋㅋㅋ

댓글