, officiellement abrégé en « Nscr », également connu sous le titre de production « Scripter4 », est un moteur de jeu développé par Naoki Takahashi entre et destiné à la création de et de qui fonctionne avec son propre langage de script. Le kit de développement n'est disponible que sur Windows. À partir de sa version 2.82, le moteur prend en charge à la fois les caractères japonais et tout caractère d'un octet ; avant cela, il ne prenait en charge que les caractères japonais. Ce moteur fut très prisé au Japon grâce à sa simplicité et à sa gratuité pour les créateurs de jeux vidéo amateurs. Il existe cependant des embranchements permettant d'étendre les capacités de NScripter afin de faire afficher des caractères d'une autre langue, exécuter un jeu sur d'autres plateformes

NScripter Le développement de NScripter s'étala de à ; on l’a d’abord appelé sous son titre de production Scripter4 car il succédait à Scripter3, le moteur précédent de Naoki Takahashi. La version finale de NScripter est publiée le .

Caractéristiques Le script est exécuté par le moteur dans un interpréteur. La syntaxe en est très simple, semblable à celle du langage BASIC. Les fonctions nécessaires à la création de et de , telles que l'affichage de textes, de et de CG, la lecture de musique et le traitement des choix, sont intégrées au moteur en tant qu'API de base. Par conséquent, la création d'un jeu est simplifiée par la possibilité d'écrire un script qui appelle directement ces fonctionsVoir documentation de NScripter — celle-ci est disponible sous forme d'archive à l'adresse http://nscripter.com/nscrdoc.zip.

Afin de répondre à des besoins spécifiques, il est possible d'utiliser une méthode appelée « personnalisation du système » qui modifie le comportement du moteur lui-même afin de lui ajouter des fonctionnalités telles qu'un système de sauvegarde, des effets complexes non fournis dans l'API de base, ou la gestion des vidéos. Pour cela, il est possible d'utiliser des DLL externes. Ces fonctions peuvent être utilisées pour créer des jeux de simulation

D'autre part, avant la version 2.92, les éléments orientés objet n'étaient pas incorporés dans le logiciel et NScripter ne gèrait pas du tout le parallélisme. L'instruction était utilisée pour tenter de faire de la programmation structurée au sein de NScripter. Dans l'ensemble, NScripter est spécialisé dans le développement de et de , la création de ces types de jeux est simplifiée.

Dans sa version 2.82, NScripter fut doté d'une prise en charge pour les caractères de Exemple de script anglais :*define english game *start >Peter Piper picked a peck of pickled peppers;@ endVoir documentation de NScripter — celle-ci est disponible sous forme d'archive à l'adresse http://nscripter.com/nscrdoc.zip.

Extension via Lua Depuis la version 2.93 sortie en , il est possible d'étendre les capacités de NScripter en utilisant le langage de script Lua.

Lua est implémenté sous la forme d'une DLLPrésence d'une DLL appelée « nslua.dll » dans l'archive depuis la version 2.93. et est lancé par NScripter lui-même. Il est possible et d'appeler n'importe quelle fonction de ce langage à partir d'un script NScripter conventionnel et appeler une fonction NScripter du côté Lua ce qui permet de transférer presque complètement le script du jeu lui-même vers Lua. En plus des opérations numériques complexes qui n'étaient pas possibles avec le NScripter classique, ce langage apporte des fonctionnalités complètes caractéristiques des langages de script telles que les opérations sur les fichiers, la portée des blocs, les méthodes de tableaux et les bibliothèques de modules. Lua permet à NScripter de prendre en charge le parallélisme, ce qui rend désormais possible toute manipulation simultanée et parallèle de chaque élément du jeu ; par exemple, lorsqu'une animation est jouée, NScripter ne fait rien d'autre en même temps. Ce langage améliore et simplifie grandement la description des diverses extensions, qui étaient auparavant réalisées à l'aide d'une méthode appelée « personnalisation du système », et offre la possibilité de modifier le comportement du moteur lui-même, par exemple afin de changer le comportement en fin de partie. Toutefois, l'utilisation de Lua n'est pas obligatoire et l'ancienne méthode de personnalisation du système est toujours disponible.

