Post Reply 
 
Thread Rating:
  • 1 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How can I help?
Author Message
Talon Offline
Junior Member
**

Posts: 5
Joined: Apr 2012
Reputation: 0
Post: #1
How can I help?
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:
  • 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'm thinking it would be possible to "guess" a lot of this data. Given the name of the game and the url to the homepage/download page, a program could scan the html for certain keywords to fill out some of this information. Of course, this could be horribly useless, but it could work on some games depending how they word stuff. For example, a lot of the descriptions of games start out like "In <game title>, ...." it would be easy to look for those keywords and grab the entire <p> element or whatever and put that in the description. It could look for words like "gallery" or "screenshot" and find image links before/after that and return that as the screenshot. Of course, it can return the wrong information but that's why it would still need to be checked by a human for errors but it could speed up the whole process. Additionally, it could look for direct zip downloads and return those as the download link. It could then download said zip and extract itself and search it for executables and return their launch paths.. etc.

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.
(This post was last modified: 04-24-2012 04:11 PM by Talon.)
04-24-2012 02:03 PM
Find all posts by this user Quote this message in a reply
nico Offline
Administrator
*******

Posts: 115
Joined: Apr 2012
Reputation: 0
Post: #2
RE: How can I help?
First off, thank you for your ramble. You bring up a lot of important points, and I agree with virtually everything you say. We have to solve all of these issues before tiggit can really evolve and grow to its full potential.

(04-24-2012 02:03 PM)Talon Wrote:  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.

Sounds great, you are very welcome to join in on the coding!

The current codebase is a kinda prototypish though, and perhaps structually isn't a great C++ example to model after, but it's improving. Also I'm actually doing most of my coding on Linux, and my own Windows build environment was hastily put together in MinGW (a Windows port of the GNU gcc compiler) with the minimum effort necessary to get it to compile. I even had to compile some of the dependencies manually since they didn't have pre-built MinGW-compatible binaries. I don't recommend repeating this approach Smile

So the first thing to figure out is how to set up a sane build environment on Windows. I will help out with this anyway I can. We should start a separate thread for this.

Also BTW, if you have web coding experience that can probably come just as much in handy as app development! Some of the things you propose below (like user-moderated game submissions) are after all server-side project.

Quote: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)

No forgiveness necessary Smile I do have plans for most of these, but I've been pretty lousy at sharing them publically. I've been a bit preoccupied with IRL stuff for the last few days since this forum was created.

Quote:-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.

It's not quite that tedious - I've built scripts to take care of most of the tasks, and a GUI frontend that mostly lets me just copy-paste in info and publish with one button. The all_games.json file is generated live from a database via PHP code. However it's still a bit of work to find everything, and adding hundreds (or potentially thousands) of games this way isn't something one person should be doing.

Quote: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.

This was actually my original idea for tiggit. The idea was to have tigfiles as a sort of RSS-like format that publishers could update, and the Tiggit launcher act sort of like an RSS reader for games.

Like you say though it's only good for the devs we can get to agree to do it. Having been in contact with a few devs now, I can say that most (understandably) aren't that interested in doing more work, and especially not for freeware games they are no longer working on and which aren't bringing them any income. And for disappearing games / linkrot it wouldn't help much at all, since the tigfiles would just disappear with along with the rest, actually making matters worse.

I would still love to have this as an option for those that want control. But IMHO that's something I think we can add later.

Quote: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.

IMHO this is the solution I think we should go for. I would love to create some sort of open web-based database for games, that is integrated with the Tiggit launcher.

Actually what I would love is something like a wikified TIGdb, where anyone can add and update info. The launcher integration doesn't have to be direct (and for security reasons it shouldn't be), it just has to provide all the info needed through some open protocol. So when games are added or updated, we are notified and can review the info, before automatically updating our own records and sending it out to end users.

This could be run as an entirely independent project, on its own domain with its own open codebase, since we'd only fetch data from it through an API. It's quite a big side project though, but for the time being we could get away with just a small prototype, so people can start submitting games.

Anyway, this is all just an early idea of mine. I'm open for all input or other alternatives.

Quote: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.

