온스크립터

onscripter

1 개요

다카하시 나오키(高橋直樹)가 개발한 NScripter의 비공식 호환 엔진으로 Studio OGA(사이트는 여기)에서 소스 코드가 배포되고 있다. Android와 Zaurus는 설치 파일도 제공하고 있다. 단, 일본어 환경에서만 정상적인 실행[1]이 가능하며 다른 언어 환경에서 정상적으로 실행하기 위해서는 직접 컴파일해야 할 필요가 있다.

2 비공식 호환 엔진

온스크립터[2]에 대해서 설명하기 전에 먼저 엔스크립터(NScripter)를 설명해야 할 필요가 있다. 엔스크립터는 일본프로그래머 다카하시 나오키가 만든 것으로, 특정 어드벤처 장르 게임 제작에 특화되어 있는 2D 게임 엔진이다. 하지만 다른 장르를 제작하는 것도 어느 정도 가능한지 RPG요소가 가미된 어드밴처도 있는데 쯔꾸르와는 달리 전투 장면부터 회상이 가능한 장점이 있다. 물론 전투 장면부터 회상이 가능하도록 코드를 넣어야 한다.

엔스크립터는 스크립트 언어로 NScript를 사용하는데, 이 언어를 읽을 수 있는 것이 온스크립터이다. 그래서 온스크립터가 엔스크립터의 호환 엔진인 것이다.

2.1 구조와 특징

온스크립터(뿐만 아니라 엔스크립터)는 배치 파일과 같은 일종의 셸 스크립트이다. 스크립트가 있고, 그 스크립트를 인터프리터가 한 행씩 읽는 순차식 구조인 것이다. 스크립트는 0.txt(~99.txt)에 저장하여 수정하기 매우 편하다.

엔스크립터는 상당히 옛날에 만들어졌고, 그렇기 때문에 유니코드를 지원하지 않는다.[3] 그리고 엔스크립터의 호환 엔진 온스크립터도 유니코드를 지원하지 않는다. 따라서 스크립트 파일의 문자 코드와 인터프리터(온스크립터 본체)의 문자 코드가 일치하지 않으면 온스크립터가 강제로 종료되거나 외계어로 출력되는 문제가 발생할 수 있다. 물론 소스코드째로 배포되고 있으므로 유니코드를 지원하는 버전도 많다. 이제는 굳이 유니코드가 안된다고 스크립트를 수정하거나 소스코드(...)를 수정할 필요가 없다.

전각 문자는 출력하는 문자열로, 반각 문자는 명령어로 인식하는 특징이 있다. 따라서 일반적으로 반각 문자로 쓰는 로마자를 화면상에 출력하기 위해서는 전각 문자로 바꾸어 사용해야 한다. (단, 반각 문자를 출력할 수 있는 1바이트 모드 명령어를 지원하고 있다.)

인터프리터, 즉 온스크립터가 스크립트를 읽기 위해서는 스크립트 파일(0.txt), 글꼴(default.ttf)가 꼭 필요하다. 최신버전에서는 0.txt대신 Nscript.dat가 그대로 들어가도 읽어낼 수 있다. 그 외 온스크립터에서 호출하는 이미지 파일이나 소리 파일, 세이브 파일이 없으면 종료되는 경우도 있다.[4]

마지막으로 중요한 점은 어디까지나 엔스크립터의 호환 엔진이기에 엔스크립터의 모든 명령어와 기능을 지원하지는 않는다는 점이다. 거기에 공식도 아니다. 언제든지 호환되지 않는 문제가 발생할 수 있음에 유의해야 한다.

2.2 라이선스

여기에서 중요한 사실이 있다. 온스크립터는 일반적으로 엔스크립터 엔진의 게임을 다른 플랫폼에 포팅하는 데 더 많이 쓰이지만[5] 일단 어쨌든 게임 엔진이라는 것이다.

엔스크립터 엔진으로 상용(商用) 게임을 만들기 위해서는 반드시 라이선스료를 지불해야 하는데, 호환 엔진인 온스크립터 엔진을 쓸 때는 그럴 필요가 없다! 공식 배포 사이트에 따르면 사용 목적을 권리자에 알리거나 영리적 목적으로 사용할 때 라이선스료를 지불할 의무는 없다.[6]

2.3 다양한 지원 플랫폼

온스크립터는 많은 플랫폼을 지원하는 것이 가장 큰 특징으로, 소스 코드 배포 사이트에서는 다음과 같은 운영체제를 지원한다고 소개하고 있다:

