51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
// 年糕历险记 —— 专用服务器入口。
|
||
package main
|
||
|
||
import (
|
||
"context"
|
||
"flag"
|
||
"os"
|
||
"os/signal"
|
||
|
||
"mc/internal/config"
|
||
"mc/internal/engine"
|
||
"mc/internal/logx"
|
||
)
|
||
|
||
// serverApp 服务器应用骨架(世界/网络在后续里程碑接入)。
|
||
type serverApp struct {
|
||
cfg *config.ServerConfig
|
||
log *logx.Logger
|
||
tickCount uint64
|
||
}
|
||
|
||
// Tick 每 tick(20Hz)服务器逻辑。
|
||
func (s *serverApp) Tick(dt float64) {
|
||
s.tickCount++
|
||
if s.tickCount%100 == 0 { // 每 5 秒
|
||
s.log.Debugf("tick=%d", s.tickCount)
|
||
}
|
||
}
|
||
|
||
func main() {
|
||
flag.Parse()
|
||
|
||
log, err := logx.New("logs/server.log", logx.LevelInfo)
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
|
||
cfg, err := config.Load("config/server.yaml", config.DefaultServer())
|
||
if err != nil {
|
||
log.Warnf("配置加载失败,使用默认值:%v", err)
|
||
}
|
||
log.Infof("年糕历险记 服务器启动:端口 %d,世界 %q,种子 %d,tick 率 %d", cfg.Server.Port, cfg.World.Name, cfg.World.Seed, cfg.Server.TickRate)
|
||
|
||
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
|
||
defer stop()
|
||
|
||
app := &serverApp{cfg: cfg, log: log}
|
||
engine.Run(ctx, app, engine.NoopRenderer{})
|
||
log.Infof("服务器已退出")
|
||
}
|