Files
RustNotMC/docs/architecture.md
T
SashegDev 874b6f20c2 Клиент: начальный импорт кодовой базы
Основа — Horizon (MIT). История апстрима не переносится: этот репозиторий ведёт свою.
2026-10-29 22:04:28 +03:00

9.5 KiB

Architecture: feature → files → checks

The 40 areas changed most often in the 30 days to 2026-10-23 (commits on main touching the area; game.rs is counted only for the game loop because nearly every gameplay change touches it). The crate map, how Game is organised and how to build and test are in AGENTS.md.

Paths: L/ = crates/horizon-client/src/, G/ = crates/horizon-client/src/game/, W/ = crates/horizon-world/src/, K/ = crates/horizon-client-core/src/, C/ = crates/horizon-command/src/, I/ = crates/horizon-items/src/. Checks: a bare name is a harness (python3 tools/parity.py <name>, script tools/test_<name>_parity.py); lan_e2e <check> is python3 tools/lan_e2e.py --check <check>.

For the full set of harnesses a file can affect, ask the runner: printf '%s\n' <paths> > /tmp/p.txt && python3 tools/parity.py --changed-files /tmp/p.txt --list. Any file of the game binary (game.rs, game/) selects the ~25 harnesses that run the binary; a client lib file selects ~103.

