4 ms·
Speaking from an independent developer's perspective: Visual Studio + C# + Resharper = .extremely. productive development environment. Video games tend to req
by zalzane 14y ago
Speaking from an independent developer's perspective:
Visual Studio + C# + Resharper = .extremely. productive development environment.
Video games tend to require lots and lots and lots of code, so productivity is absolutely critical - especially for independent developers who don't have a dozen man-years to blow on a project. Using autocomplete I can produce raw code an order of magnitude faster than I could by typing out each symbol name by hand. That combined with amazing refactoring/cleanup tools makes windows extremely lucrative for gamedevs.
- bad_user 14y agoWhen 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.
- z3phyr 14y agoC/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.
- kayoone 14y agoC# 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/ 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++.
- bad_user 14y agoWell sure, I forgot about Unity, which is indeed a great platform to build on.
- kilowatt 14y agoAre 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.
- kayoone 14y agoyep, guess ur right, but FEZ and Bastion are definitely made with XNA and in the case of Bastion the Linux/iOS Version uses MonoGame.
- darkchasma 14y agoHow is Java any more portable than C#?
- kamaal 14y agoThese days no one aims(or even cares about) for machine level portability. Its the VM level portability that counts.
- pjmlp 14y agoAll 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.
- pjmlp 14y agoThere are JVMs and native compilers available from countless vendors for almost any type of thing with a processor and enough memory?
- tracker1 14y agoPretty much any platform you would want to support (presuming OpenGL and enough system resources) is probably supported by Mono/Unity.
- pjmlp 14y agoSure, 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.
- tracker1 14y agoIn 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.
- MaulingMonkey 14y agoI'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/ 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.
- z3phyr 14y agoProductivity 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.
- pjmlp 14y agoYou never had to wait for a "make all" in a big C++ project I imagine.
- pjmlp 14y ago> 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.
- z3phyr 14y agoCompiling 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....
- pjmlp 14y agoFunny 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.
- z3phyr 14y agoThough, 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.
- gebe 14y agoC# 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.
- zalzane 14y agoRuntime 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.