Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

When it comes to IDEs and things like refactoring and autocomplete, I could never get along with Visual Studio. I mean, the fact that you need Resharper in addition to Visual Studio which costs a lot by itself, is kind of a red flag. Java IDEs have been much more productive for quite some time and I especially like IntelliJ IDEA, being from the same people that provide you with Resharper.

Also, doing games development in C# doesn't make sense to me, C++ (maybe in combination with a scripting language like Lua) being the defacto standard for games. And if you are an independent that values productivity, C# has approximately the same drawbacks as Java. And there are successful games out there that make use of it, like RuneScape, Puzzle Pirates or Minecraft.

I mean, if you value productivity over runtime efficiency and want something that runs on top of a VM, might as well get something out of it, like portability.



C# is actually heavily used by Indies because its the language for Microsofts XNA Toolkit. Many successfull XBLA indie titles (Supermeatboy, Braid, Bastion etc) have been created using it. Using MonoGame you can also bring the games to Linux/OSX/iOS/Android and other consoles (http://monogame.codeplex.com/).

Furthermore the highly popular Unity Game Engine offers C# as its scripting language which is the language of choice for every bigger and serious project because huge projects written in Javascript are alot more pain to maintain. Part of this is Visual Studio excellent features (you dont necessarily need Resharper).

So there actually is alot of C# in game development these days, mostly used as the Scripting language while the engine and APIs are written in C++.


Are you sure about your examples?

I think you're confusing "xbox live arcade" with "xbox live." You don't have to create games with XNA to get them on xbox live. I specifically remember C++ code in Indie Game: The Movie (for Super Meat Boy). And I'd bet money that Jonathan Blow, the creator of Braid, prefers C++ over C#.

This isn't to say C# isn't a viable option on consoles. I believe FEZ is all C#...that game is incredible, from an art design standpoint at least. It did have visible garbage collection pauses though.


yep, guess ur right, but FEZ and Bastion are definitely made with XNA and in the case of Bastion the Linux/iOS Version uses MonoGame.


Well sure, I forgot about Unity, which is indeed a great platform to build on.


C/C++ + scripting (Lua, <My own scripting language>) is a killer combination, which won't go anywhere for decades for shear performance reasons.... (Theory : you can always get more performance by using optimised, hand-tuned C/C++ code)

Coming back, proprietary technologies used in $$$ video games, support only windows operating system. Visual Studio can be one of the reasons too.


> Also, doing games development in C# doesn't make sense to me ...

Why not? Not everyone is doing the next Crysis.

> I mean, if you value productivity over runtime efficiency and want something that runs on top of a VM, might as well get something out of it, like portability.

Why don't people learn about compiler design? languages != implementation

Are you aware that Mono also compiles to native code or that .NET on Windows Phone 8 is also compiled to native code?

Having said that, given the prevalence of Windows on the games industry, many studios have migrated their C++/MFC tooling to C#/Windows Forms/WPF, even AAA studios.


Compiling to native code != Performance. Haskell compiles to native code too (ghc)....

Good Graphics and Physics, where required needs performance. As the hardware is improving day by day, our demands are increasing two folds. Just think about the performance we would need, to render the real world as is !!!

We are going towards virtual reality. We need something with very fast optimised runtime.

Some games does not require cutting edge Graphics. Use anything there....


Funny that you say that, I am old enough to have discussed the same issue about Forth vs Assembly, C vs Assembly, C vs C++ and many others language performance issues.

Fact is that eventually the optimizers for the given compiler get good enough for the task at hand and people move on.

Most intensive graphics and physics are already being done on the GPU anyway and there are quite a few ways to target them as well.


Though, GPUs are meant for highly specialized number-crunching, they doesn't have direct access to system memory. One also gets additional latency transferring data between RAM and GPU memory.

Also, GPU is a temporary technology. Wait for some time, and see CPUs getting more GPU like.


Hmm, I always saw each of them as an answer to completely different problem, so I have hard time contemplating this scenario.

How exactly would CPU be more like GPU? What would happen to branching and out of order execution pipelines? Do you see today's complex superscalar cores so cheap and small in the future that you could have thousands of them on single die? What other way is there get vector computations to work as well as scalar computations on same hardware? Would you rather have few superscalar cores and a lot of SIMD's around it? Or do you envision a completely new architecture?

I'm just trying to get a picture of how this would be done. Any reading material would be welcome.


> Though, GPUs are meant for highly specialized number-crunching, they doesn't have direct access to system memory. One also gets additional latency transferring data between RAM and GPU memory.

Yes they do when shared memory is used, not all GPUs have dedicated memory.

Even the PS4 will have shared memory between CPU and GPU systems.

> Also, GPU is a temporary technology. Wait for some time, and see CPUs getting more GPU like.

This is Intel's wish because their GPUs suck, I don't think it will happen.


AMD is also talking about 'GPU technology' afaik.

Game devs head for it too, so that they don't have to manage a shader language.

It is inevitable. This will happen.


Runtime inefficiencies are no excuse to use a lower level language - if I had a language that let me write a 2d platformer game in 3 days but pushed every player's computer to their limit, I would use it.

In addition, considering there's languages out there with much, much greater runtime inefficiencies of languages like python being used in the client/server side of massively complex games like Eve Online, there's a lot more that should be taken into consideration when choosing a language other than raw speed.


I'm not sure how portability would be in favor of Java for game development. The number of gaming platforms Unity will run C# on is awesome: http://unity3d.com/unity/multiplatform/ . What can I use to get Java running on the PS3, Xbox 360, and Wii U? As for personal taste, I'd argue C# has a better gaming ecosystem (SlimDX, XNA, MonoGame, the list goes on) and is generally more nicely designed. Interop between C++ and C# is also head and shoulders above most of the other interop options -- the full proper mixed mode debugging straight out of the box is a godsend, and the performance is top notch.

C++ might be an old workhorse for AAA titles needing the best of performance out of the platforms they're targeting (a very specific case), but aside from the loss of productivity, there's plenty of places C++ won't reach: Not everyone has native client, and writing your game as an ActiveX component is easily going to scare people off.


Productivity loss with C++ is over-rated. The Pro C++ game programmers (esp Renderer and Physics programmers) are as productive.

For example, Forth is more productive than say, perl to me; But perl is more productive for sys admins.

To top it off, many indie games are written in C++, 0ad is a good example.


You never had to wait for a "make all" in a big C++ project I imagine.


C# is definitely more portable than Java when it comes to games nowadays. You can target all the (big) mobile platforms (WP, iOS, Android) as well as the usual Windows/Mac/Linux. It's also used for Xbox Live Indie and Playstation Mobile games.


How is Java any more portable than C#?


There are JVMs and native compilers available from countless vendors for almost any type of thing with a processor and enough memory?


Pretty much any platform you would want to support (presuming OpenGL and enough system resources) is probably supported by Mono/Unity.


Sure, but that does not make it available in more platforms than Java.

In the games industry they probably overlap, but outside the games industry, Java's support is much broader.


In this case, we're talking about the games industry, and with Unity, you can target platforms/consoles that Java doesn't get to.

That, and I haven't worked on a Java project yet, that didn't really annoy me.


These days no one aims(or even cares about) for machine level portability.

Its the VM level portability that counts.


All languages target an abstract machine, except Assembly that is.

The thing is languages like C and C++ is that their runtime libraries are so thin that you end up being dependent on the OS API for anything useful.

Most other languages, even native compiled ones, tend to offer better set of libraries along side the compiler.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: