NScripter
This article needs additional citations for verification. (May 2023) |
Developer(s) | Naoki Takahashi |
---|---|
Initial release | September 6, 1999[1] |
Final release | final version
/ February 23, 2018[2] |
Windows | |
Type | Game engine (visual novel) |
License | Freeware |
Website | nscripter |
NScripter (エヌスクリプター, Enusukuriputā), officially abbreviated as Nscr, also known under its
NScripter
NScripter's development ranged from 1999 to 2018; it was first called by its production title Scripter4 because it was the successor to Scripter3, Naoki Takahashi's previous engine. 23 February 2018 was the date of the release of the final version of NScripter.
Characteristics
The
In order to meet specific needs, it is possible to use a method called 'system customisation' which modifies the behaviour of the engine itself in order to add features such as a save system, complex effects not provided in the basic API, or video management. To do this, external DLLs can be used. These functions can be used to create
On the other hand, before version 2.92, object-oriented elements were not incorporated into the software and NScripter did not handle parallelism at all. The defsub
statement was used to try to do structured programming within NScripter. Overall, NScripter specialises in the development of visual novels and sound novels, and the creation of these types of games is simplified.
In version 2.82, NScripter was given support for 1-byte characters - this allows writing in the core Latin alphabet and the English alphabet for English locutors.
Extension via Lua
Since version 2.93 released in 1 April 2009, it is possible to extend the capabilities of NScripter by using
Lua is implemented as a DLL and is launched by NScripter itself. It is possible to call any function of this language from a conventional NScripter script and call an NScripter function on the Lua side which allows to transfer almost completely the game script itself to Lua. In addition to complex numerical operations that were not possible with conventional NScripter, this language provides full functionality typical of script languages such as file operations, block scoping, array methods and module libraries. Lua allows NScripter to support parallelism, which now makes it possible to manipulate every element of the game simultaneously and in parallel; for example, when an animation is played, NScripter does nothing else at the same time. This language greatly improves and simplifies the description of the various extensions, which were previously done using a method called 'system customisation', and offers the possibility to modify the behaviour of the engine itself, for example to change the behaviour at the end of the game. However, the use of Lua is not mandatory and the old system customisation method is still available.
Documentation
NScripter has official documentation in electronic format and four official books dating from 2004, 2005, 2006 and 2007 respectively. The books are now only available as second hand copies. There are also unofficial electronic documentations like senzogawa's.
License
Regarding the license, non-commercial use of the software is allowed, any non-commercial game can then be distributed without paying a royalty.
In 2013, the terms of use were simplified and participants in games and other contests can now use the software free of charge, regardless of whether they receive a cash prize and regardless of the form of distribution of the winning work. In addition, as long as they are distributed for free, they can be used regardless of the distinction between business and individual users and the method of distribution. Even if a work is included in a magazine supplement as freeware or shareware, it can be used for free.
However, in order to sell a work commercially, a royalty must be paid once a game is rated by a rating body such as the
It is possible to negotiate or even not pay the fee; NScripter's developer is especially supportive of game developers who are not looking to make a profit and those who are struggling to do so because of the royalty.
Creating a DLL extension and redistributing it under the GPL is disallowed, however the LGPL is considered acceptable.
Popularity
This engine was very popular in Japan in the 2000s due to its simplicity and because it was free for amateur video game creators.
Examples of scripts
The following examples use ONScripter-EN's variant of the NScript script language.
Simple script
This simple script defines some basic parameters and displays a text.

