func (g *Game) Run(ctx context.Context, wg *sync.WaitGroup, in <-chan message.Message, out chan<- message.Message) {
	idleTicker := time.NewTicker(g.IdlePeriod)
	wg.Add(1)
	go g.runSync(ctx, wg, in, out, idleTicker)
}
// Run runs the game asynchronously until the context is closed.
Run runs the game asynchronously until the context is closed.
// Run runs the game asynchronously until the context is closed .
func (g *Game) Run(ctx context.Context, wg *sync.WaitGroup, in <-chan message.Message, out chan<- message.Message) {
	idleTicker := time.NewTicker(g.IdlePeriod)
	wg.Add(1)
	go g.runSync(ctx, wg, in, out, idleTicker)
}
func ( g * Game ) Run ( ctx context . Context , wg * sync . WaitGroup , in <- chan message . Message , out chan <- message . Message ) { idleTicker := time . NewTicker ( g . IdlePeriod ) wg . Add ( 1 ) go g . runSync ( ctx , wg , in , out , idleTicker ) }
Run runs the game asynchronously until the context is closed.
Run runs the game asynchronously until the context is closed .