# Création d'une simulation (acc1)

##### Étape préliminaire pour la création de la simulation

<span style="text-decoration: underline;">Mettre à jour les taxes</span>

- - Avant de commencer, faire une mise à jour manuel des taxes si c'est pertinent pour l'année actuel: 
        1. <p class="callout info">[https://wiki.uniksim.com/books/programmeur/page/proc%C3%A9dure-annuel-pour-updater-les-taxes](https://wiki.uniksim.com/books/programmeur/page/proc%C3%A9dure-annuel-pour-updater-les-taxes)</p>

<span style="text-decoration: underline;">Rendre la simulation général</span>

- - - Si nécessaire, rendre la simulation original (copié) plus général afin de simplifier la nouvelle simulation. 
            - Si c'est le cas, le dossier **{allsims}/UI/SimByModule** est créé pour la base de acc1 ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715958456706.png)
            - Pour se faire, les fichiers modifiés doit avoir un namespace **namespace UnikSim.SimByModule** au lieu de **namespace UnikSim.SimByModule.acc1**
                - Si le fichier n'est pas dans gameSpecific, il n'est nécessaire le déplacer
            - Le nom du fichier doit aussi faire référence à "ByModule" (Ex: StaticDataAcc1 =&gt; StaticDataByModule) puisqu'il sera généralisé 
                - Si le fichier n'a pas de acc1 dans son nom, il n'est pas nécessaire de le rename
            - Les fichiers doivent aussi se faire déplacer/transfer à **SimByModule** dans le dossier correspondent
        - ##### Dupliquer une simulation intérieure

---

- - Avant de commencer, créer une branche au nom de la nouvelle simulation sur Git Extensions
    - N'oublie pas de voir les <span style="text-decoration: underline;">informations supplémentaires</span> à la fin de ce document pour certaines précisions

---

- <span style="text-decoration: underline;">Sur unity</span>: 
    1. Faire une copie de **GameSpecific/acc1** (Ex: acc2) ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715349059692.png)
    2. Renommer toutes les instances de code lié à l'ancienne simulation (Incluant les noms de fichiers et les codes). 
        - **ATTENTION**: Vérifier si les changement n'affecteront pas l'original, **avant** et **après** modifications ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715351827963.png)
            
            <p class="callout info">Un script nommé "renameFiles" est disponible pour renommer les noms de fichiers. {allsims}/node.js/utils/renameFiles.js</p>
        - Pour utiliser **renameFiles**, il faudra créer une copie temporaire dans le nouveau dossier
        - Ajouter un **launch.js** temporaire avec les mêmes paramètres ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715973137905.png)
        - Puis modifier les paramètres suivant: ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715358703759.png)
            
            
            - Note 1: Le **renameFiles** est case sensitive pour **find** et **replace**, il se pourrait qu'il faudrait le faire plus d'une fois
            - Note 2: Une fois les refactor des noms faits, il se peut que Unity ne pourra pas compiler. (Certains fichiers possèdent les mêmes noms) ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715374965933.png)
        - Pour régler ce problème, il faudra refactor avec **Visual Studio** chacun de ces fichiers ou refaire l'étape <span style="text-decoration: underline;">Rendre la simulation général</span>. 
            - **ATTENTION:** Si vous voulez le faire manuellement, assurer vous de ne pas impacter le code originel (copié)
- <span style="text-decoration: underline;">Sur node.js:</span>
    1. Faire une copie de **{allsims}/node.js/backend/braincloud/server\_scripts/acc1** (Ex: acc2) ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715358914757.png)
    2. Comme à l'étape précédente, renommer toutes les instances de code lié à l'ancien script (Incluant les noms de fichiers et les codes). 
        - **ATTENTION**: Vérifier si les changement n'affecteront pas l'original, **avant** et **après** modifications ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715351827963.png)
            
            <p class="callout info">Un script nommé "renameFiles" est disponible pour renommer les noms de fichiers. {allsims}/node.js/utils/renameFiles.js</p>
        - Pour utiliser **renameFiles**, il faudra modifier les paramètres suivant: ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715358703759.png)
            
            
            - Note 1: Le **renameFiles** est case sensitive pour **find** et **replace**, il se pourrait qu'il faudrait le faire plus d'une fois

