C4A, One Year Later


Compo4All, better known as C4A in the Pandora community, started a little more than a year ago when Skeezix released it to the public. It was first used in combination with MAME, to extract high scores from a couple of selected games, and share them on online leaderboards automatically. Since then, the number of supported games has grown dramatically, and not just MAME games.

There’s now support for about 80 games (either MAME ones or indie games supporting C4A directly) as you can see from the C4A website. The implementation of online scoring in a game is very straightforward, you can see for example how I did it for the recent Flappy Bird clone I released on the repo.

So, the overall base of games is growing, but how about the activity itself ? I don’t have hard numbers to share with you, but one of the key problems is that the more you have games, the less focus on most of them, since the Pandora user base is limited and not growing much anymore. Recently Flappy Bird has been showing lots of activity, because it’s a recent game, that’s quick to play and compete on (after all, all you need is to press a single button!), but you can see that games such as Elevator Action are mostly deserted recently (only a single score in August), and it’s just one example out of many.


It’s a shame because C4A can really increase the interest of playing a certain game. Flappy Bird would have no meaning if you were just playing alone, but knowing that someone has just beaten your high score can lead you to do your best again and again to regain your place in the top 3… or wait for next month for the scores to be reset to try your chance again.

So C4A is faced with two issues:

  • Too many games
  • Too few players overall to engage in healthy competition

C4A has a problem of  being “sort of stretched, like butter scraped over too much bread.” (as Bilbo Baggins would put it).

So there are two things that can be done from there:

  • Increase the activity in the existing community
  • Increase the size of the community of players

Sounds like Economics 101, and it’s true it’s very closely related to the principles of growing economies (increase productivity, or increase the number of consumers). That’s why Japan’s Economy is kind of f****d up in the long run, with a stagnant productivity and a falling population (and therefore less consumers) because they don’t make kids anymore, but that’s a topic for another time.

To increase the activity in the existing community, we need to have more exposure, more eyeballs on what’s happening on C4A. There are probably a few ways to do that even in a non-growing community. I’ll come back on that later.

When it comes to increasing the community of players, we can’t really expect much more to happen on the Pandora side, because Pandoras will soon not be sold anymore and the active user base is probably shrinking a little, month after month. Of course the Pyra will be there down the road to make the community grow again, but that’s probably at least a year from now. In the meantime, a good option is for C4A to go multiplatform. The code for the client and the server is available on Github and it would be trivial to port it for other platforms. Yet nobody has done it… at the time of writing.

Picade has been shipping recently and it could be a good target for another C4A distribution or client there. The Raspberry Pi is probably another good platform of choice with a large user base, while the Pi’s performance in MAME is a far cry from the Pandora’s.

The Picade hardware, based on the Raspberry Pi.
The Picade hardware, based on the Raspberry Pi.

But the distribution itself is an issue to consider as well. It needs to be integrated to something to work properly, seamlessly. I was exchanging a couple of emails with Skeezix recently and he had an interesting way to explain this:

Skeezix: C4A isn’t a standalone thing these days, it needs to tie into a system; you could just run appropriate MAME builds, and then have C4A sweep through and upload/download scores etc, but without a deent level of integration its not a great experience. So packaging up C4A by itself isn’t overly great imho.. people likely wouldn’t want to just run MAME, and then run C4A to do a post-MAME cleanup. Not to mention indie games etc, where we need some penetration as well.

So, to increase the user base size, there’s no immediate solution and it requires some work to integrate C4A with existing MAME distributions, indie games and so on. On the Pandora, these problems don’t really exist since there is a central repository and C4A support is included by default in many games. It’s a pretty good set up in that sense.

This being said, even if the integration issues are resolved, there’s still another barrier linked to security problems with C4A.

What security problems ? Well…

Currently, C4A assumes no cheating takes place and does not include any features to prevent uploading fake high scores. In the Pandora community, which is a little bit like a small village where everyone knows each other (yeah, it almost feels that way on the boards!), there’s a kind of established trust. But once you step in different communities where such trust is not given, it becomes hazardous to expand the user base without additional measures, because a highscore system where registered scores can not be trusted is doomed to fail.

