Is XNA a good place to learn 3d game programming? [closed] - c#

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 want to explore 3D game development in XNA, but I'm curious if this is best for me. I haven't learned C#, but I want to explore my options before diving in. I have a lot of experience in the C programming language, along with some basics or minor experience in other languages. Which means that the object oriented framework that C# has may be a huge change from what I'm used to. I need to learn it anyways for future jobs and college, so this might would be a good incentive. I have programmed two games using the SDL 2.0 mixer and SDL 2.0 frameworks, which have given me a good basis of the knowledge of how 2D games are structured. I have learned about sprites, frame rate, event polling/handling, frame rendering, among other things. I am still highly lacking in mathematics related to game development and the physics behind it. That leads to my next point of concern if I do decide to learn XNA, is if it would help me more easily learn those things faster? Writing for my games in C, I was always having to write interfaces on top of interfaces, but at least I had to understand what I was writing. With C#, I'm concerned it would abstract most of the mathematics I really want to glean from it. You may ask that if I'm so concerned, why don't I just learn linear algebra and OpenGL/DirectX/whatever in C? Well, I'm hoping to avoid that, since even though I was able to make a decent game, I'm still very much lacking in how to do more advanced game development and code structuring. This was very obvious to me after working on one of my game projects for about half a year.

MS has ceased supporting XNA going forward. If you want to stick with XNA, have a look at MonoGame, which is an open-source version of XNA.

Related

How was game development done in C with no OOP? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
Coming from a C# background, I've been wondering for a long time about how game development was done in a intermediate language like C. A lot of the old games developed for systems back then were made in C, and one big difference between C and C# is that C# is OOP but C isn't.
When I found out about this in the past it always kept me thinking what approach was taken for game development in C ? In C# OOP is pretty much the main approach used in game development, so how was it done in C ? Game Libraries with OOP functionality ?
I've been reading that C can have OOP functionality written to it which makes sense seeing that we have C#, and a lot of programming languages at its core is derived from C.
How much different was the approach for game development? Also, disregarding things in C like hardware specific code and the rest of the intermediate language worries, how much harder was it ?
UPDATE
I'm looking for a general answer. Nothing too deep because I understand that this is too broad of a question. So let me narrow it down to...How does non OOP look in game development ? For example, How would drawing multiple objects of the same functionality look in C code
There too many points in your question to address, but I recommend watching this series In it, an experienced game dev builds a full game in C with no libraries.
In the grand scheme of things OOP is just an abstraction that sometimes makes things easier. In the really old days, developers would not even use C and instead would write in assembly for the specific system.

