04-24-2012, 02:03 PM
First, let me just say that Tiggit is awesome and I hope it keeps gaining in popularity. I just recently started getting more into indie games and this is the perfect tool for me to keep them all organized.
Alright, so unfortunately I'm not very experienced with C++ but I know Java extremely well (Swing/Servlets/pretty much anything), C# reasonably well (not quite as much as Java but I'm productive with it), and Python reasonably well.
This may be the project to motivate me to learn C++ more though, but currently I'm a little clueless on how to even setup a proper environment (I'm running windows), let alone the build steps and whatever else.
However, I feel as though I could still be of some help. Some of the few things I've noticed so far that could use improvement (forgive me if some of these are known and already have plans, I just got Tiggit yesterday)
-Submitting New Games
It appears as though nico has to manually add entries to the all_games.json file and create the respective tig file. I can only imagine how tedious this must be getting, especially with an increase in popularity and desire for more games.
One solution that may be worth exploring is if the developers of a game are willing, have them host these json files on their server and then the client only needs to hold the url to the json file for a game and the rest can be downloaded. A benefit to this is it shifts the burden from nico to the game developers and essentially solves the issue of link rot.
Obviously this isn't practical for every game as it may be hard to get in contact with the developers and they may not want to do it (for whatever reason).
Another solution is to use the Tiggit community to keep everything fresh. Not only would users be allowed to submit new games, but update the information for current ones.
I saw a thread where someone was having issues because the Tiggit client was downloading an outdated version of OpenRa. I did some investigating and saw that as the download provided from the developers was an installer, but Tiggit requires a portable zip. It appears that nico is running the installers and zipping up what they extract and uploading the zips to a sourceforge project which is where the Tiggit client grabs the game from, and as a result, does not stay up to date. This will become increasingly difficult to manage as Tiggit becomes more popular and gets more games.
The issue with allowing the community to maintain this is it still needs to be checked to make sure someone doesn't just fake a game and have the link be to a virus. This could possibly be alleviated by adding users to Tiggit (I'm not sure if nico wants to keep it a user-less system) which would allow select people from the community (essentially mods) that would help maintain all of the game's data.
I was thinking of creating a tool that could help whoever ends up having to maintain all of this data. Essentially it will try to "guess" what all of the required data should be.
This is a list of all of the data that is needed for Tiggit to display the game properly:
I haven't put too much thought yet in to a lot of my ideas since I just got Tiggit recently and am still checking everything out. Nico could, and probably does, have better ideas/solutions to some of these problems and I'm interesting in hearing what he, or other members of the community have to say about how some of these things can be dealt with in a way that isn't overly intrusive or tedious.
Some random quick ideas:
-Periodically have the server check all of the download links and in the case of an error, update the json file with a link back to a page on tiggit.net explaining why it's broken and have the client detect this link and launch the browser when a user attempts to download a game with a broken link. A game not wanting to install/download for a user is bad, but being able to explain what's wrong can help the situation. Additionally it could inform them on what they could do to help such as obtain the correct download link and email it to nico or use whatever system is in place in the future for this kind of thing.
-A lot of people want to be able to change where games are installed (rather than /data). I feel that most people that want this are going to be more technical users. Having a "data" variable in the config json file would be a quick workaround for the users who desire this feature. By default the config file would just have "data" : "/data" and the client would check what this value is when launched and install everything that would normally go to /data, to whatever the user has specified (absolute or relative path).
-Show the download count to the user. This is recorded in the all_games.json file already and a lot of people will just download and never rate. Being able to see what's being downloaded the most could be another metric that users can use to decide what to download next.
edit: Just found out this is already there if debug mode is enabled.
-http://db.tigsource.com/browse has an api that returns game data in the form of json or xml. Perhaps this could be used as a source of games? Sadly it looks like the page for each game has to be loaded to get the download link but if it was just a nightly crawl that had to be done it could still be plausible. Perhaps even getting in contact with them and see if they'd be willing to include some of the specific info Tiggit needs. It could also be a good place to host files as they're already doing this, but this assumes they're willing to let us just use their stuff for free which probably isn't too likely. Perhaps we could at least get their api documentation as all of their links pointing to it go to a google group that's been spammed and no longer has useful content =\
Looking forward to seeing where Tiggit goes in the future.
PS: Sorry if I was kind of rambling, I was just typing ideas as I got them.
Alright, so unfortunately I'm not very experienced with C++ but I know Java extremely well (Swing/Servlets/pretty much anything), C# reasonably well (not quite as much as Java but I'm productive with it), and Python reasonably well.
This may be the project to motivate me to learn C++ more though, but currently I'm a little clueless on how to even setup a proper environment (I'm running windows), let alone the build steps and whatever else.
However, I feel as though I could still be of some help. Some of the few things I've noticed so far that could use improvement (forgive me if some of these are known and already have plans, I just got Tiggit yesterday)
-Submitting New Games
It appears as though nico has to manually add entries to the all_games.json file and create the respective tig file. I can only imagine how tedious this must be getting, especially with an increase in popularity and desire for more games.
One solution that may be worth exploring is if the developers of a game are willing, have them host these json files on their server and then the client only needs to hold the url to the json file for a game and the rest can be downloaded. A benefit to this is it shifts the burden from nico to the game developers and essentially solves the issue of link rot.
Obviously this isn't practical for every game as it may be hard to get in contact with the developers and they may not want to do it (for whatever reason).
Another solution is to use the Tiggit community to keep everything fresh. Not only would users be allowed to submit new games, but update the information for current ones.
I saw a thread where someone was having issues because the Tiggit client was downloading an outdated version of OpenRa. I did some investigating and saw that as the download provided from the developers was an installer, but Tiggit requires a portable zip. It appears that nico is running the installers and zipping up what they extract and uploading the zips to a sourceforge project which is where the Tiggit client grabs the game from, and as a result, does not stay up to date. This will become increasingly difficult to manage as Tiggit becomes more popular and gets more games.
The issue with allowing the community to maintain this is it still needs to be checked to make sure someone doesn't just fake a game and have the link be to a virus. This could possibly be alleviated by adding users to Tiggit (I'm not sure if nico wants to keep it a user-less system) which would allow select people from the community (essentially mods) that would help maintain all of the game's data.
I was thinking of creating a tool that could help whoever ends up having to maintain all of this data. Essentially it will try to "guess" what all of the required data should be.
This is a list of all of the data that is needed for Tiggit to display the game properly:
- name - Of course, the name of the game
- time - the time it was added (last updated?)
- description - A short description of the game
- developer name - the name or company of the developers
- homepage - a url to the game's homepage
- launch path - relative path to the executable responsible for launching the game
- screenshot - a link to a screenshot of the game
- tags - a list of tags describing the game's genre
- a 300x260 resolution version of the screenshot (I'm assuming the backend automatically scales the screenshot since these all seem to be hosted on tiggit.net)
- url - the direct link to the portable zip download
- version - the version of the game
I haven't put too much thought yet in to a lot of my ideas since I just got Tiggit recently and am still checking everything out. Nico could, and probably does, have better ideas/solutions to some of these problems and I'm interesting in hearing what he, or other members of the community have to say about how some of these things can be dealt with in a way that isn't overly intrusive or tedious.
Some random quick ideas:
-Periodically have the server check all of the download links and in the case of an error, update the json file with a link back to a page on tiggit.net explaining why it's broken and have the client detect this link and launch the browser when a user attempts to download a game with a broken link. A game not wanting to install/download for a user is bad, but being able to explain what's wrong can help the situation. Additionally it could inform them on what they could do to help such as obtain the correct download link and email it to nico or use whatever system is in place in the future for this kind of thing.
-A lot of people want to be able to change where games are installed (rather than /data). I feel that most people that want this are going to be more technical users. Having a "data" variable in the config json file would be a quick workaround for the users who desire this feature. By default the config file would just have "data" : "/data" and the client would check what this value is when launched and install everything that would normally go to /data, to whatever the user has specified (absolute or relative path).
-Show the download count to the user. This is recorded in the all_games.json file already and a lot of people will just download and never rate. Being able to see what's being downloaded the most could be another metric that users can use to decide what to download next.
edit: Just found out this is already there if debug mode is enabled.
-http://db.tigsource.com/browse has an api that returns game data in the form of json or xml. Perhaps this could be used as a source of games? Sadly it looks like the page for each game has to be loaded to get the download link but if it was just a nightly crawl that had to be done it could still be plausible. Perhaps even getting in contact with them and see if they'd be willing to include some of the specific info Tiggit needs. It could also be a good place to host files as they're already doing this, but this assumes they're willing to let us just use their stuff for free which probably isn't too likely. Perhaps we could at least get their api documentation as all of their links pointing to it go to a google group that's been spammed and no longer has useful content =\
Looking forward to seeing where Tiggit goes in the future.
PS: Sorry if I was kind of rambling, I was just typing ideas as I got them.

You can get the json or xml for each game page by adding .json / .xml to the url, just as for the browse page. I've already scraped their database for every single game page, and sorted it by platform, freeware status etc.