Documentation NScripter possède une documentation officielle sous format numérique et de quatre livres officiels datant respectivement de , , et . Les livres ne sont désormais plus que disponibles en occasion. Il existe également des documentations numériques non officielles comme celle de senzogawa.

Licence En ce qui concerne la licence, l'utilisation non commerciale du logiciel est autorisé, tout jeu non commercial peut alors être distribué sans payer de redevanceVoir licence de NScripter — celle-ci est disponible dans toute archive officielle de NScripter..

En , les conditions d'utilisation ont été simplifiées et les participants aux jeux et autres concours peuvent désormais utiliser le logiciel gratuitement, qu'ils reçoivent ou non un prix en argent et quelle que soit la forme de distribution de l'œuvre gagnante. En outre, tant qu'ils sont distribués gratuitement, ils peuvent être utilisés indépendamment de la distinction entre les utilisateurs professionnels et individuels et de la méthode de distribution. Même si une œuvre est incluse dans un supplément de magazine en tant que freeware ou shareware, elle peut être utilisée gratuitement.

Toutefois, pour vendre une œuvre commercialement, il faut payer une redevance à partir du moment où votre jeu se fait évaluer par un organe de classification tel que l'EOCS. Même dans le cas des jeux amateurs et des logiciels/jeux à code source ouvert, à partir du moment où une redevance atteint ou plus, celle-ci sera traitée comme une œuvre commerciale et sera prise en charge s'il y a de quelconques problèmes avec le moteur. Dans ce cas, si le développeur souhaite ajouter une fonction , celle-ci sera prise en charge dans le cadre de la redevance.

Il est possible de négocier voire de ne pas payer la redevance ; le développeur de NScripter est surtout favorable aux développeurs de jeux ne cherchant pas à faire de bénéfices et à ceux qui peinent à en faire à cause de ladite redevance.

Il est interdit de créer une extension DLL et de la redistribuer sous licence GPL, mais la licence LGPL est considérée comme acceptable.

Popularité Ce moteur fut très populaire au Japon dans les années 2000 dû à sa simplicité et à sa gratuité pour les créateurs de jeux vidéo amateurs.

Exemples de scripts Les scripts suivants ont été écrits pour ONScripter-EN par commodité pour que le jeu puisse afficher des caractères de l'alphabet latin de base et de l'alphabet anglais. ONScripter-EN étant compatible avec NScripter, la syntaxe reste très similaire.

Script simple Ce script simple définit quelques paramètres de base et affiche un texte.

alt=image montrant deux écrans noirs avec du texte écrit en blanc|vignette|Résultat du script simple ; le premier écran est signalé par un indice rajouté noté « 1 », le deuxième écran est signalé par un indice noté « 2 ». ;mode800 ;Définit la résolution du jeu à 800x600 pixels. Nécessite un « ; » et doit être impérativement à la première ligne. ;gameid Exemple ;Définit un nom utilisable par le moteur pour nommer les fichiers de sauvegarde. Nécessite un « ; » et d'être avant le bloc qui définit les paramètres du jeu.

*define ;Bloc qui définit les paramètres du jeu. Doit forcément s'appeler « *define ».

caption "Exemple" ;Nom de la fenêtre versionstr "Exemple"," version 1.0-en" ;Définit la chaîne de caractères qui décrira la version du jeu dans le menu « À propos ».

savename `Sauvegarder`,`Charger`,`Fichier ` ;Définit les titres des menus de sauvegarde et de chargement de partie ainsi que la chaîne de caractères ;qui désigne un fichier de sauvegarde dans le menu clic droit, celle par défaut étant le japonais « しおり », pour la changer ou la traduire, ici changé en « Fichier ». savenumber 15 ;Définit le nombre de sauvegardes. rmenu `Sauvegarder`,save,`Charger`,load,`Effacer fenetre`,windowerase,`Quitter`,end ;Nomme les boutons du menu qui apparaissent quand l'utilisateur fait un clic droit.

