We’re working on one! Well, rather @JO3RI is working on one with his team!
The challenge of fully endorsing or whatever you want to say (we will host from the main page) all along is getting something that will work on at least windows and mac, preferably also linux. We’ve been having an issue trying to get resources devoted to a mac version and going from there to also hosting a library of games on our server.
What @eried has already done is very close to what we have been thinking all along.
At the same time, it’s also been amazing to see the community offer solutions to this as well so that it’s truly an open source community development. I think we are trying to have something done before the end of the year if not very much sooner than that.
For now the Arduboy Manager by @crait is the one we link to on our main page and I suggest to people, just because I work pretty close with him on that.
Interested to what people have to say, specifically in regards to mac support.
In my opinion If the central game repository, hosted on the Arduboy website, is not community controlled it will eventually fail since one person can not control every upload and game update. A client side upload manager is useless if a program similar to what @eried has created can be done for Linux and Mac also.
Apparently from your post the Arduboy Game Center, I have been working on, is not what you were looking for.
I assume you meant to say ‘can not be done for Linix and Mac also.’ As mentioned, I have a Mac so would love to see one for that platform. I am wondering if the average Linux person would be the same sort of person who would have no trouble downloading source and compiling to the Arduboy via the Arduino IDE?
I’m confident the program @eried made can be ported to Linux and Mac.
My opinion is that If a game can be installed from an official website with one click, a client side upload manager would take multiple steps to put a game on an Arduboy. For the average user the fewer the steps the better. If the user wants to learn to code then they would download the game and use the Arduino IDE.
No problem, @filmote. Sometimes it is hard to get a concept across in text. @eried created a program for windows that is basically a small client side program, with no UI, designed to just upload a file to an arduboy. If the user clicks on a website link it activates this small program that then downloads and immediately uploads the game to the arduboy,
The only problem I have with the implementation of how @eried has his loader, is that it’s associated to .hex files which are used by many other things. That’s one of the reasons we created the .arduboy file format.
So my suggestion would be hosting the .arduboy (which are just a renamed zip file) and the loader would be associated to that. Obviously there is the added step that the application then needs to extract the hex file… but thisn’t a bad thing either. Using a zip file adds CRC and if you are just downloading a .hex file it’s possible for it to be corrupted in the download and then brick your unit.
The last update @eried did was to allow .arduboy files to be associated and uploaded by his uploader.
I never considered that the hex file downloaded and then uploaded could be corrupt.
The website i created is hosting the ardbuoy files which are created by the site, A user simply adds the information for the game they created and the hex file and my code creates the JSON file and then creates the zip/arduboy file. It took me some reading to understand the format of the JSON for the arduboy file.
The website itself is displaying the data directly out of the zip/arduboy file.
Yeah long story short we are really impressed with what everyone else has built and using that as a guide to host something. If you’d like to help build something or take part in other more semi official activities at Arduboy we do have a slack chat where we babble on about this kind of stuff.
If you’d like to join the slack chat write us an email at www.arduboy.com/contact and let us know we can send you an invite
And also I recognize I’m way behind the curve on getting the arcade and game loader all “official” but frankly, running the business and paying taxes things like that has taken up almost all my time this year! We’ve been talking about how to get some more resources in the chat room too so… check it out!
I think if you do that then you need to be able to tie uploads to users’ accounts so you can allow people to rectify any mistakes and update their game, as well as being able to block users who do anything malicious (which is unlikely to happen, but always a possibility).
Making the loader a webpage would be hard because there’s no standard solution for giving webpages control of serial connections (as far as I’m aware). Someone made one that works with Chrome, but it was relying on Chrome-specific functionality, and I don’t think the ‘official’ game loader should only work for people with a specific browser.
Yeah, that should definitely be an optional feature.
(Personally I think all file type associations made by all programs should be optional. I’ve spent a lot of time in the past trying to rectify file type associations that I don’t want. Sometimes command line wasn’t enough and I had to go registry diving.)
In fairness it’s quite uncommon these days for files to be corrupted when downloaded.
It’s probably only ever happened to me once.
Some other suggestions:
I think if there’s going to be an official repo of Arduboy games, it might be good to have a REST API so people can use custom clients that pull from the official repo. If you link that to a user id or a per-client id you can also employ rate-limiting to prevent the repo from being overrun by requests.
I think maybe it would also be good to publish hashes of the hex file for the sake of extra security.
Then if you’ve got a client-side loader you can make it check the hash for you, or if you’ve got a command-line utility you can use that.
Personally I’d prefer something client-side that’s portable (i.e. you just unzip it and it works wherever you put it), but I respect that some people might prefer an installer and some people might want something browser-based.
(Also, if it’s only installer-based, it would be nice if it gave people a warning if it’s going to edit any registry keys or put files anywhere outside of its designated area (other than in the temp folder), even if that’s only available through ‘advanced setup’ to avoid scaring beginners. Letting people choose where it’s installed is a given.)
Some of the more obvious things:
Definitely stick to .arduboy files, and have a UI to help fill in the data.
Make sure the repo supports https, TLS and whatever other security features that are considered viable.
That would be ideal, but won’t happen at first because I’ll have to figure out how to integrate with discourse one login api.
At first it will be curated, until we can develop some kind of API then it will go to a moderated system.
We’ve talked about it a lot and really having a standalone executable that is associated to .arduboy files fits the use case nicely. There are web purists out there who would want to see this done in a browser, but as mentioned that locks out a set of users and puts us back in the problem we have right now for mac users.
Agree. I think the app functioning like @eried is awesome. I love the drag and drop, I love the little animations. I’d love to incorporate that. At the same time, I’m a big fan of having the library of games available from within the application.
Furthermore, I think it would be amazing if we could build some social API into the program, so you could have kind of a “daily news” box that shows recent posts to the forum. There are a lot of options here.
Part of developing the schema for the .arduboy files was also designing a json format for the library in addition to each games. If I remember correctly @crait has this implemented. This is really I think the key here, to continue to support other people to create their own “alternative” loaders. @JO3RI asked for this too, to make whatever the official repo is open by API so his team ARG loader can access it as well.
Agree, the plan will be to distribute all games with the application as that’s only a couple megabytes. Updates and new games would be then synced from the .
There should be a qualified uninstaller that would take care of this, but personally I’m a big fan of .ini files. However, you cant have everything within a single .exe then… and now windows write protects program files by default which causes all sorts of issues to that. For sure make it clear what all changes are being made to the system. I’m ok with having an overly verbose install log.
I suppose there is no harm in this, although it would never be successful at catching any malicious attempts because the steps needed to get here would mean they would theoretically own our whole system so… But it would be a good resource if you downloaded the hex from another location. It may actually be best to report the hash of the entire .arduboy file as that would also report version control for anything in the document not just the hex.
Everything on arduboy.com is forced through https as of right now
Just as a side note, I was uploading some games yesterday in the middle of an electric storm and my Arduboy got a big discharge and something happened. It is like agent smith in matrix…
(seconds after that, still shocked , I also noticed that the dock got all the files directly from my github repo with git clone https://github.com/eried/ArduboyCollection.git repo, so conveniently evil)
Agreed. As I said before that’s much easier to do with a standalone program than something web-based.
In addition reducing the need to redownload games unnecessarily is a good thing. Aside from reducing server load, there are places in the world where internet speed and download capacity is very limited. (A lot of modern web developers (not all, but quite sizable number) seem to think everyone can afford to limitlessly download data and everyone is on lightning-fast 1Mbps fibreoptic.)
I can understand some people would want this but personally I wouldn’t have much use for this.
Also I think it should be more of an afterthought and perhaps added in a later version - get the core functionality sorted and flesh the aditional features out later.
Yeah, open APIs have been proven to be quite successful with places like github.
If you’re going to do that you’ll have to make sure you’re complying with the licences.
As I’m sure you’re aware, some licences have rules about how they’re distributed.
As long as it works correctly - I’ve known uninstallers in the past to miss large chunks of registry keys, hence my concern.
That’s a good approach as long as it’s somewhat readable. (Similarly to the registry key thing, I’ve seen some very weird log files in the past.)
This was more along my thought line, since I expect some users will still try to maintain their own repo servers (which is actually a good idea in case the main one goes down for some reason). If the other repos also publish hashes then (assuming same game version) the hashes should match. Aside from being a reassurance, it would also be a good indication as to whether any of the repos (official or user-maintained) have been infiltrated.
It’s not completely critical, but it’s better to be overcautious.
This is what I had in my head, I don’t know why I typed ‘hex’ :P.
I’m glad to hear that, in this day and age that’s the approach all websites should be taking. (Unfortunately, some don’t.)
We hardly ever get snow, and when we do it’s very thin on the ground, barely enough for a snowman.
Winter usually brings us sleet, hail and rain, and arguments about whether the pavements are icy enough to get the salt-trucks out (the public says ‘yes’, the council says ‘no’).
I also like the cold and the snow.
Once I managed to convince my parents to go for a holiday in Bulgaria because I wanted to go somewhere snowy.
(But that’s a story for another day, methinks.)