One of the key  reasons why Skeezix did not want to implement strict security systems for scoring is linked to the associated complexity for developers:

Skeezix: The reasons for the lax security are good ones – it is not for laziness 🙂 To enforce some reliability in the scoring, implies tamper-proof binaries (ie: so you don’t modify the settings in the game, or change the code to make auto-aiming etc), which implies signed binaries… which in turn implies central signing authority, which implies extra workload for everyone involved – developers need to understand this added complexity, and need to work with the central Illuminatus to sign binaries *for every release*, and players need to get up to date versions, and so on; we want devs to be free to do updates, with no gatekeepers; we want players to just play; we don’t need PC-level patching and update problems and all that crap on Pandora. So rather than labor down the entire process, I decided to just make it more an honour system.

Ultimately, down that road, we could have a vote-system to vote on the reliability of submissions; if one guy puts in a bogus score, and some percentage of the active player base for that title rejects it, it could be hidden until reviewed; but thats hard.. an obvious cheat is obvious, but if someone just slowly cheats, putting in bogus scores that start at the bottom and gradually work to the top, it’d be hard to detect.

Still, so far, we’ve not had a problem. (Seeing this posting, someone will take it upon themselves to cheat of course… but like adding a ‘crash’ command to computers made them so easy that ‘crackers’ decided not to bother.. we figure if its an honor system and everyone knows cheating is possible, that its such an easy target no one will do it; and if they do.. yay, good for you, you took candy from babies, enjoy your loneliness 🙂

There’s a number of other improvements that may be worth considering as well. An obvious one is “offline mode”. What if you play a game while being offline? Then your highscore is not uploaded to the servers. Most games do not integrate any option to keep high scores established offline and upload them once you go online again. That’s probably also linked to the security aspects – if you have an offline score, it means it’s stored somewhere in a file and that file can modified easily for cheating. On top of that, you’d need to launch the same PND again while being online to have your offline score uploaded, which is not practical. Ideally, we need a kind of C4A client (such as the Spaghetti Client, or SC) to be included in the firmware, and launched at the startup in the background. With some modifications to the SC code, offline scores could be redirected to the resident client application which would then upload the scores directly whenever you go online again. Of course, you would still need to have some kind of security features if you wanted to be thorough, but I think that’s given anyway if we want to move forward.

For now Skeezix is still busy with his Zik Zak 8bit console project, so there has not been much attention to C4A’s improvements in the past few months, but I believe it may be the right time for him to step back in the project and further build on it as the community is geared up towards the Pyra’s launch. It would be great to have C4A’s profile manager included by default in the Pyra’s distribution, to maximize the user base on the new device.

Now, regarding increasing the activity within the existing community, I believe there are several things where we can take the matter in our own hands. Following this post, PandoraLive will select a couple of games every month on which people will focus to compete on, with weekly update, tweets when significant score updates occur. On top of “Weekly Software News”, you will get “Weekly C4A news” on the games concerned by the competition. That way, we’ll hopefully have more visibility regarding the present games people compete on, and new players can think of joining and try to beat the established scores.

On top of that, when there are great games on the repo that fit the bill, we should all try to tell their maintainers that C4A support may be worth considering. It’s very easy to set up (check my Flappy Bird article) and honestly there’s no reason not to do it if you care about making your port/game more popular.


Implementing an email notification every time your best score is beaten would be another great way to enhance the competition between folks. That’s something we’ll need Skeezix to implement, however.

On my side, I will continue to bug Skeezix once in a while for improvements on the overall way things work 🙂 And hopefully when I write another article on “C4A, two years later”, things will have improved somehow.

Leave a Reply

2 Comment threads
0 Thread replies
Most reacted comment
Hottest comment thread
2 Comment authors
skeezix mistyping on tabletklapse Recent comment authors
newest oldest most voted
Notify of

I wonder how the author believes to know whether anyone has cheated yet or not.

skeezix mistyping on tablet
skeezix mistyping on tablet

There is no way to know.. but if there are cheaters they are well behaved enough that it at least appears theyre playing normally enough so as to not raise attention. Also, we’re a close knit bunch.. not so likely, but certainly possible.