从java迁移到c++

Make the move to c++ from java?

本文关键字:c++ 迁移 java      更新时间:2023-10-16

我学习java大概有5个月了,在这段时间里,我主要是在制作游戏。我用java2D制作了一款还算不错的游戏,但我想继续做更大更好的东西……3 d。我开始学习LWJGL(基本上是OpenGL)。在我深入学习java和3d之前,我应该转向c++吗?指针对于大型程序真的那么重要吗?我还能用c++做任何跨平台的东西吗?还是我被窗户困住了?如果我被windows困住了,我应该选择c#吗?

谢谢。

当我说还不错的时候,我的意思是很好,在我看来。如果你想看看它,判断我在2D体验中的位置,你可以这样看:http://www.thenewboston.com/forum/viewtopic.php?f=119& t = 13249

所以Java适合大规模的游戏开发?

在我深入学习java和3d之前,我应该转向c++吗?

学习一门以上的语言是值得考虑的。

指针对大型程序真的那么重要吗?

这个问题毫无意义,所以"no"。

然而,c++在游戏方面有一些关键的优势:

  1. 确定性内存使用和定时。
  2. 确定性运行时性能(可能更快)

前两个是Java垃圾收集器的副作用,可能是Java游戏(或任何应用程序)的问题。他们是否重要完全取决于你。

第三个是JIT的副作用。Java可能不会立即JIT所有的方法(导致一个粗糙的开始),或者根本不会(在客户机VM上)。此外,对于真正的高端硬件使用,它可能无法充分利用(如果有的话)额外的硬件,例如矢量指令(SSE2、3、4、4.1等)。

我还能用c++做任何跨平台的东西吗?还是我被窗户困住了?如果我被windows困住了,我应该选择c#吗?

是的,努力。c++本身是跨平台的,但那只是一种语言。其余的在图书馆。

只要满足您的需要,就可以使用Java。如果你发现自己想做的事情无法用Java完成,那我就会考虑其他选择,除非你的游戏开发需要学习编程语言。如果是这种情况,那么无论如何,请尝试使用c++。

我能想到的人们从Java转向非字节码编译语言的主要原因是性能和内存使用。所以你应该考虑一下这对你来说是否是个问题。

关于c++的跨平台能力:你绝对可以编写可移植的c++代码,可以在多个平台上编译。有些游戏库可以在多个平台上运行,比如SDL或GLUT。你可以用这些工具编写一次游戏,然后针对多个平台进行编译。

这类问题更适合游戏开发堆栈交换网站,但我的答案是:

关于你应该使用什么语言:什么都可以。是的,c++更快。但是,如果这是你第一次编写c++,那么编写"好的"c++代码也会更加困难。如果你习惯了c#或Java之类的语言,那么在c++中很容易犯很多错误。如果你以前从未使用过c++,那么用c#、Java、Python或其他语言编写游戏要比用c++容易得多。

如果你做Java,你可以让它跨平台。我不是百分百支持c#,因为Mono确实存在,但我不确定用c#编写的游戏的跨平台功能状态。c++也是跨平台的。

总的来说,如果你以前从未做过跨平台编程,那么当你试图开发你的软件时,你可能会遇到一些障碍。你对一门语言掌握得越熟练,学习起来就越容易。


话虽如此,我还是要提醒你不要直接进入3D游戏领域,因为你说过你根本没有完成过2D游戏。

3D游戏比2D游戏要困难得多,你在制作游戏时不应该担心编程问题。你应该专注于编写游戏本身。您将学习如何在实际设计和创建游戏的各种功能时对游戏进行编程。你不应该反过来做。

好的,请记住c/c++是可移植的编译语言,但DirectX等3D库则不是。我认为开始3D 游戏编程的好地方是使用c/c++和OpenGL。但是,编程只是游戏开发的一部分,还有很多选择。如果你想制作游戏,你可以使用低成本的引擎,如torque3d或Unity 3D,它们使用易于学习的脚本语言,并拥有你所需要的一切,如物理,音频和网络支持。如果你真的想知道如何编程3D图像,这与游戏开发不同,那么像c/c++这样的低级语言搭配OpenGL是一个很好的起点。

同时学习3D编程和c++是一个艰巨的任务。
当然,用c++编写跨平台游戏是有可能的,但你真的不想这么做。认真。
如果你真的想学习的话,你可以使用跨平台的框架,但是再增加一项需要学习的东西肯定会让你失望,在你意识到这一点之前,你就会想成为更令人兴奋的东西,比如注册会计师。

我的建议是:在你学习3D的时候坚持使用Java。在这个过程中,你会学到很多通用的编程技巧(和数学),但语言不会妨碍你。如果你需要,或者只是想学习,你可以随时转向c++(或其他语言)。

没有"太深"这回事。你是否担心你可能学了太多>?这不会发生。

如果您想从Java阵营的支持者那里得到一堆理由,请考虑查看http://www.java-gaming.org。除此之外,您将看到一些关于这个主题的论坛帖子(c++ vs java),以及资源和示例清单。

一些使用Java的"大"游戏:Minecraft, RuneScape,还有更多。

Java允许并发,这是一个很大的优势,因为有越来越多的多核处理器在那里。JIT速度很快,并且可以动态地进行预编译无法做到的优化。

我建议你学习c++,有一个重要的原因。视角。

如果你不尝试c++,当你最终学会时,你永远不会意识到c#有多好。:)

我用c++学了20年。我花了很多年坚持,没有放手。最终意识到其他软件公司正在用更高效的语言和更好的sdk来吃我的午餐。终于放手的感觉真好。(虽然我仍然坚持完全编译的c#和确定性内存管理这些天)。

我只是半当真。作为一名游戏或系统开发者,c++确实应该在你的工具带中)。