Cocos2d-x vs Cocos2d XNA

Hi,

I am sorry if this topic has already been beaten to death, but I did not find a conclusive answer anywhere.

I am starting out in game development and have landed on Cocos2d-x as the best framework to fit my needs:
# free/low-cost since I am a beginner, I can’t warrant a big investment without knowing if/when I can actually complete a game
# Linux friendly development. I can develop in Vim on my Ubuntu machine very easily
# is programming based framework as opposed to a proprietary GUI application
# Supports publishing most of my target platforms

My most important target platforms are Ouya, Xbox, PSM, Desktop - i.e. the consoles as opposed to mobile devices (with mobile platforms being less important but nice to have). The 4th point, support of most of my most important platforms, is why I am starting to consider Cocos2d-XNA, though I believe Cocos2d-XNA comes up short on points 1 and 2.

As I understand it, Cocos XNA has better support for the console platforms, but comes at a cost, $600 a year for Xamarin.Android and Xamarin.iOS in order to publish to those respective platforms (and Ouya requires Xamarain.Android as well). Also, Xamarin does not support Linux as a development platform (the IDE only has downloads for Mac and Windows). Also, while Cocos2d-XNA may be free for Xbox/PSM, as I understand those platforms have a fairly expensive (at least for a beginner like me) licensing cost to get on their platforms that is not the fault of Cocos2d-XNA.

Can someone clarify those points? How does Cocos2d-x compare to Cocos2d-XNA on those accounts:
* Does Cocos2d-x have any hidden costs to publish to Ouya, Android, iOS and Windows platforms?
* How well does Cocos2d-x support Ouya compared to Cocos2d-XNA (I am aware of the Cocos2d-x MetaProject, http://forums.ouya.tv/discussion/254/using-cocos2d-x-with-ouya, but have not tried it yet)
* Can Cocos2d-x be used to publish to PSM (Playstation Mobile)?
* If I wanted to stick with Cocos2d-x for the other platforms and port to Cocos2d XNA

And also, how would you speculate the future to pan out for C++ support on upcoming platforms, Xbox One, Playsation 4, Apple/Google game consoles (rumored)

Thank you for your help

Unless there’s something I don’t understand , I’d avoid XNA if only because of this line on wikipedia.

“According to an email sent on 31 January 2013, XNA is no longer actively being developed, and it is not supported under the new”Metro interface" layers of Windows 8 nor on the Windows RT platform."

Hello.

That would be misinformation. MonoGame support Windows 8 and Windows Phone 8. There are many myths regarding XNA floating around the web, and repeating them here is not helping.

XNA is a mature technology from Microsoft. XNA 4 refresh 1 is the first revision of this mature technology. This technology will be supported by Microsoft for the next 10 years. While no new features are going into Microsoft XNA 4, it will be maintained and updated as required. The MVP responsible for perpetuating the myths simply paraphrased and misinterpreted an email sent out to the XNA MVPs.

Next, MonoGame supports 10 platforms already, and is actively being supported by the team. There is no reason not to adopt XNA simply because of misinformation from misinterpreted emails. XNA as a technology is fully supported, just not from Microsoft alone now.

Check the MonoGame Wikipedia page for an exhaustive list of references for games that have been successfully released using MonoGame.

If you choose XNA and C# as your platform and adopt Cocos2D-XNA you can expect to reuse 90 of your code across all 10 platforms that MonoGame supports. We get over 95 reuse in our games.

“Can you release to PSM with cocos2d-x” : Not without special SDK access from SONY and porting cocos2d-x over to the proprietary SDK. If you want to use the self-publishing model from PSM then you have to use C# and we recommend MonoGame and Cocos2D-XNA. The BasicEffect in MonoGame does not work perfectly with PSM, but you can create your own effects in lieu of BasicEffect.

“1.free/low-cost since I am a beginner, I can’t warrant a big investment without knowing if/when I can actually complete a game”

Judge where your target audience exists, not where your money is limited. If you are after the Ubuntu market, PSM, Xbox 360, Windows Phone 7, Windows Phone 8, Windows Desktop (7/8/XP/Vista), then cocos2d-xna is just as effective as cocos2d-x. Your choice here depends on your experience with C++ versus C#. Both will have their pitfalls if you are truly a beginner/novice programmer.

" Cocos XNA has better support for the console platforms, but comes at a cost, $600 a year for Xamarin.Android and Xamarin.iOS "

More FUD. Xamarin Community Edition allows you to publish FOR FREE but at a limited size. if you want an unlimited deployment for your game, then you will have to pay for the Android and iOS support. That’s the only 2 platforms that cost. Again, see my point above about your target audience.

“Also, while Cocos2d-XNA may be free for Xbox/PSM, as I understand those platforms have a fairly expensive (at least for a beginner like me) licensing cost to get on their platforms that is not the fault of Cocos2d-XNA”

Incorrect. PSM is free, Xbox is $99 per year. Windows App Store is also $99 per year. That’s $8 per month. Apple is also $99 per year if you want to do iOS, and another $99 if you want MacOS access. Ubuntu also has a publishing fee as I recall, but am probably wrong there.

SONY PSM is the ONLY totally free service for self publishing. Android has a one-time fee of $25 (or something low like that). Again, not free.

There is so much misinformation about this topic.

The only source of information about Cocos2D-XNA is from Totally Evil Entertainment. We have been supporting that platform for over 18 months now and have successfully brought it to the platforms supported by MonoGame. if your source of information about Cocos2D-XNA is not from Totally Evil then it is likely wrong.

Jacob Anderson - Gena Minchuk - Kenneth Pouncey : these are the people who support Cocos2D-XNA. We will gladly answer any emails you send to us, just email team a.t cocos2dxna d.o.t com and you will get a response.

You could also adopt Java and write specifically in java then use xmlvm to convert your Java game over to the other platforms. That’s also free and it works sometimes. It seems to support Android and iOS and Windows Phone. Plus, it’s open source so you can contribute back to it.

Good luck!

Forgot one question:

"And also, how would you speculate the future to pan out for C*+ support on upcoming platforms, Xbox One, 4, Apple/Google game consoles "
C*+ is the standard on all game consoles. Only Ouya and PSM have not published a first-native-SDK on their platforms. Every other device has a native SDK. The question is how accessible are they?

You will need to do your research. You will not be able to just write a C++ game for Play Station, Xbox, Ouya, or any other console device. These console devices are protected and highly coveted by their manufacturers. Their owners protect their customers by making you step through a lot of red tape, documentation, and legal hurdles just to get access.

if you are truly a novice/beginner then PS3/PS4 is not your audience. That is by-far the most difficult for publication right now. The most accessible console is Ouya, and the most pervasive console for access is Xbox Live Indie Game (Arcade). PS4 will be accessible, but nobody knows for sure just how accessible it will be. Anything you hear is just rumor as we are all covered by strict non-disclosure agreements with SONY and they are very serious about those agreements.

Remember to choose your audience and expect the technology to change in 18 months.

I stand corrected ;), I may not be the OP but thanks for the information all the same.

Hi Jacob,

thank you for the informative reply, I definitely do not want to be propagating incorrect information. As you mentioned, searching the web leads to conflicting answers, which is why I hoped for some clarification.

I am not a beginner programmer, I have about a decade of experience, just not in game development. The choice between C++ or C# is not a big deal here. Support for development on linux is though, can anyone comment on the your experience developing with Cocos2d-XNA on linux?

As for pricing, I am ok with the fees associated with publishing a game to various markets ($25 for Android, $99 for Xbox, etc) assuming I had a completed game to publish. Rather it is the startup costs I am more concerned with during this period where I am still experimenting and finding which framework path I want to invest my time into. This is where I start to get a bit confused. The Cocos2d-xna page here, http://cocos2dxna.codeplex.com/, states:
“If you are targeting a platform other than Windows Phone 7, Windows 7 (and earlier), or XBox 360, then you will need Mono Game 3”. Following that to the monogame pricing page, http://monogame.net/price, it shows “Paid license from Xamarin required to distribute/sell games/apps” on Android/Ouya/iOS… but as you pointed out they have a lighter free version, so I understand it now publishing to Ouya/Android/iOS could be free. My confusion lies in how coupled Cocos2d-xna/Monogame/Xamarin are, and whether I can do my development on linux.

Thanks again for the information

cocos2d-xna will not work on windows 8 or windows phone 8 metro games, so better don’t use it, as it is said in the downloads section, it is deprecated

Hey Mike,

You can develop on Linux. Ethan Lee has a fork of MonoGame (MonoGame-SDL2) that works with Linux. If you go that route, then get his fork. It will work with cocos2d-xna just fine.

There are other XNA implementations out there. ExEn, Delta, and MonoGame are the top tier that I know of. ExEn is not complete, Delta is not free, and MonoGame is free. The satellite platform support is not free and will likely never be free. The Xamarin Community Edition does allow you to publish a small game for free. You would use that edition for your first “try it out” game. The static analyzer in Xamarin’s compilers will pull out excess code that is not used, so they do try to make your game fit into a small footprint.

MonoDevelop is the tool you would use on Linux. From reading Ethan’s posts, I think that Monod.Droid and Mono.Touch do not work on Linux (for compiling), but I am not sure about that. Maybe he just doesn’t want to buy the license for those technologies.

Get on IRC (irc.gnome.net) and open the #monogame channel. Ask the people there about Linux, someone might respond. The forums on monogame.codeplex.com may also provide some insight to your Linux experience. The team is interested in supporting Linux, but we all work from either MacOS or Windows desktops. There are some contributors that use Linux successfully with MonoGame, so try the forums there.

You will find pitfalls in both directions presented to you. The C++ world is configuration-soup, but once you get the magic spell correct, you can publish like crazy. The C# world is easy to configure and build, but there is more $$ cost for that convenience. We have build scripts that build all 10 platforms of cocos2d-xna from two windows desktops. We can even build the Linux version there.

