Odyc.js – 내러티브 게임을 위한 작은 JavaScript 라이브러리
(odyc.dev)- 프로그래밍 경험이 부족한 사용자도 쉽게 비디오 게임을 만들 수 있도록 설계된 경량 자바스크립트 라이브러리임
- 내러티브 게임, 즉 스토리텔링 중심의 게임 개발에 적합
- 직관적인 코드 구조와 간결한 API를 통해 복잡한 프로그래밍 없이도 게임 제작 경험을 제공함
- 모든 것(스프라이트,대화,사운드,인터랙션)은 코드로 만들어지므로, 전체 게임이 1개의 파일에 저장 가능
주요 특징 및 장점
- 초보 개발자 혹은 비개발자도 간단한 자바스크립트 코드만으로 내러티브 게임을 제작할 수 있음
- 대형 프레임워크와 달리 매우 작은 용량과 쉬운 사용성을 제공함
- 선택지 기반의 게임, 대화형 콘텐츠, 시각적 개발 경험 등 스토리와 상호작용에 강점을 가짐
활용 대상
- 게임 제작 입문자 또는 프로토타입을 빠르게 만들고자 하는 스타트업, IT 전문가, 개발자, 창작자 모두 적용 가능함
- 복잡한 그래픽이나 대규모 게임보다는 아이디어 실험, 인터랙티브 콘텐츠, 스토리 전개에 적합한 도구임
게임 개발 시작은 createGame()
createGame({
player: {
sprite: 7,
position: [2, 5]
},
map: `
########
#......#
#..X...#
#......#
########
`,
templates: {
X: {
sprite: 4,
dialog: 'Hello, adventurer!'
}
}
})
Hacker News 의견
-
왜 제목이 ‘...for narrative games’인지 궁금증 생김
라이브러리 공식 페이지에는 ‘narrative’ 게임에 대한 언급이 없는 점 포착
‘narrative game’의 의미에 혼란 있음
샘플 게임들이 내가 생각하는 ‘narrative game’ 정의에 맞지 않음
구글 검색상 나오는 ‘narrative game’과 샘플 게임들의 연결성이 부족함
만약 ‘narrative game’의 보편적 정의가 존재한다면, 이 라이브러리가 다른 게임 엔진과 비교해서 ‘narrative game’ 제작에 특별히 지원하는 기능이 무엇인지 의문 제기-
어젯밤 텍스트 기반 어드벤처 게임 아이디어가 떠오름
어른이 되어 세금도 내고, 출근도 하고, 집안 청소도 하는 식의 일상적 미션을 수행하는 컨셉
이런 일들을 덜 하면 인생이 힘들어지고, 더 하면 더 쉬워지는 구조
최종 목표는 빚 없이 생을 마감하는 것 -
이 도구의 아이디어는 텍스트와 대화를 이용하여 간단한 어드벤처 게임을 선언적으로 만들 수 있게 해주는 점이라고 생각
Pico-8 같은 일반적인 게임 엔진처럼 메카닉을 중심으로 만드는 용도와는 다름
맵 만들기, 맵 간 이동, NPC, 대화 및 텍스트 트리거 생성이 쉬움
비프로그래머 대상 엔진(RPGMaker 등)도 비슷한데, 거기서도 대부분 유저는 맵과 트리거 위주, 별도의 복잡한 메카닉 없이 텍스트와 대화가 중심인 게임을 만듦
이 도구도 이런 ‘내러티브’ 게임 제작이 쉬운 점을 강조한다고 봄 -
공식 소개 문서에서:
‘Odyc.js는 픽셀, 사운드, 텍스트, 그리고 약간의 로직을 결합해 내러티브 게임을 만들 수 있게 설계된 작고 가벼운 자바스크립트 라이브러리’ 설명 -
당연히 텍스트 어드벤처 엔진이라고 생각함
-
프랑스어 버전 사이트에서만 ‘narrative’ 예시가 두 개 더 제공됨
턴 방식 구조와 메시지, 프롬프트, 대화 위주 포커스 때문에 ‘내러티브’ 또는 텍스트 기반 게임에 어울릴 것 같아 해당 용어를 사용함
하지만 더 좋은 라벨 아이디어가 있다면 기꺼이 바꿀 의향 있음
-
-
The Magic Mushroom 게임 굉장함
링크 -
이 구성 방식이 정말 마음에 듦
다수의 자바스크립트 게임 엔진을 만들며 다양한 실험을 했는데, 이건 ‘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, 또는 접근해서 접근성 개선에 참여 가능하니 환영
- 고마움 표시와 함께 라이선스(MIT 형태) 추가 예정
-
이건 대단함
딱 12시간 전에 꼭 필요했던 것
공교롭게도 내가 어젯밤 처음으로 1인 전용 3레벨 짜리 내러티브 연애 게임용 에셋을 만들다 잠듦
게임 개발은 처음
아침에 HN에서 내러티브 게임용 JS 라이브러리가 1위까지 올라온 것을 목격
FTR 내 게임은 심프 게임이고, 쭉 만나온 상대에게 공식 커플 제안용으로 쓰는 중-
멋진 아이디어라는 생각
비슷한 경험: 최근엔 2005년 MSN 채팅 인터페이스를 HTML로 다 재현해누군가에게 추억 선사
정말 따뜻한 경험 -
좋은 아이디어
더 도와줄 수 있었으면 하는 마음
정말 이 툴이 딱 맞는 사례라고 생각
잘 되길 희망 -
누군가를 좋아해서 함께 시간을 보내고 싶은 마음이나, 관심을 표시하는 행동이 ‘심프’로 불릴 일은 아님
매우 따뜻하고 배려있는 제안이라 생각
-
-
puzzlescript와 비슷하다는 인상
- PuzzleScript 정말 멋지고, 같은 소형 엔진 계열로 crisp-game-lib도 추천
-
정말 멋진 툴이라는 감상
-
이 라이브러리와 상관은 없지만 playground에 적용된 canvas video recorder 작동 방식에 관심
직접 구현해보고 싶음-
관련 코드 공개
-
최근 프로젝트에서 canvas video recorder를 살펴봤고, 이 기능이 내장되어 있다는 점이 놀라움
medium.com 튜토리얼 참고
-