[推广] Lockval Engine:专为游戏后端设计的高性能引擎 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
vanishs
V2EX    游戏开发

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

  •  
  •   vanishs 2024-08-23 15:43:02 +08:00 2177 次点击
    这是一个创建于 413 天前的主题,其中的信息可能已经有所发展或是发生改变。

    [推广] 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 条附言    2024-08-24 05:59:24 +08:00
    说到快速开发和简易上手,事实上 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 条附言    2024-08-24 14:35:25 +08:00

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

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

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

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

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

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

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

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

    用户(客户端)在登录的时候会获取到完整(服务端设置的可访问模块数据)的用户数据。哪怕用户是离线状态,依然在登录后获取到谁点赞了我
    vanishs
        7
    vanishs  
    OP
       2024-08-24 05:58:21 +08:00
    说到快速开发和简易上手,事实上 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
       2024-08-24 10:03:40 +08:00
    zeroonetwo
        9
    zeroonetwo  
       2024-09-10 00:25:07 +08:00
    等等 Unity 版本,出来后试下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana    2896 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 13:50 PVG 21:50 LAX 06:50 JFK 09:50
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86