package main import ( "code.google.com/p/go.net/websocket" "flag" "log" "math/rand" "net/http" "os" "runtime/pprof" "time" ) var addr = flag.String("addr", ":8666", "http service address") var tick = flag.Int("tick", 60, "") var timescale = flag.Float64("timescale", 1, "time scale factor") var verbose = flag.Bool("verbose", false, "") var width = flag.Float64("width", 800, "width of field") var height = flag.Float64("height", 550, "height of field") var profile = flag.String("pprof", "", "if specified will run with pprof") var debug = flag.Bool("debug", false, "automatically create games if they don't exist") var delta float32 var idg *IdGenerator // This is the main, global collection of games var games MapLock func main() { log.Printf("Starting Server...") rand.Seed(time.Now().UnixNano()) flag.Parse() if *profile != "" { f, err := os.Create(*profile) if err != nil { log.Fatal(err) } pprof.StartCPUProfile(f) } games = MapLock{m: make(map[string]*game)} idg = NewIdGenerator() delta = (float32(*tick) / 1000.0) * float32(*timescale) http.Handle("/ws/", websocket.Handler(addPlayer)) http.Handle("/game/start/", JsonHandler(startGame)) http.Handle("/game/list/", JsonHandler(listGames)) http.HandleFunc("/game/stop/", stopGame) http.HandleFunc("/fuck/shit/up/", killServer) err := http.ListenAndServe(*addr, nil) if err != nil { log.Fatal("unable to start server") } }