Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >游戏公司如何处理DLL资源?

游戏公司如何处理DLL资源?
EN

Game Development用户
提问于 2015-03-14 13:58:28
回答 4查看 2.8K关注 0票数 4

这个问题完全是基于好奇心。这些年来,我在我的个人电脑上玩了很多游戏,而且刚刚意识到了一种趋势,在所有的游戏(大多数,如果不是全部)。在游戏资源中,或者换句话说,在运行游戏的可执行文件旁边,从来没有动态链接库(,动态链接库)二进制文件。这意味着这些游戏是通过静态链接到源文件并将它们全部转储到主可执行文件中来创建的。我确信这些游戏项目中的大多数:使命召唤、魔兽世界、分裂细胞和在这里包括其他任意的例子,在规模上都是巨大的,并且有数百个较小的儿童项目。如果假设那些相同的项目(如API等)可以打包到DLL中,而不是明显的静态链接,我可能也不会错。如果我好像在胡扯,我很抱歉,但这是有意义的,很快就会出现的。接下来,我想讨论游戏图形API的使用。大多数游戏使用DirectX,为什么与这个问题无关;相反,是如何使用的。我是否可以安全地假设上述游戏也是静态链接到DirectX的呢?更重要的是,为什么?这种固有的传统特征背后是否有逻辑上的理由?游戏公司是否静态地将他们所有的资源连接起来?再说一遍,为什么?为什么不使用DLL呢?

希望有人能回答这个问题,已经存在或目前在场,在一个实际的游戏公司工作。哦,我把这些都打到我的手机上了,所以我对任何错误表示歉意。

EN

回答 4

Game Development用户

回答已采纳

发布于 2015-03-14 14:43:58

在第一部分中,很多现代游戏都是用C++编写的,它支持名称空间。命名空间允许将相关代码的集合分组在一个整体的一部分中。因此,您可以拥有一个名称空间集合,如'Render‘、'Input’、'AIProcessor‘等(注意:我正在编造这些)。

将这些子项目构建到主项目中,所有这些子项目都可以在不忘记在安装程序中包含DLL的情况下交付(想象一下,如果开发人员在发布时忘记在安装程序中包含一个子项目DLL --在开发人员发布包含缺失DLL的修补程序之前,游戏不会为最终用户工作!)

现在,我只和一个羽翼未丰的独立工作室合作,但我们的游戏中有“RenderEngines”、“SystemEngines”、“Interfaces”等名称空间。将它们作为名称空间包含起来要容易得多,而不是将它们导出到它们自己的DLL中,特别是当我将下一个构建交付给团队时--我经常会遇到丢失内容文件的问题。

至于DirectX,通常在安装(从观看安装程序开始)时,他们会问您是否希望安装游戏所用的特定版本的DirectX。这将被安装到计算机上的一个预定义位置,游戏在运行它时加载DirectX DLL。

即使您没有安装特定版本,DirectX安装也足够聪明,可以引用另一个版本并使用该版本。在需要一组非常具体的DirectX版本才能正常工作之前,我曾经遇到过一个游戏的问题,否则如果我开始摆弄图形设置,它就会崩溃。

票数 4
EN

Game Development用户

发布于 2015-03-14 14:29:09

DirectX是一个windows,在C:\windows目录中有一个相应的DLL,类似于opengl32.dll。去问问依赖步行器,你不相信我。

其余部分可能是通过脚本处理的,这些脚本不必是DLL,只驻留在其余的资产中。

票数 1
EN

Game Development用户

发布于 2015-03-19 23:23:07

在共享库中封装游戏模块可以减少开发期间的编译时间。如果模块之间的API是精心设计的,它不会经常更改。这允许您只重新编译您正在处理的模块。

共享库还允许多个应用程序共享,从而节省磁盘空间(并且在一定程度上也节省了由多个应用程序加载时的内存)。它们也可以独立于使用它们的应用程序分发。

但是,将游戏模块打包到共享库中也会产生倒退。在我看来,游戏的主要原因是:表现。调用共享库函数涉及到调用普通函数的轻微开销(在函数地址表中进行额外查找)。动态链接也会阻止全局优化。如果您设置您的构建,以便编译器看到所有源文件,那么它可以更积极地执行优化。这需要静态链接。

有更多的参数赞成/反对共享库,其中一些已经在其他答案中提到。但在我看来,这是主要的问题。

票数 1
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/96655

