94 lines
3.9 KiB
Go
94 lines
3.9 KiB
Go
# Repository Guidelines
|
||
|
||
## Project Structure & Module Organization
|
||
This repository is split into multiple Go modules:
|
||
|
||
- `logic/`: main game logic and fight system (`logic/service/fight/...`)
|
||
- `login/`: login service
|
||
- `common/`: shared utilities, data, RPC helpers, socket code
|
||
- `modules/`: domain modules such as `player`, `task`, `space`
|
||
- `public/`: runtime data and configs, including `public/config/*.json`
|
||
- `docs/`: engineering notes and feature-specific summaries
|
||
|
||
Keep changes scoped to the owning module. For example, fight effect work belongs under `logic/service/fight/effect/`.
|
||
|
||
## Build, Test, and Development Commands
|
||
- `cd logic && go test ./service/fight/effect`
|
||
Validates effect package changes quickly.
|
||
- `cd logic && go test ./...`
|
||
Runs all tests in the `logic` module.
|
||
- `cd common && go test ./...`
|
||
Runs shared utility tests.
|
||
- `cd logic && go build ./...`
|
||
Checks compile health for the logic module.
|
||
|
||
CI currently builds Go artifacts through GitHub Actions in `.github/workflows/logic_CI.yml`.
|
||
|
||
## Coding Style & Naming Conventions
|
||
Use standard Go formatting and idioms:
|
||
|
||
- Run `gofmt -w <file>.go` on edited Go files.
|
||
- Use tabs as produced by `gofmt`; do not hand-align spacing.
|
||
- Keep package names lowercase.
|
||
- Follow existing effect naming: `Effect<ID>` structs in files like `effect_123.go` or grouped files such as `400_480_...go`.
|
||
- Keep comments short and descriptive, e.g. `// Effect 400: 若和对手属性相同,则技能威力翻倍`.
|
||
|
||
## Testing Guidelines
|
||
The repo uses Go’s built-in `testing` package. Existing tests are sparse, so at minimum:
|
||
|
||
- run package-level tests for the module you changed
|
||
- prefer targeted verification first, then broader `go test ./...` when practical
|
||
- name tests with Go conventions, e.g. `TestSqrt`, `TestEffect400`
|
||
|
||
If no automated test exists, document the package-level command you used to validate the change.
|
||
|
||
## Commit & Pull Request Guidelines
|
||
Recent history is inconsistent (`fix: ...`, `编辑文件 ...`, and short placeholder commits). Prefer clear messages:
|
||
|
||
- `fix: correct Effect599 damage reduction category handling`
|
||
- `docs: update effect refactor summary`
|
||
|
||
For pull requests, include:
|
||
|
||
- what changed
|
||
- affected module(s)
|
||
- validation commands run
|
||
- linked issue/task if available
|
||
|
||
## Contributor Notes
|
||
Do not overwrite unrelated local changes. This repo often has a dirty worktree. Prefer additive edits, and update `docs/` when continuing long-running refactors such as fight effects.
|
||
|
||
## Battle System Notes
|
||
Most combat work lives under `logic/service/fight/`. Use the existing split before adding code:
|
||
|
||
- `action/`: battle action types and turn execution helpers
|
||
- `input/`: runtime battle state, effect registration, skill parsing
|
||
- `info/`: core battle entities such as pets, skills, damage zones, enums
|
||
- `effect/`: skill effects and status logic; most day-to-day fight changes land here
|
||
- `node/`: shared effect node behavior and default hooks
|
||
- `boss/`: boss-only passive/index effects
|
||
- `rule/`, `itemover/`, `top/`: rules, item settlement, ranking-related battle logic
|
||
|
||
When adding a new skill effect:
|
||
|
||
- prefer `logic/service/fight/effect/`
|
||
- follow existing naming such as `Effect400` or grouped files like `400_480_...go`
|
||
- register via `input.InitEffect(...)` or existing helper registration paths
|
||
- update `effect_info_map.go` if the effect should appear in local effect descriptions
|
||
|
||
When investigating missing effects, do not rely only on direct `InitEffect(...)` grep results. This repo also uses shared registration files such as:
|
||
|
||
- `sterStatusEffects.go`
|
||
- `effect_power_doblue.go`
|
||
- `EffectAttackMiss.go`
|
||
- `EffectPhysicalAttackAddStatus.go`
|
||
- `EffectDefeatTrigger.go`
|
||
- `effect_attr.go`
|
||
|
||
Recommended validation for fight changes:
|
||
|
||
- `cd logic && go test ./service/fight/effect`
|
||
- `cd logic && go build ./...`
|
||
|
||
If you continue long-running effect work, update the matching summary in `docs/` so the next pass can resume without re-scanning the whole package.
|