# Area (commits) Files Checks
1 Game loop, tick order, frame pacing (554) L/game.rs (fn tick, fn tick_world, fn render, about_to_wait), L/clock.rs, L/window.rs, L/spans.rs game_loop, frame_limiter, interaction_input, tick
2 Mobs in the game loop, spawning (166) G/creatures.rs, G/natural_spawning.rs, L/mobs/spawning.rs, L/mobs/spawn_rules.rs, L/mobs/spawn_selection.rs, L/mobs/finalize.rs, G/spawner.rs, G/trial_spawner.rs natural_spawn, spawn_rules, finalize_spawn, spawner, trial_spawner, mob_ai
3 World save and load (163) L/save.rs, G/saving.rs, G/persist.rs (entities), L/entity_nbt.rs, K/block_entity_nbt.rs, W/region.rs, W/nbt.rs save_roundtrip, world_reopen, world, datafix
4 World generation (153) W/worldgen.rs, W/worldgen/ (generator*.rs, feature_graph.rs, structure/, placement/), L/vanillagen.rs chunk_generation, worldgen, server_world_gen, world_spawn, feature_graph, feature_placement, decoration and the other worldgen harnesses
5 Multiplayer client, packets in (145) G/remote.rs (fn handle_packet, fn tick_remote), G/remote_*.rs, L/net.rs dedicated_server, server_entities, lan_e2e (all)
6 Agent control, horizon-ctl (145) L/control.rs, L/bin/horizon-ctl/, G/control.rs, G/agent.rs, G/events.rs, G/ui_control.rs python3 tools/agent_control_e2e.py; cargo test -p horizon-client --bin horizon-ctl
7 CI and release (134) .github/workflows/ (ci.yml, parity.yml, release.yml, launcher.yml), tools/ci/, tools/parity.py, tools/pr_ready.py python3 -m unittest discover -s tests; actionlint (.github/actionlint.yaml)
8 LAN host: connections, play state, tracking (133) L/lan/ (conn.rs, hub.rs + hub/, chunks.rs, entity.rs, tracking.rs, guest.rs, playerdata.rs), G/lan.rs lan, lan_e2e (all), cargo test -p horizon-client --test lan_bot
9 Renderer core (132) L/gfx.rs (Renderer::new, Renderer::render), L/gfx/ (cull, occlusion, translucency, upload, timing, lod) client_graphics, culling_rays, translucency; horizon-client --benchmark standard
10 Launcher (124) launcher/src/ (main.rs, backend.rs, cli.rs, mcp.rs, servers_page.rs) cd launcher && cargo test; python3 tools/launcher_mcp_e2e.py
11 Mob types and species (117) L/mobs.rs, L/mobs/species.rs, L/mobs/data.rs, L/mobs/living.rs, L/mobs/drops.rs, L/mobs/gear.rs mob_attributes, entity_attribute, entity_death_loot, mob_ai
12 Guests' actions on a server (98) G/lan_actions.rs (fn as_guest, fn tick_guests), G/lan_{attributes,pvp,chat,crafting,stations,trading,mount_menu,waypoints}.rs server_player_combat, server_player_damage, server_player_targets, lan_e2e (all)
13 Modpack porting, mod content (97) crates/horizon-port-pack/, L/mod_content.rs, tools/port_*.py cargo test -p horizon-port-pack; python3 tools/mod_port_harness.py
14 Mob AI (96) L/mobs/ai.rs, goals.rs, brain.rs, *_brain.rs, nav.rs, path.rs, control.rs mob_ai (probe examples/mob_ai_probe.rs; known failure on main: drowned_*, #290)
15 Items and item use (96) I/items.rs, I/item_data.rs, G/hand.rs, G/consume.rs, G/potions.rs, L/effects.rs; game.rs fn use_hand, fn use_item use_item_on, item_use, item_use_lifecycle, consumable, consume_effect, status_effect
16 Options and settings screens (93) L/options_ui.rs, G/options.rs, L/settings.rs, L/options_file.rs, L/graphics_ui.rs, L/graphics.rs options, toggle_keys
17 HUD, chat, tab list (93) L/hud.rs, L/hud_layout.rs, L/hud_overlays.rs, L/chat.rs, G/chat.rs, L/tab_list.rs, L/locator_bar.rs, G/locator_bar.rs hud, tab_list, locator_bar, chat_screen, secure_chat
18 Command execution (88) G/commands.rs, G/commands/*.rs, L/scoreboard_cmd.rs, L/data_cmd.rs, K/scoreboard.rs, G/functions.rs command_exec (corpus tools/command_exec_corpus.py), scoreboard, server_ops_feedback, lan_e2e commands
19 Chunk streaming, light, tickets (85) L/streaming.rs, L/world.rs, L/chunk.rs, L/chunk_map.rs, L/light.rs, L/ticket_levels.rs, L/tick_chunk_membership.rs, G/world_loading.rs light, chunk_status, random_tick_sections; cargo test -p horizon-client --test streaming_meshes
20 Mob models and animation (78) L/mobs/render.rs, L/mobs/anim.rs, L/mobs/body_anim.rs, L/mobs/keyframes.rs, L/entity.wgsl entity_model
21 Block behaviour, server side (78) W/level/ (mod.rs, tick.rs, hooks.rs, data.rs, redstone.rs, place.rs), G/block_entity_ticks.rs, G/moving_pistons.rs block_update, redstone, random_tick, simple_block, piston_movement, block_entity_tickers
22 Player movement and collision (75) L/motion.rs + L/motion/, L/collisions.rs, W/entity_move.rs, W/player_travel.rs, W/collision.rs collision, entity_move, player_travel, living_motion, climbing, swimming; python3 tools/test_native_scene_motion.py
23 Resource packs and models (65) L/packs.rs + L/packs/, L/pack_screen.rs, L/atlas_sources.rs, L/sprites.rs, L/model_library.rs, G/packs.rs, crates/horizon-assets/ resource_pack, pack_selection, pack_screen, model_resolution, item_model, mipmap
24 Container menus and inventory (61) L/menu.rs, L/container_screen.rs, L/containers.rs, L/creative.rs; game.rs fn menu_ops, fn click_inventory menu_click, container_screen, creative, lan_e2e containers clicks
25 Workstations (60) L/stations.rs, G/stations.rs, I/enchant.rs, L/brewing.rs enchanting, screen_layout, lan_e2e brewing loom stonecutter grindstone anvil smithing
26 Crafting and the recipe book (59) L/crafting.rs, L/recipe_book.rs, L/recipe_book_screen.rs, G/recipe_book.rs, G/machines.rs, G/machines/crafter.rs recipe, recipe_book, recipe_book_view, place_recipe, ghost_recipe, crafter
27 Vehicles and mounts (54) G/boats.rs, G/boat_passengers.rs, G/minecarts.rs, G/mounts.rs, G/mount_menu.rs, G/llamas.rs, G/passengers.rs server_entities, lan_e2e boats minecarts riding mounts
28 Villagers, trading, raids (50) L/mobs/villager*.rs, L/merchant.rs, G/trading.rs, G/villagers.rs, L/raid.rs, G/raids.rs, L/gossip.rs trading, raid, mob_ai
29 Title, worlds, startup (49) L/title.rs + L/title/, G/startup_menu.rs, L/title_edition.rs world_options; cargo test -p horizon-client --lib title
30 Dedicated server, horizon-server (48) G/dedicated.rs, G/dedicated/status.rs, crates/horizon-server/, crates/horizon-server-files/ dedicated_server, server_files, user_cache, online_mode, server_ops_feedback
31 Particles and client effects (46) L/particles.rs, G/render_tick.rs, G/level_particles.rs, L/animate_tick.rs particle_providers, block_particles, entity_particles, emitter_particles, marker_particles
32 Bosses and the End (45) G/dragon.rs, G/wither.rs, G/end.rs server_dragon, forced_end, end_podium, end_gateway
33 Protocol and packets (44) crates/horizon-protocol/src/ (packets/play.rs, entity_data.rs, connection.rs) dedicated_server, online_mode, secure_chat; cargo test -p horizon-protocol
34 Multiplayer and LAN screens, friends (44) L/multiplayer.rs, G/lan_screen.rs, G/friends.rs, L/friends_screen.rs, crates/horizon-friends/, crates/horizon-relay/ lan, world_options; python3 tools/test_friends.py
35 Dispensers (43) G/dispenser.rs, G/dispense_fixture.rs (the harness side) dispenser
36 Audio and music (38) L/audio.rs, L/sound_engine.rs, L/sound_events.rs, L/music.rs, G/music.rs, L/ambience.rs, G/subtitle_hud.rs sound_engine, sound_event, music, situational_music, ambient_sound, subtitle
37 Integrated server and levels (34) G/integrated.rs, G/levels.rs, G/server_travel.rs server_dimension_players, lan_e2e (server-thread by default; portals, levels, distance, lava)
38 Command parsing (34) C/ (args.rs, selector.rs, tree_*.rs, vanilla.rs); cargo test -p horizon-command command_parse (corpus tools/command_parse_corpus.py)
39 Benchmarks and telemetry (34) L/benchmark.rs, tools/perf_bench.py, L/telemetry.rs, crates/horizon-telemetry*/, crates/horizon-bench/ python3 -m unittest tests.test_perf_bench; benchmark.md
40 Explosions and TNT (31) G/explosion.rs, G/tnt.rs lan_e2e blast; no dedicated harness yet