C# game development after XNA [closed] - c#

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I am a game developer who made games in .Net languages with XNA for the past four versions of it. Unfortunately now there's this news: http://www.gamasutra.com/view/news/185894/Its_official_XNA_is_dead.php#.UQ3yiehQCh8
I am surveying the ecosystem of game engines, looking for something that supports coding in Visual Studio (I use F# heavily, believe it or not!) and I am having trouble finding something that is high quality, still alive, and high performance to replace XNA. Unity for example misses the mark because it only allows for scripting in MonoDevelop, while I want a more developer friendly experience.
So what is a good replacement for XNA?

If you want to leverage on XNA API, you should bet on MonoGame. It is a compatible XNA API that is targeting to run on several platforms (including several non Windows platforms using OpenGL). The development is very active, MonoGame is recently getting a full 3D stack that is starting to work on Windows Metro app (thanks to SharpDX). You can have a look at the latest develop3d branch.

There is nothing awesome like XNA. I don't get it why MS is throwing XNA away. It is the only System that works with the XBox 360. You can try Engines or Wrappers like Tao, SlimDx or something else. But XNA was the best System for rapid game development.
I'am now switched to Java + LWJGL.

I don't know when you checked last time, but Unity does in fact support coding in Visual Studio. You just have to select it as editor in preferences.

Imo if your going to be a game dev and you want complete control and want to port, and furthermore want to use C#.
OpenTK is probably the way to go. It supports up to OpenGL 3.0 and is compatible with mono, meaning you can port to PC, OSX, Linux, Android, and IOS. Ironically, about the only thing you can't do with it is xbox 360/1 and windows phone. But imo, If your looking to make games on phones Android and IOS is more than 90% of the market so go that route...
http://www.opentk.com/
Downside:
This project doesn't appear to have been updating since 2010, but it's very stable and feature packed up to open gl 3.0. But if you want to go farther with it you'll eventually need to update it yourself, but it's open source and under the GPL so you can.
OpenTK also has OpenAL included in it and handles graphics and sound.

Try looking at Axiom (.NET port of OGRE) and Delta Engine.
Edit: if you're looking for lower-level graphics libraries, try OpenTK or SlimDX.

Also, if you wish to get something similar with XNA, you can use SharpDX and SharpDX toolkit that provides pretty XNA-similar interface.
Look here
Download SharpDX from theirs site (choose 'SharpDX-Full-2.4.0.exe', it has samples inside the archive), unpack it and run SharpDXToolkitSamples.sln

No one has mentioned DirectXTK? I believe this is the direct successor to XNA which is being develop on / with Windows 8. Some More info from Shawn Hargreaves here.
Of course if you are interested in cross platform development checkout MonoGame as some have suggested.

Have you tried Tao Framework, Allegro and SlimDX

SharpDX allows you to make full use of DirectX from managed code, and it is currently very active, even with support for WinRT.

Unity 4.2 allows coding in Visual Studio for Windows 8 or RT. From what I understand 4.3+ will allow coding for Windows Phone 8 through Visual Studio. Though not the ideal substitute for XNA, still a viable one. As far as XBOX 360 or other platforms aside Windows 8 and Phone 8, I'm not sure if VS can be your IDE, but Microsoft is making a major push with Unity3D, check out there promotion for devkits for XBOX One. They are practically giving them away to Indie Developers:
http://techcrunch.com/2013/11/05/unity-game-engine-goes-free-for-indie-xbox-one-developers/
That's thousands of dollars of free software and hardware for indie developers. Another step closer to democratizing the game development process, and assisting indie studios.

Related

how using GPU from c# code to compress bitmap [duplicate]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
The community reviewed whether to reopen this question 1 year ago and left it closed:
Original close reason(s) were not resolved
Improve this question
I am trying to get more processing power out of my grid.
I am using all cpus/cores, is it possible to utilize the GPU with C#.
Anyone know any libraries or got any sample code?
[Edit OCT 2017 as even this answer gets quite old]
Most of these answers are quite old, so I thought I'd give an updated summary of where I think each project is:
GPU.Net (TidePowerd) - I tried this 6 months ago or so, and did get it working though it took a little bit of work. Converts C# kernel code to cuda at compile time. Unfortunately their website has been down and their github hasn't been updated for a couple of years, which might indicate the project is dead....
Cudafy - Open source and very easy to use. Converts C# kernel code to cuda at runtime (with ability to serialize and cache). Can easily run the same kernel code on the CPU (mostly for debugging). Supports multiple GPUs. More examples available than others here. The boilerplate code referred to by other answers is minimal, and in my case at least helped with my understanding of how the code works. Cuda/Nvidia only though. Unfortunately, it seems that they didn't update their solutions for a couple of years too (latest commit in 2015 -- support of cuda 7.0).
Hybridizer. Commercial solution compiling C# to CUDA. Provides a free community edition on visual studio marketplace and samples on github.
AleaGPU Commercial solution with a free community edition for consumer GPUS. See Daniel's comments for details.
Brahma - runs LINQ expressions via OpenCL (so supports AMD too). Not much documentation / examples. Last update in 2011.
C$ - last development was over 10 years ago...
Microsoft Accelerator - similarly doesn't look like it is being actively developed any longer.
some others (C++ AMP, OpenTK -- dead/Cloo) - many of these are just bindings - ie enable you to call the GPU from C#, but your kernel code (code which is actually run on the GPU) needs to be written in C or OpenCL, meaning you must use (and learn) another language.
As I said, I would recommend Cudafy over all the others - if it could run on OpenCL as well as Cuda it would be perfect.
EDIT SEP 2013
Cudafy now allows you to compile for both CUDA and OpenCL, so will run the same C# code on on all GPUs. This sounds fantastic, though I haven't tested the OpenCL compiling yet.
Microsoft Research Accelerator was a .NET GP GPU library.
I found Brahma... It also has a GPGPU provider that allows methods to run on the GPU... Thanks for the question... Learnt something new today. :)
Here's another one: CUDAfy. It sounds like GPU.Net, in that something as simple as a method-attribute can cause the entire method to run on the GPU. But unlike GPU.Net, CUDAfy is free and open-source.
GPU.Net appears to require no boilerplate code, though (According to their docs, it's "injected automatically by the build-tool"), while CUDAfy does.
Here is an example of building an application with CUDAfy.
Could I recommend XNA Game Studio as a possible avenue for exploration? It is obviously geared up for writing games, but gives you managed access to your graphics card and much better access to capability enumeration functions and shader development than was previously available in, say, Managed DirectX. There are also ways of combining WinForms and XNA into hybrid applications:
http://www.ziggyware.com/news.php?readmore=866
You'll have to put some effort into learning shader programming (XNA supports HLSL), but this may be a simpler approach than learning a vendor-specific solution such as nVidia's CUDA. The advantage is that you can program in a 100% managed environment. Here are some HLSL links:
http://www.ziggyware.com/weblinks.php?cat_id=9
The GPGPU site is also a recommended destination for general purpose GPU programming:
http://gpgpu.org/
Best of luck!
How about http://www.tidepowerd.com/ GPU.NET ?
Well this is a pretty old question, and since it's been asked things have changed a lot.
Another option for using .Net to write GPU code, which no one has mentioned in answers in Alea GPU. It covers C#, F# and VB.
Professional GPU software development environment for .NET and Mono.
Truly cross-platform
In F# official site, Alea is the first option for using F# in GPGPU programming.
To get to know this framework I suggest take a look at its comprehensive list of examples.
In addition to Brahma, take a look at C$ (pronounced "C Bucks"). From their CodePlex site:
The aim of [C$] is creating a unified language and system for seamless parallel programming on modern GPU's and CPU's.
It's based on C#, evaluated lazily, and targets multiple accelerator models:
Currently the list of
intended architectures includes GPU,
Multi-core CPU, Multi-GPU (SLI,
CrossFire), and Multi-GPU + Multi-CPU
Hybrid Architecture.
There's a new Microsoft solution in town - C++ AMP (intro here).
Use from C# would be via P/Invoke, as demoed here for desktop apps, and here for (don't-call-it) Metro apps.
Edit: I should note that C++ AMP has an open specification, which means it's not necessarily just for the MS compiler, or just for Windows.
Edit: Apparently, the technology is now in "maintenance mode," meaning they're fixing bugs, but not actively developing.
If your GPUs are all the same brand, you might be able to get GPGPU support from the vendor, either through Nvidia's CUDA or ATI's Stream. AFAIK, they provide DLLs, which you could use through P/Invoke.
CenterSpace Software has GPU-powered computation in their NMath libraries you can add to C# project. It's a commercial product.
Managed DirectX somehow, might work
WPF also uses the GPU and you can add custom shaders using HLSL.
A Series on GPU-based Effects for WPF (Greg Schechter's Blog)

XNA alternative [duplicate]

This question already has answers here:
Alternative to Microsoft XNA Game Studio? [closed]
(2 answers)
Closed 9 years ago.
I recently switched to VS2012, managed to get XNA4 project working, but then I was wondering if VS2012 no longer supports (so really) and XNA seems to be such abandoned stuff, if there is an alternative to use, that is like:
vs2012 compatible, and net4.5, c#
not too high level (or well written and optimized)
easy to learn after XNA
free
Priorities are from above.
You could look into monogame
http://www.monogame.net/
It's based on Mono so it's easier to port across from Desktop/Windows Phone like XNA would allow to also compile for Android and iOS (you need to buy a licence for those as they use Monodroid and monotouch components which aren't free)
I heard good things about Monogame and SlimDX. But Monogame is probably what you are looking for.

Is there any free C++ and/or C# compiler that runs on an Android-enabled Tablet PC? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
The question is not about writing C++ for Android, it's about writing C++ on Android.
I have an Android-enabled Tablet PC and I need to do both C++ and C# programming.
Is there any free C++ and/or C# compiler that runs on any Android-enabled Tablet PC?
I do not want to develop Android apps on PC.
I want to do my programming on an IDE that runs on Android.
It exists in some form, at least. I have managed to find an application that even compiles C and Delphi without any extra dependencies (I assume it comes with GCC and FreePascal.) I can't find it at the moment, but keep searching. In the meantime, TouchQode at least will give you some scripting support. For C#, you'll need Mono. The runtime for Mono is certainly available on Android and I see absolutely no reason there can't be a compiler for it on Android as well. edit: As CommonWares mentions, there is no freely available Mono port for Android, so none of this applies. Pity.
Why not, it's a linux kernel and a well supported architecture (arm). You can compile GCC for android, but the performance of a tablet will not amaze you. You will also need to build glibc I guess - you can check here: http://forum.xda-developers.com/showthread.php?t=1299962
Basically you will need to cross compile gcc and glibc for the arm architecture.
Is there any free C++ and/or C# compiler that runs on any Android-enabled Tablet PC?
Let's pretend, for the moment, that the answer was yes (it's certainly not for C#).
You would also need:
the Android SDK and its toolchain
the Android NDK (since you are interested in C/C++) and the rest of its toolchain
the IDE
None of that exists to run on Android at this time, though there are some OK text editors.

What Game Engine should I use? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I am trying to figure out what game engine I should use? Right now I am trying to pick from toque, shiva, and unity. I will be learning c# and objective c so I can develop iphone games, some windows games, and possibly xna games for xbox.
Also any tips for learning objective c, c#, and designing and coding games?
Best thing for the future is to do what RaYell said in his comment. Start with ONE thing, learn it, and learn it thoroughly before moving on to something else. If you try to take on a half dozen things at once, you'll have broad surface knowledge across all of them, but not enough depth to do anything useful with any of those technologies.
Depth-first > Breadth-first when it comes to learning programming. ;)
If you want to go for both iPhone and XNA then I would consider going with Torque as your engine. They have versions of their 2D and 3D engines for both of those platforms, as well as for the PC, so you can have a fairly similar experience and toolset when developing for all 3. Not exactly the same, but pretty close.
You don't have a choice when developing for iPhone. You'll have to use the Apple iPhone SDK. I think this requires you programming in C (I think).
Likewise, if you're developing for XBOX (and you don't have the corporate XBOX SDK that real game studios purchase), then you'll need to use XNA. You can use the XNA framework (free environment and framework), but you'll also need to learn C# (or VB.NET although officially just C#). Using XNA also lets you build games for Windows environment.
I think you should probably start with something simple before jumping into either XNA or iPhone SDK. Even using something like VB.NET (VS Express is free) windows form app for a simple game like tic-tac-toe would be a good starting point.
It seems like you need to learn a different language and a different framework/sdk to reach all of these environments, so I'd recommend picking one and trying to learn that before you try to learn multiple things. Since C# and VB.NET (and XNA) are all free, have free tutorials, and free development environments (and you're probably using Windows, so you have the requirements) then I'd recommend trying one of these things first. That way, you can see if its something you really want to do. Building games (and software) isn't an easy job, so make sure you do a lot of research and learn the fundamentals before trying to jump into game programming.
I'll add my two cents regarding Unity. I haven't worked with Torque and haven't even heard of Shiva until now (it looks interesting).
My (somewhat limited) experience with game development is that above all, there is a huge amount of learning involved with the game development world and you really need to choose carefully where you spend your time.
You're on the right track looking at comprehensive game engines that include middleware tools. If you really want to make games (and not game engines), you'll want to focus exclusively on generating assets and game logic.
I have worked with XNA and can say that, by itself, it doesn't provide any of the middleware tools you'd need to build a complete game.
As for Unity Vs Torque, I choose unity because of their strong focus on C# (which will only grow more central in their upcoming release). Furthermore, the two communities are vastly different. Torque developers take a lot of pride in the fact the Torque includes the source. It is regarded as more difficult to work with, but will allow you to learn about the core code. Unity is closed source, has an active community and focuses on game development. Their community's attitude is that they are not there to rewrite game engines and that if there is a bug, the Unity team can and will solve it faster and better (they do a great and speedy job of resolving bugs).
My coding philosophy is more to the second. I want to make a game, not a game engine and I prefer a comprehensive tool rather than multiple tools that you have to tie together. Unity is very professional and you can get up to speed very quickly. I'm having a blast developing in it and have gotten concept work together very quickly.
Also, you'll need to learn at least basic 3d modeling and animating. At the very least, you should be able to block out some characters and find an artist to make the real versions later. I strongly recommend Digital-Tutors great series on creating Next-Gen game characters in Maya and ZBrush. Its a series (you don't need the XNA part).
Best of luck. Above all else, make a specific plan and stick with it.
I heartily recommand XNA, not only is it free, well documented and easy to use, but it now runs across all mobile platforms with its open source incarnation MonoGame. You can also avoid having to learn different languages for each platform, C# to rule them all. And C# is a great language in itself.
I suggest starting out with the riemers.net tutorials and working from there. There are many others: that's one of the biggest advantages of choosing this technology, the sheer amount of tutorials and support online.
More importantly than learning an engine or a language (dialect) is to focus on something you can actually pull off in a reasonable time frame. Biting off more than you can chew (common in indie game development) will just deter you from ever trying again. Game development is difficult, an engine is no shortcut.
Aim on a simple, single-player, 2D graphics game. If it's really your first game, you should use generated, ugly-looking content rather than trying to load resources from disk, which probably just complicates things. Build it from the buttom up. You will learn the basics on memory organisation, sprite/bitmap workings, sounds, operating system interaction, to mention a few things.
When you know how to do that that and know it well, you can move on to an engine like Torque; and then you might actually put it to some use. And hey - good luck and have fun!
Edit: You might also be interested in using a rapid game prototyping tool such as Trabant. With such a tool you can try out game concepts in minutes rather than days. When you know what you want, you build it using UE4 or some other game engine. Disclaimer: I'm the author of Trabant.

