Sunday, 22 July 2018

CocosSharp is not winning any friends!

This is a moan dressed up to read like a thoughtful critique of open source projects!

I recently wondered about writing a mobile app for learning and since I wanted it to be slightly gamified to make it engaging, I thought that a cross-platform framework written in C# would be ideal for the task (since C# is by far my strongest language).

I found CocosSharp and it looked ideal. There were some cool samples and it was based on Cocos2D, a very mature and well supported framework. I thought it was so good, I decided to start making some intro videos since I spotted a slightly disjointed effort at materials for newbs. Seemed like a good idea so I started not only building the bouncy ball game but also thinking of a whole route from nothing to a fully working tile-based game that would be both a learning platform for me and a means for others to hopefully benefit from my experiences - Don't Repeat Yourself!

Problem the first

You would think that something so rich and full of potential would have a really simple way of getting started. A set of templates, ideally built-in to Visual Studio, but otherwise easily obtainable but already I was getting a bit nervous.

The instructions, from 2015, say that you have to add an additional extensions feed for VS and then download the CocosSharp templates extension. OK, not the end of the world, but then it warns you that it is not designed for VS2017 (which has been out for over a year now) and to continue at your own risk. To cap it off, someone has raised an issue on CocosSharp github which doesn't even have a reply about something so basic!

Problem the Second

When you start something new, it is nice to have the "go to" page to start from. Theoretically, this is the github page or its associated wiki but neither of these seems to have been updated any time recently (last time was March last year).

The wiki also seems unloved but hey, maybe it is simply all up-to-date and therefore doesn't need updating? Firstly, that's not true because it is out-of-date, secondly, it is not OK for a framework that is supposed to be taken seriously to have 74 open issues, many without replies, which basically says, "don't bother raising anything here". Even something that says, "I agree, please do a PR" would be something.

Problem the Third

Possibly caused by the second problem, is when other sites start to seem more authoritative than the official site because they are more recently updated. Microsoft and Xamarin both have areas about CocosSharp (although the Xamarin one is a little less coherent) and the MS docs were updated as recently as March this year.

Presumably, Xamarin was heavily supportive of CocosSharp and now that MS bought them, MS would now be a CCS supporter but if so, that needs to be much clearer. It would be much better to consolidate things like samples and stuff across all the sites and not simply duplicate stuff.

Problem the Fourth

A pet peeve of mine is people who write C# code but can't be bothered to document it, especially when it forms a library. It is all very well that you know that CCSprite.ContentSize is a wrapper around the original contentSize of Sprite but newbies don't know that and it is quite demoralising to hover over one of the many methods in some CCS objects and not see any documentation about what the method or property is. To rub it in, they even generate the docs and publish them online, when all that tells you is what you already know.

You can dig through original C++ or Objective-C versions of CC to try and work it out but why should you have to? Why make a useful shared library that makes everything nice and ".Net Friendly" if for some reason, you didn't put any comments in it?

Problem the Fifth

So where to go to try and get help? You could raise a ticket on CocosSharp's github but there is already one asking whether it is even supported any more (with no reply!).

I thought I would ask MS via their documents page. I clicked the "Product Feedback" button at the bottom which tells you to submit VS problems in VS, which I started to do, only to find a previous question closed as "other product". In other words, it is largely useless documentation for MS, which is more about touting Xamarin than helping people with CocosSharp.

Problem the Last

I have managed to get past most of these problems until now because of my super-clever IT brain but I have just noticed that there are different versions of CocosSharp. Not versions like "we added a new method" but versions where things changed a lot. This helped me to spot that the way that one of the samples said to enable stats was newer than what I had to do in the CocosSharp templates that all the documentation says to download!

There was also confusion about why some things were referencing MS xna namespaces and others not doing so. Now if I just go back to the main page and work out what is happening....nope. No-one is in.


The question for me now is how hard as a newbie should I have to fight to try and get help and answers? If none of the normal channels are alive and showing progress, I might as well just delete my videos from YouTube and write my games in another framework?

I am nowhere near experienced enough at CCS to be one of the people that helps move it forwards, especially since it is not clear who even runs the project and that means I am relying on the people who do know currently to keep the framework that I want to use alive, otherwise, the moment I find a bug in the framework that doesn't get fixed (some bugs are from 3 years ago) then I have to delete my app and start again.

Post a Comment