ENT1 — architecture et logique game-specific
Positionnement
ENT1 est un jeu By Year centré sur une entreprise qui combine production, usines, matières premières, ressources humaines, financement et lancement de produits sur plusieurs pays. Le framework annuel reste commun; les décisions et calculs ENT1 vivent sous GameSpecific/ent1 et server_scripts/ent1.
Static data
exports/exportAllData.js associe ENT1 aux datasets suivants : scenario, salary, employees, raw_mat, factories, product_specs, comms, distrib, medias, events, price_specs, segments, countries et act_perf_pond, plus constants.
Modèles Unity
| Domaine | Classes principales |
|---|---|
| Production | Factory, FactoryData, RawMatData, ProductionResult |
| Produits/marché | ProductSpecs, LaunchedProduct, Market, Country, DistribData, MediaData, CommTool |
| RH | EmployeesData, SalaryData, ResignationResult |
| Résultats | Results, LaunchProductSales, LaunchProductScores, Ratio |
| Runtime | TeamDecisionsEnt1, TeamEnt1, YearData |
Commandes métier serveur
ent1_utils_custom_command.js couvre notamment :
- création/suppression/lancement de produit;
- construction et vente d'usine;
- achat de matières premières;
- affectation de production d'usine;
- embauche/licenciement;
- salaire;
- prêt/financement.
Génération des résultats
flowchart TD
DEC[Décisions équipes] --> PROD[Usines + matières premières]
DEC --> HR[Employés + salaires]
DEC --> LP[Produits lancés]
PROD --> CAP[Capacité / production]
HR --> CAP
LP --> MARKET[Marché par pays/segment]
CAP --> SALES[Ventes]
MARKET --> SALES
SALES --> FIN[Cash / résultats]
FIN --> SCORE[Scores + ratios + rankings]
GenerateResultsEnt1 rassemble produits et usines, calcule moyennes, démissions, production, scores et ventes, puis finalise les équipes et sauvegarde les résultats.
Bots
BotsEnt1 peut décider prêts, production souhaitée, construction d'usines, employés, choix de pays, matières premières et création de produits. Il est utilisé dans les simulations async.
UI
Les écrans game-specific sont sous Assets/GameSpecific/ent1/Src/UI : usines, production, raw materials, RH, salaires, finance, pays, portfolio, lancement produit, marché, rapports et checklists.
Debug
Pour un résultat ENT1 incorrect, suivre : custom command → TeamDecisionsEnt1 → GenerateResultsEnt1 → Results. Pour une incohérence de production, inspecter ensemble factories, raw mats, employés et la quantité réellement lancée.
Ajouter une feature ENT1 de A à Z
ENT1 croise plusieurs sous-systèmes; une décision peut affecter production, matières premières, employés, cash, produits et ventes. Avant de coder, identifier laquelle de ces chaînes la feature modifie.
Carte serveur à connaître
| Zone | Fonctions clés |
|---|---|
| Cycle/état | startYearGameSpec, getYearData, generateEvents, anyDecisionsTaken. |
| Usines / production | getTotalFactoryCost, getNeededRawMats, SetProductionsForProduct, computeFactoriesProduction. |
| RH | getNumEmployees, computeSalaryAverages, computeResignations. |
| Marché | gatherProducts, computeProductAverages, computeScores, generateSales. |
| Fin de génération | finalizeTeamsData, saveResults, resetTeam, deleteResults. |
Custom commands ENT1 existantes
Le fichier ent1_utils_custom_command.js gère notamment saveLaunch, deleteLaunch, buildFactory, sellFactory, buyRawMats, setFactoryProduction, hireEmployees, dismissEmployees, setEmployeeSalary et updateLoan.
Procédure pour une nouvelle décision
- Ajouter la static data si la décision dépend d'un coût/capacité/pays/employee.
- Ajouter le champ au
YearData/TeamDecisionsEnt1. - Ajouter l'UI dans le domaine approprié : factory, HR, finance, product/market.
- Ajouter la command et valider cash/capacité côté serveur.
- Envoyer un message ENT1 et mettre à jour
TeamControllerEnt1. - Consommer la décision dans la bonne phase de
GenerateResultsEnt1. - Si l'état survit à l'année, mettre à jour
finalizeTeamsData/resetTeam. - Si score/ratio change, mettre à jour Eval/rankings/report.
- Si bots supportés, ajouter la décision dans
BotsEnt1. - Tester reopen year.
Piège principal : dépendances physiques
Une décision de lancement produit peut être impossible même si le produit est valide : il faut production disponible, usines, matières premières et employés. Les validations UI ne remplacent jamais celles côté serveur.
Debug génération ENT1
- team decisions;
- factories + raw mats;
- employees/salaries;
- production calculée;
- products gathered;
- averages/scores;
- sales;
- cash/ratios finalisés;
- Results Unity/report.