Lua 스크립팅 언어가 개발사의 Carimbo 2D Engine과 인터페이스하는 데 사용되었습니다.

개발자 로드리고 델두카(Rodrigo Delduca)가 클로드(Claude)의 도움을 받아 '기능하는 NES 에뮬레이터'를 구현하는 데 성공했다. 클로드는 일련의 Lua 스크립트를 생성했고, 이 스크립트들은 델두카의 Carimbo 2D 게임 엔진과 유기적으로 결합하여 에뮬레이터를 완성했다. 독자들은 이 링크를 방문하여 직접 코드를 체험하고 온라인으로 레트로 콩(Donkey Kong) 액션을 즐길 수 있다.
NES는 역사상 가장 널리 에뮬레이션된 게임 콘솔 중 하나다. 따라서 오래된 카트리지 기반 플랫폼으로서, 새로운 플랫폼에서 에뮬레이터 개발의 기준점(baseline)을 제시하거나 새로운 에뮬레이터 제작 기술을 시연하는 데 좋은 기반이 된다. 이전에도 AI가 플레이 가능한 게임을 생성하는 사례를 본 적은 있다. 예를 들어, 최근 네 개의 경쟁 LLM을 사용한 마인스위퍼(Minesweeper) 클론 테스트가 그러했다. 하지만 에뮬레이터는 개발자(그리고 AI)에게는 매우 다른 차원의 기술적 과제를 제시한다.
NES 에뮬레이터의 작동 원리에 대한 자세한 정보는 델두카의 GitHub에서 확인할 수 있으며, 소스 스크립트가 공유되어 있다. 이곳에서 Lua 스크립트들을 깊이 살펴보면, 이 스크립트들이 에뮬레이터에 생명력을 불어넣는 과정을 알 수 있다. 파일 이름만 봐도 NES CPU, PPU, Input, bus 등 목표 지향적인 개별 스크립트들이 있음을 파악할 수 있다. 이 모든 구성 요소들은 완벽하게 조화롭게 작동해야 한다.

Lua와 Carimbo
델두카의 Carimbo 2D 게임 엔진이 Lua 스크립트를 구동하여 작동하는 NES 에뮬레이터를 구동한다. Lua는 "강력하고, 효율적이며, 가볍고, 임베드 가능한 스크립팅 언어"이며, 무료 오픈 소스(MIT 라이선스)다. 클로드는 바로 이 견고하고, 빠르며, 이식성이 뛰어나고, 임베드 가능한 스크립팅 언어로 스크립트를 생성하는 것이 가능하다.
Carimbo는 개발자 본인인 델두카가 설명하기를, SDL을 사용해 구현된 현대적인 C++23 기반의 간단하면서도 완벽한 2D 게임 엔진이다. 중요한 특징은 Lua를 통해 스크립트화가 가능하고, Linux, Windows, macOS, Android, iOS, 그리고 웹(WebAssembly를 통해)에서 네이티브로 실행된다는 점이다. Carimbo는 boost, Box2D, EnTT, stb, simdjson, sol2, PhysFS, SDL, OpenAL 등의 라이브러리에 의존한다.

이 에뮬레이터 외에도 시도해 볼 수 있는 다른 Carimbo 엔진 게임 및 데모들이 몇 가지 더 있다.
개인적인 테스트 결과, AI가 코딩한 NES 에뮬레이터는 다소 느리게 느껴졌지만, 사용자 시스템과 웹 브라우저 환경에 따라 결과는 다를 수 있다. 실제로 에뮬레이터 관련 댓글 중에는 느린 성능을 지적하는 글이 많았다. 한 댓글에서는 경쟁하는 온라인 임베디드 NES 에뮬레이터와 비교했을 때, '슬롭 비용(cost of slop)'으로 인해 사운드 없이 40배의 성능 저하가 발생했다고 날카롭게 지적했다. 실제로 필자는 1990년대 후반에 NESticle로 플레이했던 경험이 있으며, 당시 구형 Pentium 120으로도 빠르고 반응성이 좋은 NES 에뮬레이터의 재미를 충분히 즐긴 기억이 있다.
Tom's Hardware를 Google News에서 팔로우하거나 즐겨찾기 출처로 추가하여, 최신 뉴스, 분석 및 리뷰를 피드에서 받아보세요.