;mode800
;Defines the game resolution to 800x600 pixels. ';' is necessary and must be the first line of the script file.
;gameid Example
;Defines the game name for the engine to for example name save data. ';' is necessary and must be the second line of the script file.
*define ;Block defining the game parameters. Must be named '*define'.
caption "Example" ;Name of the graphical window
versionstr "Example"," version 1.0-en" ;Defines the string of text used to describe the game version in the About menu.
savename `Save`,`Load`,`File ` ;Defines the titles of the save and load menus as well as the text string designating a save file in
;the right-click menu - the default one being the Japanese 'しおり' - to change or translate it, here changed to « File ».
savenumber 15 ;Defines the maximum saves number.
rmenu `Save`,save,`Load`,load,`Erase window`,windowerase,`Quit`,end ;Names the buttons of the menu appearing when the user right-clicks.
game ;Closes the block defining all of the game parameters and begins the game.
*start ;Block defining the game content.
`An example text...@ then a text that appears after user interaction.\ And finally another page of text.\
;An example text. The character '`' is used to use one-byte characters (sufficient for the core Latin alphabet and the English alphabet, but not sufficient for Japanese characters).
;'@' and '\' expect user interaction. '@' scrolls the rest of the text after interaction while '\' deletes the current text
;and moves to the next line if the line is finished. There is no need for a space after the '`'. Reads any character after the command including comments.
end ;Exits from the game.
Script with choice and background image
Any visual novel that is not linear or called '

[…] (see the *define block from the previous example)
/!\ Code line added to the define block *define /!\
effect 2,10,1000 ;Defines effect number 2 (effects 0 and 1 are reserved for not displaying a transition), which is a fade-in per pixel.
;As defined here, the effect comes from the tenth set of effects included in the engine and lasts 1000 milliseconds, i.e. 1 second.
game ;Closes the block defining all of the game parameters and begins the game.
*start ;Block defining the game content.
bg "background-image.png",2 ;Transition to make 'background-image.png' appear with the effect number 2.
`[Character 1]
`So...@ do you prefer reading or watching films?@
;An example text. The character '`' is used to use one-byte characters (sufficient for the core Latin alphabet and the English alphabet, but not sufficient for Japanese characters).
;'@' and '\' expect user interaction. '@' scrolls the rest of the text after interaction while '\' deletes the current text
;and moves to the next line if the line is finished. There is no need for a space after the '`'. Reads any character after the command including comments.
br ;Line break to make space between the choices and the question
select "Reading", *choice1, "Watching films", *choice2 ;Displays 2 possibles choices
*choice1 ;Block initiated if the player makes choice number 1
`[Character 2]
`I prefer reading.@
`[Character 1]
`Me too! What's your favourite book?@
br ;Line break
`And the conversation went on for another 2-3 hours...\
end ;Exits from the game.
*choix2 ;Block initiated if the player makes choice number 2
`[Character 2]
`I prefer watching films.@
`[Character 1]
`Me too! What's your favourite film?@
br ;Line break
`And the conversation went on for another 2-3 hours...\
end ;Exits from the game.
Notable games using NScripter
Most of the games running on NScripter are amateur video games, so few NScripter games are notable. Most of the notable games below are commercial games and therefore commercial successes.
- KiriKiri for their next game, Fate/stay night.
- sound novels - the When They Cryseries, etc.; many people discovered NScripter and its derivatives through the 07th Expansion games, including many amateur translators.
- The Narcissu series; the Narcissu series is probably the most popular free kinetic novels series running on NScripter.
NScripter2
![]() | This section needs expansion. You can help by adding to it. (April 2023) |
NScripter2 (エヌスクリプターツー, Enusukuriputātsū), also known by its
Development and release
In September 2009, the
Characteristics
...
User's guide
As of June 2022, NScripter2 was still at the stage where only the engine itself and minimal documentation have been released. The developer intended to update and simplify it but the engine has not been updated since 2017.
Syntax
The syntax differs from NScripter although it is still inspired by the
end
' - the command that ends an 'if' condition in Lua - as it is in BASIC but 'quit
'.
There is an unofficial extension for the
License
Fundamentally, the same licensing terms as NScripter apply, i.e. the engine is free for amateur games and non-commercial works. It is possible to use NScripter2 to develop commercial works, but a royalty must be paid.
Scripter3
Scripter3 (スクリプタースリー, sukuriputāsurī), officially abbreviated as Scr3 is a
Characteristics
Scripter3 reads script files in
Scripter3 handles the text but does not handle the rest of the graphic part of the text boxes, which is essential for any visual novel to establish a contrast between decor and text. Developers have to incorporate the text box graphics directly into each background image, so there is often a copy of a background image without a text box and another with one. As a result, if the player right-clicks to hide the text, the text box remains displayed, because it is integrated into the background image.
The engine is able to read
Its successor, NScripter, has kept more or less the same instructions, so the two engines are relatively compatible with each other; for example, some instructions remain unchanged like the text
Popularity
Scripter3 was very popular during the years when Naoki Takahashi was still developing it, however, the engine has almost disappeared from the Internet and everything related to it is now only available on archive websites. Many users assisted each other on the official
Related engines
![]() | This section needs expansion. You can help by adding to it. (April 2023) |
The original NScripter engine has been
ONScripter

