Tutoriais de implementação / 14 min de leituraTodas as capacidades de extensão e onde implementá-las
Mapa explícito de cada método para seu projeto, helpers, superfícies, integrações de servidor e limites da release.
Como usar este mapa
Este índice cruza os contratos públicos da revisão 0e91fef do host 0.3.1 com os projetos de implementação. Ele cobre 139 métodos da API de domínio, 17 operações do SDK original, 13 superfícies e os helpers de ciclo de vida. O link de cada método leva a código executável, entradas e teste; não é uma promessa de que qualquer combinação arbitrária de ideias é suportada.
Comece pelo resultado que quer construir, e use a tabela para localizar uma capacidade específica. Uma receita pode reunir várias chamadas porque criar, configurar, consultar e apagar fazem parte do mesmo recurso. As receitas executam apenas por clique e identificam ações destrutivas. Use uma instalação/campanha descartável.
Qual pacote preciso criar
| Quero entregar | Estrutura | Tutorial completo |
|---|
| Ferramenta de diário, ficha, carta, áudio ou mesa | Pacote de navegador com entry e register | Projeto básico e famílias abaixo |
| RPG com fichas, tipos, iniciativa e catálogo | Um único pacote system, entry, assets e content.compendiums | Sistema completo |
| Traduzir meu módulo | Catálogos privados registrados em api.i18n | Tradução e eventos |
| Acrescentar idioma à instalação | Pacote locales sem system/Django | Pacote de idioma |
| Rota ou serviço Python confiável | Pacote Django, ativação pelo dono/Runner | Integração de servidor |
| Distribuir uma versão aprovada | ZIP imutável, hash, assinatura e catálogo HTTPS | Publicação |
Não existe um enum global de tipos de módulo. “Compêndio” pode significar pack mutável da campanha, catálogo instalado com um sistema ou catálogo local do operador; cada origem tem regras próprias. A montagem depende da superfície, não do nome que você deu ao módulo.
Todos os métodos de domínio
Em métodos genéricos, use api.dominio.metodo(payload, {signal, requestId}) com os campos da receita. Leituras não precisam requestId. list/get são projeções autorizadas de state. actors.sheet, dice.roll, table.search, chat.remove e outras conveniências têm assinaturas próprias demonstradas nos guias. Não confunda o nome JavaScript com a ação da fachada Python.
api.actors
| Método | Ação nativa | Projeto com implementação |
|---|
actors.create | actor.create | Código, entradas e teste |
actors.update | actor.update | Código, entradas e teste |
actors.delete | actor.delete | Código, entradas e teste |
actors.setPermissions | actor.permissions | Código, entradas e teste |
actors.saveSheet | sheet.save | Código, entradas e teste |
actors.createFolder | folder.create | Código, entradas e teste |
actors.updateFolder | folder.update | Código, entradas e teste |
actors.deleteFolder | folder.delete | Código, entradas e teste |
actors.deleteAsset | asset.delete | Código, entradas e teste |
actors.state | state | Código, entradas e teste |
actors.list | state projection | Código, entradas e teste |
actors.get | state projection | Código, entradas e teste |
actors.sheet | sheet | Código, entradas e teste |
api.tokens
| Método | Ação nativa | Projeto com implementação |
|---|
tokens.place | place | Código, entradas e teste |
tokens.move | move | Código, entradas e teste |
tokens.remove | remove | Código, entradas e teste |
tokens.duplicate | duplicate | Código, entradas e teste |
tokens.setHidden | hidden | Código, entradas e teste |
tokens.setVision | vision | Código, entradas e teste |
tokens.configure | configure | Código, entradas e teste |
tokens.addCondition | condition-add | Código, entradas e teste |
tokens.removeCondition | condition-remove | Código, entradas e teste |
tokens.state | state | Código, entradas e teste |
tokens.list | state projection | Código, entradas e teste |
tokens.get | state projection | Código, entradas e teste |
api.maps
| Método | Ação nativa | Projeto com implementação |
|---|
maps.update | update | Código, entradas e teste |
maps.move | move | Código, entradas e teste |
maps.delete | delete | Código, entradas e teste |
maps.activate | activate | Código, entradas e teste |
maps.updateObjects | objects | Código, entradas e teste |
maps.createFolder | folder-create | Código, entradas e teste |
maps.updateFolder | folder-update | Código, entradas e teste |
maps.deleteFolder | folder-delete | Código, entradas e teste |
maps.state | state | Código, entradas e teste |
maps.list | state projection | Código, entradas e teste |
maps.get | state projection | Código, entradas e teste |
maps.layers | layers | Código, entradas e teste |
api.journals
| Método | Ação nativa | Projeto com implementação |
|---|
journals.create | create | Código, entradas e teste |
journals.update | update | Código, entradas e teste |
journals.delete | delete | Código, entradas e teste |
journals.move | move | Código, entradas e teste |
journals.setAccess | access | Código, entradas e teste |
journals.present | present | Código, entradas e teste |
journals.createFolder | folder-create | Código, entradas e teste |
journals.updateFolder | folder-update | Código, entradas e teste |
journals.moveFolder | folder-move | Código, entradas e teste |
journals.deleteFolder | folder-delete | Código, entradas e teste |
journals.setStatus | status | Código, entradas e teste |
journals.setObjective | objective | Código, entradas e teste |
journals.assignCharacters | assign | Código, entradas e teste |
journals.createBoardQuest | board-create | Código, entradas e teste |
journals.addQuest | board-add | Código, entradas e teste |
journals.removeQuest | board-remove | Código, entradas e teste |
journals.pinQuest | board-pin | Código, entradas e teste |
journals.reorderQuests | board-reorder | Código, entradas e teste |
journals.roll | roll | Código, entradas e teste |
journals.reset | reset | Código, entradas e teste |
journals.state | state | Código, entradas e teste |
journals.list | state projection | Código, entradas e teste |
journals.get | state projection | Código, entradas e teste |
api.items
| Método | Ação nativa | Projeto com implementação |
|---|
items.create | create | Código, entradas e teste |
items.update | update | Código, entradas e teste |
items.delete | delete | Código, entradas e teste |
items.duplicate | duplicate | Código, entradas e teste |
items.setPermissions | permissions | Código, entradas e teste |
items.createFolder | folder-create | Código, entradas e teste |
items.updateFolder | folder-update | Código, entradas e teste |
items.deleteFolder | folder-delete | Código, entradas e teste |
items.state | state | Código, entradas e teste |
items.list | state projection | Código, entradas e teste |
items.get | state projection | Código, entradas e teste |
api.combat
| Método | Ação nativa | Projeto com implementação |
|---|
combat.add | add | Código, entradas e teste |
combat.remove | remove | Código, entradas e teste |
combat.configure | configure | Código, entradas e teste |
combat.setInitiative | initiative | Código, entradas e teste |
combat.rollInitiative | roll | Código, entradas e teste |
combat.toggle | toggle | Código, entradas e teste |
combat.moveUp | order-up | Código, entradas e teste |
combat.moveDown | order-down | Código, entradas e teste |
combat.setTurn | set-turn | Código, entradas e teste |
combat.nextRound | next-round | Código, entradas e teste |
combat.previousRound | previous-round | Código, entradas e teste |
combat.start | start | Código, entradas e teste |
combat.stop | stop | Código, entradas e teste |
combat.nextTurn | next | Código, entradas e teste |
combat.previousTurn | previous | Código, entradas e teste |
combat.state | state | Código, entradas e teste |
api.cards
| Método | Ação nativa | Projeto com implementação |
|---|
cards.define | define | Código, entradas e teste |
cards.instantiate | instantiate | Código, entradas e teste |
cards.create | create | Código, entradas e teste |
cards.draw | draw | Código, entradas e teste |
cards.shuffle | shuffle | Código, entradas e teste |
cards.reset | reset | Código, entradas e teste |
cards.deleteDeck | delete-deck | Código, entradas e teste |
cards.discard | discard | Código, entradas e teste |
cards.return | return | Código, entradas e teste |
cards.give | give | Código, entradas e teste |
cards.place | place | Código, entradas e teste |
cards.take | take | Código, entradas e teste |
cards.flip | flip | Código, entradas e teste |
cards.move | move | Código, entradas e teste |
cards.state | state | Código, entradas e teste |
api.audio
| Método | Ação nativa | Projeto com implementação |
|---|
audio.updateTrack | track-update | Código, entradas e teste |
audio.deleteTrack | track-delete | Código, entradas e teste |
audio.createPlaylist | playlist-create | Código, entradas e teste |
audio.updatePlaylist | playlist-update | Código, entradas e teste |
audio.deletePlaylist | playlist-delete | Código, entradas e teste |
audio.createSpatialSound | spatial-create | Código, entradas e teste |
audio.updateSpatialSound | spatial-update | Código, entradas e teste |
audio.deleteSpatialSound | spatial-delete | Código, entradas e teste |
audio.play | play | Código, entradas e teste |
audio.pause | pause | Código, entradas e teste |
audio.stop | stop | Código, entradas e teste |
audio.seek | seek | Código, entradas e teste |
audio.setVolume | volume | Código, entradas e teste |
audio.startScore | score-start | Código, entradas e teste |
audio.pauseScore | score-pause | Código, entradas e teste |
audio.resumeScore | score-resume | Código, entradas e teste |
audio.stopScore | score-stop | Código, entradas e teste |
audio.nextScore | score-next | Código, entradas e teste |
audio.previousScore | score-previous | Código, entradas e teste |
audio.state | state | Código, entradas e teste |
api.compendiums
api.chat
api.dice
api.table
Todas as operações do SDK original
Use host.call(nome,payload,{signal,onProgress}) somente com o contrato correspondente. File e Blob são objetos reais, não JSON nem caminhos locais. DTOs e expectedRevision do SDK original são diferentes de version/sheetVersion da API de domínio. Os projetos abaixo mostram essa diferença em código.
Todas as superfícies de montagem
augment acrescenta controles à interface existente. replace assume o corpo completo daquela superfície; você passa a fornecer a navegação e ações que quer oferecer. Para ficha de ator/token, o sistema completo mostra substituição funcional; para agir na ficha existente, use augment. As 13 páginas abaixo fornecem arquivos completos para experimentar cada superfície.
| Superfície | Modos aceitos | Exemplo completo |
|---|
actor.directory | augment, replace | actor.directory |
actor.sheet | augment, replace | actor.sheet |
token.sheet | augment, replace | token.sheet |
item.directory | augment, replace | item.directory |
item.sheet | augment, replace | item.sheet |
scene.directory | augment, replace | scene.directory |
scene.controls | augment, replace | scene.controls |
scene.overlay | augment, replace | scene.overlay |
chat.log | augment, replace | chat.log |
combat.tracker | augment, replace | combat.tracker |
journal.sheet | augment, replace | journal.sheet |
preferences | augment, replace | preferences |
table.interface | augment, replace | table.interface |
Helpers locais e ciclo de vida
| Capacidade | API concreta | Projeto para adaptar |
|---|
| Carregar arquivos do pacote | assets.url / text / json / bytes | Tradução e arquivos |
| Anexar/remover CSS | styles.use e disposer | Primeiro módulo |
| Preferência no navegador | storage.local.get / set / delete | Armazenamento |
| Preferência por conta/mesa | storage.user.get / set / delete / list | Armazenamento |
| Configuração compartilhada GM | storage.table.get / set / delete / list | Armazenamento |
| Configuração com interface | customize(context) e preferences | Formulário completo |
| Catálogos privados | api.i18n.locale / t / has / number / register / onChange | Tradução |
| Janela nativa e fechamento | api.ui.openModal; close / suspend / resume; gravewright:sheet-flush | Customize e modais |
| Registrar componente | register, equivalente ao registro de UI na fase register | Projeto básico |
| Atualização autorizada | api.events.on e unsubscribe | Eventos |
| Avisos antigos de ator | events.on actor.created / actor.updated / actor.deleted | Contrato e limites |
| Coordenadas e pan/zoom | viewport.sceneToViewport / viewportToScene; scene.viewport.changed | Overlay executável |
| Cancelar e liberar | signal e onDispose em cada montagem; start / register / stop | Projeto básico |
Os eventos de domínio incluem actors.changed, tokens.changed, maps.changed, maps.layersChanged, journals.changed, items.changed, combat.changed, cards.changed, audio.changed, compendiums.changed, chat.changed, chat.message, table.presence e table.lobbyChanged. Podem agrupar invalidações e fazer leituras iniciais/reconexão; não disparam uma automação uma única vez garantida. Cada assinatura precisa ser liberada.
Map Builder e automação visual
Os quatro donos door/lever/torch/region, as conexões execution/data e os 44 node.type têm grafo completo, JSON e passos no editor. O catálogo de nós explica recursos, alvos e efeitos. Use a ação nativa de Test behavior/playtest antes de aplicar na cena. Esses grafos são documentos de desenvolvimento, não uma API browser para importar qualquer JSON nem um campo novo do manifesto.
O tutorial de cenas mostra a API pública de camadas/objetos. Criar novos kinds ou portas do editor exige contribuição ao core e seus testes; a release 0.3.1 não promete uma API de plugin para registrar tipos arbitrários de nó.
Integrações de servidor e limites da release
A integração Django mostra Context.from_request, comandos públicos, rotas autenticadas/CSRF e sinais depois do commit. As fachadas Python api.actors/tokens/maps/journals/items/combat/cards/audio/compendiums/resources/chat/dice/table/events têm assinaturas na referência. O contexto carrega IDs, sem congelar permissões; cada serviço revalida acesso. Contas, administração, instalação e campanhas são adaptadores globais da aplicação, não métodos do api entregue a uma montagem: consulte a referência de adaptadores para ferramentas do operador.
Não há maps.create ou audio.upload no SDK de domínio: os tutoriais preparam cena/arquivos pela interface nativa e usam as operações públicas disponíveis depois. Não há SQL/Python arbitrário por chamada de módulo browser, permissão de GM implícita, mudança de campanha por UUID nem bypass de conteúdo privado. system.combat aceita iniciativa declarativa. Provedores Python existentes são código confiável de servidor; não justificam distribuir um novo RPG como sistema mais Server Rules separado. Uma necessidade sem contrato deve ser apresentada como limitação, preservando a versão solicitada.
Como conferir a cobertura ao evoluir o host
Este mapa usa uma cópia versionada de frontend.json e registry.json em extension-contracts.json. Ao atualizar a documentação para outro host, compare os arquivos fonte e a revisão, atualize os projetos e execute suas receitas contra os serviços reais. Compatibilidade de nome não prova payload, permissão, efeito visual ou transação. Refaça testes de escrita e dados independentes em fixtures novas.