Utilizing the GPU with c# [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
The community reviewed whether to reopen this question 1 year ago and left it closed:
Original close reason(s) were not resolved
Improve this question
I am trying to get more processing power out of my grid.
I am using all cpus/cores, is it possible to utilize the GPU with C#.
Anyone know any libraries or got any sample code?
[Edit OCT 2017 as even this answer gets quite old]
Most of these answers are quite old, so I thought I'd give an updated summary of where I think each project is:
GPU.Net (TidePowerd) - I tried this 6 months ago or so, and did get it working though it took a little bit of work. Converts C# kernel code to cuda at compile time. Unfortunately their website has been down and their github hasn't been updated for a couple of years, which might indicate the project is dead....
Cudafy - Open source and very easy to use. Converts C# kernel code to cuda at runtime (with ability to serialize and cache). Can easily run the same kernel code on the CPU (mostly for debugging). Supports multiple GPUs. More examples available than others here. The boilerplate code referred to by other answers is minimal, and in my case at least helped with my understanding of how the code works. Cuda/Nvidia only though. Unfortunately, it seems that they didn't update their solutions for a couple of years too (latest commit in 2015 -- support of cuda 7.0).
Hybridizer. Commercial solution compiling C# to CUDA. Provides a free community edition on visual studio marketplace and samples on github.
AleaGPU Commercial solution with a free community edition for consumer GPUS. See Daniel's comments for details.
Brahma - runs LINQ expressions via OpenCL (so supports AMD too). Not much documentation / examples. Last update in 2011.
C$ - last development was over 10 years ago...
Microsoft Accelerator - similarly doesn't look like it is being actively developed any longer.
some others (C++ AMP, OpenTK -- dead/Cloo) - many of these are just bindings - ie enable you to call the GPU from C#, but your kernel code (code which is actually run on the GPU) needs to be written in C or OpenCL, meaning you must use (and learn) another language.
As I said, I would recommend Cudafy over all the others - if it could run on OpenCL as well as Cuda it would be perfect.
EDIT SEP 2013
Cudafy now allows you to compile for both CUDA and OpenCL, so will run the same C# code on on all GPUs. This sounds fantastic, though I haven't tested the OpenCL compiling yet.
Microsoft Research Accelerator was a .NET GP GPU library.
I found Brahma... It also has a GPGPU provider that allows methods to run on the GPU... Thanks for the question... Learnt something new today. :)
Here's another one: CUDAfy. It sounds like GPU.Net, in that something as simple as a method-attribute can cause the entire method to run on the GPU. But unlike GPU.Net, CUDAfy is free and open-source.
GPU.Net appears to require no boilerplate code, though (According to their docs, it's "injected automatically by the build-tool"), while CUDAfy does.
Here is an example of building an application with CUDAfy.
Could I recommend XNA Game Studio as a possible avenue for exploration? It is obviously geared up for writing games, but gives you managed access to your graphics card and much better access to capability enumeration functions and shader development than was previously available in, say, Managed DirectX. There are also ways of combining WinForms and XNA into hybrid applications:
http://www.ziggyware.com/news.php?readmore=866
You'll have to put some effort into learning shader programming (XNA supports HLSL), but this may be a simpler approach than learning a vendor-specific solution such as nVidia's CUDA. The advantage is that you can program in a 100% managed environment. Here are some HLSL links:
http://www.ziggyware.com/weblinks.php?cat_id=9
The GPGPU site is also a recommended destination for general purpose GPU programming:
http://gpgpu.org/
Best of luck!
How about http://www.tidepowerd.com/ GPU.NET ?
Well this is a pretty old question, and since it's been asked things have changed a lot.
Another option for using .Net to write GPU code, which no one has mentioned in answers in Alea GPU. It covers C#, F# and VB.
Professional GPU software development environment for .NET and Mono.
Truly cross-platform
In F# official site, Alea is the first option for using F# in GPGPU programming.
To get to know this framework I suggest take a look at its comprehensive list of examples.
In addition to Brahma, take a look at C$ (pronounced "C Bucks"). From their CodePlex site:
The aim of [C$] is creating a unified language and system for seamless parallel programming on modern GPU's and CPU's.
It's based on C#, evaluated lazily, and targets multiple accelerator models:
Currently the list of
intended architectures includes GPU,
Multi-core CPU, Multi-GPU (SLI,
CrossFire), and Multi-GPU + Multi-CPU
Hybrid Architecture.
There's a new Microsoft solution in town - C++ AMP (intro here).
Use from C# would be via P/Invoke, as demoed here for desktop apps, and here for (don't-call-it) Metro apps.
Edit: I should note that C++ AMP has an open specification, which means it's not necessarily just for the MS compiler, or just for Windows.
Edit: Apparently, the technology is now in "maintenance mode," meaning they're fixing bugs, but not actively developing.
If your GPUs are all the same brand, you might be able to get GPGPU support from the vendor, either through Nvidia's CUDA or ATI's Stream. AFAIK, they provide DLLs, which you could use through P/Invoke.
CenterSpace Software has GPU-powered computation in their NMath libraries you can add to C# project. It's a commercial product.
Managed DirectX somehow, might work
WPF also uses the GPU and you can add custom shaders using HLSL.
A Series on GPU-based Effects for WPF (Greg Schechter's Blog)

Categories