kbengine源码_KBEngine源码:EntityCall
在之前的章节中一直提到EntityCall,那什么是EntityCall?我们可以简单的理解为:封装远程交互、通讯等方法的一种对象,是脚本层与实体远程交互的常规手段。
EntityCall的底层实现原理:
EntityCall对象在C++底层实现非常简单,它只包含了实体的ID、目的地的地址、实体类型、EntityCall类型。
当用户请求一次远程交互时,底层首先能够通过实体类型找到实体定义的描述(def配置文件),通过该描述对用户输入的数据进行检查,如果检查合法那么底层将数据打包并发往目的地,接着目的地进程根据协议进行解包,根据实体ID找到实体,最终调用到脚本层。
EntityCall的限制或要求:
刚才在底层实现原理中提到,必须先通过实体类型找到实体定义的描述,而这个描述即是def配置文件!相当于互相之间的远程通讯都通过def“协议”规定好的。所以EntityCall只能:
1:调用其对应def配置文件中声明过的方法;
2:def配置中的属性不可被访问;
3:在def定义之外的任何信息都不可被访问。
一个实体包含哪些EntityCall?
一个实体最多可以包含三个部分:
1.client:
当实体包含客户端部分时(通常为玩家),在服务器端可以访问实体的client属性,该属性是一个EntityCall。
2.base:
当实体的一部分创建在Baseapp(如Baseapp A)时,在非当前Baseapp(如Baseapp B、Cellapp C等)中可以访问实体的base属性,该属性是一个EntityCall。
2.cell:
当实体的一部分创建在Cellapp(如Cellapp A)时,在非当前Cellapp(如Cellapp B、Baseapp C等)中可以访问实体的cell属性,该属性是一个EntityCall。
kbengine源码_KBEngine源码:EntityCall相关推荐
- kbengine源码_KBEngine源码:组件方案
相对于skynet,KBEngine提供了完整的组件方案. Loginapp 登录验证.注册.Client的接入口. Baseapp 通过Loginapp分配过来的Client会与Baseapp保持连 ...
- kbengine源码_kbengine mmo源码(完整服务端源码+资源+完整客户端源码)
本项目作为kbengine服务端引擎的客户端演示而写 更新kbengine插件库(https://github.com/kbengine/kbengine_unity3d_plugins): * ...
- 游戏服务端引擎(kbengine完整代码+demo源码)
2019独角兽企业重金招聘Python工程师标准>>> Demo: Ogre. Demo: Unity3d. PyConsole: display server informatio ...
- java 头尾 队列_源码|jdk源码之栈、队列及ArrayDeque分析
栈.队列.双端队列都是非常经典的数据结构.和链表.数组不同,这三种数据结构的抽象层次更高.它只描述了数据结构有哪些行为,而并不关心数据结构内部用何种思路.方式去组织. 本篇博文重点关注这三种数据结构在 ...
- Flink源码分析 - 源码构建
本篇文章首发于头条号Flink源码分析 - 源码构建,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的C ...
- Dapper源码学习和源码修改(下篇)
继上篇Dapper源码学习和源码修改 讲了下自己学习Dapper的心得之后,下篇也随之而来,上篇主要讲的入参解析那下篇自然主打出参映射了. 好了,废话不多说,开始吧. 学习之前你的先学习怎么使用Dap ...
- [Android源码]Android源码之高仿飞鸽传书WIFI热点搜索与创建(一)
(本文详情来源:android源码 http://www.eoeandroid.com/thread-296427-1-1.html 转载请注明出处!) [Android源码分享]飞鸽传书的An ...
- java字节码文件加密_java 字节码加密源码
java 字节码加密源码 java 2021-2-16 下载地址 https://www.codedown123.com/73152.html java 字节码加密源码,实现对class加密解密 资源 ...
- HTML五合一收款码网站源码(带35套模板)
简介: HTML五合一收款码网站源码(带35套模板)是一款基于HTML开发制作的多码合一收款码生成网站源码,支持wx支付,支付宝支付,手机扣扣支付,京东钱包,百度钱包,五合一收款,将其二维码合并为一个 ...
最新文章
- 【转】对random_state参数的理解
- 【C++】 C++标准模板库(八) MultiMaps
- SpringMVC +Hibernate 学习实例
- Canada Cup 2016 C. Hidden Word 字符串构造
- c java 系统开发_java开发系统内核:使用C语言开发系统应用程序
- c语言函数能改变指针吗,如何修改传递给C中函数的指针?
- MySQL分区表概述
- Centos7安装Nginx实战
- DenyHosts安装及配置
- java内部类_Java内部类
- 学习笔记(4):Google开发专家带你学 AI:入门到实战(Keras/Tensorflow)(附源码)-深度学习“四件套”:数据、模型、损失函数与优化器...
- 爬取贝壳租房信息存储到mongoDB
- 《私募股权基金投资基础知识》---第五章
- 第二章 年轻人都是富翁
- Python OpenCV 图像缩放 cv2.resize 方法
- 你能说更多关于崩坏3琪亚娜的细节吗
- kali2021安装GVM(openVAS)
- 旧佳人的伤感非主流空间心情日志发布:想念,是一种忧伤的幸福
- nginx之配置文件解读及虚拟主机配置
- 直接插入法(java实现)