从java迁移到c++
Make the move to c++ from java?
我学习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++在游戏方面有一些关键的优势:
- 确定性内存使用和定时。
- 确定性运行时性能(可能更快)
前两个是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++确实应该在你的工具带中)。- 将项目从 Debian 8 Xenomai 2.x 迁移到 Debain 9 Xenomai 3.x
- 从 MFC C++ 6.0 应用程序迁移到 VS 2005
- 将预处理器配置定义迁移到 constexpr,而不会造成内存膨胀
- 如何在 MSVC C++中迁移 x64 的 x86 代码
- "acceptor"在从TCP迁移到UDP时不是"boost::asio::ip::udp
- 将代码从 32 位迁移到 64 位时出现问题 Visual Studio 2010
- 如何在新设计中迁移需要几个额外参数的函数
- 如何将 C 函数指针迁移到C++?
- WDK 如何迁移到 v4 打印机驱动程序
- 迁移到 Visual Studio 2015 时 ATL 不起作用
- 从 calloc() 迁移到 new
- 如何将C++项目从 32 位迁移到 64 位以支持 MAC OS 10.14(莫哈韦)?
- 从固定函数迁移到 GLSL OpenGL:我应该如何修改我的视图(lookAt)矩阵和透视矩阵?
- C++从多线程 CPU 程序迁移到 GPU
- 自从迁移到 64 位以来,我在随机 glVertexAttribArray 调用中收到来自 nvoglv64.dll 的
- 如何管理和迁移C++库?
- 光纤可以在线程之间迁移吗?
- 将缓存线迁移到另一个核心
- 迁移 CMake 会导致多阶段 Docker 构建
- 从Qmake迁移到Cmake