Protocol Buffers

腾讯IEG开源AI SDK:自动化测试吃鸡、MOBA类游戏

一世执手 提交于 2020-10-02 20:46:21
SDK 还能自动玩游戏?这个 SDK 有点「酷」。 近日,腾讯互娱(IEG)开源了一款名为 GAME AI SDK 的自动化测试平台,该平台封装好了多种工具供开发者使用,目前支持的游戏类型有跑酷类、吃鸡类、射击类、MOBA 类等。 项目地址:https://github.com/Tencent/GameAISDK 平台内置的「天天酷跑」示例。左图为未训练随机做动作,右图是训练好的效果。 SDK(软件开发工具包)一般是软件工程师为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件时可使用的开发工具集合。 似乎有些抽象。在实际项目中,我们只需记住,SDK 是手游渠道提供的,集成了用户登录、社区功能、社交分享功能、数据后台统计功能的功能模块。接入 SDK 后,游戏厂商和渠道都要对 SDK 包进行测试,测试通过才能上线。 看了上文展示的酷跑动图效果,是不是想上手试试吃鸡类、射击类的游戏体验呢?这个开源项目可以满足你的需求,它支持使用者进行项目接入以及二次开发。 AI SDK 平台 AI SDK 平台是一个基于游戏图像来开发游戏 AI 的开源工具包。工具包主要完成了 UI 检测、游戏内元素识别、AI 算法(DQN、IM)等功能。开发者可以基于此工具包完成游戏自动化测试。 目前该平台已支持的游戏类型有跑酷类、吃鸡类、射击类、MOBA 类等。特定场景下它可以代替人工进行游戏场景的自动化

我终于搞懂了微服务,太不容易了...

我是研究僧i 提交于 2020-10-02 13:43:28
微服务是什么?抛去教条性质的解释,从巨石应用到微服务应用,耦合度是其中最大的变化。 图片来自 Pexels 或是将多个模块中重复的部分进行拆分,或是纯粹为了拆分膨胀的单体应用,这些拆分出来的部分独立成一个服务单独部署与维护,便是微服务了。 拆分后自然而然会催生出一些必要的需求: 从本地方法调用的关系衍变成远程过程调用的关系,那么可靠的通信功能是首要的。 随着拆分工作的推进,资源调度关系会变得错综复杂,这时候需要完善的服务治理。 调用关系网的整体复杂化还会给我们带来更大的风险,即链式反应导致服务雪崩的可能性,所以如何保障服务稳定性也是微服务架构中需要考虑的。 这点就不是内需而算是自我演进了,服务化后,如果能结合容器化、Devops 技术实现服务运维一体化,将大大降低微服务维护的成本,不管是现在还是将来。 微服务是什么样的 从目前常见网站架构的宏观角度看,微服务处在中间的层次。红框圈出的部分都属于微服务的范畴。 包括最基础的 RPC 框架、注册中心、配置中心,以及更广义角度的监控追踪、治理中心、调度中心等。 从微服务自身角度来看,则大致会包含以下这些模块: 服务注册与发现 RPC 远程调用 路由与负载均衡 服务监控 服务治理 服务化的前提 是不是只要套上微服务框架就算是一个微服务了呢?虽然这样有了微服务的表,但却没有微服务的实质,即“微”。 微服务化的前提是服务拆分到足够”微“

零废话!全程高能NettyRedis+ZooKeeper笔记

て烟熏妆下的殇ゞ 提交于 2020-10-02 03:35:26
写在最前面 移动时代、5G时代、物联网时代的大幕已经开启,它们对于高性能、高并发的开发知识和技术的要求,抬升了Java工程师的学习台阶和面试门槛。大公司的面试题从某个侧面映射出生产场景中对专项技术的要求。高并发的面试题以前基本是BAT等大公司的专利,现在几乎蔓延至与Java项目相关的整个行业。例如,与Java NIO、Reactor模式、 高性能通信、分布式锁、分布式ID、分布式缓存、高并发架构等技术相关的面试题,从以前的加分题变成了现在的基础题,这也映射出开发Java项目所必需的技术栈:分布式Java框架、Redis缓存、分布式搜索ElasticSearch、分布式协调ZooKeeper、消息队列Kafka、高性能通信框架Netty。 今天分享的这份笔记虽然重在讲解Netty、Redis、 ZooKeeper的使用方法,但是还有一个更大的价值,就是为大家打下Java高并发开发技术的坚实基础。 首先,从操作系统的底层原理开始讲解:浅显易懂地剖析高并发IO的底层原理,并介绍如何让单体Java应用支持百万级的高并发:从传统的阻塞式OIO开始,细致地解析Reactor高性能模式,介绍高性能网络开发的基础知识:从Java的线程Join和线程池开始,介绍Java Future和Guava ListenableFuture两种常用异步回调技术。这些原理方面的基础知识非常重要