##### Modification et ajout pour la nouvelle simulation

- <span style="text-decoration: underline;">Ajouter tous les switch case:</span>
    - Faites un **Ctrl + Shift + F** ensuite "acc1" pour trouver toutes les instances de acc1
    - Faites une copie de chaque case avec l'accronyme de votre nouvelle simulation. 
        - Par exemple : ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715971131716.png)
    - Note : Il ne sera pas nécessaire de faire de nouvelle fichier de traduction. En acc\_*X*, le même fichier sera utilisé
- <span style="text-decoration: underline;">Modifier la class static pour StaticDataByModule:</span>
    - Le fichier "StaticDataAcc*X*" (Renommer par l'étape précédent), devra être modifier afin d'identifier le fichier ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715970930378.png)
    - Ajouter la class static à **CreateStaticData** dans Factory ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715971062472.png)
- <span style="text-decoration: underline;">Ajouter une nouvelle variante de MainControlStudentByModule et MainControlTeacherByModule:</span>
    - Si la copie de votre simulation ne contient pas de MainControlStudentAcc*X* ou MainControlTeacherAcc*X*, veuillez suivre les étapes suivantes, sinon passez cette étape  
        
        - Méthode 1: Faire une copie de **MainControlStudentAcc1** et **MainControlTeacherAcc1** dans la nouvelle simulation et le renommer en conséquent

<p class="callout info align-left">Situé à {allsims}/GameSpecific/acc1/Resources/Prefabs/UI</p>

- - - Méthode 2: Créer une variante avec **MainControlStudentByModule** et **MainControlTeacherByModule**

<p class="callout info">Situé à {allsims}/UI/SimByModule/acc1/Resources/Prefabs/UI</p>

- - - - Clique droite, puis **Create&gt;Prefab Variant**
            - Déplacer le fichier au bons endroit et le renommer en conséquent
- <span style="text-decoration: underline;">Partie Doozy:</span>

<p class="callout info">Situé à Resources&gt;MainGraph</p>

- - Ajouter un nouveau output sur **Login** avec le nom approprié (Ex: acc2) ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715978028871.png)
    - Ajouter un nouveau node (clique droite) avec un nom approprié ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715978158264.png)
        
        
        - Dans ce node, ajoutez le Acc*X*SubGraph ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715978434812.png)
    - Connecter le output avec le nouveau node
    - Si la duplication c'est bien terminé, il ne sera pas nécessaire de modifier Acc*X*SubGraph
- <span style="text-decoration: underline;">Modifier les scènes **acc*X*Teacher** et **acc*X*Student** :</span>

<p class="callout info">Situé à GameSpecific/acc*X*/Resources/Scenes</p>

- - Dans la section **DecisionsPanel** (Hierarchy), modifier le "Decisions Controls" pour votre simulation ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1716315794590.png)

##### Modification des thèmes de la simulation

- <span style="text-decoration: underline;">Remplacer les images de la nouvelle simulation avec le thème choisi :</span>
    - Écran titre : **acc*X***
    - Écran de jeu : **bg**
    - Note : Il serait peut-être intéressant de demander les images à l'équipe pour éviter des problèmes de choix esthétiques ou de design

<p class="callout info">Situé à GameSpecific/acc*X*/Resources/images</p>

- - Pour modifier **bg**, il faudra allé sur la scène de la nouvelle simulation (**acc*X*Teacher** et **acc*X*Student**, vous devriez le faire sur les deux scènes)

<p class="callout info">Situé à GameSpecific/acc*X*/Resources/Scenes</p>