复制
相关文章
如果你想要更多的棉花糖
1966年到1970年代,斯坦福大学教授Walter Mischel对幼儿园的数以百计的孩子做了一个实验:
麦时
2019/07/22
4750
甜蜜地狱,拿起棉花糖冲击枪对战甜甜圈僵尸吧!
今年早些时候,总部位于温哥华的独立游戏开发商Virtro发布了其首款VR游戏《Run Dorothy Run》(奔跑吧桃乐丝),支持PSVR。近日,Virtro又将其第二款VR游戏《Zombie Do
VRPinea
2018/05/18
5830
【分享】解决VPSS设计中没有media设备的问题
使用hdmi-rx, vpss, frmbuf_write,设计了video输入的pipeline。使用PetaLinux基于XSA做了linux,编译成功,启动也成功。
hankfu
2022/05/09
8200
Java中的语法糖
语法糖方便了程序员的开发,提高了开发效率,提升了语法的严谨也减少了编码出错误的几率。我们不仅仅在平时的编码中依赖语法糖,更要看清语法糖背后程序代码的真实结构,这样才能更好的利用它们。。
哲洛不闹
2018/09/19
7250
什么是语法糖,如何解糖?
👆点击“博文视点Broadview”,获取更多书讯 语法糖(Syntactic Sugar)也称糖衣语法,是由英国计算机学家Peter.J.Landin发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但更方便程序员使用。 简而言之,语法糖让程序更加简洁,有更高的可读性。 有意思的是,在编程领域,除了语法糖,还有语法盐和语法糖精的说法,篇幅有限,这里不做扩展了。 我们所熟知的编程语言中几乎都有语法糖。 很多人说Java是一个“低糖语言”,其实从Java 7开始。Java在语言
博文视点Broadview
2022/08/29
1.1K0
什么是语法糖,如何解糖?
Java中的语法糖
我们在日常开发中经常会使用到诸如泛型、自动拆箱和装箱、内部类、增强 for 循环、try-with-resources 语法、lambda 表达式等,我们只觉得用的很爽,因为这些特性能够帮助我们减轻开发工作量;但我们未曾认真研究过这些特性的本质是什么,那么这篇文章,cxuan 就来为你揭开这些特性背后的真相。
程序员Leo
2023/08/02
1860
Java中的语法糖
谈谈Java中的语法糖
Java作为一种与平台无关的高级语言,当然也含有语法糖,这些语法糖并不被虚拟机所支持,在编译成字节码阶段就自动转换成简单常用语法。
Java团长
2018/08/06
7940
TPM是如何改善设备问题的?
TPM(Total Quality Management)是一种管理方法,旨在通过全面的质量管理来改善设备和系统的性能和可靠性。通过TPM,组织可以建立高效的质量管理体系,降低故障率、提高设备利用率和降低成本。
用户9972271
2023/04/11
5400
Scrapy中Xpath的使用
请注意,本文编写于 990 天前,最后修改于 990 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
9250
如何解决代码中if…else 过多的问题
if...else 是所有高级编程语言都有的必备功能。但现实中的代码往往存在着过多的 if...else。虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性、可维护性造成很大伤害,进而危害到整个软件系统。现在软件开发领域出现了很多新技术、新概念,但 if...else 这种基本的程序形式并没有发生太大变化。使用好 if...else 不仅对于现在,而且对于将来,都是十分有意义的。今天我们就来看看如何“干掉”代码中的 if...else,还代码以清爽。
java架构师
2019/03/20
3K0
如何解决eclipse中的中文乱码问题[通俗易懂]
eclipse中文乱码都是因为字符编码与默认的编码不符合导致的,有很多的方法可以解决,不需要安装任何插件就可以搞定。针对不同的情况,需要使用不同的方案,下面就针对一些案例讲解如何解决乱码问题。解决乱码问题的主要思路是设置正确合适的编码,如果不知道目标文件原本的编码,可以进行一定的尝试,通常尝试下GBK和UTF-8这两个编码即可。
全栈程序员站长
2022/07/21
7.9K0
如何解决eclipse中的中文乱码问题[通俗易懂]
如何解决代码中 if…else 过多的问题?
if...else 是所有高级编程语言都有的必备功能。但现实中的代码往往存在着过多的 if...else。虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性、可维护性造成很大伤害,进而危害到整个软件系统。现在软件开发领域出现了很多新技术、新概念,但 if...else 这种基本的程序形式并没有发生太大变化。使用好 if...else 不仅对于现在,而且对于将来,都是十分有意义的。今天我们就来看看如何“干掉”代码中的 if...else,还代码以清爽。
杰哥的IT之旅
2020/06/18
2.2K0
Java 中的语法糖,真甜。
我们在日常开发中经常会使用到诸如泛型、自动拆箱和装箱、内部类、增强 for 循环、try-with-resources 语法、lambda 表达式等,我们只觉得用的很爽,因为这些特性能够帮助我们减轻开发工作量;但我们未曾认真研究过这些特性的本质是什么,那么这篇文章,cxuan 就来为你揭开这些特性背后的真相。
cxuan
2020/12/17
5200
Java 中的语法糖,真甜。
如何解决硬件设备上小程序运行安全问题
当前,在百度、支付宝、今日头条等各大巨头都把持小程序技术尚未开放的情况下,市面上可商用的小程序技术选择面非常狭窄。与此同时,企业仍希望实现 “一次开发,多端运行”,从而真正达到降本增效。今天为大家分享一下:离开各大巨头,如何帮助企业打破平台的限制,让任何企业的手机APP、桌面应用软件均可以嵌入组件获得小程序安全运行和上架能力。
Lydiasq
2023/01/10
7020
如何解决硬件设备上小程序运行安全问题
Python 中甜甜的语法糖
首先解释一下语法糖是什么意思,其实就是简化我们的代码,让那些复杂的操作交给解释器来完成,这些语法糖刚开始学的时候觉得很难记住,如果看别人写的语法糖更容易蒙圈,还会嘀咕别人装什么装,但是一旦自己掌握,啧啧啧,一发不可收拾,可谓真香。
wsuo
2020/07/31
1.6K0
Python 中甜甜的语法糖
Python中的语法糖甜不甜?
语法糖(Syntactic Sugar),也被译为糖衣语法,是由英国计算机科学家彼得·约翰·兰大(Peter J.Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说,使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
测试蔡坨坨
2022/09/26
1K2
Python网络爬虫(四)- XPath1.XPath2.XPath在python中的应用
XPath 即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。它使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。 XPath语法
Python攻城狮
2018/08/23
1.4K0
Python网络爬虫(四)- XPath1.XPath2.XPath在python中的应用
如何解决联邦学习中的通信开销问题?
联邦学习(Federated Learning)允许用户在将数据保留在本地端不共享的前提下形成一个联合体训练得到全局模型,从而有效解决数据隐私和安全保护问题。同时,还可以有效应用联合体各方用户所掌握的标注数据,解决标注数据缺乏的问题。在联邦学习架构的每一轮学习过程中,中央服务器在当前全部客户端中选定一些客户端子集并将全局模型下发给这些客户端子集。然后,这些客户端子集在本地运行随机梯度下降(SGD)等优化处理步骤后生成本地模型。最后,客户端子集将本地模型发送回中央服务器。反复执行训练过程直到模型收敛,生成最终的全局模型。
机器之心
2021/01/26
3.1K0
如何解决联邦学习中的通信开销问题?
前沿 | 如何解决深度学习中的多体问题
选自Medium 机器之心编译 参与:乾树 多个智能体如何协同工作才能高效完成任务?深度学习领域中的多体问题就像物理领域中的一样难解。很多研究机构正致力于研发先进技术处理多代理系统的问题。 「多体问题」(又叫 N 体问题)是看似简单,实际上在当今数学中极难攻克的问题。多体问题是指多个相互作用的实体。在物理学中,任何三体问题都没有一个封闭的形式或解析解(见:https://en.wikipedia.org/wiki/Three-body_problem)。像这样简单的问题反映了我们分析工具的局限性。这并不意味
机器之心
2018/05/08
1.3K0
前沿 | 如何解决深度学习中的多体问题
[译]Go中的循环依赖:如何解决这个问题
作为一个 Golang 开发,你可能在项目中遇到过包的循环依赖问题。Golang 不允许循环依赖,如果检测到代码中存在这种情况,在编译时就会抛出异常。本文会讨论循环依赖是如何发生的以及如何处理。
薯条的编程修养
2022/08/10
11.4K0
[译]Go中的循环依赖:如何解决这个问题

相似问题

棉花糖设备中的图像保存问题

22

从棉花糖和棉花糖设备以上的onCreate外部存储中读取文件

11

Android棉花糖通知问题

22

相机意图显示棉花糖和牛油糖中的问题

42

如何在棉花糖设备上添加指纹认证

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文