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에 모든 작업을 의존하지 않고 혼자 재미로 게임을 만들고 싶은 사람에게도 이 엔진이 좋은 도구가 될 수 있음.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요