-지원하는 운영체제  
 * Linux
 * Windows
 * Windows CE
 * Mac OS X
 * Mac OS 9
 * Android
 * iOS
 * PSP
 * OS/2
 * Wii
 * NetWalker
 * 드림캐스트
 * 플레이스테이션
 * FreeBSD
 * Zaurus
 * 솔라리스

꼭 알고 넘어가야 하는 점은 Android, Zaurus를 제외하고는(그것도 일본어판 한정) 모두 배포된 소스 코드를 가지고 다른 개발자가 포팅한 것이라는 것이다. [7]

게다가 운영 체제별, 버전별, 언어별, 지원하는 명령어 숫자별 등등 별의 별 수많은 변수가 있기 때문에 온스크립터마다 스크립트를 미묘한 차이로 다르게 읽는다. 또한 머신 성능과 머신 해상도 문제도 있어서 한 스크립트를 여러 조건과 환경에서 일관되게 읽기란 꽤나 어려운 일이다.[8]

그러나 이렇게 다양한 운영체제를 지원하는 점이 오히려 인터넷 통신망에서 온스크립터가 유명해지게 일조하였고[9] 지금도 그 생명력을 이어나가는 데 큰 부분을 차지하고 있다.

3 지원하는 게임

온스크립터는 엔스크립터 호환 엔진으로 엔스크립터 엔진 게임만 지원할 것이라고 생각되겠지만 그렇지 않다. 다른 엔진으로 제작된 게임의 스크립트를 (Perl)을 이용하여 온스크립터가 읽을 수 있는 스크립트로 변환하는 과정을 통해 지원하게 하는 것이 가능하다. 이러한 작업을 컨버팅이라고 한다. [10][11]

아래 항목의 게임만 지원하는 것은 아니며 더 많은 게임이 있다.

3.1 컨버터가 제작된 게임

3.2 온스크립터 기반 게임

4 관련 사이트

이 항목에서는 온스크립터 개발이나 게임 포팅(컨버팅)을 위한 정보를 제공하는 사이트에 대해서 서술한다.

4.1 레퍼런스

(일본어) http://senzogawa.s90.xrea.com/reference/NScrAPI.html
(영어) http://unclemion.com/onscripter/api/NScrAPI.html

5 기타

한국에도 온스크립터와 비슷한 바실리어트라는 개발 도구가 있다. 무료이므로 게임을 개발해보겠다는 한국인은 괜히 안 되는 일본어 가지고 삽질하지 말고 이걸 이용하는 게 좋다. 다만 구하려면 인터넷을 뒤져야 한다. 만든 곳에서 버린 건지 제작팀 홈피에 다운로드가 없다.

인터넷 비주얼 노블인 UC노벨도 생각해볼 수 있다. 사용자가 직접 만들고 배포할 수 있는 인터렉티브 멀티미디어 콘텐츠를 만드는 플랫폼 및 사이트로, 비주얼 노블 같은 것을 GUI기반의 제작 도구를 통해 쉽고 간단하고 빠르게 만들 수 있는것이 장점이나 빨리 만들 수 있는 만큼 장난 반으로 올라오는 컨텐츠가 굉장히 많으며 후자가 대다수라는 것이 엄청난 단점이다.

그 외에 VNAP, 네코노벨등이 있으며 렌파이같은것도 좋다.
  1. 다른 문자 환경에서는 글자가 깨지는 현상이 있다.
  2. 사실 정식 발음은 오엔스크립터(オエヌスクリプター)이나 아무도 언급하지 않는다.
  3. ANSI 기반이다.
  4. 제일 많은 경우는 전각 반각 문제이다.
  5. 그리고 그중 과반수는, 아니 99%는 미연시나 다름없다.
  6. 이를 이용하여 구글 플레이에서 온스크립터를 통한 상용 게임을 찾아볼 수 있기도 하다.
  7. 즉, 온스크립터마다 문자 코드와 지원하는 기능, 성능이 다르다.
  8. 특히 Windows CE에서는… 더 이상의 자세한 설명은 생략한다
  9. 사실 안드로이드iOS의 덕을 많이 받고 있다
  10. 다 되는 것은 아니다. 괴악한 게임 엔진을 사용하는 것이라면 컨버팅하기 힘들거나 불가능하다.
  11. 물론 펄 말고 다른 언어로도 컨버팅이 가능하다. C언어로 컨버팅한 게임도 있고 심지어 배치파일로도 가능하다.
  12. 단 엑스트라 메뉴가 존재하지 않아 CG를 본다거나 하는 건 할 수 없다.엑스트라 메뉴 자체는 존재하나 숨겨져 있다. 그러니 안드로이드 앱을 지르도록 하자