Successor / alternatives to 2D XNA? - windows

It looks like Microsoft is backing away from XNA (but not DirectX): (see http://www.zdnet.com/microsoft-false-alarm-we-arent-backing-away-from-directx-7000010647/, note that there is no XNA Game Studio / XNA available for the new Visual Studio 2012, etc).
What technology can be used in it's place, for a 2D, managed game on Windows? I'd love to find something that works on Windows 7 and 8, with bonus points for WinXP and/or WinPhone.
I apologize for the overly broad question, but I've dug around in the MS website & can't seem to find any clear guidance. Silverlight looks promising, but I can't tell if that's going to be phased out too. It looks like Metro apps should prefer to use JavaScript, but I can't tell if you can use C#/.Net with that. WinForms would be great, but I think that's also "the past, not the future"
Any guidance would be most appreciated!

Have you tried monogame
MonoGame
Its latest version also supports WP8

SlimDX or SharpDX are managed wrappers for the DirectX API.
While future-proof, neither of them is an elaborate game development framework like XNA. You would have to implement important features like sprite rendering, content management, etc. by yourself.

Related

DirectX 11 & Windows SDK: any modern project setup tutorials for Windows 7?

Note: I just wanna say at first that I tried literally everything I could find about the subject (MSDN, Stack Overflow, D3DCoder, etc.) without any success (after solving one, another error was waiting for me). So I am posting here by pure demotivation (there are similar posts already, yes, but none of them actually helped me out).
Here is how it goes:
A few months ago, I decided to start learning modern OpenGL by pure curiosity, and finally decided to switch to DirectX after reading the downsides of OpenGL (I was also only targeting Windows platform). I think it was one of the worst move I ever made: I heard that OpenGL was lacking of documentation and everything was a mess with third party libraries, but I realized that DirectX was way worst than what it seemed to be compared to OpenGL. In fact, trying to code in modern DirectX 11 using Windows 7 and VS2013 is just a pain (especially shaders) and the time it takes to figure it all out is just a time waster. After reading a lot of porting articles on MSDN about alternative libraries, like DirectXTK, DirectXTex, DirectXMesh, Effects11 and DXUT, I still don't know what to do and how to setup a fully working modern project in Windows 7. Specifically, the 5 (/5_0) shader model (deprecated) combined with the new Effects11 library (not deprecated) is the thing that confuse me the most.
By the way, I am currently reading the latest Frank Luna book about the subject ('Introduction to 3D Game Programming with Direct3D 11') and I still can't get his samples working at all (even with DirectX SDK). Also, I don't know if what I am learning is relevant or not since he wrote it before the Windows SDK switch. For your information, the latest error I am trying to solve with his samples (for those who know the book) is a E_NOINTERFACE from D3DX11CreateEffectFromMemory function (at runtime):
HR(D3DX11CreateEffectFromMemory(compiledShader->GetBufferPointer(), compiledShader- >GetBufferSize(),
0, md3dDevice, &mFX));
// Done with compiled shader.
ReleaseCOM(compiledShader); -> crash here
All that being said, here is what I wanna know:
Are there any clear step-by-step tutorials on how to setup a modern DirectX 11 project in Windows 7 using VS2013 or it is still in pre-alpha stage (just kidding)?
What is actually going on with the shader model, the HLSL compiler, and the .fx files and what should be used (I hear everywhere that it is deprecated but no replacement seems to exist yet)?
For those who know the book, any idea on how to build the old DirectX SDK samples without getting this silly runtime error?
Thanks a lot!
E_NOINTERFACE is an usual error in that context, so likely there's something wrong with the code around it you are not showing in your question.
You can still use the legacy DirectX SDK with VS 2013, but it takes a slightly different procedure than was used with VS 2010. In VC++ Directories set Executable to $(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x86 or $(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x64;$(DXSDK_DIR)Utilities\bin\x86, Include to $(IncludePath);$(DXSDK_DIR)Include, and Library to $(LibraryPath);$(DXSDK_DIR)Lib\x86 or $(LibraryPath);$(DXSDK_DIR)Lib\x64. Read MSDN for some other details of doing this. I've also made some notes w.r.t. to that book here.
You actually don't need the legacy DirectX SDK, but you may find it easier to do that for now using that book. VS 2013 comes with the Windows 8.1 SDK that has all the OS headers for DirectX 11 along with D3DCompile #47.
You can use the Direct3D tutorial for a simple example of setting up a Win32 desktop app (i.e. one that works on Windows 7) with a device, swapchain, and window. This makes no use of legacy DirectX SDK.
There are some additional Effects Tutorial Win32 Sample you can use as well. Instructions on adding the Effects 11 library is on the CodePlex wiki under Documentation / Effects 11 / Adding to a VS solution.
Your questions about FX vs. not are also covered on the CodePlex: Is Effects 11 deprecated? and How do I avoid using fx_5_0?. Also on StackOverflow.
Many of the older DirectX SDK samples have been reposted to MSDN Code Gallery and do not require the legacy DirectX SDK to build. You should read these posts for the fate of various DirectX SDK things:
DirectX SDK Samples Catalog
DirectX SDK Tools Catalog
Living without D3DX
DirectX SDKs of a certain age
The story for learning DirectX 11 with Windows Store apps / Windows phone 8.x aps is a lot cleaner, and is well supported by VS templates and MSDN documentation. Win32 desktop apps are of course a completely reasonable option, but you have to distinguish between legacy and modern with a bit of research. You still start with the standard Win32 desktop app project template in VS.
Note: Windows by default only supports OpenGL v1.5 software renderer. You have to install 3rd party ICD to get anything else, and there are no OpenGL VS templates.

Windows Phone - XNA & SIlverlight

I was wondering if it is actually true that Microsoft is discontinuing XNA and Silverlight. If this is the case? What shall I learn to make applications for Windows Phone? What shall I learn to make simple/easy 2D based games (not c++)?
What are the alternatives with Windows 8?
Cheers.
There is no official announcement from Microsoft that says they are discontinuing Silverlight/XNA.
Of course, a lot of us have our own reasons to believe that Silverlight is dying. I would not say the same about XNA. At least not yet :-) Don't forget XBox.
For the next version of Windows Phone (8), application programming model is going to be based on/same as Windows 8 (Win RT). And they have been promoting DirectX as a technology to develop games for Windows 8 (WinRT). XNA is officially not supported in Metro Mode.
To program games in DirectX, C++ is not the only option. Managed DirectX can be used with C#/VB. You can look into that.
And if you know Silverlight, your understanding on XAML would really help you a lot with new Metro Style apps (Phone and Windows). So, you don't have to worry about that part.
It's hard to say something about a rumor, but in this case the best thing that you can do is to stay in contact with Microsoft and its forums or social network.
For example http://channel9.msdn.com/Forums/Coffeehouse/XNA-in-Windows-8
Windows Phone 8 will surely introduce a support for DirectX and C++, XNA is a subset, more or less, of DirectX, if Microsoft will introduce DirectX in its phones i see no point for keeping XNA; Silverlight is a technology that will never succeed at this point, even Flash is dead, you can imagine what is the situation about Silverlight that is a really really really small player in this market and it's not even portable.
For games it's better to use XNA, because eventually you'll start to create 3d games.
Silverlight is more adapted for common applications, like notepad, browser and other stuff.
And again, if you want to create games, learn more Xna.
As there is no official statement yet, it's hard to say what will happen with those platforms. If you want to create games, you might consider using MonoGame.
What is MonoGame?
MonoGame is an Open Source implementation of the Microsoft XNA 4
Framework. Our goal is to allow XNA developers on Xbox 360, Windows &
Windows Phone to port their games to the iOS, Android, Mac OS X, Linux
and Windows 8 Metro. PlayStation Mobile development is currently in
progress.
I had a demo of a few games made in MonoGame on Windows 8 last week and I gotta say I was pretty impressed.

Future of GDIPlus Windows User interfaces: which will be the replacement?

Almost all Windows applications with GUI (WinForms or Native) use GDIPlus.
But this technology is quite old, and it shows many limitations.
Alternatives are WPF, or Silverlight, Flash? But Developer Tools like Visual Studio and Delphi still use GDIPlus as reference.
When will this change? ANd moreover: will there be a portability? Like the Delphi VCL will in future be ported to a new technology maintaining backwards compatibility? (for ex TButton is GDI, in future it can be something else).
UPDATE: Maybe my question can be stated as "will future OS render GUI Widgets without GDI+ but using newer technology, a kind of builtin SIlverlight/Flash?"
For native programs, WPF has already replaced GDI+ in my view, but since GDI+ and WinForms have been in play for a long time, it will take a long time to get the majority of developers to go over to this new technology, even if it has a lot of great features and possibilities that GDI+ does not even come close to.
Visual Studio still have support for WinForms/GDI+ of course, but since Visual Studio 2008 built in support for WPF have been there, and is working just fine.
Silverlight and Flash will never be a mainstream replacement for a native application.
We're a C++ & .NET house, and we use WTL for developing GUI apps for native projects. We don't use GDIplus though, we stick with regular GDI calls.
It is a sticking point, and it's extremely difficult to
Write GUI software using WTL/GDI
Find developers who can do WTL/GDI
Train developers to do WTL/GDI
We're currently evaluating Qt as a replacement for our GUI coding, but at £3k per developer seat, it's an expensive option.

What technologies are you using to create your desktop UI

For the last few years i have been working as a web developer. So my desktop development skills are a little rusty. I am aware of Adobe AIR, winforms, WFP and silverlight 3.0. I was wandering what other UI frameworks/technologies people are using to implement desktop applications.
Depends on what you want to do. Some of the bigger toolkits for creating GUIs (among others) are QT (http://www.qtsoftware.com/products/), GTK (http://www.gtk.org/) and wxwidgets (http://wxwidgets.org/). Each of them allows you to code in a couple of different languages and use the GUIs on different platforms. There are plenty other toolkits though, which might fit your needs better (eg. more leight-weight ones).
AIR is pretty cool, I've enjoyed writing projects for it as there are a lot less limitations compared to winforms. winforms is quick and easy to use though in Visual Studio.
I think the list you've got is pretty good to start with.
Chrome. Our "desktop" UI is browser-based.
there's lots of different GUI stuff, SWING for java and .net forms are common.
besides what you listed, you'll also hear about Win32 and MFC (both c++), Tk (which is common with scripting languages like perl/python), the hardware languages OpenGl, glu, and glut (cross platform), DirectX (windows), and X Window System (X11) on linux (and Mac) and Cocoa and Carbon on Mac.
There are many others, but these are ones that I've seen used regularly.
WinForms is the default platform used to develop desktop applications using .NET framework (and Visual Studio 2002, 2003, 2005 and 2008). It's really a wrapper around the Win32 API that deals with CreateWindow and managing the messages sent to that window.
WinForms uses GDI/GDI+ technology while WPF (an exciting new platform offering a LOT of potential) utilizes GDI/GDI+ and DirectX (some parts at least, such as bitmap effects, transitions, fading).
Silverlight is a toned down Web version of WPF. Silverlight 3.0 allows developers to create a rich internet experience without the need to run the application inside a browser. Definitely something to keep an eye out for!
In terms of GUI design, I depend heavily on QT right now (py and c++ QT).
I recommend an excellent book: Rapid GUI Design with QT
I haven't tried it yet, but JavaFX sounds pretty cool.
It depends on the langage and the platform you're programming for. For C++, you can use either : Qt and its RAD tool: Qt designer, GTK+ / gtkmm or wxWidgets among others..

From MS .NET to Web development options on Mac OS X

I'm a .NET web developer, who's bought a Mac, and is interested in doing web development natively on the Mac.
I've never developed outside of the Microsoft sandbox, and I'm looking for something new, but still in web development.
I've looked into Mono, but it looks like trying to fit a square peg into a round hole, am I wrong? Like for example, I can't do breakpoints on my web apps?
Here are my criteria:
say what you will about Microsoft, but I'm simply not interested in command-line setups, or weird configuration stuff, I just want it to work
I'll need a powerful IDE, as good as Visual Studio 2008. I'm particularly fond of IntelliSense, auto-correction, auto-completion, and how it all hangs togethere, and the debugging features
I know this isn't "cool", but I love strongly typed languages. I find the dynamic aspect of the next generation .NET languages really cool, but I like how it sits within a static world. I know I know, dynamic is cool, but I like strong typing OK, it brings peace to my mind.
I can definitely do without all the .NET controls, and page life cycle, I'm happy to do the front-end myself, I just want the back-end part to be as friendly, and high level as ASP.NET.
Oh, and I love all the reflection, generics, and functional stuff, especially LINQ, in C# and VB.NET.
Any ideas?
UPDATE
I appreciate any help. But just to make it clear, I'm not interested in VM solutions. To do .NET I'll just Boot Camp into Windows. I'm looking to develop natively on Mac OS X. If I'm wrong about Mono, that would be the best thing.
Otherwise something new might be fun.
UPDATE
I decided to have a look at Scala, and for fun, although it isn't web dev, AIR apps too. I tried Mono, but the IDE is still in Beta, and there's no way to use breakpoints in debugging, which is an unnecessary pain.
I am going to look at Scala, and maybe some Java frameworks too.
I would definitely take a look at Mono on OSX. There's tons of tools and you don't have to be a command line guy to use it.
For an IDE take a look at MonoDevelop which can now do
iPhone development
MonoDevelop is built on top of Gtk# which is a great GUI toolkit
Another GUI would be to WinForms, but I've never been a big fan
As for web development you can still use MonoDevelop with any of the normal toolkits:
WebForms
ASP.NET MVC
Silverlight / Moonlight
etc
For the server you can use Apache, lighttpd, etc - pick your poison!
Perhaps I'm biased as I've been using Mono since before the 0.3 days, but I'm and fan and it's definitely not like "fitting a square peg into a round hole". It has it's own libraries and ways of doing things and support for almost all of the .NET stack.
Given the constraints, I think you would be happiest with Java. It is statically typed, has good IDEs (IntelliJ, Eclipse, NetBeans) and is used a lot for web.
I read some interesting articles about Scala - But I haven't tried it myself yet.
It uses static typing and also has functional features.
There is a TextMate bundle for it and also Netbeans seems to offer good Scala support.
Why not just use VMWare or parallels.
I run Visual Studio in VMWare (on windows 2008 server) runs well
I'd look to run Visual Studio under a VM on OSX if I were you. If you're not doing fancy WPF stuff, then your development/deployment experience will be the same.

Resources