That's pretty much exactly what I've done for a lot of the games. Others are hotlinked directly from the author's zips. Not that this is much better - and has its own problems, not least of which is that I haven't asked many of them for permission to hotlink their stuff.

Quote: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.

IMHO I think it should remain user-optional for players. Some tasks are impractical to do without some sort of login (be it just with a facebook login or whatever), and I'm sure more seriously involved users won't mind registering anyway.

Quote: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.

I'm currently working on an update system for tiggit, which also hashes all downloaded files. This way we can detect not only broken links, but also changed/updated downloads. There's no automatic error correction, but I did intend it to automatically report broken/changed links back to the server.

Quote:-A lot of people want to be able to change where games are installed (rather than /data).

This is by far the most popular feature request I've gotten, so I'm planning on doing this next. I'll post another thread about that soon.

Quote:-Show the download count to the user.

Agreed. My tentative plan is to add columns for downloads, vote count and add-date, and to implement sorting (another popular request) in the next update after the installer stuff.

Quote:-http://db.tigsource.com/browse has an api that returns game data in the form of json or xml.

Already done Wink 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.

Phew, a long reply to a long post. You don't have to reply to all of it Smile
04-26-2012 04:23 AM
Find all posts by this user Quote this message in a reply
Aki Offline
Junior Member
**

Posts: 7
Joined: Apr 2012
Reputation: 0
Post: #3
RE: How can I help?
I too am interested in contributing to this project. I am paid in C# and hobby in PHP. My experience in C++ is minimal, but my google fu is strong.

I've tried unsuccessfully so far to get an C++ IDE running. Seeing this thread, I'll look into MinGW over the coming days and hopefully can get the project to compile locally.

Also, thank you very much for responding to submitted bugs on Github so quickly. It is highly motivating to see a response to bugs, yet alone a fix.
04-27-2012 06:05 PM
Find all posts by this user Quote this message in a reply
Aki Offline
Junior Member
**

Posts: 7
Joined: Apr 2012
Reputation: 0
Post: #4
RE: How can I help?
5 hours and 7 error messages past, boost doesn't appear to compile in the same way that I got wx and curl to compile. Haven't yet put much time into this error yet. How many outside dependencies does Tiggit need that CMake doesn't come with?
04-29-2012 03:14 PM
Find all posts by this user Quote this message in a reply
Talon Offline
Junior Member
**

Posts: 5
Joined: Apr 2012
Reputation: 0
Post: #5
RE: How can I help?
Hey sorry I disappeared for a bit. I'm just finishing up finals week. It might take me a few more days but then I'll have time to get in to a lot more of this.
05-01-2012 06:14 PM
Find all posts by this user Quote this message in a reply
nico Offline
Administrator
*******

Posts: 115
Joined: Apr 2012
Reputation: 0
Post: #6
RE: How can I help?
(04-29-2012 03:14 PM)Aki Wrote:  5 hours and 7 error messages past, boost doesn't appear to compile in the same way that I got wx and curl to compile. Haven't yet put much time into this error yet. How many outside dependencies does Tiggit need that CMake doesn't come with?

Thanks for giving it a shot! Sorry you had to spend 5 hours with my messy setup. Hopefully we can get something working. I actually gave up using CMake for windows myself, and just created a bat file instead. But I put that more to my own lack of windows development knowhow than anything else, I just wanted a quick fix to get an already-working linux prototype to build on Windows.

The 'compile.bat' file is my own windows compile script, and should give some hints, although all the paths are specific to my system.

The only dependencies are wxWidgets, libCurl, Boost, zzip and zlib.
05-03-2012 04:00 AM
Find all posts by this user Quote this message in a reply
Aki Offline
Junior Member
**

Posts: 7
Joined: Apr 2012
Reputation: 0
Post: #7
RE: How can I help?
(05-03-2012 04:00 AM)nico Wrote:  The 'compile.bat' file is my own windows compile script, and should give some hints, although all the paths are specific to my system.

The only dependencies are wxWidgets, libCurl, Boost, zzip and zlib.
This knowledge shall be put to good use. ^.^
05-05-2012 06:43 AM
Find all posts by this user Quote this message in a reply
Post Reply 


Forum Jump:


User(s) browsing this thread: 1 Guest(s)