ANF est un framework sur lequel je travaille depuis 2020, et qui a été utilisé pour de nombreux projets.
C'est à la base un framework pour visual novel / point & clicks. Il a cependant été décliné pour d'autres types de projets.
C#
Unity
Framework
2021-2026
ANF est un framework servant au départ à créer des Visual Novel 2D. Il a évolué au fil du temps et
est maintenant un framework plutôt centrée sur la création de point & click / visual novel 3D non
linéaires.
De ce fait, il a eu plusieurs formes au cours des années, voir noms. On peut distinguer 4 phases
dans son évolution :
- La phase pré-framework fut la première phase du framework.
Elle regroupe les premiers jeux Harold's Quest fait à l'époque sur Python et Javascript.
Au départ, il consistait simplement en des fonctions permettant d'afficher des dialogues et
d'effectuer des actions.
Il fallait tout de même coder en python le jeu, même si les fonctions prémachaient le travail.
La première réelle version du framework vu le jour avec Harold's Quest 2. Le jeu utilisait un moteur
de jeu fait à la main et permettant de créer un visual novel quasiment sans avoir à toucher de code
python.
Bien que cette version était fonctionnelle, elle possédait certaines failles (mauvaise gestion
mémoire, représentation interne des dialogues pas assez efficace, ...) qui ne la rendait pas viable
à long terme.
- La phase du début du framework fut la deuxième phase du framework.
Elle regroupe certains jeux Harold's Quest, mais aussi d'autres jeux n'ayant rien à voir avec la
série.
Ces derniers réutilisent en général le système de localisation du framework, ainsi que le processeur
de script.
Cette phase marque le début du framework sur Unity, avec un changement drastique dans la façon dont
il fonctionne.
Le processeur de script fut crée pour contrôler plus simplement les évenement en jeu, et une
première version d'ANSL (Adventure Novel Scripting Language) fut conceptualisé.
- La phase moderne du framework fut la troisème phase du framework.
Elle regroupe les remakes des jeux Harold's Quest, mais aussi des projets étudiants.
Ces derniers réutilisent le système de localisation du framework, ainsi que le processeur de script.
Le twist est que les systèmes utilisés par ces projets étudiants ont été modifiés par rapport à ceux
d'Harold's Quest.
Le système de localisation a été ammélioré (performances et accessibilités), et une version nodale
de ANSL, plus accessible pour des non-programmeurs, a été crée.
De coté des jeux Harold's Quest, cette phase marque la transition vers de la 3D point & click. ANSL,
le language de script du framework a été retravaillé pour être plus accessible et simple à utiliser.
Le framework en lui-même a été retravaillé pour être plus agréable à regarder et plus simple à
modifier par la suite.
Dans le cas du remake du Joyau du Nord, une version alternative du framework a été crée afin de
supporter les différentes mécaniques de RPG du jeu.
- La phase finale du framework sera la quatrième phase du framework.
Elle représentera la création d'une version standalone du framework, utilisant différentes parties
des jeux précédents.
Le système de localisation utilisera la version de My Herbarium, et le reste sera hérité du remake
du Joyau du Nord.
Des modifications de stabilité seront effectués sur le framework pour le rendre plus accessible à
une plus grande audience, et des features d'accessibiltiés seront ajoutées.
Schéma de l'évolution de ANF. Les jeux en verts héritent de l'intégralité du framework. Les jeux en jaune héritent seulement d'une partie.
Le framework est décomposé en plusieurs modules, qui sont responsables de différentes parties du
framework.
- Le manager est responsable de gérer les autres modules et de s'assurer qu'ils soient bien
synchronisés. Il gère aussi les variables joueurs (nom du joueur, quêtes en cours, ...)
- Le monde est responsable des personnages à l'écran et du décor.
- Intéractions est responsable de la mécanique d'intéraction du framework.
- Le processeur de script est responsable de la traduction du language de script ANSL en
commandes interprétables par le framework.
- Le GUI est responsable des différents élements de UI du framework (menu pause, dialogues,
...).
- La localisation est gérée par le framework avec un systême fait à la main.
- La carte permet au joueur de se déplacer dans une ou plusieurs cartes. Cela permet d'avoir
une expérience de jeu moins linéaire et plus ouverte.
ANSL (Adventure Novel Scripting Langguage) est le language de script permettant de créer des jeux
sans avoir à trop toucher le framework.
Schéma des différents modules de ANF
ANSL est le language de script du framework. Il est similaire en synthaxe et en fonctionnement à du
C# afin de minimiser le temps de prise en main.
Lors de l'interpretation du script, le processeur lira le code ligne par ligne, et déclenchera les
comportements voulu.
Il y a deux types de "commandes" : les fonctions et des mots clés de contrôles.
- Les mots clés de contrôles sont if, interact, choice, switch,
... .
Ils déclenchent une modification de la lecture du fichier de script.
If vérifie si une variable joueur a une certaine valeur. Si oui, des commandes sont
effectués. Si non, d'autres commandes le seront.
Choice déclenche l'apparation d'un choix, demandant une interaction du joueur avant de
continuer.
Interact permet de lancer le mode interaction du framework. (Il faut alors cliquer sur un
objet du monde pour déclencher un nouveau script)
- Les fonctions sont les commandes les plus communes dans ANSL.
Elles ont le format NOM_COMMANDE(PARAMETRE_1;PARAMETRE_2;...;PARAMETRE_N).
Ces fonctions permettent d'accomplir un grand nombre d'actions, comme afficher un dialogue, modifier
des variables joueurs, changer de décors, de météo ou de personnages, faire un fondu, change le
script courant, ...
Une module de langue pour Visual Studio Code a aussi été développé pour permettre de visualiser plus
facilement le code.
Exemple d'un script ANSL. Celui-ci représente la fin d'un dialogue dans le remake du Joyau du Nord (2026)
Utiliser la fonction map dans ANSL permet d'ouvrir une carte spécifique. Cela a pour effet
d'ouvrir une carte à l'écran, permettant au joueur de se déplacer dans le monde.
C'est une façon de permettre des déplacements dans un contexte de jeu type Point & Click / Visual
Novel.
Le framework peut supporter plusieurs cartes. Il suffit simplement de les setup correctement. Une
carte est constitué de :
- Un visuel qui représente la région dant laquelle on va se déplacer.
- Des boutons qui représentent les différents points d'intérêt de la carte. Cliquer sur un
bouton a pour effet de fermer la carte et de lancer un script prédéfini.
Il est aussi possible de se déplacer de carte en carte avec une utilisation intéligente de scripts.
Pour setup ou redirigent chaque points, il faut indiquer dans un fichier .txt les informations de
chaques boutons.
On peut aussi faire en sorte qu'un bouton ne s'affiche que si une condition avec une variable joueur
est remplis. (Par exemple : Je ne peux me déplacer à la mairie que si la variable
canTravel_CityHall est à 1)
Exemple de carte dans le remake du Joyau du Nord (2026)
Le mode intéraction permet à l'utilisateur d'intéragir avec l'environnement.
Il intéragir avec des objets du décor ainsi qu'avec les personnages présent.
Cliquer sur un élement intéractible a pour effet de lancer un script ANSL spécifique.
Pour setup le monde interaction, il suffit, dans le script ANSL, d'utiliser différentes fonctions
pour spécifier les scripts lancés par les intéractions, ou pour éventuellement désactiver
l'intéraction sur certains élements.
Enfin, il suffit d'utiliser le mot clé interact afin de lancer le mode interaction.
Par défaut, il peut aussi intéragir avec le bas de l'écran pour ouvrir la carte de l'endroit ou il
se trouve.
Exemple d'une série d'intéractions dans Harold's Quest 2 (2025)
Les variables joueurs sont des variables accessibles et modifiables en runtime à partir d'ANSL. Elles peuvent représenter différentes choses, comme des quêtes ou des états de météo. De nombreux systèmes utilisent les variables joueurs, comme le système de carte ou le système de quête dans Le Joyau Du Nord.
Extraits des variables joueurs de Le Joyau du Nord (2026)
Le framework comporte un système préfait pour de la localisation et de la gestion de taille,
tyopographie et couleurs de textes.
Chaque text localisé est affecté à un "channel". Il en existe 10.
Par la suite, on peut modifier les informations d'un channel, ce qui aura pour effet de modifier la
taille, typographie et couleur de toutes les zones de textes affectées au channel.
L'implémentation se base sur l'utilisation de UnityEvents.
Pour les traductions, plusieurs fichiers sont crées pour contenir les différents textes du projet.
Il en existe par défaut 2 :
- Le fichier system qui regroupe les textes liés aux différents menus. Ils sont en général
"statique", ne devant pas être modifiés entre chaque projet.
- Le fichier common qui regroupe les fichiers textes "commun" du jeu. Ce sont dans le cas de
visual novels les textes liés à l'histoire et qui sont affichés dans les boites de dialogues.
On peut créer d'autres fichiers de localisations et les charger au runtime. Cela permet de séquencer
le fichier common et d'alléger le poids en mémoire du système.
Extrait de fichiers de localisation dans le remake de Le Joyau Du Nord (2026)