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
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
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
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.