MonoGame vs. SDL [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
Whats the main difference between using the MonoGame with C# and SDL with C++?
Which of them is easier to use? Which is recommended for multi-platform support?
Its important for us to have structure and all-pervading OOP. It should be performant but not at the cost of productivity (e.g. not reinventing the wheel or managing memory). We are a small team so we need a structured, simple and clear framework, which allows us to concentrate on the actual work.
C++ with SDL is native and can run on almost any platform (cross-platform), more specifically those with limited system specifications.
C# with MonoGame is great for proto-typing a concept, but you could run into unavoidable bottle necks for large games. Additionally, SDL is just a graphics layer, where MonoGame is a complete API for interactive media. MonoGame could be cross-platform too, but I am unsure of its complete audience.
Is MonoGame really cross-platform?
You will do a little work from scratch when using C++ with SDL, but there are many libraries out there for C++ game development that will make it a breeze. If productivity is an issue, then you could have problems using C++, unless you use an existing framework for your game, which typically handles memory management. But that is the risk you take with C++; write more efficient code in a longer time frame.
Irrlicht is a great library for rendering. Simple and clean.
http://irrlicht.sourceforge.net/

Which gaming platform should be used? [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 individual game developer and make games for fun. I was using xna lately to create small game.
Just want to know which gaming platform is good for individual developer. As XNA is no more supported by microsoft. MonoXNA does not provide such power of 3d. Unity license is very expensive.
Once we spent too much time on a game, we would love to port it over different platform? That too I would like to keep in mind while selecting any framework?
Should C# developer learn DirectX library for gaming?
Where is the industry moving in terms of game programming?
Thanks
I'd still recommend MonoGame. It's open source, crossplatform. 3D support may improve over time. If you really want to do serious 3D stuff, I'd use an engine for that, like Unreal or Source. Otherwise It's gonna be too much work for a single programmer.
Here are some useful links. I can't really point to a specific engine, because that highly depends on the type of game you want to create. But I will list some great and popular (and maybe too powerful for a single programmer) anyway, mostly used for FPS games.
http://en.wikipedia.org/wiki/List_of_game_engines
http://source.valvesoftware.com/
http://www.unrealengine.com/en/udk/
http://mycryengine.com/
But again it really depends on what you want.

Linux Bioinformatics Tool [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 3 years ago.
Improve this question
I am looking to make a data visualization tool that will visualize biological data. I am used to being a C# and .net coder. However, as I understand it, you can run into trouble if you are running a C# app in ubuntu. Any suggestions for a language to use with these specifications in mind? I was thinking Java but am happy to take suggestions.
C# is a solid choice, especially if you already know the language. C# and the .NET framework have a solid cross-platform port with the Mono project and you can create Gnome UIs using the Gtk# bindings.
As an alternative, Java is used for a lot of bioinformatics applications. Though personally I have to say that most of those have horrible user interfaces and Java’s memory management seems ill-suited to deal with the data sizes that are common in bioinformatics – tools routinely run out of memory or become extremely slow. This isn’t necessarily an inherent problem of Java as much as sloppy programming, but Java certainly doesn’t help.
An alternative to Java would also be Python with a suitable GUI library (there are some good ones), especially since Python offers a much nicer, more polished syntax.
Yet another alternative that’s worthwhile especially if you’re really dealing with big data or if performance is important, would be C++ with Qt to build the GUI. Note that this will make development vastly more complicated if you’re not already proficient in C++.

What to use? Tao, SharpGL, OpenTK, DirectX P/Invoke, XNA, MDX, SlimDX, Windows API Codec Pack [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 7 years ago.
Improve this question
Back in the day it was easy; You made your own 3D stuff, then came DirectX, then came OpenGL. For .Net developers MDX was nice. Then XNA took over for MDX, but it its not the same. XNA seems to be very game-centric with all the content pipelining and preloading of fixed models and stuff.
So where do we stand now? After a couple of days of reasearch/trial&error I feel everywhere I look I find half developed libraries, libraries with overhead, severe limitations or libraries that are overly complex.
I want to do "free-hand" 3D stuff. For instance displaying 200k dots on a screen in 3D and move them around at 30fps (Kinect depth image). I want to make 3D screensavers, audio analysis plugins, etc. All of which is not prefabs for a content pipeline, and which require high performance. And (ehm) I want to do it from .Net.
Anyone have experience with libraries that are easy/understandable and still gives some fair amount of freedom and speed?
I seem to have landed on OpenTK. I think it gives more or less direct access to the OpenGL API and doesn't require loads of dependencies.
It is comparatively easy to understand. It requires few (and understandable) lines of code to get started. It doesn't hold the objects for me so I'm free to change anything for each pass, which is great because I'm mainly working with unsafe pointers to memory.
It is of course difficult to combine speed with ease of use. Speed requires talking directly to the 3D API while ease of use requres abstraction. Therefore this must be considered a lower level API than some of the others I've tried. If I wanted to do some prefab character animation then XNA would probably be a better choice, but for my use (described above) this seems very promising so far (4-5 hours of hacking).
Some sample code:
private void Render()
{
// Every frame
GL.MatrixMode(MatrixMode.Modelview);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
GL.LoadMatrix(ref cameraMatrix);
GL.Begin(BeginMode.Points);
// Here I can add lots of points. I add 200k without any big problem.
// It seems these points could have been passed in as an array pointer too,
// but I'll look at that later.
GL.Vertex3(x2, y2, z2);
GL.End();
glControl.SwapBuffers();
}
If you liked MDX, SlimDX should be right up your alley. It's basically a replacement for MDX, but with a lot of the questionable design decisions fixed up, and a lot more functionality included. Anything you had with MDX, you will find present in SlimDX in one form or another.
Alternatively there is another C# wrapper package for OpenGL: OpenGL DotNet. Works great for me! Check it out at http://www.taylaninan.com/opengl-dotnet.php .
It wraps OpenGL up to version 4.4 and supports over 550+ OpenGL Extensions. It also supports GLU, GLUT, FreeGLUT, DevIL (Developer's Image Library), ILU and ILUT for DevIL.
It a low level API for the above libraries.
We faced a similar issue some time ago and the following represents our opinion only of course. One of our main concerns was that the library should be versatile, produce 3D images of very good quality, free, and not put loads of extra constraints on the installer, i.e. like with XNA where you have to have the correct files installed. This seemed like a possible source of headache. In the end we settled for DirectX and wrote the GUI in C#. All needed interaction with the 3D was done with wndproc. This provided us with both the power of DirectX and the ease of GUI development with C#. We haven't regretted this at all.

Categories