Исправление rezedent12, (текущая версия) :
В твоей гошечке можно повесить нормальный ивент на чтение/запись сокета?
В общем да
func main() {
fmt.Println("Сервер запускается...")
errLC := ReLoadConfigServer(`путь/test-config.txt`)
if errLC == nil {
fmt.Println("Конфигурация загружена.")
} else {
fmt.Println("Ошибка загрузки конфигурации...")
}
mux := http.NewServeMux()
mux.HandleFunc("/", processRequestHTTP)
mux.HandleFunc(WebSocketDir, websocketHandler) // Для WebSocket
server := &http.Server{
Addr: fmt.Sprintf(":%v", httpPort),
Handler: mux,
}
go processStoper(server)
fmt.Println("Сервер запущен на порту ", fmt.Sprintf("%v", httpPort))
err := server.ListenAndServe()
if err != nil {
fmt.Println(err)
}
fmt.Println("Сервер остановлен")
}
При каждом новом соединении запускается новый экземпляр указанной горутины.
Если да, то одна рутина на одного клиента и она легко перелопатит всех пешек.
Горутина клиента нужна только для ввода и вывода. То есть показа карты и того что на ней происходит, а так же передачи команд пешкам. Игровой процесс будет идти в другой группе горутин.
Я решил для упрощения логики обработки сложных внутренних состояний пешек, «мышление» каждой пешки обрабатывать отдельной горутиной. На входе в горутину управляющую пешкой подаётся тик-структура (множитель ускорения времени, обычно 1), а на выходе она выдаёт что делать пешке в конкретном месте и в конкретном времени. Таким образом можно будет реализовать достаточно произвольную логику без усложнения основного кода игры. Минус этого подхода в том, что save/load будет как бы сбивать фокус или внимание пешки. Но я думаю надо игровой процесс сделать таким, что бы поощрять отказ от save/load в случае неудач.
Причём здесь save/load и сетевая браузерная игра? В этом смысле игра будет вроде factorio. То есть поддерживать кооперативность. Выбор WEB в качестве интерфейса - это способ порешать проблемы сетевой синхронизации, читов и кросплатформенности. Основной фичей игры, будет моделирование душевных состояний и эволюции убеждений не напрямую контролируемых персонажей. Что то вроде rimworld с идеологией, но качественно глубже.
Исходная версия rezedent12, :
В твоей гошечке можно повесить нормальный ивент на чтение/запись сокета?
В общем да
func main() {
fmt.Println("Сервер запускается...")
errLC := ReLoadConfigServer(`C:\Users\ПК\Go\test-web-project1\test-config.txt`)
if errLC == nil {
fmt.Println("Конфигурация загружена.")
} else {
fmt.Println("Ошибка загрузки конфигурации...")
}
mux := http.NewServeMux()
mux.HandleFunc("/", processRequestHTTP)
mux.HandleFunc(WebSocketDir, websocketHandler) // Для WebSocket
server := &http.Server{
Addr: fmt.Sprintf(":%v", httpPort),
Handler: mux,
}
go processStoper(server)
fmt.Println("Сервер запущен на порту ", fmt.Sprintf("%v", httpPort))
err := server.ListenAndServe()
if err != nil {
fmt.Println(err)
}
fmt.Println("Сервер остановлен")
}
При каждом новом соединении запускается новый экземпляр указанной горутины.
Если да, то одна рутина на одного клиента и она легко перелопатит всех пешек.
Горутина клиента нужна только для ввода и вывода. То есть показа карты и того что на ней происходит, а так же передачи команд пешкам. Игровой процесс будет идти в другой группе горутин.
Я решил для упрощения логики обработки сложных внутренних состояний пешек, «мышление» каждой пешки обрабатывать отдельной горутиной. На входе в горутину управляющую пешкой подаётся тик-структура (множитель ускорения времени, обычно 1), а на выходе она выдаёт что делать пешке в конкретном месте и в конкретном времени. Таким образом можно будет реализовать достаточно произвольную логику без усложнения основного кода игры. Минус этого подхода в том, что save/load будет как бы сбивать фокус или внимание пешки. Но я думаю надо игровой процесс сделать таким, что бы поощрять отказ от save/load в случае неудач.
Причём здесь save/load и сетевая браузерная игра? В этом смысле игра будет вроде factorio. То есть поддерживать кооперативность. Выбор WEB в качестве интерфейса - это способ порешать проблемы сетевой синхронизации, читов и кросплатформенности. Основной фичей игры, будет моделирование душевных состояний и эволюции убеждений не напрямую контролируемых персонажей. Что то вроде rimworld с идеологией, но качественно глубже.