当前位置: 首页 > news >正文

为什么游戏服务端用开发效率低的C++来写,其他语言无法胜任吗?

为什么游戏服务端用开发效率低的C++来写,其他语言无法胜任吗?


在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「C++的资料从专业入门到高级教程+工具包」,点个关注,全部无偿共享给大家!!!

在评论区回复“888”之后私信回复“888”,即可拿走。为什么「多数」游戏服务端是用 C++ 来写呢,我觉得这个「多数」很可能是错的,没有任何数据支撑C++写的游戏服务器占大多数。

但是我自己进鹅厂以后一直是用C++写游戏服务器,而且是纯C++,我了解的不少团队都是纯C++,也有极少数团队换成了golang,我参加评审的时候还碰到过用java写游戏服务器的项目。x

下面是个人的一些见解:

1、游戏引擎不纯粹
游戏引擎并不是那种特别短小精悍、几个神奇的算法加起来构成稳定健壮的系统的那种程序。比方像Git、Lua、SVN类似的程序或者系统,虽然看似高深,但是功能边界非常清晰。

现代游戏引擎,除了一些小而美的2D引擎,都是无可避免地走向越来越复杂、越来越集成化的方向。很多功能早就脱离了“渲染”这个核心任务,而是要考虑逻辑扩展、编辑器接口、资源管理、资源编辑器的集成、嵌入脚本引擎等等繁琐的功能中去。

而且很多引擎还要从底层支持UI系统,UI这东西可真不小,而且是典型的特别适合用经典面向对象实现的系统。

2、规范约束,释放C++的潜能
既然如此,如何进行良好的工程管理,如何让大量思想不完全一致的人协作起来,是更重要的任务。如果其他人的思路和你不一致,总不能指责别人“你语言没用对”吧……怎么才算用对,难道你用的就一定对?

C++在统一观念上不见得更好,甚至问题更大,因为支持多种编程范式……但是如果在工程中做出良好的规定,什么能用,什么不能用。经过限制之后C++的语法特性真的能解决很多问题,毕竟有原生的继承,好用的泛型,特别是C++11之后泛型变得越来越好用了。2baf94dbb747b52ebdd5cacdbbc5bd09.jpeg

相关文章:

  • Go语言程序设计-第5章--函数
  • 【Swagger】常用注解的使用、SpringBoot的整合及生产环境下屏蔽Swagger
  • [每周一更]-(第43期):Golang版本的升级历程
  • linux安装anaconda
  • 自定义html5中日期选取器的样式
  • uniapp-H5项目的坑
  • 经典卷积神经网络-VGGNet
  • Qt 中使用 MySQL 数据库保姆级教程(下)
  • Springer build pdf乱码
  • Android 理解Context
  • Oracle-深入了解cache buffer chain
  • Postman常见问题及解决方法
  • 目标检测-One Stage-SSD
  • go mod 命令详解
  • C# 如何读取Excel文件
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • CSS魔法堂:Absolute Positioning就这个样
  • C学习-枚举(九)
  • ESLint简单操作
  • Java程序员幽默爆笑锦集
  • js学习笔记
  • mongo索引构建
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Vue2.0 实现互斥
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 使用 Docker 部署 Spring Boot项目
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • hi-nginx-1.3.4编译安装
  • Mac 上flink的安装与启动
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​2020 年大前端技术趋势解读
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #include<初见C语言之指针(5)>
  • #laravel 通过手动安装依赖PHPExcel#
  • #预处理和函数的对比以及条件编译
  • $GOPATH/go.mod exists but should not goland
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (day6) 319. 灯泡开关
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (强烈推荐)移动端音视频从零到上手(上)
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (一)kafka实战——kafka源码编译启动
  • (一)SpringBoot3---尚硅谷总结
  • (转)负载均衡,回话保持,cookie
  • *2 echo、printf、mkdir命令的应用
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .sh 的运行
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解