game ;Ferme le bloc qui définit tous les paramètres du jeu et commence le jeu ici.

*start ;Bloc qui définit le contenu du jeu.

`Un texte d'exemple...@ puis un texte qui apparait apres interaction de l'utilisateur.\ Et enfin une autre page de texte.\ ;Un texte d'exemple. Le caractère « ` » sert à utiliser des caractères d'un octet (suffisant pour l’alphabet latin de base et l'alphabet anglais, mais pas assez pour des caractères japonais). ;« @ » et « \ » attendent une interaction de la part de l'utilisateur. « @ » défile le reste du texte après interaction alors que « \ » efface le texte présent ;et passe a la ligne suivante si la ligne est terminée. Il n'y a pas besoin d'espace après le « ` ». Lit tout caractère après la commande dont les commentaires.

end ;Tue le processus.

Script avec choix et image de fond Tout qui n'est pas linéaire ou dit « » comporte des choix. Ce script contient également les instructions utilisées pour afficher une image de fond et, en plus de cela, avec un effet de fondu enchainé par pixel.

alt=Résultat du script ; effet de fondu enchainé par pixel avec image de fond puis on demande au joueur de faire un choix.|vignette|Résultat du script ; effet de fondu enchainé par pixel avec image de fond puis on demande au joueur de faire un choix. […] (voir le bloc *define de l'exemple précédent) /!\ Ligne de code rajoutée au bloc *define /!\ effect 2,10,1000 ;Définit l'effet numéro 2 (les effets 0 et 1 sont réservés pour ne pas afficher de transition), qui est un fondu enchainé par pixel. ;Comme définit ici, l'effet provient du dixième ensemble d'effets inclus dans le moteur et dure 1000 millisecondes, soit 1 seconde.

game ;Ferme le bloc qui définit tous les paramètres du jeu et commence le jeu ici.

*start ;Bloc qui définit le contenu du jeu.

bg "image_de_fond.png",2 ;Transition vers l'image de fond « image_de_fond.png » avec l'effet numéro 2.

`[Personnage 1] `Alors...@ tu preferes lire ou regarder des films ?@ ;Un texte d'exemple. Le caractère « ` » sert à utiliser des caractères d'un octet (suffisant pour l'alphabet latin de base et l'alphabet anglais, mais pas assez pour des caractères japonais). ;« @ » et « \ » attendent une interaction de la part de l'utilisateur. « @ » défile le reste du texte après interaction alors que « \ » efface le texte présent ;et passe a la ligne suivante si la ligne est terminée. Il n'y a pas besoin d'espace après le « ` ». Lit tout caractère après la commande dont les commentaires.

br ;Saut de ligne pour espacer les choix de la question

select "Lire", *choix1, "Regarder des films", *choix2 ;Affiche 2 choix possibles

*choix1 ;Bloc lancé si le joueur fait le choix numéro 1 `[Personnage 2] `Je prefere lire.@ `[Personnage 1] `Moi aussi ! Quel est ton livre prefere ?@ br ;Saut de ligne `Et la conversation s'est ensuite poursuivie pendant 2-3 bonnes heures...\ end ;Tue le processus.

*choix2 ;Bloc lancé si le joueur fait le choix numéro 2 `[Personnage 2] `Je prefere regarder des films.@ `[Personnage 1] `Moi aussi ! Quel est ton film prefere ?@ br ;Saut de ligne `Et la conversation s'est ensuite poursuivie pendant 2-3 bonnes heures...\ end ;Tue le processus.

Jeux notables utilisant NScripter La majorité des jeux tournant sur NScripter étant des jeux vidéo amateurs, peu de jeux NScripter sont notables. La plupart des jeux notables ci-dessous sont des jeux commerciaux et donc des succès commerciaux. ; bien que Type-Moon ait utilisé NScripter pour Tsukihime, l'entreprise est ensuite passée sur KiriKiri pour leur jeu suivant, Fate/stay night. Les de 07th Expansion ; nombreux sont ceux qui ont découvert NScripter et ses dérivés grâce aux jeux de 07th Expansion, dont de nombreux traducteurs amateurs.