TCP数据通信全流程

元气小坏坏 提交于 2020-10-01 08:08:59
1)服务器TCP数据包通讯全流程 (1)协议: 编解码 (2)客户端发送数据 ProtoGen--》生成后自动拷贝 pb版本2 stype ctype 几个服务,就有几个代理。 2: 服务号 2: 命令号 4: 用户标识(保留) protobuf: 数据协议体(head的长度+数据的长度) 2:包体大小 真正的二进制数据 (3)服务器接收数据 继承自Message自己写的 @MessageMeta注解 服务器号:module。 投递到特定的服务器上,如Auth。 投递到登陆服务器上 命令号: cmd,如:处理登陆服务器上的什么功能。 MessageFactory: 扫描,然后注册消息。 Message和继承自Message类的扫描出来。 读取@MessageMeta注解。 module*1000 + cmd: 组合成为一个整数。 做好映射,放到HashMap中(类--》key和key--》类 的双向映射)。 Decoder和Encoder--》解析得到Message对象 派送给对应的Controller: Controller + 每个module对应一个Controller, 然后读取方法上的参数,依次对比,如果得到了ReqXXX,则记录下来映射,这样请求过来, 就会回调Controller中的处理函数。 如果有@RequestMapping注解,就认为是处理某个请求命令的。

腾讯IEG开源AI SDK:自动化测试吃鸡、MOBA类游戏

青春壹個敷衍的年華 提交于 2020-10-01 06:54:33
  机器之心报道    SDK 还能自动玩游戏?这个 SDK 有点「酷」。      近日,腾讯互娱(IEG)开源了一款名为 GAME AI SDK 的自动化测试平台,该平台封装好了多种工具供开发者使用,目前支持的游戏类型有跑酷类、吃鸡类、射击类、MOBA 类等。   项目地址:https://github.com/Tencent/GameAISDK      平台内置的「天天酷跑」示例。左图为未训练随机做动作,右图是训练好的效果。   SDK(软件开发工具包)一般是软件工程师为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件时可使用的开发工具集合。   似乎有些抽象。在实际项目中,我们只需记住,SDK 是手游渠道提供的,集成了用户登录、社区功能、社交分享功能、数据后台统计功能的功能模块。接入 SDK 后,游戏厂商和渠道都要对 SDK 包进行测试,测试通过才能上线。   看了上文展示的酷跑动图效果,是不是想上手试试吃鸡类、射击类的游戏体验呢?这个开源项目可以满足你的需求,它支持使用者进行项目接入以及二次开发。    AI SDK 平台   AI SDK 平台是一个基于游戏图像来开发游戏 AI 的开源工具包。工具包主要完成了 UI 检测、游戏内元素识别、AI 算法(DQN、IM)等功能。开发者可以基于此工具包完成游戏自动化测试。   目前该平台已支持的游戏类型有跑酷类、吃鸡类

花椒服务端 gRPC 开发实践

