gitextract_cpr1egp_/ ├── .dockerignore ├── .editorconfig ├── .gitignore ├── .gitmodules ├── .golangci.yml ├── .goreleaser.yaml ├── CONTRIBUTING.md ├── Dockerfile ├── Makefile ├── README.en.md ├── README.md ├── cmd/ │ ├── auth-service/ │ │ └── main.go │ ├── game-service/ │ │ └── main.go │ ├── gateway-service/ │ │ └── main.go │ ├── replication/ │ │ └── main.go │ └── scene/ │ └── main.go ├── configs/ │ ├── auth-service.yaml │ ├── config.dev.yaml.example │ ├── config.example.yaml │ ├── config.prod.yaml.example │ ├── data/ │ │ ├── items.json │ │ ├── maps.json │ │ ├── quests.json │ │ ├── skills.json │ │ └── units.json │ ├── docker.yaml │ ├── game-service.yaml │ ├── gateway-service.yaml │ ├── replication-service.yaml │ └── scene-service.yaml ├── docker-compose.yml ├── docs/ │ └── k8s-local.md ├── go.mod ├── go.work ├── go.work.sum ├── internal/ │ ├── application/ │ │ ├── commands/ │ │ │ ├── battle/ │ │ │ │ ├── create_battle.go │ │ │ │ └── errors.go │ │ │ └── player/ │ │ │ ├── ban_player.go │ │ │ ├── create_player.go │ │ │ ├── delete_player.go │ │ │ ├── errors.go │ │ │ ├── gm_update_player.go │ │ │ ├── level_up_player.go │ │ │ ├── move_player.go │ │ │ ├── unban_player.go │ │ │ └── update_player.go │ │ ├── handlers/ │ │ │ ├── command_bus.go │ │ │ ├── query_bus.go │ │ │ └── replication_subscribers.go │ │ ├── interfaces/ │ │ │ └── command.go │ │ ├── queries/ │ │ │ ├── battle/ │ │ │ │ ├── errors.go │ │ │ │ └── get_battle.go │ │ │ └── player/ │ │ │ ├── errors.go │ │ │ ├── get_player.go │ │ │ ├── get_player_detail.go │ │ │ ├── get_player_stats.go │ │ │ ├── list_players.go │ │ │ └── search_players.go │ │ └── services/ │ │ ├── building_service.go │ │ ├── character_service.go │ │ ├── fight_service.go │ │ ├── hangup_service.go │ │ ├── item_service.go │ │ ├── mail_service.go │ │ ├── map_service.go │ │ ├── minigame_service.go │ │ ├── npc_service.go │ │ ├── pet_service.go │ │ ├── plant_service.go │ │ ├── player_service.go │ │ ├── quest_service.go │ │ ├── ranking_service.go │ │ ├── replication_service.go │ │ ├── sacred_service.go │ │ ├── scene_service.go │ │ ├── service_registry.go │ │ ├── spawn_manager.go │ │ ├── update_manager.go │ │ ├── user_service.go │ │ └── weather_service.go │ ├── auth/ │ │ └── jwt.go │ ├── base_module.go │ ├── bootstrap/ │ │ ├── auth_bootstrap.go │ │ ├── game_bootstrap.go │ │ ├── gateway_bootstrap.go │ │ ├── replication_bootstrap.go │ │ └── scene_bootstrap.go │ ├── config/ │ │ ├── config.go │ │ ├── loader.go │ │ ├── loader_test.go │ │ ├── manager.go │ │ └── types.go │ ├── config_manager_base.go │ ├── data_base.go │ ├── database/ │ │ ├── mongodb.go │ │ └── redis.go │ ├── domain/ │ │ ├── ai/ │ │ │ └── monster_ai.go │ │ ├── battle/ │ │ │ ├── battle.go │ │ │ ├── errors.go │ │ │ ├── repository.go │ │ │ ├── service.go │ │ │ └── skill.go │ │ ├── building/ │ │ │ ├── aggregate.go │ │ │ ├── entity.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── repository.go │ │ │ ├── service.go │ │ │ ├── types.go │ │ │ └── value_object.go │ │ ├── character/ │ │ │ ├── actor.go │ │ │ ├── buff_attributes_test.go │ │ │ ├── buff_flags_test.go │ │ │ ├── entity.go │ │ │ ├── events.go │ │ │ ├── events_test.go │ │ │ ├── monster.go │ │ │ ├── player.go │ │ │ ├── repository.go │ │ │ ├── skill_damage_test.go │ │ │ ├── subsystems.go │ │ │ ├── subsystems_test.go │ │ │ └── value_objects.go │ │ ├── dialogue/ │ │ │ └── dialogue_manager.go │ │ ├── events/ │ │ │ └── domain_event.go │ │ ├── inventory/ │ │ │ ├── dressup/ │ │ │ │ ├── aggregate.go │ │ │ │ ├── entity.go │ │ │ │ ├── errors.go │ │ │ │ ├── events.go │ │ │ │ ├── repository.go │ │ │ │ ├── service.go │ │ │ │ └── value_object.go │ │ │ ├── errors.go │ │ │ ├── inventory.go │ │ │ ├── repository.go │ │ │ └── synthesis/ │ │ │ ├── aggregate.go │ │ │ ├── entity.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── repository.go │ │ │ ├── service.go │ │ │ └── value_object.go │ │ ├── mapmanager/ │ │ │ └── map.go │ │ ├── minigame/ │ │ │ ├── aggregate.go │ │ │ ├── entity.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── repository.go │ │ │ ├── service.go │ │ │ ├── types.go │ │ │ └── value_object.go │ │ ├── npc/ │ │ │ ├── aggregate.go │ │ │ ├── entity.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── repository.go │ │ │ ├── service.go │ │ │ └── value_object.go │ │ ├── pet/ │ │ │ ├── aggregate.go │ │ │ ├── entity.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── repository.go │ │ │ ├── service.go │ │ │ └── value_object.go │ │ ├── player/ │ │ │ ├── beginner/ │ │ │ │ ├── aggregate.go │ │ │ │ ├── entity.go │ │ │ │ ├── errors.go │ │ │ │ ├── events.go │ │ │ │ ├── repository.go │ │ │ │ ├── service.go │ │ │ │ └── value_object.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── hangup/ │ │ │ │ ├── aggregate.go │ │ │ │ ├── entity.go │ │ │ │ ├── errors.go │ │ │ │ ├── events.go │ │ │ │ ├── repository.go │ │ │ │ ├── service.go │ │ │ │ └── value_object.go │ │ │ ├── honor/ │ │ │ │ ├── aggregate.go │ │ │ │ ├── entity.go │ │ │ │ ├── errors.go │ │ │ │ ├── events.go │ │ │ │ ├── repository.go │ │ │ │ ├── service.go │ │ │ │ └── value_object.go │ │ │ ├── player.go │ │ │ ├── query.go │ │ │ ├── repository.go │ │ │ ├── service.go │ │ │ └── value_objects.go │ │ ├── quest/ │ │ │ ├── errors.go │ │ │ ├── quest.go │ │ │ └── repository.go │ │ ├── ranking/ │ │ │ ├── aggregate.go │ │ │ ├── entity.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── repository.go │ │ │ ├── service.go │ │ │ └── value_object.go │ │ ├── replication/ │ │ │ ├── events.go │ │ │ ├── instance.go │ │ │ ├── repository.go │ │ │ └── snapshot.go │ │ ├── scene/ │ │ │ ├── errors.go │ │ │ ├── plant/ │ │ │ │ ├── aggregate.go │ │ │ │ ├── entity.go │ │ │ │ ├── errors.go │ │ │ │ ├── events.go │ │ │ │ ├── repository.go │ │ │ │ ├── service.go │ │ │ │ └── value_object.go │ │ │ ├── repository.go │ │ │ ├── sacred/ │ │ │ │ ├── aggregate.go │ │ │ │ ├── entity.go │ │ │ │ ├── errors.go │ │ │ │ ├── events.go │ │ │ │ ├── repository.go │ │ │ │ ├── service.go │ │ │ │ └── value_object.go │ │ │ ├── scene.go │ │ │ └── weather/ │ │ │ ├── aggregate.go │ │ │ ├── entity.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── repository.go │ │ │ ├── service.go │ │ │ └── value_object.go │ │ ├── skill/ │ │ │ ├── errors.go │ │ │ ├── repository.go │ │ │ └── skill.go │ │ └── social/ │ │ ├── chat/ │ │ │ ├── aggregate.go │ │ │ ├── chat_service.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── member.go │ │ │ ├── message.go │ │ │ └── repository.go │ │ ├── email/ │ │ │ ├── attachment.go │ │ │ ├── email.go │ │ │ ├── email_service.go │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ └── repository.go │ │ ├── family/ │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── family.go │ │ │ ├── family_service.go │ │ │ ├── member.go │ │ │ └── repository.go │ │ ├── friend/ │ │ │ ├── errors.go │ │ │ ├── events.go │ │ │ ├── friend_request.go │ │ │ ├── friend_service.go │ │ │ ├── friendship.go │ │ │ └── repository.go │ │ └── team/ │ │ ├── errors.go │ │ ├── events.go │ │ ├── repository.go │ │ ├── team.go │ │ ├── team_member.go │ │ └── team_service.go │ ├── errors/ │ │ └── domain_errors.go │ ├── events/ │ │ ├── eventbus.go │ │ ├── metrics.go │ │ ├── middleware.go │ │ └── worker.go │ ├── game/ │ │ └── player.go │ ├── icharacter.go │ ├── imodule.go │ ├── infrastructure/ │ │ ├── auth/ │ │ │ ├── jwt.go │ │ │ └── middleware.go │ │ ├── cache/ │ │ │ ├── cache_manager.go │ │ │ ├── memory_cache.go │ │ │ └── redis_cache.go │ │ ├── config/ │ │ │ ├── environments/ │ │ │ │ ├── config.dev.yaml │ │ │ │ ├── config.prod.yaml │ │ │ │ └── config.test.yaml │ │ │ ├── file_watcher.go │ │ │ ├── unified.json │ │ │ ├── unified.prod.json │ │ │ └── unified_config.go │ │ ├── container/ │ │ │ ├── container.go │ │ │ ├── providers.go │ │ │ └── simple_container.go │ │ ├── datamanager/ │ │ │ └── data_manager.go │ │ ├── errors/ │ │ │ └── errors.go │ │ ├── logging/ │ │ │ └── logger.go │ │ ├── managers/ │ │ │ ├── entity_manager.go │ │ │ └── update_manager.go │ │ ├── messaging/ │ │ │ ├── event_bus.go │ │ │ ├── event_dispatcher.go │ │ │ ├── logger_adapter.go │ │ │ ├── nats_publisher.go │ │ │ ├── nats_subscriber.go │ │ │ ├── publisher.go │ │ │ └── worker_pool.go │ │ ├── monitoring/ │ │ │ └── metrics.go │ │ ├── network/ │ │ │ ├── connection_manager.go │ │ │ ├── netcore_client.go │ │ │ └── netcore_server.go │ │ ├── persistence/ │ │ │ ├── base_repository.go │ │ │ ├── building_repository.go │ │ │ ├── db_entities.go │ │ │ ├── hangup_repository.go │ │ │ ├── minigame_repository.go │ │ │ ├── mongodb.go │ │ │ ├── npc_repository.go │ │ │ ├── plant_repository.go │ │ │ ├── player_repository.go │ │ │ ├── ranking_repository.go │ │ │ ├── replication_repository.go │ │ │ ├── repositories.go │ │ │ ├── scene_repository.go │ │ │ └── weather_repository.go │ │ ├── protocol/ │ │ │ ├── binary_protocol.go │ │ │ ├── json_protocol.go │ │ │ └── protocol.go │ │ └── weave/ │ │ └── weavelet.go │ ├── interfaces/ │ │ ├── http/ │ │ │ ├── auth/ │ │ │ │ ├── login_handler.go │ │ │ │ ├── middleware.go │ │ │ │ ├── register_handler.go │ │ │ │ └── token_handler.go │ │ │ ├── battle_handler.go │ │ │ ├── building_handler.go │ │ │ ├── gm/ │ │ │ │ ├── player_management.go │ │ │ │ └── server_monitor.go │ │ │ ├── health_handler.go │ │ │ ├── pet_handler.go │ │ │ ├── player_handler.go │ │ │ ├── replication_handlers.go │ │ │ ├── response.go │ │ │ └── server.go │ │ ├── rpc/ │ │ │ ├── battle_service.go │ │ │ ├── player_service.go │ │ │ ├── ranking_service.go │ │ │ ├── replication_service.go │ │ │ └── server.go │ │ └── tcp/ │ │ ├── connection/ │ │ │ ├── heartbeat.go │ │ │ ├── manager.go │ │ │ └── session.go │ │ ├── handlers/ │ │ │ └── game_handler.go │ │ ├── npc_handler.go │ │ ├── pet_handler.go │ │ ├── protocol/ │ │ │ ├── base_protocol.go │ │ │ ├── errors.go │ │ │ ├── game_protocol.go │ │ │ ├── message_types.go │ │ │ └── pet_protocol.go │ │ ├── router.go │ │ ├── scene_handler.go │ │ └── server.go │ ├── metrics_base.go │ ├── module_manager.go │ ├── network/ │ │ ├── codec.go │ │ ├── protocol.go │ │ └── session/ │ │ └── session.go │ ├── platform.go │ ├── proto/ │ │ ├── README.md │ │ ├── battle/ │ │ │ └── battle.pb.go │ │ ├── chat/ │ │ │ └── chat.pb.go │ │ ├── common/ │ │ │ └── common.pb.go │ │ ├── errors/ │ │ │ └── errors.pb.go │ │ ├── gateway/ │ │ │ └── gateway.pb.go │ │ ├── mail/ │ │ │ └── mail.pb.go │ │ ├── messages/ │ │ │ └── messages.pb.go │ │ ├── pet/ │ │ │ └── pet.pb.go │ │ ├── player/ │ │ │ └── player.pb.go │ │ ├── protocol/ │ │ │ └── protocol.pb.go │ │ ├── room/ │ │ │ └── room.pb.go │ │ ├── scene/ │ │ │ └── scene.pb.go │ │ └── team/ │ │ └── team.pb.go │ └── readme.md ├── k8s/ │ └── local/ │ ├── auth-service.yaml │ ├── configmap-gateway.yaml │ ├── game-service.yaml │ ├── gateway-service.yaml │ ├── mongodb.yaml │ ├── namespace.yaml │ ├── overlays/ │ │ └── registry/ │ │ └── kustomization.yaml │ └── redis.yaml ├── license ├── proto/ │ ├── auth.proto │ ├── battle.proto │ ├── character.proto │ ├── chat.proto │ ├── common.proto │ ├── entity.proto │ ├── errors.proto │ ├── fight.proto │ ├── game.proto │ ├── gateway.proto │ ├── inventory.proto │ ├── mail.proto │ ├── map.proto │ ├── messages.proto │ ├── npc.proto │ ├── pet.proto │ ├── player.proto │ ├── protocol.proto │ ├── quest.proto │ ├── room.proto │ ├── scene.proto │ └── team.proto ├── protoc/ │ ├── include/ │ │ └── google/ │ │ └── protobuf/ │ │ ├── any.proto │ │ ├── api.proto │ │ ├── compiler/ │ │ │ └── plugin.proto │ │ ├── descriptor.proto │ │ ├── duration.proto │ │ ├── empty.proto │ │ ├── field_mask.proto │ │ ├── source_context.proto │ │ ├── struct.proto │ │ ├── timestamp.proto │ │ ├── type.proto │ │ └── wrappers.proto │ └── readme.txt ├── scripts/ │ ├── build-images.ps1 │ ├── build.sh │ ├── clean.sh │ ├── db-migrate.sh │ ├── deploy.sh │ ├── docker-build.sh │ ├── generate_proto.bat │ ├── generate_proto.sh │ ├── health-check.sh │ ├── init-db.sh │ ├── k8s-deploy.ps1 │ ├── load-images-to-k8s.ps1 │ ├── mongo-init.js │ ├── publish-images.ps1 │ ├── setup-dev.sh │ ├── start-services.bat │ ├── start-services.sh │ └── stop-services.sh └── tools/ └── simclient/ ├── README_E2E.md ├── action_scenario.go ├── client.go ├── cmd/ │ └── simclient/ │ └── main.go ├── config.example.yaml ├── config.go ├── e2e.yaml ├── e2e_load.yaml ├── e2e_scenario.go ├── feature_library.go ├── main.go ├── metrics.go ├── runner.go ├── scenario.go └── simclient_test.go