V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
vanishs
V2EX  ›  游戏开发

[推广] Lockval Engine:专为游戏后端设计的高性能引擎

  •  
  •   vanishs · 90 天前 · 1546 次点击
    这是一个创建于 90 天前的主题,其中的信息可能已经有所发展或是发生改变。

    [推广] Lockval Engine:专为游戏后端设计的高性能引擎

    大家好,

    我是 Lockval Engine 的开发者,非常高兴在 V2EX 与大家分享我的项目。Lockval Engine 是一个为游戏后端开发设计的引擎,提供优异的性能和强大的脚本以及面向数据开发的完整游戏后端解决方案。

    特色亮点:

    • 一致性分布式设计:在提供一致性的基础上提供常规的扩容功能。
    • 脚本与原生的支持:提供 Python,JavaScript,Lua ,以及原生 Golang 支持,让开发者有性能和开发效率的多种选择。
    • 面向数据库的开发:开发者人员只需要关注操作键值数据库的操作即可完成一个 API 的开发,修改的数据会自动同步到服务端数据库和客户端数据库。
    • 开发流程十分简单:只需要少了的内置 API 即可完成一个复杂的客户端 API 功能。

    项目状态

    目前 Lockval Engine 以及完成了核心开发,客户端方面实现了 JS 的 library 。网站有实现了 API Demo 和 API Playground 。

    项目策略:

    虽然 Lockval Engine 目前不是开源产品,但是是一个免费使用的引擎。这样的策略主要是为了在未来的商业运作中能提供更优质的服务和支持。

    期待的影响:

    通过社区的力量,我希望让更多的游戏开发者了解和使用 Lockval Engine ,以提高他们的游戏性能和后端稳定性。

    如何了解更多:

    希望大家能够试用 Lockval Engine ,并给予我宝贵的反馈!感谢大家的关注和支持。

    第 1 条附言  ·  89 天前
    说到快速开发和简易上手,事实上 Lockval Engine 核心只有 8 个 API:

    获取你想要获取到某个实体(id)的模块(key)数据下的具体数据
    GetSubVal func(id, key string, subkeys ...string)
    GetSubValAll func(id, key string)
    锁定并且读取
    GetAndLock func()

    准备好要存放的数据
    PutSubVal func(id, key string, kvs ...string)
    写入并且解锁
    PutAndUnlock func() (resp *PutAndUnlockResp)
    DiscardAndUnlock func() (resp *PutAndUnlockResp)

    抛出通用错误信息告知客户端,比如资源不足等
    Throw func(Code int, Error string)

    定时执行 cmd 命令
    Sleep func(ms int64, ksuid, cmd string, obj any)

    -------------

    或者简单来说,其实就是 一套读写 API ,和一个定时器 API
    第 2 条附言  ·  89 天前

    展示一下Lockval Engine的开发效率(运行在Playground):

    实现一个 API:给 PlayerID 点赞,不能重复点赞某个人,且不能点赞自己

    9 条回复    2024-09-10 00:25:07 +08:00
    vanishs
        1
    vanishs  
    OP
       90 天前
    一些简单的使用问题,大家可以发问,我通过写 playground 贴出网址来解释大家的问题
    nebkad
        2
    nebkad  
       89 天前
    请问这个引擎适合哪些类型的游戏后端?
    是否可以举例说明?或者说市面上哪款游戏的后端可以用这个引擎帮助或参与实现?
    vanishs
        3
    vanishs  
    OP
       89 天前
    @nebkad 这个话题,我更加偏向说这个服务端引擎不太适合做什么类型的游戏服务器,那就是 FPS 等对延长十分敏感的游戏,因为这套架构中,客户端通过互联网到游戏服务端要经过 [GW 网关] -》 [API 逻辑服务器] -》 [DB 键值数据库] 。 整个流程大约需要 0.5~1.5ms 的处理流程。目前还有优化空间,但是没赋予实施。

    这个处理效率我认为已经能处理绝大部分游戏类型的。如果非要说这个引擎最适合做什么游戏类型的话,那应该就是 MMO 类型了,当然也包含滚服类型的网游(也把它视为逻辑分服的一个 MMO 游戏,这样就能很好的实现合服或者跨服活动等设计)

    稍后我附上一个使用引擎 Playground 做的几个 API 快速介绍一下这个引擎的开发的开发效率
    vanishs
        4
    vanishs  
    OP
       89 天前
    [实现一个 API:给 PlayerID 点赞,不能重复点赞某个人,且不能点赞自己]( https://playground.lockval.com/?lang=JavaScript&code=cc165fdaa4fbdfc758b17651b34fa1a0e70fc533)
    vanishs
        5
    vanishs  
    OP
       89 天前
    请执行替换文本中的 PlayerID_1 和 PlayerID_2 成为你向测试的 ID 。因为点赞了后就不能再点赞了
    vanishs
        6
    vanishs  
    OP
       89 天前
    这里是演示了服务端实现一个 API 的一个过程。并未展现出服务端对客户端的通知特性

    如果是客户端接入后,当有个人点赞了我,那么我(客户端)会收到一个 数据修改的事件:
    {
    ""thumbupModule"":{"点赞我的人的 ID":"1"}
    }

    这样客户端就能感知到有人点赞了我

    -------------

    用户(客户端)在登录的时候会获取到完整(服务端设置的可访问模块数据)的用户数据。哪怕用户是离线状态,依然在登录后获取到谁点赞了我
    vanishs
        7
    vanishs  
    OP
       89 天前
    说到快速开发和简易上手,事实上 Lockval Engine 核心只有 8 个 API:

    获取你想要获取到某个实体(id)的模块(key)数据下的具体数据
    GetSubVal func(id, key string, subkeys ...string)
    GetSubValAll func(id, key string)
    锁定并且读取
    GetAndLock func()

    准备好要存放的数据
    PutSubVal func(id, key string, kvs ...string)
    写入并且解锁
    PutAndUnlock func() (resp *PutAndUnlockResp)
    DiscardAndUnlock func() (resp *PutAndUnlockResp)

    抛出通用错误信息告知客户端,比如资源不足等
    Throw func(Code int, Error string)

    定时执行 cmd 命令
    Sleep func(ms int64, ksuid, cmd string, obj any)
    vanishs
        8
    vanishs  
    OP
       89 天前
    zeroonetwo
        9
    zeroonetwo  
       72 天前
    等等 Unity 版本,出来后试下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5331 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:03 · PVG 17:03 · LAX 01:03 · JFK 04:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.