Mateus Rodrigues c3df705a7a feat(jobs): Jobs.1 client — DA expandido + 7 DA_Job assets organizados por tier
* UZMMOJobDataAsset (Source/ZMMOJobs/Public/) ganha 3 campos novos
  espelhando o JobDef do server:
    - Tier             (EZMMOJobTier)
    - ParentClassId    (int32)
    - AllowedWeapons   (TArray<EZMMOWeaponType>)

* Novo header ZMMOJobTypes.h com 2 UENUM(BlueprintType):
    - EZMMOJobTier      (6 valores: Beginner..Mastery)
    - EZMMOWeaponType   (19 valores: Fist..Gun)
  Todos com UMETA(DisplayName="pt-BR") pro Editor mostrar nomes
  amigaveis em dropdowns. Ordem casa byte-a-byte com EJobTier/
  EWeaponType do server (necessario pq snapshot carrega tier u8 + mask).

* 7 DA_Job_*.uasset criados via MCP Python, organizados por tier:
    Content/ZMMO/Data/Jobs/Beginner/
      DA_Job_Novice    (ClassId=0, AllowedWeapons=[Fist,Dagger])
    Content/ZMMO/Data/Jobs/Vocation/
      DA_Job_Warrior   (ClassId=1, 8 armas: Sword+Spear+Axe variations)
      DA_Job_Arcanist  (ClassId=2, 5 armas: Staff+Book)
      DA_Job_Ranger    (ClassId=3, 5 armas: Bow+Musical+Whip)
      DA_Job_Artisan   (ClassId=4, 5 armas: Sword1H+Mace1H+Axe1H)
      DA_Job_Rogue     (ClassId=5, 5 armas: Sword1H+Bow+Katar)
      DA_Job_Devout    (ClassId=6, 5 armas: Mace+Staff1H+Knuckle)
  ParentClassId=0 (Novice) em todas Vocacoes. Tier=Vocation.
  JobIcon/Sound/Anim ficam None — preencher conforme arte for produzida.

  ZMMOJobsSubsystem busca por classe (GetAssetsByClass), entao a
  reorganizacao em subpastas NAO requer mudanca em .cpp/.h.

* ZMMOAttributeTypes.h: comentario de opcode 1200 -> 1500 (espelha
  refactor Open-Closed do server ranges; valores wire format mudaram).

Boot esperado: [ZMMOJobsSubsystem] Initialize: 7 job(s) carregados.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 23:53:34 -03:00
2026-05-07 20:17:53 -03:00

ZMMO — Cliente Unreal Zeus MMO

Cliente Unreal Engine 5.7 do projecto Zeus. Implementa o pipeline "cliente solto + servidor valida input/velocidade" definido em ADR 0038 (landscape autoritativo no cliente; servidor reservado para colisao de objectos).

Arquitectura

  • Source/ZMMO/Game/Entity/IZMMOEntityInterface, AZMMOEntity, AZMMOPlayerCharacter (local, CMC livre), AZMMOPlayerProxy (remoto, snapshot-only).
  • Source/ZMMO/Game/Controller/AZMMOPlayerController com Enhanced Input + virtual joystick opcional.
  • Source/ZMMO/Game/Modes/AZMMOGameMode e UZMMOGameInstance (auto-connect ao servidor Zeus em Init).
  • Source/ZMMO/Game/Network/UZMMOWorldSubsystem (registry EntityId -> AActor*, dispatch dos delegates do UZeusNetworkSubsystem).

Dependencias

  • Unreal Engine 5.7
  • Plugin ZeusNetwork (do projecto servidor, em Server/Plugins/Unreal/)
  • Plugin ZeusMapTools (editor-only, opcional)

Smoke test

  1. Servidor Zeus a correr em 127.0.0.1:27777.
  2. Abrir ZMMO.uproject, aguardar build do modulo ZMMO.
  3. PIE: confirmar [Zeus] Connected to server 127.0.0.1:27777 no Output Log e o spawn do pawn local com EntityId autoritativo.

Configuracao

  • bAutoConnectOnStart (default true) em UZMMOGameInstance. Desligar quando existir UI de login.
  • Config/DefaultEngine.ini aponta GlobalDefaultGameMode=/Script/ZMMO.ZMMOGameMode.
Description
No description provided
Readme 80 MiB
Languages
C++ 93.1%
C 5.2%
C# 1%
Python 0.5%
PowerShell 0.2%