diff --git a/README.md b/README.md index da01d8b..291602f 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,8 @@ Repositório de desenvolvimento do **Brazilian Armed Forces (BRAF) Mod**, uma mo Este é um repositório de **fonte**. O checkout contém configurações, scripts, modelos, texturas, materiais, sons, animações, documentação, ferramentas e referências usadas para desenvolver os addons. O jogo carrega addons por meio de PBOs, mas a validação do código-fonte e dos assets deve ser feita antes de qualquer processo de release. +Este README é o guia de trabalho do time de desenvolvimento. Use-o para entender a organização do projeto, tomar decisões compatíveis com Arma 3 e revisar alterações antes de integrá-las. Em caso de conflito, preserve primeiro o comportamento público existente e confirme a decisão com os responsáveis pelo addon afetado. + ## Dependências e compatibilidade ### CBA @@ -48,7 +50,7 @@ O BRAF é dividido por responsabilidade e por tipo de conteúdo. Cada diretório | Base e sistemas compartilhados | `braf_main`, `braf_weapons_core`, `braf_damage`, `braf_hurt` | Facções, funções comuns, munições, dano e estados relacionados | | Aviação de asa rotativa | `braf_air`, `braf_sar`, `braf_optics_air` | Helicópteros, variantes de transporte, armadas e SAR, EFS, guincho e sistemas associados | | Aviação de asa fixa | `braf_air2` | Aeronaves de asa fixa, incluindo A-29, Gripen e seus armamentos, magazines e sistemas de cabine | -| Blindados sobre lagartas | `source\braf_tracked` | Fonte do addon `braf_tracked`, incluindo M113, M41 e armamentos, munições e ópticas de veículos rastreados | +| Blindados sobre lagartas | `source/braf_tracked` | Fonte do addon `braf_tracked`, incluindo M113, M41 e armamentos, munições e ópticas de veículos rastreados | | Blindados sobre rodas | `braf_armored` | Viaturas blindadas sobre rodas e suas variantes, configurações, armamentos e integrações | | Embarcações pequenas e médias | `braf_boat` | Barcos e embarcações de pequeno e médio porte, com comprimento de até 15 m segundo a divisão interna do BRAF | | Navios e submarinos | `braf_ships` | Navios de maior porte e submarinos; o addon compartilhado de armas navais é `braf_weapons_naval` | @@ -59,7 +61,7 @@ O BRAF é dividido por responsabilidade e por tipo de conteúdo. Cada diretório | Referências externas | `libs` | Material técnico de terceiros; é somente leitura e não é uma dependência automática | | Ferramentas | `make` | Ferramentas auxiliares de desenvolvimento e release; devem ser inspecionadas antes de serem executadas | | Testes | `tests` | Testes focados e validações estruturais do repositório | -| Instruções e skills | `AGENTS.md`, `.agents` | Regras persistentes do projeto e skill local de Arma 3 | +| Documentação | `README.md`, `CHANGELOG.md`, `LICENSE.md` | Regras de desenvolvimento, histórico de mudanças e licenças do projeto | `libs` contém, entre outros materiais, referências de CBA, ACE e outros projetos. Com exceção do CBA, nenhum material presente em `libs` deve ser tratado por presunção como dependência obrigatória, compatibilidade opcional, referência técnica, biblioteca reutilizável com licença compatível ou material desconhecido. Essa classificação só deve ser feita no contexto de uma reutilização planejada, depois de verificar origem, licença, versão, finalidade, dependências e compatibilidade com o BRAF. Até essa análise, o material é apenas referência protegida e não pode ser copiado para produção. @@ -226,7 +228,7 @@ O [Object Builder](https://community.bohemia.net/wiki/Object_Builder) é parte d `CfgModels` é a interface entre o P3D e a engine: a classe deve usar o nome do arquivo do modelo sem `.p3d`, declarar suas `sections[]`, associar o `skeletonName` e conter as `Animations`. `CfgSkeletons` descreve cada osso e sua relação pai/filho. Já `AnimationSources` pertence à classe do objeto em `config.cpp`: ela fornece controladores nativos ou fontes `user` para as animações declaradas no `model.cfg`. A referência oficial de [Model Config](https://community.bohemia.net/wiki/CfgModels) detalha essa separação entre trabalho de arte e configuração. -O repositório aplica esse contrato em várias famílias — `braf_air`, `braf_air2`, `braf_armored`, `braf_boat`, `braf_ships` e `source\braf_tracked` têm `model.cfg`. Um exemplo pequeno e útil é `braf_boat\BRAF_VLPV`: o `model.cfg` define esqueleto, `propeller`, `rudder`, `drivewheel` e `hatch`; `VLPV_base.hpp` declara a fonte `openhatch`, as seleções de textura e os pontos de água, motor, carga e entrada. Use-o para entender o vínculo entre os arquivos, não para copiar nomes ou propriedades para outro veículo. +O repositório aplica esse contrato em várias famílias — `braf_air`, `braf_air2`, `braf_armored`, `braf_boat`, `braf_ships` e `source/braf_tracked` têm `model.cfg`. Um exemplo pequeno e útil é `braf_boat\BRAF_VLPV`: o `model.cfg` define esqueleto, `propeller`, `rudder`, `drivewheel` e `hatch`; `VLPV_base.hpp` declara a fonte `openhatch`, as seleções de textura e os pontos de água, motor, carga e entrada. Use-o para entender o vínculo entre os arquivos, não para copiar nomes ou propriedades para outro veículo. ### Fluxo seguro no Object Builder @@ -395,26 +397,21 @@ Nomes de classe e nomes de arquivo são contratos de compatibilidade. Renomear u ### Antes de editar -1. Confirme a raiz do repositório e leia `AGENTS.md` e a skill em `.agents`. -2. Identifique o addon proprietário do recurso. +1. Confirme a raiz do checkout e leia este README, a tarefa e o histórico relevante em `CHANGELOG.md`. +2. Identifique o addon proprietário do recurso e o limite exato da alteração. 3. Localize a declaração, a classe pai, os includes, os consumidores e os caminhos de asset. 4. Inspecione addons relacionados e `requiredAddons[]`. 5. Verifique se a mudança envolve localidade, JIP, CBA, ACE, P3D ou binário protegido. +6. Consulte a documentação oficial de Arma 3 quando uma propriedade, classe ou comportamento não estiver comprovado no código existente. ### Depois de editar 1. Faça validação textual e estrutural não destrutiva. -2. Execute testes focados conhecidos como estáticos. -3. Use o validador local quando disponível: - - ```powershell - python .agents\skills\arma3-mod-development\scripts\run_validation.py P:\braf - ``` - -4. Revise o diff completo e execute `git diff --check`. -5. Confirme que nenhum asset protegido foi deletado, movido, renomeado ou sobrescrito. -6. Confirme que `libs` e `P:\a3` não foram modificados. -7. Separe evidência de fonte, Config Viewer, runtime, modelo, multiplayer e release. +2. Execute os testes focados e os validadores estáticos mantidos no repositório. +3. Revise o diff completo e execute `git diff --check`. +4. Confirme que nenhum asset protegido foi deletado, movido, renomeado ou sobrescrito. +5. Confirme que `libs` e `P:\a3` não foram modificados. +6. Separe evidência de fonte, Config Viewer, runtime, modelo, multiplayer e release. Validação estática pode encontrar includes ausentes, caminhos inválidos, classes duplicadas, referências de função inexistentes e inconsistências de `CfgPatches`. Ela não prova que o addon carregou, que uma aeronave voa, que um navio flutua, que um míssil funciona no pylon, que um LOD está correto ou que uma função funciona em multiplayer. @@ -490,10 +487,31 @@ Confirme o caminho do asset, case, prefixo do addon, extensão, `hiddenSelection - [Multiplayer Scripting](https://community.bohemia.net/wiki/Multiplayer_Scripting) - [Remote Execution](https://community.bohemia.net/wiki/Arma_3%3A_Remote_Execution) - [CfgRemoteExec](https://community.bohemia.net/wiki/CfgRemoteExec) -- [Addon Builder](https://community.bohemia.net/wiki/Addon_Builder) — referência da ferramenta; não é executado pelo agente neste projeto +- [Addon Builder](https://community.bohemia.net/wiki/Addon_Builder) — referência da ferramenta de release; não substitui a validação da fonte - [CBA_A3](https://github.com/CBATeam/CBA_A3) - [ACE3](https://github.com/acemod/ACE3) ## Projeto e contribuição -Registre no [CHANGELOG.md](CHANGELOG.md) as alterações de comportamento relevantes quando o fluxo da tarefa exigir. Para alterações de código, informe o caminho, dependências, validação realizada, limitações e o teste de Arma 3 recomendado. +### Fluxo recomendado + +1. Crie uma branch com escopo claro e mantenha cada alteração relacionada em commits pequenos. +2. Antes de editar, registre o addon afetado, o comportamento esperado, as dependências e os riscos conhecidos. +3. Preserve arquivos e assets fora do escopo. Não inclua PBOs, arquivos gerados, cópias de trabalho ou alterações de terceiros no commit. +4. Faça a validação estática e os testes adequados ao risco da mudança antes de solicitar revisão. +5. Escreva uma mensagem de commit objetiva, com ação e escopo claros; por exemplo: `fix(braf_air): corrige pontos de memória do helicóptero`. +6. Na revisão, descreva o que mudou, por que mudou, quais arquivos foram afetados, quais testes foram executados e o que permanece sem evidência. +7. Registre no [CHANGELOG.md](CHANGELOG.md) as alterações de comportamento relevantes quando o fluxo da tarefa exigir. + +### Checklist de revisão + +- O addon proprietário e o `CfgPatches` estão corretos? +- As classes, funções, includes, caminhos e nomes de assets seguem as convenções do projeto? +- `requiredAddons[]` contém somente dependências reais e suficientes? +- CBA continua tratado como dependência obrigatória e ACE permanece opcional quando aplicável? +- Foram preservados comportamento público, localidade, JIP, ações, Event Handlers e interfaces existentes? +- A alteração foi validada no nível adequado: fonte, Config Viewer, Object Builder, Buldozer, singleplayer ou multiplayer? +- Nenhum asset protegido, referência externa ou arquivo fora do escopo foi alterado? +- A documentação, o changelog e as licenças foram atualizados quando necessário? + +Para alterações de código, informe o caminho, dependências, validação realizada, limitações e o teste de Arma 3 recomendado. diff --git a/braf_insignia/uniform/flightsuit_insignias/rank/fab/1ten/Rank.rvmat b/braf_insignia/uniform/flightsuit_insignias/rank/fab/1ten/Rank.rvmat index 7255ee2..94141c1 100644 --- a/braf_insignia/uniform/flightsuit_insignias/rank/fab/1ten/Rank.rvmat +++ b/braf_insignia/uniform/flightsuit_insignias/rank/fab/1ten/Rank.rvmat @@ -73,7 +73,7 @@ class Stage6 }; class Stage7 { - texture = "a3\data\env_cloth_neutral_co.paa"; + texture = "a3\data_f\env_co.paa"; uvSource = "tex"; class uvTransform { diff --git a/braf_insignia/uniform/flightsuit_insignias/rank/fab/2ten/Rank.rvmat b/braf_insignia/uniform/flightsuit_insignias/rank/fab/2ten/Rank.rvmat index 4170cc0..2d99e76 100644 --- a/braf_insignia/uniform/flightsuit_insignias/rank/fab/2ten/Rank.rvmat +++ b/braf_insignia/uniform/flightsuit_insignias/rank/fab/2ten/Rank.rvmat @@ -73,7 +73,7 @@ class Stage6 }; class Stage7 { - texture = "a3\data\env_cloth_neutral_co.paa"; + texture = "a3\data_f\env_co.paa"; uvSource = "tex"; class uvTransform { diff --git a/braf_insignia/uniform/flightsuit_insignias/rank/fab/Cap/Rank.rvmat b/braf_insignia/uniform/flightsuit_insignias/rank/fab/Cap/Rank.rvmat index 4b59c98..1158c1f 100644 --- a/braf_insignia/uniform/flightsuit_insignias/rank/fab/Cap/Rank.rvmat +++ b/braf_insignia/uniform/flightsuit_insignias/rank/fab/Cap/Rank.rvmat @@ -73,7 +73,7 @@ class Stage6 }; class Stage7 { - texture = "a3\data\env_cloth_neutral_co.paa"; + texture = "a3\data_f\env_co.paa"; uvSource = "tex"; class uvTransform { diff --git a/braf_insignia/uniform/flightsuit_insignias/rank/fab/Cel/Rank.rvmat b/braf_insignia/uniform/flightsuit_insignias/rank/fab/Cel/Rank.rvmat index 5bd977b..1b32281 100644 --- a/braf_insignia/uniform/flightsuit_insignias/rank/fab/Cel/Rank.rvmat +++ b/braf_insignia/uniform/flightsuit_insignias/rank/fab/Cel/Rank.rvmat @@ -73,7 +73,7 @@ class Stage6 }; class Stage7 { - texture = "a3\data\env_cloth_neutral_co.paa"; + texture = "a3\data_f\env_co.paa"; uvSource = "tex"; class uvTransform { diff --git a/braf_insignia/uniform/flightsuit_insignias/rank/fab/Maj/Rank.rvmat b/braf_insignia/uniform/flightsuit_insignias/rank/fab/Maj/Rank.rvmat index 0bc04a1..9a97231 100644 --- a/braf_insignia/uniform/flightsuit_insignias/rank/fab/Maj/Rank.rvmat +++ b/braf_insignia/uniform/flightsuit_insignias/rank/fab/Maj/Rank.rvmat @@ -73,7 +73,7 @@ class Stage6 }; class Stage7 { - texture = "a3\data\env_cloth_neutral_co.paa"; + texture = "a3\data_f\env_co.paa"; uvSource = "tex"; class uvTransform { diff --git a/braf_insignia/uniform/flightsuit_insignias/rank/fab/TCel/Rank.rvmat b/braf_insignia/uniform/flightsuit_insignias/rank/fab/TCel/Rank.rvmat index e1f8cc2..5611421 100644 --- a/braf_insignia/uniform/flightsuit_insignias/rank/fab/TCel/Rank.rvmat +++ b/braf_insignia/uniform/flightsuit_insignias/rank/fab/TCel/Rank.rvmat @@ -73,7 +73,7 @@ class Stage6 }; class Stage7 { - texture = "a3\data\env_cloth_neutral_co.paa"; + texture = "a3\data_f\env_co.paa"; uvSource = "tex"; class uvTransform { diff --git a/braf_insignia/uniform/flightsuit_insignias/squadron1/2bavex_as.paa b/braf_insignia/uniform/flightsuit_insignias/squadron1/2bavex_as.paa new file mode 100644 index 0000000..099f049 --- /dev/null +++ b/braf_insignia/uniform/flightsuit_insignias/squadron1/2bavex_as.paa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e19b219a8c1c045b1bf3a61f52a9917172b5f17f828bf03ea264231adf6102b6 +size 12010 diff --git a/braf_insignia/uniform/flightsuit_insignias/squadron1/2bavex_co.paa b/braf_insignia/uniform/flightsuit_insignias/squadron1/2bavex_co.paa new file mode 100644 index 0000000..8104796 --- /dev/null +++ b/braf_insignia/uniform/flightsuit_insignias/squadron1/2bavex_co.paa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bc17c2fa0c1237a22da23f00e00d976c3e0ca0e59d90217367d0d0fcd2d1668 +size 131883 diff --git a/braf_insignia/uniform/flightsuit_insignias/squadron1/2bavex_nohq.paa b/braf_insignia/uniform/flightsuit_insignias/squadron1/2bavex_nohq.paa new file mode 100644 index 0000000..19a9999 --- /dev/null +++ b/braf_insignia/uniform/flightsuit_insignias/squadron1/2bavex_nohq.paa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d28eecfcc040ed9079cf3ffd23d7975bec57977c35b5f77de605086a2f54342c +size 273664 diff --git a/braf_insignia/uniform/flightsuit_insignias/squadron1/2bavex_smdi.paa b/braf_insignia/uniform/flightsuit_insignias/squadron1/2bavex_smdi.paa new file mode 100644 index 0000000..a886a45 --- /dev/null +++ b/braf_insignia/uniform/flightsuit_insignias/squadron1/2bavex_smdi.paa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dafc827a431588ee2317128a490279b3ccb9e59b6c58b6fc8b8c2e639f91f6c6 +size 15666