# 비디오 게임 작성을 위한 실험적 신기술 Core

> Clean Markdown view of GeekNews topic #16679. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=16679](https://news.hada.io/topic?id=16679)
- GeekNews Markdown: [https://news.hada.io/topic/16679.md](https://news.hada.io/topic/16679.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-09-09T16:33:14+09:00
- Updated: 2024-09-09T16:33:14+09:00
- Original source: [github.com/damn](https://github.com/damn/core)
- Points: 2
- Comments: 1

## Topic Body

- # 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 &lt;F5&gt; :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 등이 있음

## Comments



### Comment 28746

- Author: neo
- Created: 2024-09-09T16:33:15+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=41482060) 
- 다양한 게임 개발 접근 방식을 보는 것이 흥미로움
  - Bevy (Rust ECS 엔진): 처음에는 좋지만 구현에 문제가 많고 복잡해질 수 있음
  - Unity: 게임 객체와 모듈형 구성 요소 시스템이 실용적임
  - Godot: OOP 계층 구조와 내장 언어가 불만족스러웠음
  - Pygame: 작은 프로젝트에 적합하며 절차적이지만 OOP나 함수형 계층을 만들 수 있음
  - Clojure: 함수형 구현이 흥미로움

- 이 GitHub 프로젝트는 게임 개발자에게는 우스꽝스러움
  - 학문적인 접근 방식이 과장된 느낌
  - 스크린샷이 보기 흉함

- 게임 개발을 단순하게 만들 수 있다고 주장하지만 많은 용어를 사용함
  - Clojure 벡터, Datomics, 아톰, 트랜잭션, Malli 스키마 등

- 이 프로젝트는 실패한 것 같음
  - 과도하게 설계된 구조와 명확한 구조가 부족함
  - 게임 스토리가 없어서 명확한 방향 없이 코딩했음

- 문서화가 거의 없는 이 저장소가 많은 대화를 생성함
  - 코드가 게임 엔진보다는 프로젝트처럼 보임
  - 속성 편집기가 흥미로움
  - 제목 때문에 업보트된 것 같음

- "게임을 만들고 싶다"는 이야기가 게임 엔진을 만드는 것으로 변하는 경우를 많이 봄
  - 엔진 코드를 먼저 작성하면 나머지 게임 제작 과정이 쉬울 것이라는 생각에 빠짐
  - 엔진을 만드는 것이 게임을 만드는 것보다 더 재미있을 수 있음
  - 엔진을 최적화하는 것이 더 빠른 보상을 줌
  - Phaser js 엔진을 사용하여 빠르게 인터랙티브한 것을 화면에 표시하려고 시도했음

- Clojure를 사랑하지만 불변 데이터 구조를 가진 함수형 언어가 게임 개발에 적합한지 의문임

- 게임 상태가 하나의 아톰에 저장되고 엔티티가 그 안에 다시 아톰으로 저장됨
  - Clojure에서 "아톰"을 이렇게 사용하는 것이 일반적인지 의문임

- "게임 엔진에 소요된 시간/복잡성" vs "생산된 게임의 복잡성/흥미" 데이터를 분석하는 것이 흥미로울 것 같음
  - 단순한 템플릿/엔진 시스템으로 만든 게임의 다양성이 감소할 것이라고 예상함

- Unreal Engine 4로 구동되는 상업용 게임 제작 플랫폼인 Core가 이미 존재함
