Odin(奥丁)是北欧神话中众神之王,他拥有强大的智慧与力量,掌管战争、智慧、魔法等。本项目以 Odin 命名,寓意该工具集如同众神之王一般,为游戏开发提供强大、全面且智能的支持。
Odin 是一个 Go 语言编写的工具集,提供了游戏开发相关的各种模块,方便开发者快速搭建游戏服务。
| 模块名 | 功能简介 | 文档地址 |
|---|---|---|
| encoding | 提供多种数据编解码器的实现,支持常见数据格式的编码和解码 | 前往 |
| eventbus | 实现多种消息队列的事件总线,支持 Redis、NATS、RocketMQ 等 | 前往 |
| game | 游戏核心服务逻辑,包含游戏启动、消息处理、玩家和房间管理等 | 前往 |
| gate | 基于 WebSocket 的业务网关,负责用户连接管理和消息转发 | 前往 |
| locator | 基于 Redis 的分布式游戏服务用户节点定位组件 | 前往 |
| packet | 消息打包、解包和心跳处理模块 | 前往 |
| player | 玩家相关功能模块,包含玩家接口、基础玩家结构和玩家管理器 | 前往 |
| room | 游戏房间实现模块,包含房间管理、状态控制和玩家管理 | 前往 |
| xutil | 包含多个实用工具子模块,如缓冲区操作、任务池等 |
go get github.com/ivy-mobile/odin.gitpackage main
import (
"fmt"
"github.com/ivy-mobile/odin/encoding/json"
)
// 定义一个示例结构体
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
// 注册 JSON 编解码器
// 创建一个 Person 实例
p := Person{Name: "Alice", Age: 30}
// 编码为 JSON
data, err := json.Marshal(p)
if err != nil {
fmt.Println("编码失败:", err)
return
}
fmt.Println("编码结果:", string(data))
// 解码 JSON
var ps Person
err = json.Unmarshal(data, &ps)
if err != nil {
fmt.Println("解码失败:", err)
return
}
fmt.Println("解码结果:", ps)
}