This isn't here for any reason in particular, but it's just something that I wanted to write and get down somewhere...
RTools has a history that began in 2007, with the release of DCI Reporter v3. At this time, a program called Tournament Board functioned as the augmentation program, which functioned with DCI Reporter v2. As a stop-gap measure, I had looked at making a program which converted v3-compatible files to v2 files, only to the point where Tournament Board could see these produced files as v2 files, and then use them successfully. I had also gotten back in touch with the original programmer, who was happy to be contacted about the issue and setup v3 functionality with some assistance from the converter code which I had written.
Flash forward to 2009 and the release of Wizards Event Reporter. (WER) When I first looked at WER, I had the same thought as before in regards to compatability, and began looking for a route of access to back-end files. I had localized the file in question to one very deep in Windows' OS, but I had no idea how to work with this .dat file which looked to be encrypted in some way.
At the same time, though, in past months I had looked around at figuring out ways to build the scrolling pairings interface into a Java program. At the time, I was only familiar with the high-end Java GUI libraries, and the furthest I have gotten was a set of text fields which updated automatically. It looked cruddy, but gave me the hooks to v3 for future use.
These two issues came together quickly in early 2010. I had just graduated and was looking for something to do while job-searching, and had solved both issues within a week of each other. The latter was solved first through me experimenting with the low-level Java UI (java.awt) interface. From here, I was able to achieve a window which had a piece of text moving down on the window; this quickly scaled to the current scrolling windows and checked one piece off.
The former issue was solved through a lucky break when fooling around with WER at home. I had randomly a windows explorer open to the folder that contained that encrypted file, and I suddenly noticed a file called "TournamentData.ldb", which tipped me off immediately to the solution. The test was to try to open that .dat file through Microsoft Access. I got all the tables immediately, telling me WER used a Microsoft Access database file to store everything, and giving me the link I needed to go straight towards building a new version of Tournament Board. When I thought of a name, I had randomly thought that Tournament Board was called "Reporter Tools", and called my version "RTools" as a successor. Sounds better than "TBoard", at least.
Feature parity was the initial goal for the original release of RTools, but the goals quickly became greater whenever I saw things being printed at local events. The most eggrerious thing was, for me, result slips being used once again at these events. Way back, Tournament Board made this great printout which we used both for FNMs and prereleases: at FNMs, you got one sheet with all results on them at once, while prereleases gave you a half-sheet with all result slips, making it trivial for a judge to carry all results with them. At the local store, this also was shown with pods for drafting, where we kept posting pairings on a sheet with 30-odd players crowding around to find their location.
The latter began the advance in features which the program is now being known for. Pod seatings turned into all forms of seating for events. Standings came from having the interface available and wanting to tackle coding tiebreakers. Further advances were spawned from both requests and "enabling" features that people wanted in WER that weren't yet available. Result slips, tickers displaying outstanding results, the 8-man draft print interface, and many other small features came from these requests and needs. For comparison, Tournament Board's features were the equivalent of RTools' pairings, ticker, and clock, with the printer functionality solely being the equivalent of RTools' compact sheet pairings.
8.26.2010
8.24.2010
RTools 2.0.0 Primer 2.0 (for A14)
(note - this is being written to be the new go-to link for people to read before downloading the 2.0 alpha)
In general, alpha builds that I release are plenty usable, but are simply builds that are focusing on adding or changing code, rather than fixing code. Early alpha builds may have features disabled simply in order to provide the most up-to-date versions to interested parties with the portions that knowingly do not work correctly removed. As alpha builds advance, newer functions may appear without full functionality as well, or non-standard functions may temporarily appear.
RTools 2.0 has several new changes, as well as adjustments in how the program is used. As of this writing (alpha 14), many of these are already in the program. The overall difference between 1.0 and 2.0 has been a paradigm shift in how information moves within the back-end of the program. The original idea of RTools' back-end was to spawn new windows much like new programs: independent from the program itself, just doing it's own thing. As features were added, the need became more and more apparent that an internal messaging system and inter-feature connections system was necessary. 2.0 has rebuild this internal structure, pushing individual tournaments as the center of RTools' paradigm and allowing for many new and improved internal tweaks that were more kludges in 1.0 and 1.1.
The following is a listing of the major new features of the program:
:: The main window now reacts to events in the program relating to how a tournament's state. If you have a timer that is reaching or at 0:00, the timer button will begin flashing. The other three buttons will also indicate which window is opened as part of the main scrolling display window.
:: Windows which utilize the "Outstanding Matches Only" functionality will now update the listings automatically every few seconds.
:: Preferences and settings are now granular to a tournament (rather than the entire program) and there are new windows to facilitate changing these settings. There are also options to save and load these preferences.
There are several changes to the workflow of the program, as well. Again, the following is just a selection of the more immediate differences.
:: In 1.0, you choose a program to interface with and RTools gives you all events found in that interfaced program. In 2.0, you still are given the options to select an event, but events are now loaded into the main window. When you load a new tournament, it's added to the main window's dropdown.
:: Settings are tournament-based now, rather than (mostly) either window-based or program-based. Now, making adjustments to an event's settings is much more intuitive, and settings are handled in a much better way, from both the front-end and back-end.
:: A single tournament only has a single window for any pairings, seating, or standing window. If you have one window up continuously on a second monitor or projector, the window will simply update to the new data when you click on the button. This is designed to supplant the functionality to automatically launch new windows on secondary monitors, while simplifying the entire process of handling multiple tournaments, both front-end and back-end.
As of this writing, RTools is in it's 14th alpha, (2.0.0a14) with no timetable for shift to beta or release. Release is dependent on the evolving status of EPIC, and the continuing additions that are being made to 2.0 alpha.
In general, alpha builds that I release are plenty usable, but are simply builds that are focusing on adding or changing code, rather than fixing code. Early alpha builds may have features disabled simply in order to provide the most up-to-date versions to interested parties with the portions that knowingly do not work correctly removed. As alpha builds advance, newer functions may appear without full functionality as well, or non-standard functions may temporarily appear.
RTools 2.0 has several new changes, as well as adjustments in how the program is used. As of this writing (alpha 14), many of these are already in the program. The overall difference between 1.0 and 2.0 has been a paradigm shift in how information moves within the back-end of the program. The original idea of RTools' back-end was to spawn new windows much like new programs: independent from the program itself, just doing it's own thing. As features were added, the need became more and more apparent that an internal messaging system and inter-feature connections system was necessary. 2.0 has rebuild this internal structure, pushing individual tournaments as the center of RTools' paradigm and allowing for many new and improved internal tweaks that were more kludges in 1.0 and 1.1.
The following is a listing of the major new features of the program:
:: The main window now reacts to events in the program relating to how a tournament's state. If you have a timer that is reaching or at 0:00, the timer button will begin flashing. The other three buttons will also indicate which window is opened as part of the main scrolling display window.
:: Windows which utilize the "Outstanding Matches Only" functionality will now update the listings automatically every few seconds.
:: Preferences and settings are now granular to a tournament (rather than the entire program) and there are new windows to facilitate changing these settings. There are also options to save and load these preferences.
There are several changes to the workflow of the program, as well. Again, the following is just a selection of the more immediate differences.
:: In 1.0, you choose a program to interface with and RTools gives you all events found in that interfaced program. In 2.0, you still are given the options to select an event, but events are now loaded into the main window. When you load a new tournament, it's added to the main window's dropdown.
:: Settings are tournament-based now, rather than (mostly) either window-based or program-based. Now, making adjustments to an event's settings is much more intuitive, and settings are handled in a much better way, from both the front-end and back-end.
:: A single tournament only has a single window for any pairings, seating, or standing window. If you have one window up continuously on a second monitor or projector, the window will simply update to the new data when you click on the button. This is designed to supplant the functionality to automatically launch new windows on secondary monitors, while simplifying the entire process of handling multiple tournaments, both front-end and back-end.
As of this writing, RTools is in it's 14th alpha, (2.0.0a14) with no timetable for shift to beta or release. Release is dependent on the evolving status of EPIC, and the continuing additions that are being made to 2.0 alpha.
2.0.0 alpha 13 out tonight...
So, there were nine things from the last post that were going to be adjusted in the next few alpha builds. Here's where they stand for 13:
1: done.
2: done.
3: done.
4: not started.
5: not started. I may hold off on this until 2.1.
6: not started. I may hold off on this until 2.1. (the idea doesn't sound as useful after a couple days of letting it sit)
7: fixed. The issue was that there was a list of player IDs that was being checked to find byes, and the bounds were determined from a source that wouldn't show the final player if they had the bye.
8: I've found that this is an issue of Reporter v3 updating their files more than RTools, as RTools gets these numbers directly from the file that contains player information.
9: done.
I also just plowed through and got a first build of a tournament preferences panel up. It's essentially all right-click options in one place, minus a few which will require me to make more windows for. (i.e. a font window minus font size options) There will probably also be a second preferences panel for program settings. They'll include save/load functionality, and there are buttons on the tournament panel, but they are non-functional currently.
Alpha 13 will be out sometime later today.
1: done.
2: done.
3: done.
4: not started.
5: not started. I may hold off on this until 2.1.
6: not started. I may hold off on this until 2.1. (the idea doesn't sound as useful after a couple days of letting it sit)
7: fixed. The issue was that there was a list of player IDs that was being checked to find byes, and the bounds were determined from a source that wouldn't show the final player if they had the bye.
8: I've found that this is an issue of Reporter v3 updating their files more than RTools, as RTools gets these numbers directly from the file that contains player information.
9: done.
I also just plowed through and got a first build of a tournament preferences panel up. It's essentially all right-click options in one place, minus a few which will require me to make more windows for. (i.e. a font window minus font size options) There will probably also be a second preferences panel for program settings. They'll include save/load functionality, and there are buttons on the tournament panel, but they are non-functional currently.
Alpha 13 will be out sometime later today.
8.23.2010
Post-Nationals Aftermath
Walking into Nats for the grinders, I had no idea how much RTools would be used during the weekend. Initial thoughts were modest: I don't believe it was launched once on Thursday, instead running events completely via paper and judges holding the timers. Me just being panicky over anything going wrong at all, I was perfectly fine with this :)
Walking in Friday, I see the fruits of preparation working nearly perfectly. The main event has both a clock and timer running, and the tournament-based colors working flawlessly on the side events. Me being me, I'm watching every scroll and every timer for _anything_ going even close to wrong.
Friday night, I leave with some feature requests for the next day, and a couple bugs to look at. I also do all I can to make sure that the standings aren't shown again like they were at the end of Friday.* I did get out of the convention center a tad early, as I expected the changes to take 2-3 hours in coding and would've otherwise had 8 hours between leaving for the night and needing to be back. Somewhat fortuitously, the fixes ended up being done in less than an hour, and gave me a nice night of sleep.
Saturday: I was on the main floor, and it was uneventful. I did have one of the appeals which the HJ, Eric Shukan, liked talking about :) Interesting fact: On the main floor all three days, no appeals caused overturned calls. No issues, so a relaxing evening.
Sunday: So, somehow the exact same issue affects two events at the same time, and never happens in any of the dozens of other events. I also thought I lost my keys for about 7 hours, and the ended up being under the pants I wore for the first half of the day. (not the worst of my life, though close)
Now, the aftermath of this event will bring a ton of changes and fixes to future alpha builds, thanks to a lot of good usability feedback...
- All options to change background colors in windows are being removed. Let me know, though, if you have a use for this. This is just the easier of two options I have for adjusting this.
- Some people have been telling me that preregistered players were showing up in places they were not supposed to, and I thought that I fixed this for 1.1 and 2.0 alphas. Alphas 13+ will have the fixes that were made for pairings also get done for seating and standing displays.
- Windows that take advantage of some form of outstanding tables being displayed will now automatically update every 5-10 seconds.
- I will be working more expediently on getting rid of ambiguous behavior in the program whenever you press the "Cancel" button in a window.
- Timer windows will have some changes to the right-click menu to allow for you to customize the timer label, when it's part of the window. I may just default the label to be of a size that will fit-to-window, automatically changing the font size on it's own instead.
- There may be an option added to the pairings window to remove the point totals from pairings. This option would be for late rounds of larger tournaments when players are paired to random tables rather than by rank, to make it less trivial to simply find where the top players are seated.
- A bug appeared where the final player on the scrolling pairings was being cut off if that player also has a bye. I'm still looking into why this is; I have the tournament files in question to look at, but I have not yet been able to duplicate or localize this issue.
- Another bug has shown where the point totals on pairings are a round behind when the pairings go up. Again, I have the files in question but have not yet duplicated or localized the issue.
- The ticker is getting a couple issues fixed that popped up. First, when you change the message, it will no longer move the window back to the default placement. (top-left of the primary window) In addition, the font size adjustment wasn't working for some reason during Nats, and this has been fixed.
I also have my first feature plan for 2.1, (or possibly 2.0 if the development takes longer than I expect) which has also been a feature that I have somewhat been dreading to build, that being a unified settings/preferences window. Each tournament and window only has about 20 explicit settings, though this can jump to about 40 when you include implicit, settings.ini, and developer settings. The issue is that I tend to be a very hands-on builder for GUI windows, and settings windows are detailed jobs, with each area of text, each editable text area, and every other element on the window needing to be written, placed, and handled individually.
Alpha 13 will be the next release, which should be out late Tuesday or Wednesday. It'll have adjustments on issue numbers (going in order above) 1, 2, 3, 5, 9, and possibly 6. Also, there should be some expansions to the areas in which RTools is being used in the next few weeks, especially towards the west coast :)
*For those that haven't seen this, RTools, Reporter v3, and WER all will display different standing tiebreakers for events. I believe I have a good reverse-engineer on how both v3 and WER handle tiebreakers, but RTools uses neither method, instead opting to strictly follow the MTR to-the-letter. Having them scroll at Nats isn't a bad idea, as they're the documented tiebreakers, but the scrolling tiebreakers being different than the tiebreakers that a cut or prizes will be based on isn't a good idea.
Walking in Friday, I see the fruits of preparation working nearly perfectly. The main event has both a clock and timer running, and the tournament-based colors working flawlessly on the side events. Me being me, I'm watching every scroll and every timer for _anything_ going even close to wrong.
Friday night, I leave with some feature requests for the next day, and a couple bugs to look at. I also do all I can to make sure that the standings aren't shown again like they were at the end of Friday.* I did get out of the convention center a tad early, as I expected the changes to take 2-3 hours in coding and would've otherwise had 8 hours between leaving for the night and needing to be back. Somewhat fortuitously, the fixes ended up being done in less than an hour, and gave me a nice night of sleep.
Saturday: I was on the main floor, and it was uneventful. I did have one of the appeals which the HJ, Eric Shukan, liked talking about :) Interesting fact: On the main floor all three days, no appeals caused overturned calls. No issues, so a relaxing evening.
Sunday: So, somehow the exact same issue affects two events at the same time, and never happens in any of the dozens of other events. I also thought I lost my keys for about 7 hours, and the ended up being under the pants I wore for the first half of the day. (not the worst of my life, though close)
Now, the aftermath of this event will bring a ton of changes and fixes to future alpha builds, thanks to a lot of good usability feedback...
- All options to change background colors in windows are being removed. Let me know, though, if you have a use for this. This is just the easier of two options I have for adjusting this.
- Some people have been telling me that preregistered players were showing up in places they were not supposed to, and I thought that I fixed this for 1.1 and 2.0 alphas. Alphas 13+ will have the fixes that were made for pairings also get done for seating and standing displays.
- Windows that take advantage of some form of outstanding tables being displayed will now automatically update every 5-10 seconds.
- I will be working more expediently on getting rid of ambiguous behavior in the program whenever you press the "Cancel" button in a window.
- Timer windows will have some changes to the right-click menu to allow for you to customize the timer label, when it's part of the window. I may just default the label to be of a size that will fit-to-window, automatically changing the font size on it's own instead.
- There may be an option added to the pairings window to remove the point totals from pairings. This option would be for late rounds of larger tournaments when players are paired to random tables rather than by rank, to make it less trivial to simply find where the top players are seated.
- A bug appeared where the final player on the scrolling pairings was being cut off if that player also has a bye. I'm still looking into why this is; I have the tournament files in question to look at, but I have not yet been able to duplicate or localize this issue.
- Another bug has shown where the point totals on pairings are a round behind when the pairings go up. Again, I have the files in question but have not yet duplicated or localized the issue.
- The ticker is getting a couple issues fixed that popped up. First, when you change the message, it will no longer move the window back to the default placement. (top-left of the primary window) In addition, the font size adjustment wasn't working for some reason during Nats, and this has been fixed.
I also have my first feature plan for 2.1, (or possibly 2.0 if the development takes longer than I expect) which has also been a feature that I have somewhat been dreading to build, that being a unified settings/preferences window. Each tournament and window only has about 20 explicit settings, though this can jump to about 40 when you include implicit, settings.ini, and developer settings. The issue is that I tend to be a very hands-on builder for GUI windows, and settings windows are detailed jobs, with each area of text, each editable text area, and every other element on the window needing to be written, placed, and handled individually.
Alpha 13 will be the next release, which should be out late Tuesday or Wednesday. It'll have adjustments on issue numbers (going in order above) 1, 2, 3, 5, 9, and possibly 6. Also, there should be some expansions to the areas in which RTools is being used in the next few weeks, especially towards the west coast :)
*For those that haven't seen this, RTools, Reporter v3, and WER all will display different standing tiebreakers for events. I believe I have a good reverse-engineer on how both v3 and WER handle tiebreakers, but RTools uses neither method, instead opting to strictly follow the MTR to-the-letter. Having them scroll at Nats isn't a bad idea, as they're the documented tiebreakers, but the scrolling tiebreakers being different than the tiebreakers that a cut or prizes will be based on isn't a good idea.
8.18.2010
Current Buglist for 2.0.0
The versions out are still the last updates that will be (openly) released until after US Nationals, but a couple issues have sprung up with all alphas 10 and fewer:
- Pairings + "Outstanding Matches Only" is not correctly connected. It doesn't hurt to do it, but it won't change the pairings screen to the correct pairings.
- The Compact Sheet and Result Slips printouts for pairings sometimes has the player names reversed. I don't see a direct issue in the code that is causing this to happen; the issue seems to be related to how Java's database system handles "ambiguous" (arguably) ordering rules. I have localized the line of code which needs to be changed, and am working on removing all ambiguity from that line.
I'll be shoving these fixes into the Nats build ASAP, but don't expect the fixes to be in a normal alpha build until next week. The former should not exist as an issue in 1.1, though the second may. I'm really not sure, as this is the first event I've heard of this issue out of several dozen I've worked with personally with the lines in question written the way they are.
- Pairings + "Outstanding Matches Only" is not correctly connected. It doesn't hurt to do it, but it won't change the pairings screen to the correct pairings.
- The Compact Sheet and Result Slips printouts for pairings sometimes has the player names reversed. I don't see a direct issue in the code that is causing this to happen; the issue seems to be related to how Java's database system handles "ambiguous" (arguably) ordering rules. I have localized the line of code which needs to be changed, and am working on removing all ambiguity from that line.
I'll be shoving these fixes into the Nats build ASAP, but don't expect the fixes to be in a normal alpha build until next week. The former should not exist as an issue in 1.1, though the second may. I'm really not sure, as this is the first event I've heard of this issue out of several dozen I've worked with personally with the lines in question written the way they are.
8.13.2010
RTools: 1.1.0 out of beta, 2.0.0 at alpha 9
My typing speed is near full again (though on 9 fingers...), and I did some test runs on my 1.1.0 code to make sure that I could still run it from bare code. (as I was worried about accidentally losing some code via accidentally working on 1.1 code when I was making 2.0 changes) Everything appears to be working fine, and I've just changed the numbering to a full release, as well as shifted a couple 2.0 fixes into the 1.1 release build.
2.0.0 is also at alpha 9. There's some cool visual cue changes with this version that may be worth looking at, as well as some minor code changes in the background. I'm starting to go through a cleanup process in the code to start getting it ready for a release, as I'm planning on pushing 2.0 to a firm beta or release next week. (I'm judging at US Nats, Legion Events uses this program pretty extensively for events and is doing most of the running at Nats, so combine those and I want the up-to-date system working perfectly as to not have any late-night coding scrambles)
Enough parenthesis, download links are ready.
2.0.0 is also at alpha 9. There's some cool visual cue changes with this version that may be worth looking at, as well as some minor code changes in the background. I'm starting to go through a cleanup process in the code to start getting it ready for a release, as I'm planning on pushing 2.0 to a firm beta or release next week. (I'm judging at US Nats, Legion Events uses this program pretty extensively for events and is doing most of the running at Nats, so combine those and I want the up-to-date system working perfectly as to not have any late-night coding scrambles)
Enough parenthesis, download links are ready.
8.06.2010
RTools 2.0 Alpha 6 coming...
My typing speed is about 1/3 what it usually is at this point, (though increasing in ability quickly) but in my field tests with RTools 2.0, there were a couple issues with a couple minor combinations of features not working fully yet, so build updates are slowly starting up again.
There are three bug fixes currently fixed in internal builds:
- WPN material requests (added in WER as of 4.0.6) no longer show as valid tournaments in RTools.
- A very specific situation (involving byes and a still-to-be-determined set of additional actions) occurred at an event here that prevented pairings from displaying at all during that round. This occurred because of some copypasta SQL code that wasn't exactly right for the job, and that code was fixed.
- The hooks for printing standings by pod are back in correctly.
Note that there are a couple things to do before 2.0 shifts from alpha releases to beta:
- Add in a tiny bit of code to make some settings.ini stuff that I changed with 2.0 backwards-compatible.
- Modify the tournament listings to not list events far in the future. (the place I test at this past week had 20 events before the one they wanted, as every event they were holding up to the Scars of Mirrodin Game Day was already entered into their tournament listings)
- Make some of the 2.0 restrictions optional. Namely, I'm probably going to make a settings option that will invoke the timer restrictions currently in the program as of alpha 4, just so that when you want to use EPIC when it's launched that the ability is there. Otherwise, there doesn't need to be quite as much in terms of restrictiveness. I'm going to keep the one-pairings-window paradigm, though.
- I also want to have 2.0 shipped with EPIC 100% ready from the side of RTools. I can pretty much make it work on every step up until the actual web work right now, and I really should get the networking stuff taken care of now, when I don't have to worry about the actual movement of data and web issues.
I'll put A6 up in the next day or two; 2.0 looks to be an October release currently, heavily dependent on job prospects and hand conditioning.
There are three bug fixes currently fixed in internal builds:
- WPN material requests (added in WER as of 4.0.6) no longer show as valid tournaments in RTools.
- A very specific situation (involving byes and a still-to-be-determined set of additional actions) occurred at an event here that prevented pairings from displaying at all during that round. This occurred because of some copypasta SQL code that wasn't exactly right for the job, and that code was fixed.
- The hooks for printing standings by pod are back in correctly.
Note that there are a couple things to do before 2.0 shifts from alpha releases to beta:
- Add in a tiny bit of code to make some settings.ini stuff that I changed with 2.0 backwards-compatible.
- Modify the tournament listings to not list events far in the future. (the place I test at this past week had 20 events before the one they wanted, as every event they were holding up to the Scars of Mirrodin Game Day was already entered into their tournament listings)
- Make some of the 2.0 restrictions optional. Namely, I'm probably going to make a settings option that will invoke the timer restrictions currently in the program as of alpha 4, just so that when you want to use EPIC when it's launched that the ability is there. Otherwise, there doesn't need to be quite as much in terms of restrictiveness. I'm going to keep the one-pairings-window paradigm, though.
- I also want to have 2.0 shipped with EPIC 100% ready from the side of RTools. I can pretty much make it work on every step up until the actual web work right now, and I really should get the networking stuff taken care of now, when I don't have to worry about the actual movement of data and web issues.
I'll put A6 up in the next day or two; 2.0 looks to be an October release currently, heavily dependent on job prospects and hand conditioning.
Subscribe to:
Comments (Atom)