【开源游戏】Legends-Of-Heroes 基于ET 7.2的双端C#(.net7 + Unity3d)多人在线英雄联盟风格的球球大作战游戏。

Legends-Of-Heroes

FlameskyDexive/Legends-Of-Heroes: A battle of balls game, lol style. 基于ET 7.2的双端C#(.net7 + Unity3d)多人在线英雄联盟风格的球球大作战。 (github.com)  一个LOL风格的球球大作战游戏,基于ET7.2,使用状态同步 loh22023532242551

Main

基于C#双端框架[ET7.2],同步到ET主干详情请看日志。(http://github.com/egametang/ET) 注意:已经升级.Net7,请安装.Net7 SDK.

此游戏为ET7.2的一个实践项目demo,玩法主要是球球大作战类型的吃食物吃敌人/被敌人吃的生存玩法。此项目采用状态同步,所有碰撞检测、技能、AI等逻辑都放在服务端执行。当前仍在开发中,具体功能模块及进度看下面的Todo即可

运行步骤:

    1. Unity打开编辑器菜单:ET/BuildTool,CodeMode选择Client,然后点击BuildModelAndHotfix.
    1. 打开ET.sln,编译整个项目,运行DotNet.App.(服务器、客户端拆分模式才需要单独运行,默认是Client-Server模式)
    1. Unity运行游戏即可看到登录页面,输入账号密码登录即可

TODO && Features

  •  接入Unity运行时可视化Log调试组件Debugger
  •  接入基于UGUI适配ET的UI框架EUI
  •  接入YooAsset资源管理打包热更框架
  •  摇杆控制角色移动,相机跟随,通过服务端广播位置同步
  •  配置表支持多Key(也可自行接入强大的多平台配置方案 Luban,当前Demo用不到那么复杂excel就不进行接入了)。
  •  房间大厅,匹配房友,每个房间最多20个玩家。
  •  一个Demo关卡流程:有限的2d地图,随机生成食物,吃食物会变大,碰到敌人会产生伤害(大吞小,小死亡)。
  •  一个比较基本的战斗技能框架设计,主动/被动技能释放(demo已经包含主动技能演示)。
  •  时间线技能事件系统
  •  子弹碰撞系统(碰撞检测使用Box2dSharp)
  •  额外(有空的话):2d moba玩法。

补充说明

  1. 多key配置说明,表格配置多key如下,字段列头顶增加“key”标识即可,最多支持4个key,组合key最后会合并成一个long字段存储,4个key最大数值分别为:32位,16位,8位,8位。 image

    示例,读取技能等级表中技能id=1001,level=2的数据:

    SkillLevelConfig skillLevel = SkillLevelConfigCategory.Instance.GetByKeys(1001, 2);

本文转载于网络 如有侵权请联系删除

