What is monogame supposed to be? - monogame

What is monogame supposed to be? There is not much info on their homepage http://monogame.net/ and I am not familiar with XNA.
I saw that is uses OpenTK so I assume that it is higher level than OpenGL. Does it sit in between OpenGL and a Game Engine? Could it be compared with Ogre3D?
And what exactly is the content pipeline. I am asking because I am almost exclusively developing on linux and I don't want to install a virtual windows machine only to compile some assets. Is the content pipeline optional?

XNA was Microsoft's .NET DirectX 9 wrapper for Windows, Windows Phone and the XBOX 360 (through Xbox Live Indy Games). Aside from providing a DX wrapper, XNA provided content management, helpful classes (game window with draw / update loop and asset management, user input (keyboard, mouse, game controller), networking, etc. It was an excellent framework.
MonoGame is a cross-platform reimplementation of XNA, that does a great job of providing all of the XNA functionality, plus support for DirectX 10 and 11, as well as cross-platform support (via OpenGL/OpenTK) for OSX, Linux, iOS, Android, PlayStation, and others. If you're writing a cross-platform game, it's really worth your time to investigate MonoGame and see if it's right for you.
Edit
It's worth noting that neither XNA for MonoGame really qualify as a "game engine." For instance, they don't provide out-of-the-box collision detection, pathfinding, etc. It's up to you to develop those.
If you're looking for a full engine, consider Unity. It's scripting language is C#, and it's used by a significant number of professional game studios.

Related

Hololens applications using WebGL / ThreeJS

I've got a WebGL application built with JavaScript and ThreeJS. I was able to enable WebVR somewhat easily to create a immersive environment. I think my app is a better use case for mixed-reality/AR. Hololens seems to be the big player in that hardware space.
As I look at the development tools around Hololens its pretty much Unity and C#. Both great tools but as I start developing in this closed environment I kinda feel like I'm building a Silverlight application.
I've been trying to figure out if there is a trick I can accomplish to create a immersive experience with my WebGL app. I know that I can use Edge browser, however, thats a flat experience which is not any value to this use case.
I've found a few links:
is-it-possible-to-use-webgl-with-hololens-repost
can-i-make-a-universal-app-using-html-that-runs-on-hololens
augmented reality with awe.js
All these seem to either be 2d experiences or 'fake' AR using cameras and WebVR. Furthermore, I also looked into porting my WebGL app to Unity using Unity's JavaScript language features to find out that it is really a subset fork of actual JavaScript ( known as UnityScript ) making it way more effort than its worth.
Given all this, I'm wondering if its even possible to accomplish the feat and if anyone knows if this is something on the roadmap for microsoft?
There's this new tool from Microsoft called HoloJS. It's a framework for creating holographic apps using JavaScript and WebGL.
holographicjs is a C++ Windows Runtime Component for hosting Windows Holographic apps built with Javascript and WebGL.
Its interesting and a huge hack but might be a good first start for the community!
Note: Answer based on:
I do not know what Microsoft roadmap plans are or will be
The actual easy-way to develop for hololens is using VS and Unity3D (so, maybe there is a way of developing using WebGl but as you can see, is not the easy-direct and supported way).
My answer: Taking into account that is a new product with no direct competence, they will not move forward offering other platforms unless they are forced to. Meanwhile they are happy that you use C#, Visual Studio, .Net, Edge and Windows and Unity3d under Windows (hard to believe to me you can do this using Unity3d at MacOS or Linux). It's also normal that they offer a limited ecosystem at the moment, with the same excuse: it is new, so limited support due to stability and optimal concerns is available just in their more familiar context: Microsoft products.
But as soon as new device come in and start offering new things (support for programing languages, OS or web) you should be completely sure that they will evolve or die.

Anything similar to XNA for Android or IOS?

