iftechfoundation / ifcomp Goto Github PK
View Code? Open in Web Editor NEWThe software behind the Interactive Fiction Competition.
License: Other
The software behind the Interactive Fiction Competition.
License: Other
Currently, the updating system is completely silent; it seems an author can just update at will, and the entry will have a little note saying when the game was last updated.
This works wonders for the casual gamer, but I'd like to keep an up-to-date version of every game, as I have been for a few years now. It's quite difficult to follow as it is - my only option is to, every day, do a Ctrl-F to find the text "Updated: 1" for games updated on the first, "Updated: 2" for games updated on the second, etc.
It's not very nice. :) There are other ways of alleviating this that wouldn't affect the website (like, say, a post on IntFiction saying "New batch of updated games! The following games have received updates since xx/XX", but in-site I can think of a couple of ways to make it better.
Really, anything would work. As it is, it's, hmmm, well, again, just not very nice. :) I mean, it's great for people who just want to come in and play, but not so great for people who want to keep track of the updates and make sure to have an up-to-date version of each game for later consumption.
Add "hello, $User" message to front page
n/t
Probably gotta work in some :utf8 encoding layers when setting up output file handles.
Lots of these errors:
[error] Caught exception in IFComp::Controller::Play->transcribe "Wide character in subroutine entry at /home/ifcomp/ifcomp/IFComp/lib/IFComp/Controller/Play.pm line 98."
[error] Caught exception in IFComp::Controller::Play->transcribe "malformed UTF-8 character in JSON string, at character offset 747 (before "\x{eb}'s line, and h...") at /home/ifcomp/ifcomp/IFComp/lib/IFComp/Controller/Play.pm line 98."
Add a static HTML page listing the rules of the IFComp.
This will largely be a direct adaptation of the rules as posted at http://ifcomp.org/comp13/rules.html, with any policy updates for 2014 applied thereunto.
Each password should have a salt associated with it. Legacy users will all have the same salt. New users will get a random salt.
Write a one-off script that will load game, author, and other salient data from the legacy IFComp database into the new one. It will not carry over transcript data for the time being.
Completing this task won't necessarily result in any code change reflected in this repository.
Instead of recording a vote of "0", which is the current behavior.
The full size cover images being used on the ballot page are huge, compared to what's needed, causing for a very slow first time load. Also, since the image dimensions are not part of the markup, the page keeps jumping as new images are loaded.
We should shrink or otherwise optimize the images, and add some css/markup to prevent the page from jumping as the images load.
...such that the page doesn't stretch and stretch and stretch before your eyes when, say, there are 55 entries and all those images are requested in parallel.
This task is similar to the one described by #4, with the following differences:
The entry "Night House" in the 2016 comp is a Quest game, and one of its files is nighthouse.quest
, but it's shown as "Format: Web". There is an index.html
file that has a link to the game's page on http://textadventures.co.uk/, but the entry's blurb suggests "Download for best experience". I think ideally it should say "Format: Quest" but also have a "> Play online" button that links to textadventures.co.uk (in the same way that Glulx entries have a "> Play online" button that links to a local Quixe page).
Note that the entry "Eight characters, a number, and a happy ending" is also a Quest game, but that comp entry consists solely of an HTML page that has a link to textadventures.co.uk (where, by the way, you can download the .quest
file). I suppose the author might prefer to have people download from that site rather than from the ifcomp site, but I'm guessing they didn't have a preference and it just seemed easier this way?
On http://www.ifcomp.org/entry, for authors,
My entry currently says "Game Name - Ready for Entry"
The meaning is clear, but can this be changed to "Game Name - Entered" once the competition is started?
98388b7 added proper UTF-8 encoding to all individually downloaded games. But then I discovered that this broke something in the JavaScript of many (all?) contemporary Twine games, including several Twine-based entries I tired. Thus did I commit 293a0b3, which preserves the UTF-8 encoding of all game text while preserving the poorly-encoded JavaScript, allowing these games to run as expected.
I would like to investigate the reasons for this breakage, so that we do not rely in this yucky hack past this year. I noted that the JS in question contains various literal strings full of high-bit characters that render as garbage in ASCII (and allow the game to load) and render as other characters in UTF-8 (and prevent the game from loading). So, I don't know exactly what's going on here.
Create basic View classes and template wrappers that allow an HTML-based, Bootstrap-using front-end.
The website uses forms and buttons on the entries page, which means that you can't directly access the URLs. Looking at the HTML I can't see any reason why they couldn't be replaced with links instead.
The code in question. I'd submit a pull request but I don't know the templating system and wouldn't be able to test it. But I'd guess something like this:
<a href="[% c.uri_for_action( '/play/download', [ entry.id] ) %]" class="btn btn-default btn-lg">
<span class="glyphicon glyphicon-cloud-download"></span> Download
</a>
Write a controller that, given a comp year, displays a lovely summary of that instance of the comp. This archival information changes infrequently-if-ever, so we should use caching. (See http://search.cpan.org/~ether/Catalyst-Manual-5.9007/lib/Catalyst/Manual/Cookbook.pod#Page_Caching)
Each page should contain:
Note that the 1995 comp's page might present special-case oddities due to its by-platform segregation of entries.
The ballot page includes feelies in the download zip, but as many people will just be playing the entries online, it should indicate that they exist. It may also be good to give direct links to them, rather than only the zip.
Users can upload entries to the IFComp, and manage their existing entries.
A user becomes an author, as far as the given comp iteration is concerned, if they have at least one entry ready to go in that comp. (This precludes the possible existence of "extant but not actually published" or even "deleted" states that entires might have, if we end up adding such attribute-options to them.)
DB creds are in IFCompDB.pm. These should be a conf file. The conf file should NOT be part of the project, but a -dist version of the file should be. This allows for easier local development.
If someone uploads a .zip containing an HTML at the top level not named "index.html", then a "Play online" button appears for it, but it links to "index.html" and thus a 404.
Long session are more desirable.
Users should be able to create new accounts with IFComp.
On successful account creation, go ahead and log them in.
The "download" and "play online" links from /ballot appear to link to a game's IFDB page if a game has a value set in its ifdb_id field.
I am sure this seemed like a good idea at some point in the past, but it isn't now. The presence or absence of ifdb_id should have no bearing at all on anything on /ballot's behavior.
Users should have a basic interface for setting the following fields on their accounts:
Write and add some pages with advice for would-be IFComp entry authors.
Topics include:
Add a CLI tool to deploy schema to configured DB
In the case of badly-prepared web-game uploads that have many files but no "index.html", a "Play Online" button will appear for then, and it will always 404.
Where possible states include:
Plus these meta-state:
And there needs to be a "fetch the active comp" method on the comp resultset, which will return 0 or 1 comp objects.
jmac [12:42 PM]
Eurgh… @danshiovitz, looks like the fix to the broken-web-links issue raised a problem for games with multiple .html files at the top level, even if one is named index.html
In at least one case (Detectiveland) the code now opens the wrong file. In this case the author fixed it himself by moving the not-index file elsewhere, but.
danshiovitz [1:30 PM]
whoops, I guess the rule should be to prefer index.htm(l), then alphabetically first other .html
or it could be that if there's just a single html file, use that, otherwise use index.html whether or not it exists
essentially forcing them to disambiguate themselves
jmac [1:48 PM]
Yeah, I think that’s a good way to appraoch it.
danshiovitz [1:56 PM]
the latter?
jmac [1:57 PM]
Right.
[1:58]
And to be clear, it should consider only HTML files at the top level when it’s making this choice
[1:58]
So if it has /game.html and /extra/hints.html it won’t get confused.
[1:59]
But if it has those two, and also /poster.html, then all bets are off. But /index.html would be fine.
Very likely this is a bit too much for this year, but related to Peter Piers's question at http://www.intfiction.org/forum/viewtopic.php?f=32&t=18693&p=98295#p98295
This would be handy for people who want to see what changed. It could take the programmer logs and spin them into an appropriate mail.
Perhaps there could be an option for a big long summary on November 1st as well, so judges could pick off games that they put off due to bugs or whatever?
MD5 is now very insecure. Please consider switching to bcrypt, scrypt ot something similar. There are perl implementations at least for bcrypt: https://metacpan.org/pod/Crypt::Eksblowfish::Bcrypt
I tried to log in via
http://dev.ifcomp.org/auth/login
Then I opened up another tab and successfully logged in.
Then I refreshed tab#1 with http://dev.ifcomp.org/auth/login and it still asked me for my login name and said "Welcome, (username)!" Maybe it should kick you to the welcome page?
Users with IFComp accounts should be able to log in.
This includes folks with pre-2014 accounts, once they're imported into the new database! (See also #3.)
The chosen file is deleted. This might be a minor nuisance if someone hit "upload" twice by mistake. But they can always just re-type the file name in, and with file/tab completion etc. they can recover. So is it worth checking that there already is a filename?
This could be a nice way to encourage post-comp releases. While authors can access it during the comp, it may be useful for us to see patterns etc. Or it's quite possible that authors may give up on updating after a certain point. It is just one less thing to remember to track for those who want to update their game based on criticism, bugs, etc.
Maybe the authors could/should be asked to opt in, but it seems like a great resource.
/ballot and /ballot/vote both alphabetize all /^The / games under T, and all /^A / games under A. It can do better.
I forget if it is there for judges. (I think it was?) But this would be a nice convenience so we have one more buffer to be sure we don't rate games we tested.
E.g.
None/1/2/3/4/5/6/7/8/9/10 becomes None/Recuse/1/2/3/4/5/6/7/8/9/10
It could also serve as a "not planned."
http://dev.ifcomp.org/entry/1325/update
(or any # other than 1325)
mentions "Note that any entry without a main game file uploaded by 2015-09-26 will be effectively withdrawn automatically." <- should be 09-28
Also, 2 long adverbs in 3 words = minor stylistic thing. "...will (thus?) be withdrawn automatically."
Until this repo has a cpanfile, getting this software working in any new location is way too painful.
Looking through @ifcomp's tweets, I noticed the one where 37 people didn't vote for 5 games. Is there a (one-time) reminder in place with, say, 2-3 days left? So that if someone has opted in to emails, and they have voted on 1-4 games, they get a poke saying, they need to vote in X more games?
It would also be a neat courtesy to say "Thanks for voting, your votes will count" and maybe have something even more positive if someone manages to finish over half the games (as a competitor who tried to review other games, I believe that getting through half the games to vote for them is a strong accomplishment) or something for, say, <5 left.
Obviously you don't want to get extra oleaginous but I think it is the sort of nice thing that would make someone smile.
Also optional: mentioning you don't have to vote in all the games, if you're close. Some people are uncomfortable with a game or two, and I remember giving one game a very dashed off score in '10. So--this doesn't need to be a huge essay, but something natural and simple will probably work great.
The precise time to send the email is also up for grabs. But definitely give people time to play a few short works.
Spoilerific uses sqlite and seed data to provide a consist testing environment. Steal this and rebuild for IFComp.
Allow users to reset their login passwords via an emailed token with an embedded, limited-use token.
And that page should be linked from the top navbar.
The schedule should remain where it is on the About page, as well. Use templates in the obvious fashion to accomplish this.
has "contact the organizers" linking to mailto:[email protected] while elsewhere it's "contact the organizer" for an email link. Is this even worth bothering about? I don't really care whether it says "organizers" or "organizer" & doubt many people do, but the site switches between the 2 a bit.
Currently the site throws both Z-code and Glulx games to Parchment. Parchment's Quixe plugin is buggy -- most obviously, it fails to show the status line. Quixe as a separate install works better.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.