相关文章

  • 解决Oracle使用IN 不能超过1000问题

    在oracle中,使用in方法查询记录的时候,如果in后面的参数个数超过1000个,那么会发生错误,JDBC会抛出“java.sql.SQLException:ORA-01795:列表中的最大表达式数为1000”这个异常。解决办法使用or/union连接分割SQL语句为selectafrombwherecin(,)orcin(,)orcin(,),…或者select* fromtable whereidin(1,2,...,1000) unionall select* fromtable whereidin(1001,.....,1999)复制保证每个括号内个数不超过一千,就可以。执行效率可能比较低下。使用元组思络:即把in条件,拼接成元组的形式,如idin(1,2,3),改为(1,id)in((1,1),(1,2),(1,3))即可。查询中间表如果IN里面的数据是从别的表取的话,可以直接这样编写sql语句select*fromtable_1wherecolumn_1in(selectcolumn_2fromtable_2,…)建立一个中间的temp表存在查询条件,在数据库内部进行直接

  • vmware15安装centos7

    下载centos7操作系统,可以使用阿里云的源,下载速度也更快一些http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/我这里选择下载的是CentOS-7-x86_64-Minimal-2009.iso版本打开vmware,点击创建新的虚拟机接下来就静静的等待安装就行了不能上网解决办法:vi/etc/sysconfig/network-scripts/ifcfg-ens33 NOBOOT=NO->NOBOOT=YES servicenetworkrestart复制换源:yuminstallwget mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo复制安装vim:yuminstallvim复制解决ifconfig命令无法使用的问题yuminstallnet-too

  • Ubuntu环境下SSH的安装及使用

    Ubuntu环境下SSH的安装及使用 SSH是指SecureShell,是一种安全的传输协议,Ubuntu客户端可以通过SSH访问远程服务器 。SSH的简介和工作机制可参看上篇文章 SSH简介及工作机制。SSH分客户端openssh-client和openssh-server如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudoapt-getinstallopenssh-client),如果要使本机开放SSH服务就需要安装openssh-server。一、安装客户端Ubuntu缺省已经安装了sshclient。sudoapt-getinstallssh 或者sudoapt-getinstallopenssh-client ssh-keygen (按回车设置默认值)按缺省生成id_rsa和id_rsa.pub文件,分别是私钥和公钥。说明:如果sudoapt-getinsallssh出错,无法安装可使用sudoapt-getinstallopenssh-client进行安装。假定服务器ip为192.168.1.1,ssh服务的端口

  • Python paramiko 模块浅谈与SSH主要功能模拟解析

    疫情还没结束,小编只能宅在家里,哪哪也去不了,今天突发奇想给大家分享一篇教程关于Pythonparamiko模块浅谈与SSH主要功能模拟解析。大家都知道,通过SSH服务可以远程连接到Linux服务器,查看上面的日志状态,批量配置远程服务器,文件上传,文件下载等,Python的paramiko模块同样实现了这一功能。首先我们需要安装这一模块,pycharm环境中如下操作一,安装paramiko模块PyCharm→Preferences→Project:项目名→ProjectInterpreter点击箭头所指加号,在搜索框输入选中,并安装完成后会在ProjectInterpreter中显示,如上上图二,基于用户名和密码的sshclient方式登录importparamiko #创建SSH对象 ssh=paramiko.SSHClient() #允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #连接服务器 ssh.connect(hostname='192.168.19

  • 520将至,人工智能帮你选口红色号 顶

    Git项目源码:https://github.com/DaMaiGit/artifact花絮马上是一年一度的520了。都说女生的梳妆台上永远缺一支口红,在这个时候,给心仪的女神送一支适合她的口红,表达自己的想念之情准没错。想到女神收到口红后欣喜的样子,还真有点小激动呢! 作为技术直男,怎样挑选色号才能不出错呢?上次送女神死亡芭比粉的翻车经历还历历在目。为此,在这段宅家的日子里,小编痛定思痛,制作出了一款口红分析神器:计算机根据女神的照片,自动识别其唇色,从而帮她挑选与唇色最匹配的口红色号。有了这个神器,我们就能凭借珍藏的女神美照,轻松分析出她们所匹配的口红款式,进而投其所好,从此沐浴在爱情的春风里!开始动工口红分析神器的制作步骤主要有:识别照片中嘴唇部分的颜色;对比口红颜色,筛选出适合的口红款式。识别照片中嘴唇颜色首先我们应该让机器准确识别出照片中嘴唇的位置。Google的AI框架TensorFlow可以帮助开发者搭建训练机器学习的模型。Google的AI框架TensorFlow能够帮助开发者搭建训练机器学习的模型。对于入门者而言,自己使用TensorFlow去训练模型不是一蹴而就的,

  • 为 React 预览版的未来做准备

    为了与React生态系统的合作伙伴分享即将到来的变化,我们正在建立正式的预览通道,我们希望这个过程能帮助我们对React的变化更有自信,并让开发者有机会尝试实验性的功能。 这篇文章将与框架、库或者开发者工具的开发者相关。主要使用React来构建面向用户的应用程序的开发人员不需要担心我们的预览通道。React依赖于蓬勃发展的开源社区来提交bug报告,pull请求和 提交 RFC。为了鼓励反馈,我们有时会分享包含未发布特性的React的特殊版本。由于React的真实来源是我们的 公共 GitHub 库,你可以构建一个包含最新变化的React副本。但是,对于开发人员来说,从npm安装React非常容易,因此我们有时会将预览版发布到npm注册表。最近的一个例子是16.7alpha版本,其中包括了早期版本的HookAPI。我们想让开发人员更容易地测试React的预览版,因此我们使用了三个独立的发布通道来正式确定我们的流程。发布通道 这篇文章中的信息也可以在我们的发布通道文档页面找到。每当发布过程发生变化时,我们都会更新该文档。React的每个发布通道都是针对不同的用例设计的:- Latest是稳

  • 数据分析师是怎样的一种人生?

    文|陈明一个工作了5-6年的数据分析师,是如何改变比码农还惨的人生?谨以此文向每一位奋斗在一线的数据分析师致敬!直到做数据分析师五、六年了,每每和家人朋友聊天,都还是会有人不懂我在做什么。家人:“数据分析?分析什么东西?”我:“哪里有数据,哪里就有我们,什么都可以分析。”家人:“是软件工程师吗?会编程吗?”我:“...不是,不太会。”家人:“那是管理层吗?”我:“还...还不到级别。”家人:“那是商务人员?做市场或销售。”我:“...也不是,不过我们辅助他们作决策。”家人:“决策不都是老板说了算吗?你们到底做什么?”我:“......来,我去给您加点水。”除了家人朋友,很多时候,同公司内部的人也会比较困惑,数据分析师究竟是做什么的。收集数据、整理数据表、做各种报表、写ppt、做挖掘模型、打小报告......每个人的理解都不一样。“小陈,你能给我发一个去年一年的xx页面的访问量吗?最好是以国家,行业,公司规模作为纬度的,浏览量和UV都要。”在数据分析师眼中,这样的场景早已司空见惯。由于我们对SQL等数据工具轻车熟路,很多部门就会直接找我们要数据,但并不会说清楚前因后果。这样不仅浪费分析师

  • 腾讯云智能推荐平台更新历史

    第1次发布发布时间:2022-08-1214:06:35 本次发布包含了以下内容: 改善已有的文档。 新增接口: FeedRecommend ReportFeedBehavior ReportFeedItem ReportFeedUser 新增数据结构: DislikeInfo DocItem FeedBehaviorInfo FeedUserInfo RecItemData UserIdInfo

  • day15

    学习过程与总结:   前两天老师给我们发布了项目任务 遇到的困难:   hive数据库里面的数据不能导出到MySQL数据库里 思维导图:  

  • 同步异步/阻塞非阻塞,进程的多种方法

    同步与异步 表达任务的提交方式 同步: 提交完任务之后会在原地等待任务的返回结果,在等待的过程不会做任何事。 异步: 提交完任务之后不原地等待,去干别的事情,有结果自动通知。 复制 阻塞与非阻塞 任务的执行状态 阻塞态 进程的三状态中的阻塞态。任务有IO操作时就会进入 非阻塞态 就绪态和运行态 """ 如果想要提高程序被执行效率 就要程序一直处于就绪态和运行态 """ 复制 同步异步和阻塞费阻塞结合使用 同步异步:用来描述任务的提交方式 阻塞非阻塞:用来描述任务的执行状态 同步+阻塞: 银行排队办理业务,期间不做任何事,就等着 同步+非阻塞: 银行排队办理业务,期间可以去做一些其他的事,但是人还在办理业务的队列中 异步阻塞: 在椅子上坐着,不做任何事 异步非阻塞: 在椅子上面坐着,在期间喝水、吃东西、工作、玩手机、、(这个过程就是把程序运行到了极致) 复制 创建进程的多种方式 我们常用的就是直接双击软件图标。 但是python代码也给我们提供了创建进程的方式 复制 multiprocessing模块 importtime frommultiprocessingimport

  • 友盟分享——Android App接入微信开放平台注意事项

    一、Android第三方应用接入微信开放平台的注意事项: 1.到微信开放平台官网申请正式的AppID(需通过审核),要填写包名、app签名的md5值。至于如何获取app签名信息,官方提供签名包apk (http://open.weixin.qq.com/download/sdk/gen_signature.apk) 2.如果只是测试或debug,可以用临时AppID(到官网申请但不需要通过审核)。   二、如何运行SDKDemo?(“分享到好友”之后没反应)自己的App呢? 1.Eclipse打开Window->Preferences,在弹出的对话框中,选择Android目录下的Build,指定Customdebugkeystore选项的路径为sdkdemo工程目录中的debug.keystore文件。 2.在自己的App里,记得把debugkeystore改回来(改成当前用户目录)。并且,debug和正式App的AppID记得切换。   三、如何App中实现微信分享? 1.申请AppID。 2.下载微信sdk库:libammsdk.j

  • HMI智能座舱自动化测试的必要性和紧迫性

    汽车业界把所有与驾驶员直接或间接进行交互的设备、控制器、执行单元都归在智能座舱范畴。直接交互的部分,包括仪表、信息娱乐系统、HUD、多功能方向盘、以及语音/手势/人脸等HMI人机交互接口;间接交互的部分,包括域控制器以及下属的控制单元等。 近年来,随着汽车智能座舱领域技术的飞速发展,智能座舱的产品功能和服务越来越丰富。同时,激烈的市场竞争环境也要求缩短产品的上市周期,SOP由从前的36个月缩短到9~12个月。对于OEM厂商(车厂)或Tier1来说,短周期下高复杂产品的品质控制,正面临着巨大挑战。导入自动化测试正是各个厂商在选择和尝试的重要解决方法。   导入自动化测试的必要性和紧迫性 l降低成本 自动化测试有助于在软件开发生命周期的早期发现错误,从而降低交付故障软件的风险,向市场提供高质量的产品,从而减少因故障导致的召回和检修成本。 l节省时间 虽然初期建立自动化测试需要花费大量的时间和人力,但是一旦自动化测试建立了,就可以重用这些测试。自动化测试的执行速度明显快于手动测试,不易出错,且节省人力。 l提高准确性 自动化测试每次都执行相同的步

  • 得到指定进程PID

    //#include"targetver.h" #include"stdio.h" #include<windows.h> #include<tlhelp32.h> intGetProcessIdByName(WCHAR*Namestr)//进程名取pid { HANDLEhSnapshot; PROCESSENTRY32pe32; pe32.dwSize=sizeof(pe32);//取大小 hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(hSnapshot!=NULL) { if(Process32First(hSnapshot,&pe32))//取第一个进程 { do{ if(strcmp((char*)Namestr,(char*)&pe32.szExeFile)==0)//对比 { returnpe32.th32ProcessID; } }while(Process32Next(hSnapshot,&pe32));//取第下一个进程 } CloseHand

  • idea乱码问题处理

    在idea设置那找到Compiler设置UserlocalbuildprocessVMoptions参数为-DarchetypeCatalog=internal-Dfile.encoding=UTF-8 作者: lostblog 出处: http://www.cnblogs.com/JAYIT/ 关于作者:专注服务器端开发 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接 如有问题,可邮件(sawyershaw@qq.com)咨询.

  • 记录~采集机器出现load异常

    症状描述 1、机器load增加从原来的不到1,疯狂增长到20+ 2、问题期间,磁盘容量正常、cpu正常、内存正常 解决办法 根据load问题,查找磁盘读写,使用iotop命令查看哪些进程磁盘读写异常 iotop命令参数 -o:只显示有io操作的进程 -b:批量显示,无交互,主要用作记录到文件。 -nNUM:显示NUM次,主要用于非交互式模式。 -dSEC:间隔SEC秒显示一次。 -pPID:监控的进程pid。 -uUSER:监控的进程用户。 快捷键 左右箭头:改变排序方式,默认是按IO排序。 r:改变排序顺序。 o:只显示有IO输出的进程。 p:进程/线程的显示方式的切换。 a:显示累积使用量。 q:退出。 查出flume.monitoring.type=org.apache.hadoop.metrics2.sink.flume.FlumeTimelineMetricsSink进程读写磁盘异常如下,修改java配置调高内存,并重启后问题解决。 9572be/4flume479.49K/s1302.39K/s0.00%6.21%java-Xmx100m-Dflume.monitoring

  • 每天一个topic -- net 和linux 路由表

      1.最近学习linux路由表相关知识现在总结如下:     系统查询路由信息的时候,分为两部先查路由缓存信息,然后查询路由表,routecash信息保存在一个全局的数据结构rt_hash_table net/ipv4/af_inet.c    inet_init()  ->   net/ipv4/ip_output.c  ip_init()      ->    net/ipv4/route.c     ip_rt_init() rt_hash_table=(structrt_hash_bucket*) alloc_large_system_hash("IProutecache", sizeof(structrt_hash_bucket), rhash_entries, (

  • One TamperMonkey Script Writing

    后续代码不执行 原生javascript的getElementById()和getElementsByTagName()方法来操作指定的元素时,如果被操作的元素不存在,则浏览器会抛出错误,并终止代码的运行,更新影响其后的代码运行。为了避免上述情况的发生,所以在无法确定要操作的元素是否存在时,可以利用下面的判断代码来先判断元素是否存在,如果判断元素存在时,再写入操作的流程代码。 if(document.getElementById("tt")){ //元素存在的操作代码 } 复制 如何检查网址元素是否包含某个特定字符串 location.href.indexOf("checkout")==-1//不包含, getElementsByTagName() 方法可返回带有指定标签名的对象的集合。 调用函数 <buttononclick="myFunction()">点我</button> 方法后面要括号。 If函数 if(条件){ 条件为true时执行的代码块 }else{ 条件为false时执行的代码块 } 复制 定义函数 <script> functio

  • 关于Numpy Array的使用技巧整理

    关于NumpyArray的使用技巧整理 1.数组的扩展:repeat&tile repeat方法:实现按元素复制扩展 输入:(需要扩展的array),repeats向量,轴向axis(用于多维array情形) 输出:扩展后的array,需要赋值才能保存,并不修改原array本身 关于repeats向量的使用: 若长度为1,则每个元素复制repeats次 若长度为array.shape[axis],则array[i]复制repeats[i]次 若长度与array.shape[axis]不等则报错 >>>importnumpyasnp >>>a=np.arange(5) >>>a array([0,1,2,3,4]) >>>a.repeat(2) array([0,0,1,1,2,2,3,3,4,4]) >>>np.repeat(a,2) array([0,0,1,1,2,2,3,3,4,4]) >>>a.repeat(range(5)) array([1,2,2,3

  • 课设记录-Day18

    今日工作 今天主要工作是完成了车辆信息的实时上传。 因为目前没有准确的车辆速度信息,只能模拟上传。 学习服务器主动推送的内容。 明日计划 总结这周的工作,完成汇报ppt。 考虑用服务器主动推送的实现方法。 完成服务器主动推送的内容。 今日总结 原来以为服务器和客户端的通信双向没有什么问题,但是我们平时做的都是从服务器拉去数据下来。 而这次需要的是服务器主动推送信息给所有客户端,看网上一般是采用第三方的SDK来实现的,例如:阿里云移动推送、腾讯信鸽推送、百度云推送、个推推送、极光推送、友盟推送。 目前不知道要采用哪种才能和我们服务器的express框架匹配。

  • 实验4:开源控制器实践——OpenDaylight

    实验4:开源控制器实践——OpenDaylight 一、实验目的 能够独立完成OpenDaylight控制器的安装配置; 能够使用Postman工具调用OpenDaylightAPI接口下发流表。 二、实验环境 Ubuntu20.04Desktopamd64 三、实验要求 (一)基本要求 利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器; 通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s。 (二)进阶要求 查找资料,整理和记录ODL控制器主要的RESTAPI文档,包括但不限于ODL提供的文档链接,获取拓扑的交换机、获取流表状态数量、获取特定交换机端口的状态、新增修改和删除流表等。    (1)ODL提供的文档链接          http://127.0.0.1:8181/apidoc/explorer/index.html  (2)获取拓扑的

  • 非参数检验

    百度百科的定义: 非参数检验(Nonparametrictests)是统计分析方法的重要组成部分,它与参数检验共同构成统计推断的基本内容。参数检验是在总体分布形式已知的情况下,对总体分布的参数如均值、方差等进行推断的方法。但是,在数据分析过程中,由于种种原因,人们往往无法对总体分布形态作简单假定,此时参数检验的方法就不再适用了。非参数检验正是一类基于这种考虑,在总体方差未知或知道甚少的情况下,利用样本数据对总体分布形态等进行推断的方法。由于非参数检验方法在推断过程中不涉及有关总体分布的参数,因而得名为“非参数”检验。 单样本: SPSS单样本非参数检验是对单个总体的分布形态等进行推断的方法,其中包括卡方检验、二项分布检验、K-S检验以及变量值随机性检验等方法。 独立样本: 两独立样本的非参数检验 两独立样本的非参数检验是在对总体分布不甚了解的情况下,通过对两组独立样本的分析来推断样本来自的两个总体的分布等是否存在显著差异的方法。独立样本是指在一个总体中随机抽样对在另一个总体中随机抽样没有影响的情况下所获得的样本。 SPSS中提供了多种两独立样本的非参数检验方法,其中包括曼-惠特尼U检验

相关推荐

推荐阅读