游戏开发是一个比拟宽泛的话题,说哪种语言更好其实不适合,应该是那种语言更适宜那种档次的解决。在进行数据量比拟大的游戏开发时,更占优势的无疑是 C ++ 这门编程语言!之所以这样讲,以我的教训来看次要是两个方面!
几年前,我用 Java 编写了一个过程 3D 建模应用程序,该程序可能解决数百万个多边形,它应用了智能分区零碎,该系统生成线程以最佳利用所有 CPU 内核。如此沉重。
我能够必定地说,Java,甚至 C#进行海量数据计算的最大问题不是该语言解释的理论速度(您会想晓得,然而这些语言的速度简直与 C ++ 一样快),然而内存治理和垃圾回收是影响游戏的关键因素。
《2020 最新 Java 根底精讲视频教程和学习路线!》
不足对内存的控制权,导致软件耗费过多的内存,同时产生由垃圾收集器引起的不规则的滞后。当有足够的可用内存时,软件会安稳运行,然而达到限度(无论保留的内存块大小如何,都会达到限度)时,用户会遇到滞后,可能须要几分之一秒甚至几秒钟的工夫,这是十分蹩脚的。
因为不足对内存的管制,因而内存管理器有时会保留微小的内存块,您晓得这些内存块将永远不会再被应用,并且您无奈像 C ++ 中那样立刻强制开释这些内存块。
后果是该软件的内存效率非常低。
主动垃圾收集系统对数据没有更高的语义了解,因而它应用在大多数状况下“最佳”工作的策略,然而这种策略效率很低。在 C ++ 中,您能够依据特定用处调配和开释内存块,并使内存治理更无效。然而,您须要本人实现所有工作,并且搞砸的可能性更大,这会对 C ++ 产生致命的结果。
在 Java / C#中,您实际上不用关怀。这是一个懈怠的程序员性能,但这是一种更平安的办法。我心愿看到未来的垃圾回收器实现计划,以实现对内存的更多管制。您还能够应用自定义内存管理器自行实现所有操作,但这将是一个不切实际的解决方案,但值得思考。
用 Java 或 C#编写代码会产生更柔美的代码,并使您比 C ++ 更快地开发软件。
然而当须要为 GPU 提供海量数据并最大水平地优化所有内容时,最好应用 C 或 C ++ 间接运行代码,这能够给您更多的控制权,并使您能够更好地优化代码的性能敏感局部。
将 Java / C#用于逻辑和治理将是一个好主见(在某些可能是大多数代码的应用程序中)。只有您应用视频游戏引擎本人实现所有对性能敏感的工作,那么应用 Java 或 C#等托管语言就能够了,甚至齐全能够。
可怜的是,作为 Unity 开发人员,我能够告诉您,当您须要应用 C#执行对性能敏感的计算时,可能会遇到这种状况,这可能表明该语言的局限性。
然而,您能够在应用程序中应用自定义内存管理器,并明智地设计代码,以使其更容易在语言解释器中更无效地运行,从而取得良好的性能,然而有时用 C / C ++ 编写敏感局部可能会更好。
另外如果你想更好的晋升你的编程能力,学好 C 语言 C ++ 编程,以便更好从事编程类工作(游戏开发)的话!那么你很侥幸~