I want to start creating games for Android/IOS. I have already created 2D games using XNA and I want to publish them on other platforms even PCs but my highest priority is Mobile platforms. As I said I am familiar with XNA so I need a similar Engine for 2D. It would be great if I could write once and publish on many platforms. Please dont suggest Unity or Unreal. They are not that easy when it comes to 2D.
By similar I mean, for example, how easy to draw a sprite on the screen.
Note: I am working on Windows so no Mac suggestions please.
Regards,
You may also want to consider MonoGame ( https://github.com/mono/MonoGame/ ) as that is also an Open Source, OpenGL implementation of XNA that currently has support for iOS, Android, MacOS X, Windows and recently Linux. It is now all ES 2.0 on the mobile platforms. Our biggest change is that we now support Windows 8, and have a DirectX 11 backend thanks to SharpDX. We now also have initial PlayStation mobile support.
Actually ExEn, is a fork of MonoGame( originally called XNATouch ).
For a list of games on the AppStore or Android Market place and even NaLC, currently using MonoGame look here -
http://monogame.codeplex.com/
I hope this helps.
D.
You might want to keep up on the project called ExEn, which has already successfully ported some XNA samples and smaller games to iPhone and Android. It requires relatively little work to port and refactor to these platforms.
I suggest you check out AndEngine, its an open-source 2d open-gl based game engine that has a strong community. If you want something that you can make cross platform games with check out LibGDX It too is free, open source and based on openGl but it also allows for 3d games. It is also cross platform so a game you write for android can be compiled for, Windows, MacOS (see below), Linux. It also has a really strong community.
Regarding iOS and OSX games you really can't make them unless you buy a Mac. Apple doesn't distribute their SDK for use on any other platform but their own. That said you could maybe get something working under VMWare
Check out MOAI SDK. It's completely free and open-source. It is in beta right now but it is still pretty good. Crimson Pirates for iOS was developed with it.
Right now it supports iOS, Android, Mac, Windows, and Linux. Really good. I thought I liked Cocos2D-x, which is a C++ variant of Cocos2d-iphone supporting windows, iOS (not Mac), and Android but not truely supporting desktop kinda made me like MOAI more.
You can use C++ with MOAI or you can use Lua (they highly encourage using Lua). Being built in C++ is really great because you get access to a vast amount of libraries and you can easily bind them to Lua.
You should try games development with cocos2d.
Cocos2d is one of the best 2d engines for ios/Android I have come across.
http://www.cocos2d-iphone.org/
It is openGL based free engine.
Regards,
Sam
These might be useful to you. However, the first two aren't free, but they have editions for both iOS and Android.
iOS:
http://ios.xamarin.com/
Android:
http://android.xamarin.com/
I've never used either of them, but it's something I've been looking into a bit.
Apparently it lets you run C# and .NET code on both iOS and Android which is pretty cool considering how much easier drawing and things like that are in XNA compared to Open GL ES 2.0. Not to mention the fact that you'd be using C# instead of objective C.
There's also a free open source version sponsored by the same people who make the two I listed above. This one lets you run C# and .NET code on Windows, Linux, and Mac OS X.
http://www.mono-project.com/Main_Page
I have been researching this topic intensively over the last few weeks.
I think the best solution for you is Marmalade, formerly known as Airplay SDK. It is actually more Windows-oriented than Mac (work in Visual Studio), although you still need a Mac for the final step of getting a signed app onto the store. It sounds like a very capable pure C++ product with iOS and Android as well as a bunch of other platforms, Personal license with splash screen $150 pa, single seat Professional $500 pa for all platforms. They have a 45 day trial license which I'm currently using.
I was tempted by MonoGame, could live with the $400 price tag for each platform (for the needed MonoTouch) but it is just way too buggy. The final straw was a combination of a bug causing it to crash all the samples on iOS5 and that keyboard input is broken on iOS.
Too be fair, I'm pretty sure that is all on the MonoGame side and was very impressed with how well MonoTouch worked and was looking forward to programming in c# with LINQ et al.
Since it is not obvious from the other answers, it should be noted to those who are unaware that the ExEn project and the MonoGame projects both build on the Monotouch platform from Xamarin (formerly from Novell) - which is a prerequisite for both for iOS games.
The Xamarin projects was mentioned in another answer as an alternative to Xna, but is really not. Monotouch and Mono for Android are a way to run C# and .NET on iPhone/iPad and Android.
Game development at least on the iPhone side, is typically done using OpenGL and OpenGL is also wrapped in Monotouch. The Xna implementations in Exen and MonoGame also uses OpenGL as the foundation as far as I know.
It should also be noted that Monotouch and Mono for Android are commercial products.
BTW: Exen also compiles to other platforms e.g. silverlight.

GWT mobile cross-platform drawing performance

I have some ideas for some games that I would like to develop for several mobile platforms. Rather than messing with a different language for each platform I would like some unified platform to go as far as possible on each device.
GWT seems like it would fit the bill for me since I'm more experience in Java.
Obviously for cross-platform Javascript seems to work on each device, mostly everything on the market being Webkit (with the exception of WP7).
I'm not looking for hardcore 3D performance but rather some decent 2D performance suitable for puzzle games and at most platformers. I could venture to say that I need between 10 and 500 animated sprites on the screen with a static or scrolling background.
Now I'm puzzled by the fact that I don't know which rendering option to choose. I see there are HTML5 Canvas-based implementation, then there's SVG, then there's VML, then (last resort) native.
Which approach/framework would be best to take in order to have good graphics performance and unified (as much as possible) development? I'm looking to support as many of iOS, Android, WP7, WebOS.
PlayN! http://code.google.com/p/playn/
The same Java code can run natively on desktop (including an applet if you really want to; but this is actually really useful for debugging or quick testing!) and Android; or be compiled to JS using Canvas or WebGL, or soon to Flash (for IE versions before IE9, where Canvas is not available).
No VML, so I guess WP7 support will have to wait for WP 7.1 (which will support canvas).
Or you might try to use IKVM.NET to turn it to .NET, and possibly Silverlight; or as a last resort write an IKVM.NET/Silverlight-based runtime for PlayN (implementing PlayN's APIs on top of Silverlight ones, using ikvmstub to make them available in the Java world, and finally using ikvmc to turn your Java bytecode to .NET).

Monotouch vs Flash CS5 for iPhone App Development

With the recent loosening of the Apple Developer licence on third-party development platforms, I have had a brief look into app development with Monotouch and Flash CS5 but am unsure of which to develop with. I am competent in both C# and ActionScript so the language isn't so much the issue (but i dislike objective-c so please don't suggest it).
What I would like to know is which development platform (if either) has the bigger advantages in terms of execution speed (FPS in games) etc. (Assuming that the code efficiency be of the same degree on both). Also if there are any other advantages/disadvantages between them I would love to know. (Please also ignore pricing, i am purely looking at this from a development point of view).
Cheers.
If you are looking into Mono, you might also want to check out Unity.
I started working through their tutorials last week and am having a blast. They have support for making iOS games with C#, JS, and Boo (Similar to Python). They offer a no cost stripped down version and a more advanced one for a price.
Along with the detailed tutorials on their website in pdf format, this site also provides video tuts specific to the iPhone, which you might enjoy. 3D Buzz
Here is a write-up on the unity site about how their framework integrates with Visual Studio/Mono Unity FAQS. They use their own C# compiler, but you can still work from VS or their Mono implementation.
I would strongly suggest using Monotouch over CS5. I've only really used Monotouch, so my answer won't be complete but I can tell you about my experiences with it.
Although it is only a subset of Mono, it brings a lot of C# wonderful features to the iPhone and it has a 1:1 binding with the native APIs which means you're learning how to develop for the iphone using the native APIs. Due to the fact it is a 1:1 binding, if you come across a problem, you can always see how it's done in Objective-C and then apply it to C#.
Granted, Monotouch does come at a price, I've found the price worth it due to the constant updates and the amazing speed at which the support staff will respond to any queries.
There is a great community envolving around it too - see Monotouch.info as example, which will link you to many great articles to get you on your way.

Best games/physics engines to use?

Looking for games/physics engines to use for mobile game development.
iPhone there is
Cocos2D
Android I've found
RokonAndroid
Just wondering if there are any others (better ones) that anyone knows of? Or any that are more cross-compatible?
Thanks
Tom
AndEngine by the anddev.org team..its alpha with no binary release..you will have to build from source..
AndEngine.org I believe
I used cocos2D-android and andengine. Andengine is much better. Best perfomance and almost without errors.
I haven't actually coded with either of these yet, but I did get the Bullet engine to compile with the NDK a few months ago. I forget what was involved off the top of my head (I can edit this post if needed), but I remember it was a bit involved and took me a couple days to solve.
Box2D port for Android
Bullet port for Android
Tom - not sure if it's better or not, but Gideros Studio may answer your needs. It's a cross-platform mobile development environment with physics, in-app purchase, Gamecenter, Storekit, hardware, as well as tweening, particle engine, and many 3rd party IDEs like physics editor, sprite helper and level editors.
It also supports native code (plugins), meaning if you have a library in C, C++, Objective C or Java, you ca integrate it next to Lua, the programming language Gideros Studio is based on. Moroever Gideros Studio IDE uses over-the-air (Wi-Fi) testing, so it's possible to test the application instantly on a real hardware.
It uses Box2D as a backend for physics.
I think nowadays your best choice is LibGDX. It is a cross-platform game engine, for Android, iOS, desktop and others, has a really active community, is still actively developed and has Box2D and Bullet physics engines integrated.
The framework is really great and there have been really successful games using this engine, even on Steam.