Sistema de Personatges
Un sistema d'arquetips de personatge que valida cada soldat, tanc i cap com a dades, segueix cada instància viva pel seu cicle de vida complet i s'aparella amb una màquina d'estats d'arma pura per al combat.
Per a què serveix aquest sistema
Cada enemic d'un joc d'acció o per onades és una variació de la mateixa idea: un arquetip amb un prefab, punts de vida i una velocitat de moviment, spawnejat moltes vegades, amb cada instància seguida des que apareix fins que mor. Cablejar-ho a mà significa dispersar camps de vida, comptabilitat de spawns i referències de prefab per MonoBehaviours sense una única font de veritat.
El Sistema de Personatges de Serenity ho separa nètament en un arquetip que crees una vegada i un servei de runtime que segueix cada instància viva. Un soldat, un tanc i un cap són cadascun un CharacterConfigSO validat; ICharacterService s'encarrega de la resta, movent cada instància spawnejada per spawn, actiu, morint i mort mentre emet les senyals a les quals Puntuació i Combo reaccionen.
El problema a Unity
Les definicions d'enemic que viuen com a camps solts al MonoBehaviour d'un prefab són fàcils de duplicar malament i difícils de validar — res no impedeix que un dissenyador publiqui un arquetip amb zero punts de vida o una referència de prefab absent fins que falla en runtime. No hi ha un lloc únic que respongui quants enemics d'aquest tipus són vius ara mateix.
L'estat de combat agreuja el problema. Els comptadors de munició, els flags de recàrrega i els modes de tret cargolats directament al MonoBehaviour d'un personatge barregen si l'actor és viu amb si l'arma pot disparar ara — dos cicles de vida que haurien de ser independents s'entortolliguen, i provar-ne un implica arrossegar l'altre.
Com ho aborda Serenity
Un CharacterConfigSO defineix el prefab, la vida màxima i la velocitat de moviment d'un arquetip, validats en importar — una vida màxima menor que u es rebutja d'entrada. ICharacterService és l'únic objecte que registra, activa, colpeja i despawneja cada instància viva, movent cadascuna per CharacterState de Spawning a Active, Dying i Dead, i emetent CharacterSpawnSignal, CharacterHitSignal, CharacterKilledSignal i CharacterAttackSignal pel camí, alimentant Puntuació i Combo sense que cap dels dos sistemes fiqui la mà a les entranyes del personatge.
La disponibilitat de combat és una preocupació a part i independent, gestionada per IGameWeaponService — una màquina d'estats de runtime pura per a gallet, recàrrega, mode de tret i carregador, seguida mitjançant WeaponState, MagazineState i WeaponSnapshot. Imposa les seves pròpies invariants, com no disparar durant la recàrrega ni amb el carregador buit, i deixa deliberadament els projectils, l'apuntat i el dany a la resta del teu joc.
Com encaixa a Serenity
Personatges composa amb Onades i Escenari per al spawn: les entrades de spawn d'una onada anomenen un arquetip i un punt de spawn de l'escenari, i el servei d'onades hi instancia el prefab de l'arquetip abans de registrar-lo a ICharacterService. Els assets CharacterConfigSO descoberts s'etiqueten amb la label d'Addressables type:character perquè l'instal·lador autodescobreixi cada arquetip a l'arrencada sense un registre mantingut a mà.
GameWeapon és un agregat estructuralment independent, sense asset de configuració ni contracte de senyals propi — cada arma es registra i es dirigeix completament mitjançant crides a IGameWeaponService. Composa amb Personatges només a través del codi de gameplay que tu escrius, mantenint la comptabilitat de munició i modes de tret desacoblada del seguiment de vida i mort.
Flux de treball pràctic
- Obre Tools ▸ Serenity ▸ Create ▸ Character ▸ Create Character i recorre Intent ▸ Configure ▸ Mount ▸ Preview ▸ Done per crear un arquetip — prefab, vida màxima, velocitat de moviment.
- Al pas Mount de la 1.3.0, tria com es mou el prefab de l'arquetip: munta'l en un seguidor de Game Rail, o apunta'l a referenciar un punt de spawn d'Escenari a través de les dades d'onada.
- Comprova l'estat de l'etiqueta d'Addressables en línia a l'inspector de l'arquetip i fes servir el botó Fix (retag) d'un clic si falta la label type:character abans de l'arrencada.
- Referencia l'arquetip des d'una entrada de spawn d'Onada perquè el servei d'onades instanciï el seu prefab i cridi RegisterCharacter al punt de spawn correcte.
- Subscriu-te a CharacterKilledSignal des de Puntuació o Combo per reaccionar a les kills sense que cap dels dos sistemes depengui directament de les entranyes de Personatges.
- Per al combat, crida IGameWeaponService.RegisterWeapon amb una capacitat de carregador i un mode de tret, i dirigeix TriggerPressed, TriggerReleased i ReloadRequested/ReloadComplete des de l'input.
Què inclou
- Arquetips CharacterConfigSO amb prefab, vida màxima i velocitat de moviment, validats en importar (la vida màxima ha de ser almenys u)
- Cicle de vida d'ICharacterService que cobreix spawn, actiu, morint i mort per a cada instància viva, indexada per CharacterId
- CharacterSpawnSignal, CharacterHitSignal, CharacterKilledSignal i CharacterAttackSignal alimentant Puntuació i Combo
- Assistent Create Character — Intent ▸ Configure ▸ Mount ▸ Preview ▸ Done — amb el pas Mount de la 1.3.0 per muntar en Game Rail o punt de spawn d'Escenari
- Estat d'etiqueta d'Addressables en línia amb botó Fix (retag) d'un clic directament a l'inspector de l'arquetip
- Autodescobriment de cada arquetip etiquetat type:character a l'arrencada, sense registre mantingut a mà
- Màquina d'estats d'arma IGameWeaponService — WeaponState, MagazineState, WeaponSnapshot i FireMode — per al seguiment de gallet, recàrrega i carregador
- Invariants d'arma imposades al domini: no disparar durant la recàrrega ni amb el carregador buit, deixant deliberadament projectils i dany al teu joc
Quan fer-lo servir
- Jocs d'acció o per onades que necessiten diversos arquetips d'enemic validats — soldats, tancs, caps — seguits del spawn a la mort.
- Projectes que volen senyals de kill alimentant Puntuació i Combo sense acoblar cap dels dos sistemes a les entranyes del personatge.
- Equips que volen que el pas d'etiquetatge d'Addressables d'un arquetip nou es detecti a l'inspector, abans de convertir-se en un bug silenciós de zero arquetips a l'arrencada.
- Jocs que necessiten seguir la munició, la recàrrega i el mode de tret d'una arma de jugador o enemic amb independència de la vida i el cicle de vida del personatge.
Sistemes relacionats
Fes servir Serenity quan vulguis arquetips d'enemic creats com a dades validades, seguits per un cicle de vida complet de spawn a mort amb senyals que Puntuació i Combo ja saben consumir, i una màquina d'estats d'arma que no es fica amb els teus projectils ni el teu dany.
English
Español
Català