首页 > 编程语言 >ET介绍——为什么使用C# .net core做服务端?

ET介绍——为什么使用C# .net core做服务端?

时间:2023-05-18 20:22:19浏览次数:38  
标签:core C# 代码 支持 编译 C++ ET 服务端

为什么使用C# .net core做服务端?

游戏服务端从早期的单服到分布式,开发越来越复杂,对稳定性,开发效率要求越来越高。开发语言的选择也逐步发生了变化,C 到 C++ 到 C++ + PYTHON 或者C++ + LUA 到现在 很多公司开始使用erlang,go,java,c#。目前是一个百花齐放的局面。

但是如果是要你重新做一个网游server,不考虑对公司或者已有的东西兼容性,你会怎么选择?我仔细想了一下这个问题,大概有这个几个方面需要考虑:

1. 语言的稳定性(致命性)

游戏服务器的特点是高负载低延时。所以一般服务端进程都是带状态的,一旦挂掉就意味着数据丢失,这点是无法容忍的。

2. 运行时热更(致命性)

游戏服务器逻辑极其复杂,很容易出现bug,但是又不能经常停服,所以热更修复bug就显得十分必要。出现错误开发人员可以立即编写代码,然后热更修复,线上用户完全感觉不到。

3. 是否有协程支持(重要性5星)

分布式服务器架构,进程与进程之间必然会有大量交互。由于游戏逻辑很难拆分成多线程,所以一般来说都是逻辑单线程。如果没有协程支持,必然产生大量回调,代码维护会变得非常困难。

4. 编译速度(重要性5星)

使用c++开发,30%的时间都浪费在编译上。假如编译很快或者不需要编译,必定大大提高开发效率。

5. 跨平台(4星)

一般游戏服务器都架设在linux上面。但是平常开发,使用windows会更加方便,如果跨平台,开发以及测试效率会大大提升,并且不需要单独搞一个开发机,本机电脑就可以满足平常开发

6. 可阅读性,可重构性(3星)

代码可以重构能大大减轻写代码的难度

7. 库是否齐全,生态是否完善(3星)

库齐全,生态好,自己需要造的轮子就少

8.跟客户端统一语言(3星)

客户端服务端共用语言,优势十分明显,很多代码可以复用,逻辑程序员不再需要区分前后端,双端都可以写,一个人即可完成一个功能,大大减少了沟通的时间成本。

9. IDE的支持(3星)

代码提示,重构等支持,优秀的IDE能提高几倍的开发效率。

10. 语言的性能(1星)

目前服务器性能都不是太大问题,不过性能好总比性能差要强。

语言C#C/C++JavaGoLuaPythonErlang
稳定性 稳定 容易挂 稳定 稳定 稳定 稳定 稳定
运行时热更 支持 较难支持 支持 不支持 支持 支持 支持
跨平台 支持 较难支持 支持 支持 较难支持 支持 支持
协程 需要自己实现 支持不好 支持 支持 支持 支持
编译速度 不需要编译 不需要编译
阅读性重构性 一般 一般
游戏库跟生态 一般 一般 一般
客户端统一语言 Unity Unity、UE4 暂无 暂无 Unity、UE4 UE4 暂无
IDE的支持 普通
语言的性能 极好 很差

从表格可以看出:

  1. C/C++稳定性差,编译速度慢,存在致命缺陷
  2. Go不支持热更,由于不支持泛型,重构性较差,无法跟客户端共享代码,存在致命缺陷
  3. Java协程支持差,无法跟客户端共享代码
  4. Lua库少,性能差,代码可阅读性可重构性差,跨平台完全依赖C/C++,处理起来麻烦,ide支持差
  5. Python 性能很差,代码可阅读性可重构性差,无法跟客户端共享代码,ide支持差
  6. Erlang 性能差,函数式风格不好上手,ide支持差
  7. C# .net core各个方便都非常优秀,不过跟UE4无法共享代码

当前Unity是最火的游戏引擎,C#服务端搭配Unity完全是天作之合,基本上找不到缺陷。

ET开源地址地址:egametang/ET: Unity3D Client And C# Server Framework (github.com)   qq群:474643097

