[{"data":1,"prerenderedAt":328},["ShallowReactive",2],{"docs-nav":3,"/docs/getting-started/concepts":60},[4],{"title":5,"path":6,"stem":7,"children":8,"page":59},"Docs","/docs","docs",[9,27,45],{"title":10,"path":11,"stem":12,"children":13,"page":-1},"Premiers pas","/docs/getting-started","docs/1.getting-started/index",[14,15,19,23],{"title":10,"path":11,"stem":12},{"title":16,"path":17,"stem":18},"Introduction","/docs/getting-started/introduction","docs/1.getting-started/1.introduction",{"title":20,"path":21,"stem":22},"Claim, Adopt, Fork","/docs/getting-started/concepts","docs/1.getting-started/2.concepts",{"title":24,"path":25,"stem":26},"Architecture","/docs/getting-started/architecture","docs/1.getting-started/3.architecture",{"title":28,"path":29,"stem":30,"children":31,"page":-1},"Installation","/docs/installation","docs/2.installation/index",[32,33,37,41],{"title":28,"path":29,"stem":30},{"title":34,"path":35,"stem":36},"Déploiement Docker","/docs/installation/docker","docs/2.installation/1.docker",{"title":38,"path":39,"stem":40},"Déploiement VPS","/docs/installation/vps","docs/2.installation/2.vps",{"title":42,"path":43,"stem":44},"Déploiement Alwaysdata","/docs/installation/alwaysdata","docs/2.installation/3.alwaysdata",{"title":46,"path":47,"stem":48,"children":49,"page":-1},"Administration","/docs/administration","docs/3.administration/index",[50,51,55],{"title":46,"path":47,"stem":48},{"title":52,"path":53,"stem":54},"Configuration","/docs/administration/configuration","docs/3.administration/1.configuration",{"title":56,"path":57,"stem":58},"Maintenance","/docs/administration/maintenance","docs/3.administration/2.maintenance",false,{"id":61,"title":20,"body":62,"description":322,"extension":323,"meta":324,"navigation":325,"path":21,"seo":326,"stem":22,"__hash__":327},"docs/docs/1.getting-started/2.concepts.md",{"type":63,"value":64,"toc":313},"minimark",[65,69,73,78,153,157,160,171,175,200,204,207,244,248,251,276,286,290,296],[66,67,20],"h1",{"id":68},"claim-adopt-fork",[70,71,72],"p",{},"La mécanique centrale de Suddenly permet aux personnages de traverser les fictions. Un PNJ mentionné dans un compte-rendu peut être réclamé, adopté ou dérivé par un autre joueur via trois actions distinctes.",[74,75,77],"h2",{"id":76},"les-trois-types-de-lien","Les trois types de lien",[79,80,81,100],"table",{},[82,83,84],"thead",{},[85,86,87,91,94,97],"tr",{},[88,89,90],"th",{},"Type",[88,92,93],{},"Signification",[88,95,96],{},"Résultat",[88,98,99],{},"PNJ original",[101,102,103,121,137],"tbody",{},[85,104,105,112,115,118],{},[106,107,108],"td",{},[109,110,111],"strong",{},"Claim",[106,113,114],{},"\"Ce PNJ était mon PJ depuis le début\" — rétcon",[106,116,117],{},"PNJ remplacé par le PJ existant",[106,119,120],{},"Remplacé",[85,122,123,128,131,134],{},[106,124,125],{},[109,126,127],{},"Adopt",[106,129,130],{},"\"Je reprends ce PNJ comme mon PJ\" — transfert",[106,132,133],{},"PNJ devient le PJ du demandeur",[106,135,136],{},"Transféré",[85,138,139,144,147,150],{},[106,140,141],{},[109,142,143],{},"Fork",[106,145,146],{},"\"Mon PJ est inspiré de ce PNJ\" — dérivation",[106,148,149],{},"Nouveau PJ lié, PNJ reste intact",[106,151,152],{},"Conservé",[74,154,156],{"id":155},"statuts-dun-personnage","Statuts d'un personnage",[70,158,159],{},"Un personnage commence comme PNJ libre et évolue selon les demandes acceptées :",[161,162,167],"pre",{"className":163,"code":165,"language":166},[164],"language-text","NPC → CLAIMED  (rétcon : le PNJ était le PJ depuis le début)\nNPC → ADOPTED  (transfert : le PNJ devient le PJ du demandeur)\nNPC → FORKED   (dérivation : nouveau PJ lié, PNJ conservé)\n","text",[168,169,165],"code",{"__ignoreMap":170},"",[74,172,174],{"id":173},"contraintes-métier","Contraintes métier",[176,177,178,184,189,194],"ul",{},[179,180,181,183],"li",{},[109,182,111],{}," — nécessite une cohérence narrative : le PJ proposé devait pouvoir être présent à ce moment",[179,185,186,188],{},[109,187,127],{}," — interdit si le PNJ est déjà réclamé (CLAIMED) ou adopté (ADOPTED)",[179,190,191,193],{},[109,192,143],{}," — pas de contrainte de cohérence stricte, les deux personnages coexistent",[179,195,196,199],{},[109,197,198],{},"Conflit"," — si deux joueurs veulent le même PNJ, le premier à envoyer une demande bloque les autres (statut PENDING)",[74,201,203],{"id":202},"flow-adopt-exemple","Flow Adopt (exemple)",[70,205,206],{},"Bob voit le PNJ \"Viktor\" dans un compte-rendu d'Alice :",[208,209,210,217,220,223,230,237],"ol",{},[179,211,212,213,216],{},"Bob envoie une ",[109,214,215],{},"Adopt Request"," avec un message narratif",[179,218,219],{},"Alice reçoit la notification \"Bob veut adopter Viktor\"",[179,221,222],{},"Alice accepte avec une réponse narrative",[179,224,225,226,229],{},"Le système crée un ",[168,227,228],{},"CharacterLink"," de type Adopt",[179,231,232,233,236],{},"Viktor change de statut : ",[168,234,235],{},"ADOPTED",", propriétaire = Bob",[179,238,239,240,243],{},"Une ",[109,241,242],{},"SharedSequence"," est demandée aux deux joueurs",[74,245,247],{"id":246},"cross-instance-fédération","Cross-instance (fédération)",[70,249,250],{},"Quand Bob est sur une instance différente d'Alice, la même mécanique fonctionne via ActivityPub :",[208,252,253,256,263,266,273],{},[179,254,255],{},"Bob envoie une Adopt Request depuis son instance B",[179,257,258,259,262],{},"L'instance B publie un ",[168,260,261],{},"Offer"," activity vers l'inbox d'Alice (instance A)",[179,264,265],{},"L'instance A notifie Alice",[179,267,268,269,272],{},"Alice accepte — l'instance A publie un ",[168,270,271],{},"Accept"," activity vers l'inbox de Bob",[179,274,275],{},"Le lien est visible sur les deux instances",[277,278,279],"blockquote",{},[70,280,281,282,285],{},"Toutes les requêtes ActivityPub cross-instance sont signées avec ",[109,283,284],{},"HTTP Signatures (RSA-SHA256)",".",[74,287,289],{"id":288},"sharedsequence-règle-mvp","SharedSequence — règle MVP",[70,291,292,295],{},[109,293,294],{},"Un lien sans SharedSequence est invalide."," Après acceptation d'un lien :",[208,297,298,301,304,307,310],{},[179,299,300],{},"Le lien est accepté → notification aux deux joueurs",[179,302,303],{},"L'initiateur rédige sa partie de la scène (Markdown)",[179,305,306],{},"L'accepteur complète la scène",[179,308,309],{},"Les deux valident → publication sur les deux instances",[179,311,312],{},"La SharedSequence est visible dans les deux parties concernées",{"title":170,"searchDepth":314,"depth":314,"links":315},2,[316,317,318,319,320,321],{"id":76,"depth":314,"text":77},{"id":155,"depth":314,"text":156},{"id":173,"depth":314,"text":174},{"id":202,"depth":314,"text":203},{"id":246,"depth":314,"text":247},{"id":288,"depth":314,"text":289},"La mécanique centrale de Suddenly — comment les personnages traversent les fictions.","md",{},true,{"title":20,"description":322},"AKVNIa2ix4ph92gFy48D2yzv4LZK1tVo-x_BsVvfFSM",1784021864437]