By using this site, you agree to our Privacy Policy and our Terms of Use. Close

I don't really know where to start so I'll just pick off random topics that spurred up in this thread:

1.
Directx vs Opengl: These are just libraries (with different standards/API calls) that aid programmers in 'creating' their graphics. Originally, they are just simple coordinate systems used for creating simple shapes, but over the years people amended the libraries to create support for textures, aliasing and even animation. If you are creating a new system architecture with a newly developed graphics card (Like a PS4 or Xbox720), there won't be a DirectX or Opengl support for your system. The existing library can still probably do simple stuff like Draw or CreateTexture if the instruction sets are still there but most of the other functionality like Texture Copy are probably not optimized or non-useable. This is where architect/GPU programmers come in, they will then have to modify DirectX or Opengl libraries (they avoid writing their own coordinate standards so people don't need to learn a new coordinate system) to use the proper instructions sets that they created and provide these modified directx/opengl in their developers kit.

So which one is better? Given a non-bias hardware.. Neither, they can both achieve the same result but Nvidia added specific DirextX optimized instruction sets in their more recent commercialized graphics card to give DirectX an edge for standard PC game development. However, if Sony asked Nvidia to create a graphics card for their new PS4, no doubt they would request Nvidia to add Opengl optimized instruction sets.

2.
Java vs C++
The most obvious pro of using Java is the ability to port the application anywhere JVM is runnable while the most obvious con is not having control of the JVM that runs your application. Memory management, including garbage collect is done by the JVM. You have no way of knowing whether or not it is aligning the memory for optimal memory usage/access. Most JVM applications uses more memory than needed, and the developers are forced to juggle with JVM.

C++ gives you the control and exposure to memory address space you need to optimize your code but the downside is that its more difficult to port your code to other systems. Developers are lucky that PS3 and Xbox360 both user a PowerPC as their core so it made it easier for them to port. Some game developers even made their own engine to allow code to recompile in Xbox architecture or PS3.

Systems that uses c++ will let you push the system to the max potential, while those who uses Java will always be limited by the JVM and not the hardware. Another pro and con worth considering by game studio is that it is far easier to find a Java Developer than a C++.

3.
Mobile, Ghz, IPC, Performance.
This is where my facepalm comes in. When dealing with mobile hardware, no one cares about metrics like ghz or ipc. They can easily make the mobile device have the same performance as a Core i7. It is the Performance per Watts is where they are being stumped. More power = more transistors = more energy consumption = mobile hardware becoming more useless. AND NO! Adding more core does not make things go faster and use less power. You can only get better IPC with more cores when you can make your code more paralleled and even that has a limit (Read Amahl's law). If they want mobile to get faster, they have to do it such a way that it can run for acceptable amount of time.

I hope I cleared some mis-conception up, if you disagree or I have some facts wrong please let me know!