# Odyc.js – 내러티브 게임을 위한 작은 JavaScript 라이브러리

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

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=21339](https://news.hada.io/topic?id=21339)
- GeekNews Markdown: [https://news.hada.io/topic/21339.md](https://news.hada.io/topic/21339.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-06-08T09:57:57+09:00
- Updated: 2025-06-08T09:57:57+09:00
- Original source: [odyc.dev](https://odyc.dev)
- Points: 10
- Comments: 1

## Summary

**경량 자바스크립트 라이브러리**를 사용하면 프로그래밍 경험이 없는 사용자도 직관적인 코드와 간단한 API로 **내러티브 게임**을 쉽게 제작할 수 있습니다. 최소한의 코드만으로도 **대화형 콘텐츠**와 다양한 스토리 상호작용을 구현할 수 있어, 아이디어 실험이나 프로토타입 제작에 최적화된 도구입니다. **스타트업, 창작자, IT 전문가** 등 게임 개발 입문자부터 현업까지 폭넓게 활용 가능합니다.

## Topic Body

- 프로그래밍 경험이 부족한 사용자도 쉽게 비디오 게임을 만들 수 있도록 설계된 **경량 자바스크립트 라이브러리**임  
- 내러티브 게임, 즉 스토리텔링 중심의 게임 개발에 적합  
- 직관적인 코드 구조와 간결한 API를 통해 복잡한 프로그래밍 없이도 게임 제작 경험을 제공함  
- 모든 것(스프라이트,대화,사운드,인터랙션)은 코드로 만들어지므로, 전체 게임이 1개의 파일에 저장 가능   
  
### 주요 특징 및 장점  
  
- 초보 개발자 혹은 비개발자도 **간단한 자바스크립트 코드**만으로 내러티브 게임을 제작할 수 있음  
- 대형 프레임워크와 달리 **매우 작은 용량**과 쉬운 사용성을 제공함  
- 선택지 기반의 게임, 대화형 콘텐츠, 시각적 개발 경험 등 **스토리와 상호작용**에 강점을 가짐  
  
### 활용 대상  
  
- 게임 제작 입문자 또는 프로토타입을 빠르게 만들고자 하는 **스타트업, IT 전문가, 개발자, 창작자** 모두 적용 가능함  
- 복잡한 그래픽이나 대규모 게임보다는 **아이디어 실험, 인터랙티브 콘텐츠, 스토리 전개**에 적합한 도구임  
  
### 게임 개발 시작은 createGame()  
```js  
createGame({  
  player: {  
    sprite: 7,  
    position: [2, 5]  
  },  
  map: `  
    ########  
    #......#  
    #..X...#  
    #......#  
    ########  
  `,  
  templates: {  
    X: {  
      sprite: 4,  
      dialog: 'Hello, adventurer!'  
    }  
  }  
})  
```

## Comments



### Comment 39839

- Author: neo
- Created: 2025-06-08T09:57:57+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=44200866) 
- 왜 제목이 ‘...for narrative games’인지 궁금증 생김  
라이브러리 공식 페이지에는 ‘narrative’ 게임에 대한 언급이 없는 점 포착  
‘narrative game’의 의미에 혼란 있음  
샘플 게임들이 내가 생각하는 ‘narrative game’ 정의에 맞지 않음  
구글 검색상 나오는 ‘narrative game’과 샘플 게임들의 연결성이 부족함  
만약 ‘narrative game’의 보편적 정의가 존재한다면, 이 라이브러리가 다른 게임 엔진과 비교해서 ‘narrative game’ 제작에 특별히 지원하는 기능이 무엇인지 의문 제기

  - 어젯밤 텍스트 기반 어드벤처 게임 아이디어가 떠오름  
어른이 되어 세금도 내고, 출근도 하고, 집안 청소도 하는 식의 일상적 미션을 수행하는 컨셉  
이런 일들을 덜 하면 인생이 힘들어지고, 더 하면 더 쉬워지는 구조  
최종 목표는 빚 없이 생을 마감하는 것

  - 이 도구의 아이디어는 텍스트와 대화를 이용하여 간단한 어드벤처 게임을 선언적으로 만들 수 있게 해주는 점이라고 생각  
Pico-8 같은 일반적인 게임 엔진처럼 메카닉을 중심으로 만드는 용도와는 다름  
맵 만들기, 맵 간 이동, NPC, 대화 및 텍스트 트리거 생성이 쉬움  
비프로그래머 대상 엔진(RPGMaker 등)도 비슷한데, 거기서도 대부분 유저는 맵과 트리거 위주, 별도의 복잡한 메카닉 없이 텍스트와 대화가 중심인 게임을 만듦  
이 도구도 이런 ‘내러티브’ 게임 제작이 쉬운 점을 강조한다고 봄

  - [공식 소개 문서](https://odyc.dev/doc/getting-started/intro)에서:  
‘Odyc.js는 픽셀, 사운드, 텍스트, 그리고 약간의 로직을 결합해 내러티브 게임을 만들 수 있게 설계된 작고 가벼운 자바스크립트 라이브러리’ 설명

  - 당연히 텍스트 어드벤처 엔진이라고 생각함

  - 프랑스어 버전 사이트에서만 ‘narrative’ 예시가 두 개 더 제공됨  
턴 방식 구조와 메시지, 프롬프트, 대화 위주 포커스 때문에 ‘내러티브’ 또는 텍스트 기반 게임에 어울릴 것 같아 해당 용어를 사용함  
하지만 더 좋은 라벨 아이디어가 있다면 기꺼이 바꿀 의향 있음

- The Magic Mushroom 게임 굉장함  
[링크](https://achtaitaipai.github.io/odyc-exemples/games/mushroom.html)

  - 지금까지 가장 마음에 드는 건 이것  
[링크](https://achtaitaipai.github.io/odyc-exemples/games/vroum.html)

  - John Wick 게임, 최근 영화의 요약본과 같다는 느낌  
[링크](https://achtaitaipai.github.io/odyc-exemples/games/john-wick.html)

- 이 구성 방식이 정말 마음에 듦  
다수의 자바스크립트 게임 엔진을 만들며 다양한 실험을 했는데, 이건 ‘2시간 안에 키즈용으로 빠르게 완성해야 할 때’와 ‘심도 있게 구조 파악을 하고 싶을 때’ 사이 절묘한 지점 제공  
몇 개 게임을 빠르게 만들어 저대역폭 환경에서 아이들 산만하게 해줄 용도로 기대

- 아기자기한 툴 느낌  
구체적으로 아이들(요즘 시대의 pygame 같은 느낌) 학습용으로 좋다고 생각  
Scratch 등은 5살에게 맞춰 설계해 프로그래밍 내용이 과도하게 쉬움  
이 툴은 10살 전후 학생에게 딱 적합  
간단한 문자열 조작, 몇 가지 문법 트릭을 배우고, 기본 사이드 스크롤러와 NPC까지만 구현 가능  
이후 준비되면 제어 흐름 익히는 경험도 가능  
이걸 배워서 아이들 대상 수업 개설이나 놀이터 투자 고려하면 실질적으로 판매도 가능  
다른 관점에서는 이 툴로 기초적인 프로시저럴 게임 에셋 생성도 실험할 만함

- game.prompt(“Dude, you ran out of eggs!|Would you like to buy|an 80 pack of eggs?”, “Yes”, “No”); 코드 예시 공유

  - await game.openDialog(“Dude, you ran out of eggs!|Would you like to buy|an 80 pack of eggs?”)  
game.prompt( “Yes”, “No”) 코드 활용 예시

  - 달걀이 한 개였는데 어떻게 마흔 개가 됨? 의문 제기

- 진정 영감을 주는 프로젝트라는 평가  
오픈소스임을 확인했으나 라이선스가 누락되어 개발자가 포크 및 수정, 배포 범위를 알기 어렵다는 점 지적  
모국어로 번역한 포크도 공개하고 싶은데(크레딧 남길 의향), 괜찮은지 문의  
자국은 5% 미만만 영어 사용

  - 고마움 표시와 함께 라이선스(MIT 형태) 추가 예정  
모국어가 무엇인지 궁금  
좌우 정렬 언어는 번역 적용이 간단하다고 설명  
언제든지 포크, PR, 또는 접근해서 접근성 개선에 참여 가능하니 환영

- 이건 대단함  
딱 12시간 전에 꼭 필요했던 것  
공교롭게도 내가 어젯밤 처음으로 1인 전용 3레벨 짜리 내러티브 연애 게임용 에셋을 만들다 잠듦  
게임 개발은 처음  
아침에 HN에서 내러티브 게임용 JS 라이브러리가 1위까지 올라온 것을 목격  
FTR 내 게임은 심프 게임이고, 쭉 만나온 상대에게 공식 커플 제안용으로 쓰는 중

  - 멋진 아이디어라는 생각  
비슷한 경험: 최근엔 2005년 MSN 채팅 인터페이스를 HTML로 다 재현해누군가에게 추억 선사  
정말 따뜻한 경험

  - 좋은 아이디어  
더 도와줄 수 있었으면 하는 마음  
정말 이 툴이 딱 맞는 사례라고 생각  
잘 되길 희망

  - 누군가를 좋아해서 함께 시간을 보내고 싶은 마음이나, 관심을 표시하는 행동이 ‘심프’로 불릴 일은 아님  
매우 따뜻하고 배려있는 제안이라 생각

- [puzzlescript](https://www.puzzlescript.net/editor.html)와 비슷하다는 인상

  - PuzzleScript 정말 멋지고, 같은 소형 엔진 계열로 crisp-game-lib도 추천

- 정말 멋진 툴이라는 감상

- 이 라이브러리와 상관은 없지만 playground에 적용된 canvas video recorder 작동 방식에 관심  
직접 구현해보고 싶음

  - [관련 코드](https://github.com/achtaitaipai/odyc-doc/blob/main/src/lib/gameCode/inlineScripts/gameRecorder.js) 공개

  - 최근 프로젝트에서 canvas video recorder를 살펴봤고, 이 기능이 내장되어 있다는 점이 놀라움  
[medium.com 튜토리얼 참고](https://medium.com/@amatewasu/how-to-record-a-canvas-element-d4d0826d3591)
