GN⁺: 비디오 게임 작성을 위한 실험적 신기술 Core
(github.com/damn)-
coreCore는 무엇인가
- coreCore는 Action-RPG 게임 제작 도구 및 엔진, 속성 편집기 형태로 비디오 게임을 작성하는 실험적인 방법임
- 간단한 컴포넌트 시스템을 사용하며, 컴포넌트는
[keyword value]
형태의 clojure 벡터임 - 다양한 엔티티는 clojure 맵으로 구성됨
- 게임 내 부작용은
[:tx/foo param]
와 같은 컴포넌트로 처리되며, 이는 datomic 구조와 유사함 - 전체 게임 상태는
app/state
라는 하나의 atom에 저장되며, 엔티티도 메인 atom 내부의 atom으로 존재함 - 애플리케이션의 전체 내용은
resources/properties.edn
에 저장되며, malli-schemas를 사용해 검증되고 GUI로 편집 가능함
-
스크린샷
-
개발 시작 방법
- 다음 명령어를 입력:
-
lein dev
-
- 애플리케이션이 시작되며 다음 작업도 수행됨:
- NREPL-서버 시작
- 애플리케이션 종료 시 (메인 메뉴에서 ESC), clojure.tools.namespace가 변경된 파일을 새로고침하고 앱을 재시작함
- 오류 발생 시 JVM을 재시작할 필요 없이 오류를 수정하고
dev-loop/restart!
를 호출하면 됨 - VIM에서 F5 키에 다음 명령어를 바인딩하여 사용 가능:
nmap <F5> :Eval (do (in-ns 'dev-loop)(restart!))
- 다음 명령어를 입력:
-
코드 라이선스
- MIT 라이선스 하에 제공됨
-
자산 라이선스
- 사용된 자산은 독점적이며 오픈 소스가 아님
- 타일셋: https://winlu.itch.io/
- 생물, 아이템, 스킬 아이콘, FX 및 기타 자산: https://www.oryxdesignlab.com
- 커서: Leonid Deburger https://deburger.itch.io/
- 사용된 자산은 독점적이며 오픈 소스가 아님
GN⁺의 정리
- coreCore는 Action-RPG 게임을 쉽게 제작할 수 있는 도구로, 간단한 컴포넌트 시스템을 사용해 게임 상태를 관리함
- 전체 게임 상태를 하나의 atom에 저장하고, GUI를 통해 속성을 편집할 수 있어 개발자에게 유용함
- MIT 라이선스로 제공되지만, 사용된 자산은 독점적임
- 비슷한 기능을 가진 도구로는 RPG Maker, Unity 등이 있음
Hacker News 의견
-
다양한 게임 개발 접근 방식을 보는 것이 흥미로움
- Bevy (Rust ECS 엔진): 처음에는 좋지만 구현에 문제가 많고 복잡해질 수 있음
- Unity: 게임 객체와 모듈형 구성 요소 시스템이 실용적임
- Godot: OOP 계층 구조와 내장 언어가 불만족스러웠음
- Pygame: 작은 프로젝트에 적합하며 절차적이지만 OOP나 함수형 계층을 만들 수 있음
- Clojure: 함수형 구현이 흥미로움
-
이 GitHub 프로젝트는 게임 개발자에게는 우스꽝스러움
- 학문적인 접근 방식이 과장된 느낌
- 스크린샷이 보기 흉함
-
게임 개발을 단순하게 만들 수 있다고 주장하지만 많은 용어를 사용함
- Clojure 벡터, Datomics, 아톰, 트랜잭션, Malli 스키마 등
-
이 프로젝트는 실패한 것 같음
- 과도하게 설계된 구조와 명확한 구조가 부족함
- 게임 스토리가 없어서 명확한 방향 없이 코딩했음
-
문서화가 거의 없는 이 저장소가 많은 대화를 생성함
- 코드가 게임 엔진보다는 프로젝트처럼 보임
- 속성 편집기가 흥미로움
- 제목 때문에 업보트된 것 같음
-
"게임을 만들고 싶다"는 이야기가 게임 엔진을 만드는 것으로 변하는 경우를 많이 봄
- 엔진 코드를 먼저 작성하면 나머지 게임 제작 과정이 쉬울 것이라는 생각에 빠짐
- 엔진을 만드는 것이 게임을 만드는 것보다 더 재미있을 수 있음
- 엔진을 최적화하는 것이 더 빠른 보상을 줌
- Phaser js 엔진을 사용하여 빠르게 인터랙티브한 것을 화면에 표시하려고 시도했음
-
Clojure를 사랑하지만 불변 데이터 구조를 가진 함수형 언어가 게임 개발에 적합한지 의문임
-
게임 상태가 하나의 아톰에 저장되고 엔티티가 그 안에 다시 아톰으로 저장됨
- Clojure에서 "아톰"을 이렇게 사용하는 것이 일반적인지 의문임
-
"게임 엔진에 소요된 시간/복잡성" vs "생산된 게임의 복잡성/흥미" 데이터를 분석하는 것이 흥미로울 것 같음
- 단순한 템플릿/엔진 시스템으로 만든 게임의 다양성이 감소할 것이라고 예상함
-
Unreal Engine 4로 구동되는 상업용 게임 제작 플랫폼인 Core가 이미 존재함