CrossVoice에 대하여
저는 Mordhau와 Hunt: Showdown 같은 게임을 좋아하고, Mordhau의 보이스 라인 시스템을 늘 마음에 들어 했습니다. Chivalry 2의 시스템도 마찬가지였습니다. 그러다 어느 순간, 같은 메커니즘을 Hunt: Showdown에서, 나아가 보이스 채팅이 있는 다른 어떤 게임에서든 쓸 수 있지 않을까 하는 생각이 들었습니다.
그 아이디어는 가상 오디오 장치를 통해 작동하는, Python으로 만든 첫 프로토타입이 되었습니다. 콘셉트는 통했지만, 여러 사정으로 프로젝트는 몇 년 동안 보류되었습니다.
그 후 Soundpad 같은 사운드보드를 접하면서 마이크를 통해 소리를 재생하면 무엇을 할 수 있는지 알게 되었습니다. 하지만 제가 찾은 사운드보드는 모두 같은 방식이었습니다. 키 하나에 소리 하나. 그래서 프로젝트를 다시 꺼내 처음 프로토타입보다 훨씬 더 멀리 나아가기로 했습니다. C++로 실험을 시작해, 소리를 처리하고 전송하는 방식을 실제로 제어할 수 있는 네이티브 오디오 솔루션을 만들었습니다.
거기서부터 애플리케이션의 나머지 부분을 C#으로 만들었는데, 프로필을 관리하고 보이스 명령을 설정하는 인터페이스부터 시작했습니다. 곧 소리를 재생하는 것은 문제의 일부일 뿐이라는 걸 깨달았습니다. 눌러서 말하기를 쓰는 게임을 포함해, 모든 것이 각 게임의 보이스 채팅과도 맞물려 작동해야 했습니다. 그래서 오디오 라우팅과 저수준 키보드 처리를 파고들게 되었고, 그런 키 입력을 안정적으로 관리할 수 있게 되었습니다.

개발이 진행되면서 CrossVoice는 성장했습니다. 프로필은 명령을 페이지로 정리하고, 키와 보조키, 오디오 변형, 볼륨·음높이·재생 속도 같은 설정을 갖추도록 발전했습니다. 또한 게임을 떠나지 않고도 매치 중에 앱을 사용하고 제어할 수 있도록 상시 오버레이를 추가했습니다.
제 목표는 언제나 CrossVoice가 특정 게임에 의존하지 않는 것이었습니다. 프로필을 원하는 방식으로 설정해 여러 게임에서 사용할 수 있으며, 게임별 연동도 필요 없고 앱이 지금 무엇을 플레이하는지 알 필요도 없습니다.
그쯤 되자 이 모든 작업이 제 프로필 안에만 머무르는 것은 별 의미가 없었습니다. 플레이어들이 자신의 프로필을 공유하고 커뮤니티가 만든 것을 즐길 수 있게 하면 어떨까? 그렇게 CrossVoice의 커뮤니티 기능이 모습을 갖추게 되었습니다.
이렇게 CrossVoice는 Python 프로토타입에서 오늘날의 프로젝트로 성장했습니다. Mordhau와 Hunt: Showdown을 플레이하며 떠올린 아이디어는 훨씬 더 야심 찬 프로젝트가 되었고, 저는 애플리케이션의 거의 모든 부분을 직접 만들고 확장해 왔습니다.
— Raúl Mateo