- - - Dans **MainView**, modifier "Source Image" ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1716315374300.png)
- <span style="text-decoration: underline;">Ajouter le titre dans **LoginControl**:</span>
    - Faire une copie de la simulation originel (copié) et le renommer ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715978670608.png)
    - Modifier le script **LoginTitle** dans le menu de l'inspecteur ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715978741446.png)
    - Ajouter dans le google sheet **shared\_text**
        - **acc*X*\_theme\_label** (la couleur)
        - **acc*X*\_login\_title** (le titre principal, dans ce cas "Comptabilité X")
        - **acc*X*\_login\_subtitle** (le nom de la nouvelle simulation) ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1715979871555.png)
    - Dans **AccXTitle&gt;Title2**
        - Modifier le Text Uid pour **acc*X*\_login\_title**
    - Dans **AccXTitle&gt;Title3**
        - Modifier le Text Uid pour **acc*X*\_login\_subtitle**
    - Faire un **importTextShared** pour voir les changements

<p class="callout info">Situé à {allsims}/node.js/exports/importTextShared.bat</p>

- <span style="text-decoration: underline;">Modifier le thème de couleur de la simulation :</span>
    - Sur la scène de **game**, dans **LoginBackgroundControl**, ajouter le "Login Title" dans "Login Titles" ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1716318345076.png)

<p class="callout info">Le login title à ajouter devrait se trouver à GameSpecific/acc*X*/Resources/Acc*XSkin*</p>

- - Dans Acc*XSkin* : 
        - Modifier le gameUid
        - Modifier le thème de couleur

##### Google Sheet et StaticData

- <span style="text-decoration: underline;">Faire une copie du googleSheet sim\_accounting\_1 :</span>

<p class="callout info">Situé à "Shared With Me/Dev/Games/acc1 - compta\_cegep/sim\_accounting\_1"</p>

- - Faire une copie du fichier ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1716561266690.png)
    - Renommer le fichier (modifier le numéro)
    - Modifier le fichier si nécessaire 
        - Note : Un fichier de base existe pour tous les simulations accounting

<p class="callout info">sim\_byModule</p>

- <span style="text-decoration: underline;">Modifier les imports de fichiers :</span>
    - Il faudra alors updater **{AllSimsRepository}/node.js/exports/exportAllData.js** afin de pouvoir exporter les nouveaux document créer avec la structure suivante: ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1716563572879.png)
        
        
        - Si nécessaire, modifier **importAllDataGoogleSheet** avec "withBaseV = true" pour import aussi la base (sim\_byModule). ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1716583010299.png)
    - Mettre la première partie de l'url (après "d/") du document **sim\_accounting\_*X***
    - Dans les autres plus specifiques (Ex : partners): Mettre le "gid" de l'url 
        - games.acc*X*.tabs = obtenir les valeurs sur googleSheet
        - games.acc*X*.additionalData = les valeurs sont à l'extérieurs du googleSheet (se trouve directement sur Unity)
- <span style="text-decoration: underline;">Importer les fichiers **sim\_accounting\_*X*** pour la nouvelle simulation :</span>
    - À l'aide de la commande "**Google Sheet - Import All"** de node.js avec les valeurs appropriés
- <span style="text-decoration: underline;">Exporter les fichiers sur Braincloud :</span>
    - À l'aide de la commande "**Google Sheet - Export All Data"** de node.js avec les valeurs appropriés (StaticData)
    - À l'aide de la commande "**Google Sheet - Export All Data"** de node.js avec les valeurs appropriés (StaticDataChunk)

##### Information supplémentaire

- Note 1 : Les simulations en "accounting" ou "acc*X*" sont tous mis dans une base nommé **byModule** (ex: braincloud&gt;staticData, node.js&gt;...&gt;byModule\_utils, UI&gt;SimByModule, etc.)
- Note 2 : Certains/Plusieurs changements risquent de briser Unity. Il faudra alors faire un "Reimport All" ![](https://wiki.uniksim.com/uploads/images/gallery/2024-05-May/scaled-840-0/image-1716906903097.png)