ONScripter is a
Compatible platforms with ONScripter:
(alphabetical order)
- Android
- Brain (electronic dictionary under Windows CE 6.0)
- Classic Mac OS
- Dreamcast
- FreeBSD
- Linux
- Haiku
- iOS (iPhone, iPod Touch, iPad)
- iPod Linuxinstalled)
- macOS
- NetBSD
- NetWalker (Ubuntu)
- Nintendo 3DS
- Nintendo Switch (the second is a port of ONScripter-EN [backwards compatible with ONScripter] version onscripter-20060724-insani with SDL2)
- OS/2
- PlayStation 3
- PSP (port of the Dreamcast port)
- Solaris
- Wii (port for ONScripter-EN, backwards compatible engine with ONScripter)
- Windows
- Zaurus
There is a Mandarin translation for ONScripter users of the 11 June 2005 English translation of Masato Sagara's 26 March 2002 NScripter documentation. This was started in 2011, abandoned and then resumed and completed in 2015. However, this translation is not considered to be particularly correct. The documentation is available online in both its original form and as blog posts.
ONScripter-EN

...
ONScripter-ANSI
ONScripter-ANSI is a
ONScripter-RU
ONScripter-RU is a fork of ONScripter-EN developed from early-2015 with the aim of supporting the Russian language. The only major use of ONScripter-RU is "Umineko Project," a high definition PC release of Umineko When They Cry based on elements of the PS3 port. The engine is released under the GPLv2 and BSD licenses. ONScripter-RU uses its own engine 'hacks', useful for the previously mentioned project, so it is not compatible with other ONScripter forks. ONScripter-RU's documentation is very incomplete. ONScripter-RU is compatible with the following platforms:
(alphabetical order)
PONScripter
PONScripter is a fork of ONScripter that was previously developed by Uncle "Mion" Sonozaki in 2011, providing proportional font and Unicode support.[3] This version is not completely compatible with scripts made for ONScripter-EN, although this was one of the aims for the project. Proper development has been stalled, being the Sekai Project's fork the most updated fork.[4]
PNaCl ONScripter
PNaCl ONScripter is a
NscPlayer
NscPlayer is a fork of PNaCl ONScripter. It highlights the security that PNaCl technology offers, the user can play without worrying about malware potentially present in a game.
ONSlaught
Also known by its
Like PONScripter and ONScripter-EN, ONSlaught comes with an executable; in these recent versions, however, it is only intended for computers running
After the version of the engine dated 26 November 2011, the project is inactive until July 2021 when the engine was updated.
CCScripter
CCScripter is a
KScripter
KScripter is a clone inspired by NScripter in ActionScript 3. KScripter can therefore run on any operating system as long as it is compatible with Flash. The extension of the executable of a software or game created with KScripter is therefore .SWF. The engine can interact with the Web via languages such as PHP, Ruby or JavaScript.
Comparison of clone engines
Engine
name |
Founder(s) | Developer(s) | Executable(s) | First version | Latest version | Repository | Project
state |
Written
in |
Supported
coding language(s) |
Supported
language(s) |
License | Documentation | Official web site |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ONScripter | Ogapee (Studio O.G.A) | ditto | / | / | Active | C++ | Lua
|
Japanese (and English to a lesser extent as it is not very stable) | GPLv2
|
NScripter's documentation | Official website | ||
ONScripter-EN | Chendo | Chendo then the insani team then Peter 'Haeleth' Jolly then Mion / Uncle Mion (from the translation group Sonozaki Futago-tachi) then resuming of the insani branch. | onscripter-en.exe, ONScripter.app | insaniMion Archived 2018-10-06 at the Wayback Machine | Active | C++ | /
or Lua (insani branch)
|
Japanese, English | GPLv2
|
Official website (Mion) and Official website (insani) | |||
ONScripter-ANSI | Andy_Skull | ditto | onscripter-ansi.exe | / | Abandoned | C++ | / | Multilingual (via Windows-1252) | GPLv2
|
Official website | |||
ONScripter-RU | vit9696 | vit9696 (développeur principal), copyliu and knox-umineko | onscripter-ru.exe, onscripter-ru-osx.app | https://github.com/umineko-project/onscripter-ru/ | Completed
(End of the 'Umineko PS3 project' on 1 January 2021) |
C++ and C | / | Russian | GPLv2, BSD
|
Official website | |||
PONScripter | Peter 'Haeleth' Jolly | Peter 'Haeleth' Jolly then Mion / Uncle Mion (from the translation group Sonozaki Futago-tachi) then, -approximately- Sekai Project, Witch Hunt and 07thMod | ponscr.exe, PONScripter.app | svn.denpa.mobi/repo/ponscripter, github.com/sekaiproject/ponscripter-fork (Sekai Project's fork) and github.com/07th-mod/ponscripter-fork (07thMod's fork) | Active (07thMod and WitchHunt's forks) | C++ and C (Sekai Project and 07thMod's forks) | / | Multilingual (via Unicode) | GPLv2
|
Official website (1) (Mion) Official website (2) (Mion), cf. Repository column for the other forks | |||
PNaCl ONScripter | ? | ditto | / | / | Abandoned | C++ | / | Japanese | GPLv2
|
NScripter's documentation | ? | ||
NscPlayer | ? | ditto | / | / | Abandoned | C++ | / | Japanese | GPLv2
|
NScripter's documentation | Official website | ||
ONSlaught | Víctor Manuel 'Helios_VMG' González | ditto | ONSlaught.exe | https://sourceforge.net/p/onslaught-vn/files/ | Abandoned | C, C++, Yacc | / | Multilingual (via Unicode) | BSD | Official website | |||
CCScripter | toveta | ditto | CCScripter.app | / | Abandoned | M | / | Japanese | BSD | NScripter's documentation | Official website | ||
KScripter | ? | ditto | ? | / | Abandoned | ActionScript 3 | Web languages: PHP, Ruby, JavaScript... | Japanese, multilingual (via Unicode) | ? | NScripter's documentation | ? |
Unofficial NScripter versions supporting other languages
![]() | This section needs expansion. You can help by adding to it. (April 2023) |


Chinese modified version
A modified version was, for example, used for the Mandarin translation of Narcissu.
Korean modified version
Korean internauts have published a modified version of NScripter 2.96 to support their language.
A modified version was, for example, used for the Korean translation of Higurashi When They Cry.
Competing engines
NScripter has some competitors like the
Internationally, however, its competitor is Ren'Py, which has enabled the production of more than 4 000 games.
See also
References
Citations
- ^ "高橋直樹のホームページ" (in Japanese). Archived from the original on 1999-10-11.
- ^ Takahashi Naoki. "nscripter.com". Retrieved 14 December 2018.
- ^ "Ponscripter - Overview'". Mion and Roto's Development Corner. Archived from the original on 2018-08-12. Retrieved 22 August 2023.
- ^ "Ponscripter Release (20111009 "Tiramisu")". Uncle Mion's ONScripter Corner Blog Archive. Archived from the original on 2017-07-31. Retrieved 22 August 2023.
External links