Don’t forget to contribute back to the project you choose. We are all volunteers who work up to 6 hours per day on these projects. Your contributions help to make it better for everyone.

Jesus, your information is incorrect. cocos2d works in Windows 8 and Windows Phone 8. Please do your research before posting misinformation on this forum.

For the record:

  1. cocos2d-x works on Windows Phone 8
  2. cocos2d-xna works on Windows 8 and Windows Phone 8

BOTH do this for free with no runtime costs, no development IDE costs (VS Express is free), and both do it using the native device platform (DirectX).

Then, I should assume that cocos2d-xna (that is not cocos2d-x) is made with Mono now, elsewhere it would not work on metro apps. Is that correct?

Additionally, I made my wrong comment (thanks for your kind correction) since the wiki says this:

cocos2d-xna
This code base is supported by Totally Evil Entertainment, MonoGame, Xamarin, and Mono.
You must use MonoGame for non-Windows Phone 7 and non-XBox360 support.
Has been demonstrated on Xbox 360 and Ouya Console.
Obsolete: written in C#, base on XNA rendering, for Windows Phone 7

Written in C#: yes it is
Based on XNA rendering : yes it is
For Windows Phone 7 : yes it is

On Windows 8, 8 RT, 8 Phone, it all uses the Microsoft .NET runtime, not mono. There is no need for mono on a Microsoft device. MonoGame uses the DirectX graphics hardware on Microsoft .NET.

Cocos2D-XNA is not a mono technology. We are independent of mono and do not require it. If you go off the Microsoft plan, then you will need a runtime. Mono is one such runtime. There are probably others, but we don’t concern ourselves with finding more runtimes.

For reference:

https://github.com/mono/MonoGame/blob/develop/Graphics/Architecture.png

Jacob Anderson wrote:

For reference:
>
https://github.com/mono/MonoGame/blob/develop/Graphics/Architecture.png

So if it’s Microsoft’s XNA 4 it will not work in windows phone 8. It will actually if you publish it as a Windows Phone 7 game, but you will not be able to use some WP8 API like IAP, etc. The same on windows 8 METRO apps (non metro you can put XNA or other technologies).

If that is not correct, then I have been living in a big mistake for the last year :slight_smile:

You are living a big mistake for the last year.

MonoGame fully supports Windows Phone 8, as I have described in earlier posts.

There are ACTUAL GAMES on windows phone 8 that use cocos2d-xna AND monogame that are published.

MonoGame provides the XNA 4 API.

Microsoft ONLY provides XNA4 on Xbox 360, Windows Phone 7, and Windows Desktop. XNA3 was on Zune.

Every other hardware platform supported by cocos2d-xna is provided by MonoGame.

MonoGame does NOT require Mono. When the project started it was called XNATouch, but then became MonoGame, which is an unfortunate misnomer. It really is XNAUniversal! When you want to go outside of the Microsoft platform, then you need a runtime, and that means something like mono.

Hello Jacob,

I know that Monogame supports windows phone 8, but Monogame is not Microsoft’s XNA 4.

So my question is, is cocos2dx-xna made with monogame or xna? if it’s xna it will never run on windows phone 8 unless you publish it on windows phone 7 market.

>> but Monogame is not Microsoft’s XNA 4

XNA is an API. XNA 4 is version 4 of that API.

MonoGame implements the XNA 4 API.

XNA does run on windows phone 8, it does that using the MonoGame implementation of XNA 4.

I can’t say it any more plain than this. Cause your mind to release the lock that Microsoft has on XNA. XNA is just an API, Microsoft implemented it for their hardware, and MonoGame implemented it for the rest of the world.

Yet, counter to your argument, there IS REALLY an XNA 4 available from Microsoft for Windows Phone 8. That XNA4 is a very reduced API designed for the “Windows Phone 8 Game” template in VS2012. Try it, you will see that Microsoft.Xna.Framework exists in there. Yet, forget about it. MonoGame implements XNA 4 for Windows Phone 8.

repeat:

MonoGame implements XNA 4 for Windows Phone 8.

OK?

Man, believe what you want, but you CAN’T publish XNA 4 games on Windows Phone 8 store (unless you publish it as a Windows Phone 7 store). You didn’t really reply my question: if cocos2dx-xna is based on XNA4, you can’t publish windows phone 8 games.

http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj207003(v=vs.105).aspx

All other story, you can leave with it if it makes you happy…

I have answered your question, you are not accepting my answer:

if cocos2dx-xna is based on XNA4, you can’t publish windows phone 8 games

This is incorrect. XNA4 is not a technology, it is an API. YOU think it is a technology that is implemented by Microsoft only, and that is incorrect. On Windows Phone 8, you can publish your XNA4 game using MonoGame as the XNA4 API provider.

It has already been done.

QED.

ok ok, enjoy publishing your Cocos2dx-xna games on Windows phone 8, show me them when they are published :slight_smile: good luck