HR1 — architecture et logique game-specific
Positionnement
HR1 est le jeu By Year orienté gestion des ressources humaines : staffing, rémunération, avantages, postings, contrats, CEO et segments d'employés.
Static data
Les datasets importés incluent ceo, employees, strategies, advantages, events, scenario, segments, contracts et act_perf_pond, plus constants.
Modèles Unity
CeoData;EmployeeData/EmployeesAdvantage/AdvantageData;PostingData,LaunchedPosting,PostingResult;ContractData,ContractResult;Segment,SegmentResult,SegmentScores;TeamDecisionsHr1,TeamHr1,YearData.
Hooks serveur
GameSpecificUtilsHr1 gère entre autres le démarrage d'année, génération de contrats, reset des avantages, events, CEOs, coûts d'avantages, coûts de postings/licenciements, coûts employés et rankings.
Génération
flowchart LR
DEC[Staffing + rémunération + avantages + postings] --> HIRE[Hiring]
DEC --> RET[Retention / belonging]
DEC --> COST[Employee costs]
DEC --> CEO[CEO]
HIRE --> RES[Segment Results]
RET --> RES
COST --> RES
CEO --> RES
RES --> SCORE[Scores / ActPerf]
GenerateResultsHr1 finalise contrats et CEOs, calcule hiring, averages, retention/belonging, scores de postings et segments, puis sauvegarde les résultats.
Évaluation
EvalHr1 fournit scenario score, segment score et performance annuelle. Les résultats HR alimentent ensuite le cadre commun d'évaluation By Year.
UI
Les vues spécifiques comprennent CEO, staffing, employés, avantages, stratégies, postings, contrats, rémunération et rapports. Les classes sont sous Assets/GameSpecific/hr1/Src/UI.
Debug
Pour un problème RH, isoler d'abord la décision (employee/segment/posting/advantage), puis le coût calculé dans hr1_utils.js, puis la phase correspondante de GenerateResultsHr1.
Ajouter une feature HR1 de A à Z
Custom commands réelles
hr1_custom_command.js route actuellement :
posting/delete_posting;dismiss/delete_dismiss;advantage/delete_advantage;salary;ceo_bid/delete_ceo_bid;change_wanted_contracts;- puis les commandes By Year communes en fallback.
Ces commandes ne font pas que sauvegarder une valeur : elles recalculent souvent un coût, modifient cash, sauvegardent teams, parfois actDataGameSpec, puis envoient des RTT comme posting_changed, salary_changed, team_new_bid.
Carte résultats
finalizeContracts()— contrats;solveCeos()— résolution des CEO bids;computeAverages()— références du marché RH;computeHiring()— embauche;computeRetentionAndBelonging()— rétention/appartenance;computeScores()— scores;gatherSegments()— collecte des décisions par segment;generateCurrentYearResults()/saveResults().
Ajouter une nouvelle décision RH
- Définir si la décision appartient au segment, à l'employé, aux avantages, aux postings, CEO ou contrats.
- Ajouter la donnée au bon niveau de
TeamDecisionsHr1/YearData. - Ajouter l'UI sous
GameSpecific/hr1/Src/UI. - Ajouter la branche dans
hr1_custom_command.js. - Calculer le coût avec un helper
utilsHr1partagé; ne pas dupliquer le calcul UI. - Appliquer/refund le delta de cash correctement lors d'une édition/suppression.
- Envoyer le RTT approprié.
- Consommer la décision dans
GenerateResultsHr1. - Adapter
EvalHr1.computeActPerfScore()si le score change. - Vérifier reopen/delete results.
CEO bids : exemple d'opération multi-document
Un bid CEO modifie à la fois teams et un compteur dans actDataGameSpec.ceos via saveDocumentIncrementData(). Une nouvelle feature concurrentielle partagée entre équipes peut nécessiter le même pattern; il faut alors tester la concurrence entre plusieurs teams.
Debug HR1
Quand un coût est faux : comparer static data → helper de coût → delta ancien/nouveau → cash sauvegardé. Quand le résultat annuel est faux : comparer segment decisions → averages → hiring/retention → result segment → ActPerf.