倾然丶 夕夏残阳落幕 提交于 2020-10-01 05:18:52
背景 在移动端平台开发中,为了增加代码复用,降低开发成本,通常会需要采用跨平台的开发技术,花椒也不例外。本次新的单品开发,由于时间紧,人员有限,经过调研选型,最终确定了 Flutter 方案(具体选型过程不在本文讨论之内)。 为了让客户端更专注业务实现,降低接口联调测试成本,我们选用了 gRPC 方案。gRPC 是一个高性能、通用的开源 RPC 框架,由 Google 开发并基于 HTTP/2 协议标准而设计,基于 ProtoBuf(Protocol Buffers)序列化协议开发,且支持当前主流开发语言。gRPC 通过定义一个服务并指定一个可以远程调用的带有参数和返回类型的的方法,使客户端可以直接调用不同机器上的服务应用的方法,就像是本地对象一样。在服务端,服务实现这个接口并且运行 gRPC 服务处理客户端调用。在客户端,有一个 stub 提供和服务端相同的方法。 gRPC 特点: 基于标准化的 IDL(ProtoBuf)来生成服务器端和客户端代码,支持多种主流开发语言。同时可以更好的支持团队与团队之间的接口设计,开发,测试,协作等。 基于 HTTP/2 设计,支持双向流,多路复用,头部压缩。 支持流式发送和响应,批量传输数据,提升性能。 ProtoBuf 序列化数据抓包、调试难度较大。 我们使用服务端注入方式提供了用户或设备过滤,请求及返回值日志捕获,并开发对应后台模拟抓包展示

反杀套路!阿里独家的《Android 开发相关源码精编解析》王者晋级之路,跟弯路说再见!

末鹿安然 提交于 2020-09-23 16:52:15
一、前言 Android开发人员都知道,阅读源码是非常好的学习方式,在我们日常工作中或多或少都会接触一些开源代码,比如说最常用的MMKV、ARouter、AsyncTask,这些源码的普及与应用程度远远超过我们的想象,正因为很多人使用,也在推动着源码不断地完善。 这些优秀的源码中有着多年积淀下来的精华,这些精华是非常值得我们学习的,不管我们当前是什么水平,通过反复阅读源码,能力都会有所提升,小到对源码所提供的功能上的使用更加熟练,大到使我们的程序设计更加完美优秀。 但是,纵观我们身边的人,能够做到通读源码的真的是少之又少,究其原因,不外乎以下几点。 1.阅读源码绝对算得上是一件费时费力的工作,需要读者耗费大量的时间去完成。 而作为开发人员,毕竟精力有限,实在没办法拿出太多的时间放在源码的阅读上。 2.源码的复杂性。 任何一款源码经历了多年的发展与提炼,其复杂程度可想而知。当我们阅读源码的时候,大家都知道需要通过工具来跟踪代码的运行,进而去分析程序。但是,当代码过于复杂,环环相扣绕来绕去的时候,跟进了几十个甚至几百个函数后,这时我们已经不知道自己所处的位置了,不得不再重来,但是一次又一次地,最终发现自己根本无法驾驭它,不得不放弃。 3.有些源码发展多年, 会遇到各种各样的问题,并对问题进行了解决,而其中有些问题对于我们来说甚至可以用莫名其妙来修饰,有时候根本想不出会在什么情况下发生

Flink序列化器

↘锁芯ラ 提交于 2020-08-18 23:20:05
如果应用使用的google protobuf 或 apache thrift序列器工具, 你是需要注册自已的序列化工具的。以protobuf和thrift为例,示例如下: 譬如 google protobuf 样例: 注册ProtobufSerializer序列化器: final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.getConfig().registerTypeWithKryoSerializer(PbSdkStat.DataRecords.class, ProtobufSerializer.class); 添加maven依赖 <dependency>   <groupId>com.twitter</groupId>   <artifactId>chill-protobuf</artifactId>   <version>0.7.6</version>   <!-- exclusions for dependency conversion -->   <exclusions>   <exclusion>    <groupId>com.esotericsoftware.kryo</groupId>    <artifactId>kryo

Python使用 Google Protocol Buffers (protobuf)

a 夏天 提交于 2020-08-18 19:56:35
最近在用Python写游戏服务器,想更换掉老旧的protobuf2, 看了下proto3的语法,来测试下: 服务器环境 与 protoc 版本: # cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core) # protoc --version libprotoc 3.11.4 一、安装 Python 的protobuf包: 1.1 默认安装最新版本 # pip install protobuf 1.2 查看protobuf包信息: # pip show protobuf Name: protobuf Version: 3.12.2 Summary: Protocol Buffers Home-page: https://developers.google.com/protocol-buffers/ Author: None Author-email: None License: 3-Clause BSD License Location: /usr/local/lib/python3.6/site-packages Requires: setuptools, six 二、编写编译proto文件: 2.1 编写proto文件: # cat pack.proto syntax = "proto3"; // 语法协议