TL;DR

  • ArcadeMaker는 자체 프로그래밍 언어 Exp와 통합 개발 환경(IDE)을 갖춘 간단한 2D 크로스 플랫폼 게임 엔진임.
  • 엔진과 IDE는 C#으로 작성됐지만, 게임 로직 작성에는 C# 대신 자체 언어 Exp를 사용함.
  • 그래픽과 오디오 백엔드는 현재 MonoGame 기반으로 데스크톱·모바일·콘솔 내보내기를 지원하며, 웹 지원을 위해 KNI 엔진 구현을 계획 중임.
  • 프로젝트는 미완성이며, IDE에 있는 부모 오브젝트와 DLL 패키지 관리자 등 일부 기능은 새 엔진에서 아직 작동하지 않음.
  • 개발 시간을 충분히 확보하기 어려워 오픈소스로 공개했으며, GameMaker 8을 기반으로 한 초보자 친화적 엔진으로 발전시키려는 목표임.

ArcadeMaker 소개

  • ArcadeMaker는 자체 프로그래밍 언어를 포함한 간단한 2D 크로스 플랫폼 게임 엔진이며, 언어의 프로토타입 이름은 Exp임. 통합 IDE도 포함함.
  • 엔진과 IDE 자체는 C#으로 작성됐지만, ArcadeMaker 안에서 게임을 프로그래밍할 때는 C#이 아닌 자체 언어를 사용함.
  • 그래픽 및 오디오 백엔드는 현재 MonoGame 기반이며, 이를 통해 데스크톱·모바일·콘솔로 내보낼 수 있음. 웹 지원을 위해 KNI 엔진 구현도 계획 중임.
  • 프로젝트는 아직 완성되지 않음.
  • 작업에 쓸 시간이 매우 적어 오픈소스로 공개했으며, 다른 사람들이 흥미를 느끼고 프로젝트를 실제로 발전시키는 데 도움을 주기를 바람.
  • GameMaker 8을 기반으로 하므로, GameMaker 8을 사용해 본 사람은 쉽게 익힐 수 있음.

프로젝트 배경

  • ArcadeMaker는 몇 년에 걸쳐 여러 단계로 개발됐으며, 각 부분은 프로그래밍 경험이 서로 다른 시기에 작성됨.
  • IDE는 현재와 프로그래밍 실력이 상당히 달랐던 약 3년 전에 작성함.
  • Exp 언어는 IDE를 만든 뒤, 현재의 코어 엔진과 MonoGame 구현이 존재하기 전에 제작함.
  • 처음에는 사용자가 게임 로직을 C#으로 직접 작성하는 C# 기반 엔진으로 시작함. 한동안 프로젝트를 중단한 뒤 자체 프로그래밍 언어를 만들었고, ArcadeMaker로 돌아와 기존 C# 스크립팅 계층을 자체 언어로 교체하고 그에 맞춰 코어 엔진을 다시 작성함.
  • 개발 기간이 길고 단계적으로 진행된 탓에, 현재 IDE에는 새 엔진 백엔드가 아직 지원하지 않는 기능이 다수 포함됨.
  • 부모 오브젝트: IDE에서 지원하지만 엔진에는 아직 구현되지 않음.
  • DLL 패키지 관리자: IDE에 존재하지만 현재는 아무 효과가 없음. 엔진이 C# 스크립팅을 사용하던 시기에는 작동했음.
  • 장기 목표는 새 엔진을 기존 C# 버전과 기능적으로 동등한 수준으로 끌어올린 뒤, 그보다 훨씬 더 확장하는 것임.

계획된 기능

  • 엔진에서 누락된 IDE 기능을 완전히 구현
  • 웹 내보내기를 위한 KNI 엔진 백엔드
  • 더 완전하고 안정적인 Exp 언어
  • drawRect(), deactivateInstancesInRegion(), setRoomWidth() 등을 비롯한 일상적으로 사용하는 일반 게임 함수 구현
  • 모바일 및 콘솔 빌드용 크로스 플랫폼 템플릿
  • 문서, 튜토리얼, 예제 프로젝트

오픈소스 공개 이유

  • ArcadeMaker 작업을 즐기지만, 프로젝트에 걸맞은 속도로 개발할 시간이 충분하지 않음.
  • 오픈소스 공개를 통해 다른 사람들이 다음과 같이 참여하기를 바람.
  • 엔진 실험
  • 언어와 도구 개선
  • 누락된 기능 추가
  • 버그 수정
  • 프로젝트의 향후 방향을 함께 만들기
  • GameMaker 스타일의 작업 흐름을 좋아하거나 가볍고 초보자 친화적인 2D 엔진에 기여하고 싶다면 참여를 환영함.

빌드 방법

  • 저장소를 복제함.
  • 선호하는 C# IDE(Visual Studio, Rider, VS Code)에서 솔루션을 엶.
  • NuGet 패키지를 복원함.
  • 프로젝트를 빌드함.
  • IDE 프로젝트를 실행해 ArcadeMaker를 시작함.
  • 선택 사항으로, IDE를 불러온 뒤 File -> Open Project에서 tests/Example Projects의 예제 프로젝트를 열 수 있음.

기여

  • 다음을 비롯한 모든 종류의 기여를 환영함.
  • 코드 개선
  • 버그 수정
  • 문서화
  • 기능 제안
  • 엔진 백엔드 구현
  • 언어 설계 아이디어
  • 풀 리퀘스트를 제출하기 전에 아이디어를 논의할 이슈를 먼저 열어야 함.
  • 현재 여가 시간에 혼자 개발하고 있어 문서가 매우 부족함. 문서를 개선하기 위해 최선을 다할 예정이며, 프로젝트와 관련해 궁금한 점은 무엇이든 질문하면 답변할 예정임.

라이선스

  • 프로젝트는 MIT 라이선스로 배포됨.
  • 자세한 내용은 LICENSE 파일에서 확인할 수 있음.

README와 AI 사용에 관한 참고

  • README 작성에 GPT의 도움을 받음.
  • AI 사용에 관해 덧붙이면, 프로젝트에는 AI가 생성한 코드나 아키텍처가 거의 0% 포함됨. 유일한 예외는 충돌 감지를 위한 분리축 정리(Separating Axis Theorem) 공식으로, 수학이 다소 어려워 Claude를 사용해 작성함. 그 밖의 엔진·IDE·언어·아키텍처는 모두 직접 작성함.
  • 프로그래밍 도구로 AI를 사용하는 데 문제가 있다고 생각해서가 아님. AI는 소프트웨어 개발의 미래에서 큰 부분을 차지할 것으로 봄.
  • 다만 이 프로젝트는 재미와 도전을 위해 만들었으며, 개인적으로는 기계에 코드를 맡기기보다 직접 작성하는 것을 즐김.
  • AI의 역량이 커지는 시대에도 완성된 ArcadeMaker가 실제로 유용할 수 있다고 여전히 믿음. ArcadeMaker는 초보자 친화적인 엔진이며, 코드를 직접 한 줄씩 작성하는 일을 언젠가 멈추더라도 사람들은 코드가 어떻게 작동하는지 이해해야 함. 이를 배우는 유일한 진정한 방법은 실제로 코드를 작성하는 것임.
  • 학습을 넘어, AI에 모든 작업을 의존하지 않고 혼자 재미로 게임을 만들고 싶은 사람에게도 이 엔진이 좋은 도구가 될 수 있음.