标签:core,C#,代码,支持,编译,C++,ET,服务端
From: https://www.cnblogs.com/flamesky/p/17413190.html

相关文章

  • python包管理工具:Conda和pip比较
    Conda和pip通常被认为几乎完全相同。虽然这两个工具的某些功能重叠,但它们设计用于不同的目的。Pip是PythonPackagingAuthority推荐的用于从PythonPackageIndex安装包的工具。Pip安装打包为wheels或源代码分发的Python软件。后者可能要求系统安装兼容的编译器和库。Conda是......
  • torch中reshape和view
    回答老师讲到torch中reshape和view是一样的,看了torch文档,并实践了一下,事实上还是有一点点区别的,区别在于被操作的那个tensor是否是连续的,当连续时两者一致,当不连续时reshape会返回新的tensor,该tensor与原来的再无关联,修改reshape返回的tensor不会变更原来的,比如:a=t.rand(3,3)b......
  • html+css重点内容
    复习yuanhtml1.web组成html-结构层css-表现层js-行为交互2.html:标签元素标记分类:单标签:<标签名:属性=“属性值”属性=“属性值”>/加不加都可以 双标签:<标签名:属性=“属性值”></标签名> 常用单标签:brhrimginput 常用双标签:divph6-h1spana3.元素类型: ......
  • 打卡 c语言趣味编程 求最小公倍数
    问题描述:求任意两个正整数的最小公倍数(LCM)。思路:输入两个正整数,假设为num1和num2。定义一个变量lcm并初始化为较大的那个数(即lcm=max(num1,num2))。进入一个循环,循环条件为lcm不能同时被num1和num2整除。在每次循环中,将lcm增加1。循环结束后,lcm的值就是最小......
  • 关于Nmap扫描时报错:‘utf8’ codec can’t decode byte 0xc1 in position 0:invalid
    Nmap的官方下载地址:https://nmap.org/download.html参考文献:https://blog.csdn.net/weixin_45451139/article/details/105289026https://blog.csdn.net/qq_39855437/article/details/126541352我的用户名是中文,要改用户名。荣耀电脑改不了,而且只有这一个用户。于是我建了一......
  • 全同态(Fully Homomorphic Encryption, FHE)和半同态(Partially Homomorphic Encryption,
    全同态(FullyHomomorphicEncryption,FHE)和半同态(PartiallyHomomorphicEncryption,PHE)全同态加密(FHE)是指一种加密方案,可以在加密状态下进行任意多次的加法和乘法运算,并且可以得到与明文数据相同的结果。这意味着可以在加密的数据上进行复杂的计算,而无需解密数据。FHE是同态......
  • linux DHCP
    目录一、DHCP概念 二、DHCP工作过程三、DHCP实验              一、DHCP概念概念:动态主机配置协议,自动为计算机分配tcp/ip参数DHCP的优点:1.减少管理员的工作难度2.避免错误的可能3.避免IP......
  • OpenCloudOS 如何基于 eBPF 实现容器级别的TCP 连接监控?
    eBPF技术的出现,使得内核的资源监控更加的便捷、高效,容器化监控也更加适用于云原生的场景。基于eBPF实现的可观测性,可以无需修改内核源码或者加载内核模块,安全高效的扩展内核功能。本文,将从网络的角度介绍如何基于eBPF,实现容器级别的TCP连接监控。 一、技术背景OpenClou......
  • Apache Log4j2远程代码执行漏洞(CVE-2021-44228)修复
    1、演示说明:最近在项目中遇到用户扫描es时发现ApacheLog4j2远程代码执行漏洞(CVE-2021-44228),该漏洞具体原理不再赘述,此处分享解决过程。2、演示环境:(1)系统版本:#cat/etc/redhat-release(2)JDK版本:#java-version(3)es版本:#./elasticsearch-V3、下载命令行扫描工具:下载地址:https://gi......
  • nginx出现: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
     问题情况登陆服务器之后进到nginx使用./nginx-sreload重新读取配置文件,发现报==nginx:[error]open()“/usr/local/nginx/logs/nginx.pid”failed(2:Nosuchfileordirectory)==错误,进到logs文件发现的确没有nginx.pid文件如下图解决方法执行下列命令/usr......