Guia completo de produção: arquitetura, JSON, regras de negócio/liberação, implementação de UI (Canvas/Panel), prefabs por tela, pipeline e sprints.
Assets/_Game/
Art/{Sprites,VFX,UIAtlases}
Audio/{Music,SFX}
Prefabs/
Core/
UI/
Gameplay/
Meta/
Scenes/
Boot.unity
Home.unity
Map.unity
Battle.unity
Meta.unity
Scripts/
Core/{Bootstrap,StateMachine,EventBus,Config}
Data/{Save,DTO,Migrations}
Services/{Economy,Inventory,Missions,Ads,IAP,Leaderboard,CloudSave}
Features/
Home/
Map/
Battle/
Rewards/
Missions/
Collection/
Hatchery/
Evolution/
Ranking/
Offers/
Support/
UI/{Views,Presenters,Widgets}
Data/ScriptableObjects/
Balance/
Levels/
Missions/
Rewards/
Offers/
Addressables/
{
"schemaVersion": 4,
"playerId": "uuid",
"profile": {"name": "Player", "level": 12, "xp": 18450},
"economy": {
"gold": 25430,
"gems": 320,
"energy": {"current": 20, "max": 20, "regenSec": 900, "lastTickUtc": 1773087000}
},
"progress": {
"world": 3,
"stage": 18,
"starsByStage": {"W1-S1":3, "W2-S16":2},
"lockedRulesState": {"world4Unlocked": false}
},
"inventory": {"boosters": {"shuffle": 1, "mix": 2, "undo": 5, "hint": 3}},
"hatchery": {
"slots": [
{"slotId":1,"eggId":"egg_common_green","startUtc":1773086500,"endUtc":1773093700,"speed":2}
]
},
"collection": {"found": ["creature_001","creature_002"], "progress": {"total":34,"max":36}},
"missions": {
"daily": [{"id":"d_play_20m","progress":8,"target":20,"claimed":false}],
"weekly": [{"id":"w_open_2_chests","progress":1,"target":2,"claimed":false}]
},
"season": {"seasonId":"S01","rank":59,"score":2450,"claimed":false},
"settings": {"music":0.6,"sfx":0.8,"vibration":"medium","quality":"low","language":"pt-BR"},
"consent": {"termsAccepted":true,"adsPersonalized":false,"termsVersion":"2026-03"},
"meta": {"updatedAtUtc":"2026-03-09T22:30:00Z","serverNonce":"abc123"}
}
updatedAtUtc + serverNonce + txnId.txnId idempotente.| Regra | Condição | Ação |
|---|---|---|
| Entrada no jogo | termsAccepted == true | Permitir Home |
| Jogar fase | energy.current >= cost | Consumir energia e abrir Battle |
| Mundo 4 | starsTotal >= 45 | Unlock world4 |
| Claim diário | not claimedToday | Conceder reward diário |
| Claim season | seasonClosed && !claimed | Conceder payout por faixa |
| Reviver | adAvailable || itemAvailable | +3 moves, retomar board |
SceneRoot
Canvas_Root (ScreenSpace-Camera)
Panel_Background
Panel_HUD
Panel_Content
Panel_PopupLayer
Panel_ToastLayer
EventSystem
PF_ButtonPrimary, PF_ButtonSecondary, PF_BadgeCounterPF_CurrencyBar (gold/gems/energy)PF_TimerLabel, PF_RewardCard, PF_ChestSlotPF_ModalBase (title/body/actions)PF_StageNode (locked/open/completed/boss)PF_CollectionCard, PF_BoosterButtonPara cada tela: Objetivo, Hierarquia de UI, Componentes, Regras, Scripts Unity.
BootPresenter, BootstrapService.ConsentPresenter, ConsentService.HomePresenter, ChestTimerService.MapPresenter, UnlockRulesService.BoardManager, MatchResolver, BattlePresenter.ResultPresenter, RewardService.MissionPresenter, DailyRewardPresenter.LeaderboardService, SeasonRewardService.OfferService, MirrorChallengeService, GhostReplayService.CollectionService, HatcheryService, EvolutionService, SettingsPresenter, SupportPresenter.public interface IGameService { void Initialize(); }
public sealed class EconomyService : IGameService {
public event Action OnBalanceChanged;
public int Gold { get; private set; }
public bool TrySpendGold(int value, string txnId) { /* valida + idempotência */ }
public void AddGold(int value, string reason) { /* ... */ }
}
public sealed class UnlockRulesService {
public bool IsWorldUnlocked(int worldId, int stars) => worldId switch {
1 => true,
2 => stars >= 15,
3 => stars >= 30,
4 => stars >= 45,
_ => false
};
}
| Sprint | Foco | Entregáveis | Prioridade |
|---|---|---|---|
| 1-2 | Fundação | Boot, Consent, Home, Save v4, serviços base | P0 |
| 3-4 | Core gameplay | Board match/cascade, map unlock, vitória/derrota | P0 |
| 5-6 | Meta loop | Missões, diário, coleção v1, chocagem | P0 |
| 7-8 | Progressão avançada | Evolução, season pass, ranking base | P1 |
| 9-10 | Monetização | Ofertas, reviver, IAP validation, rewarded ads | P1 |
| 11-12 | Competitivo + polimento | Mirror/ghost, premiação final, otimização mobile QA | P1 |