Build 7081 Released - Faces, Status Updates and More... - thejames
Build 6890 Released - Automatic Playoff Series Creation - thejames
UHS Build 6771 Released - thejames
Build 6766 has been released - thejames
UHS is looking for a "Ratings Person" - thejames
Canadian Email / Spam Law - thejames
Feedback Wanted: Player Buy-Outs - MelvinJ
testing search functionality - thejames
UHS Build 6693 released - thejames
Build 6567 Released - thejames
UHS Build 7081 – August 7 2014
This build is pretty massive…. I had a good run where I had minimal to no pain, so I was able to power through some items that I’ve wanted to do. We now have a status update section built into the League Home page. You’ll need to log into UHS in order to actually use that, however, you will be able to view it on the public sites.
We also added Player Faces… this is something I’ve wanted to do for a LONG time… the faces are definitely very cartoonish and rough around the edges, however, as time goes on I might be able to get back and revisit it.
We added in some AJAX so that we can reduce the number of page refreshes and keep page load times down…¬† primarily this was done for the status update development, however, over time we’ll incorporate it into other sections as needed.
COMs can now Reset Queued games, set Rookie eligibility requirements, set Standings tiebreakers and now set a Farm Salary Cap.
We’ve added a new feature to allow all league members to post a status update. These updates will be shown on the right side of the League Home page (just click the League link at the top of the nav menu). The Game Results section has been moved (more on this later) to make way for the Status Updates.
You will also be able to see the Status Updates on your Public Site, however, you will not be able to make any posts unless you are logged into UHS.
When posting your team’s logo will appear beside your name. For league owners and commissioners, the league logo will appear there instead. If there are no logos available, the UHS cog will appear by default.
As I’m sure you’ve noticed when you look at player profiles you’ll see a silhouette of a player with the UHS name on it. Well…¬† I finally was able to put together some healthy time and create a ton of graphic assets. I’ve created a script that will automatically generate a random face if one doesn’t already exist. So…¬† some things to keep in mind when looking at the faces:
1. I am NOT a graphic artist… as can be evidenced by the “great” work I did on the faces.
2. The eyes and mouths look like anime? well… that’s because they are. They were the only eyes and mouths I could find outlines for that I could fit into the design of the face.
3. There is a bleed effect on moustaches…¬† yep… in some cases there will be.
4. Goalie masks will obscure most of the face except the eyes.
This is my first run at randomly generating faces… perhaps as time goes on and health permits I’ll be able to re-visit it. Or if there is a talented graphic artist out there that would like to donate their time, please contact me using the support system.
Farm Salary Cap
We’ve added a new option for leagues that want to play around with a Farm Salary Cap. If enabled your team’s Farm salaries will be accrued and shown in your Finance page. If a team is over the Farm Salary Cap whatever fine method you’ve selected will be applied. Please note we will only check for violations when the Pro team plays not the Farm team. This is mainly due to the Pro team owning the overall finances whereas we do not keep a record for Farm finances. You should also be aware that Junior prospects do NOT count towards the Farm Salary Cap…¬† only players assigned to your Farm team.
Unlocking / Resetting Games
We’ve added a new tool to allow Owners and Commissioners to reset games that are stuck with a status of “Queue” or “In Progress”. It is highly recommended you only use this tool if the game is stuck for at least 5 minutes. Typically games take anywhere from 3-20 seconds to sim depending on server usage, however, as we grow and more leagues are using UHS, the queue job will take longer to sim your queued game.
A game will typically get stuck because a roster change gets made AFTER the game gets queued up and BEFORE it actually gets simmed. We do have error checking for that so the game won’t actually get simmed, however, it will be marked “In Progress” and remain that way until a request was made to us to fix it. When queuing up games, please remember the league is locked for a reason. We want to ensure our data integrity before the games are actually simmed, so we prevent people from logging in to make changes. We intentionally allow COMs and Owners to remain logged in so they can carry out their business, however, they should be aware that touching Rosters are pretty much a no-no. Even unlocking the league shouldn’t be done…¬† once all the queued games are simmed the league will unlock automatically so the COM doesn’t need to worry about this.
Additionally, when you use this tool to reset a game, your league will automatically unlock so that necessary cron jobs can run and potentially fix whatever roster issue was happening to cause the lock in the first place.
You will find this tool in Tools > Reset Games.
COMs now have the ability to set their league’s tiebreakers. By default the tiebreaker rules will be Pct, Wins, Goal Differential. COMs will have the ability to set up to four tiebreakers. The COM can pick of the these tiebreakers:
- Pct (points percentage), highest to lowest.
- Wins, highest to lowest.
- Wins – OT Wins, highest to lowest.
- Wins – SO Wins, highest to lowest.
- Wins – OT Wins – SO Wins, highest to lowest.
- Goal Differential (GF – GA), highest to lowest.
- Goals For, highest to lowest.
- Goals Against, lowest to highest.
Rookie Eligibility Settings
COMs now have the ability to set the maximum age and minimum games a player must have in order to qualify as a Rookie. The minimum games is actually a percentage of games that have been played in the season to date, so as the season continues the list could potentially change depending on how many games the player was actually in. You’ll find the settings in Settings > General.
Game Results Changes
You’ll notice that the Game Results have been moved to a section under the Commissioner’s Corner and above League Activity. You’ll also find that we are now only showing either your Pro, Farm or Junior league game results. Previously we showed all of them since we had a lot of vertical space. The move to the new location prevents us from showing all three leagues since there just in not enough horizontal space. I will eventually be adding a few more things to the Game Results area to “fill it out” as it looks like there is a lot of wasted space.
You will see Pro, Farm and Junior links… clicking these will refresh just the Game Results section… so you won’t get a full page load (trying to reduce these).
Personnel (show all leagues)
We’ve added a list of all the Pro, Farm, and Junior players your team owns in one big list (like it used to be prior to UHS Dark)…¬† you’ll find this list on your Personnel Home page… just click Team > Personnel and you’ll see it beneath the Summary area.
- Fixed an issue where the Free Agency End Date and Trade Deadline were not being automatically set when the Pro league’s schedule was created.
- Fixed an issue where errors would appear when saving Play-off settings for leagues that did not have a Farm or Junior system set up.
UHS Build 6890 – July 30 2014
This build is aimed primarily at adding in the automatic playoff series creation settings. When this was first proposed about six years ago, my approach to it was pretty much all wrong… I started thinking about all the possible methods you could choose for your playoffs and was going to set up each one as a different type… this even went as far as specifying the number of teams too.
I guess it’s true that with experience comes *some* wisdom… as the work wasn’t nearly as bad or complicated as I thought it was going to be. Don’t get me wrong… it took a bit to debug and figure out but overall I think we’re okay with the method I’ve chosen to go with.
I also did a little work on the random player name generation logic as well as cut out some of the acronym names in favour of automatically generating acronyms if it’s needed.
Playoff Series Generation
After nearly six years I’ve finally gotten around to adding in the option to automatically generation playoff series. You will find the new options in Settings > Play-off Settings. In here you will select the Playoff grouping, number of qualifying teams, toggle whether division winners are always ranked higher and the length of the series.
If you opt to select “Manually Create Playoffs”, when it’s time to generate playoff series, you’ll basically be on your own…¬† you’ll be using the method we’ve used since day 1. You’ll pick your Home & Away teams, Round type (Preliminary, Quarter-Final, Semi-Final, Final) and Series Length. Once you create all of your series, you’ll then go to set your starting date and hit Create Games. You’ll notice that levels that did not have Manual selected will not have their teams present for selection.
If you opt to select anything other than Manual for playoff groupings, you’ll be able to select the following options:
- by Division: teams are grouped by their Division, then by Conference to create playoff series.
- by Conference: teams are grouped by their Conference only to create playoff series.
- League Grouped Together: teams are grouped together regardless of Conference or Division. Sort of like what they tried in the NHL back in the 1979-80 season.
You can select from 1 up to the maximum number of teams for the grouping you’ve selected previously. In the cases of unbalanced conferences and divisions, the highest number of teams allowed per grouping will be the number of teams from the smallest division. So in the case of conferences of 14 teams and 16 teams, the most you would be able to select for qualifying teams is 14 (the lowest of the conferences).
Division Winners Ranked Higher
Here you have the option to allow division winners to be re-seeded higher in their respective conference or league (this doesn’t really apply for Group by Division). This is similar to how the NHL operated their playoff format in the late 90′s and 2000′s… the top division winners of each conference were ranked 1-2-3 regardless of their point totals compared to the other teams that did not win their division.
Quite simply, how many games do you want your series to run?
So now that you’ve selected your play-off settings for each level (Pro, Farm, Junior), how do you go about creating your series? Well…¬† when you advance your season from Regular Season to Play-Offs, you’ll go to the Manage > Schedule – Play-offs like you would have done with Manual Setup. You should notice that all of the series have already been created for you… all you need to do now is enter your Start Date and click “Create Games”.
For subsequent rounds you’ll do the same thing… once the round is over, you’ll enter the Manage > Schedule – Play-offs page and find your new series automatically created for you.
Manual Playoff Series Updates
We’ve added a few quality-of-life improvements if you still want to create your playoff series manually. When creating new series the page will remember the last Type and Length that you used, so you don’t necessariy have to re-select the options you want… just pick your teams and carry on. Also, you will now only be allowed to create one Final, one Farm Final, and one Junior Final series…¬† once you create that, the option will be removed from the drop-down. If you made a mistake, it’s okay… delete the series and re-add it.
Player / Coach Born field: Early Retirements & Rerates
We’ve added a new “Born” field behind the scenes to record the season that a player (or coach) was created. This field will now be used to determine whether a player / coach will retire early from not having been in any games for X number of seasons (as set by the COM) since their last game. This was a problem since if there were no games played EVER, how would we know when it was okay to force a retirement? The Born field will now be used when the player / coach has never been in any games.
Additionally, this will also apply to rerates in that a player cannot be rerated if the last season (meaning the one we just came from prior to the season change) is the same as their Born date. I *might* put in a small chance at some random rerates (perhaps like 10% chance for each skill), however, for now, we’re going to leave it as is.
Player / Coach Deletions
After all retirements have run, the season change code will check for any retired Player or Coach and see if they have any statistics whatsoever. If there are none, the Player or Coach will be deleted from the DB. This was previously running only for Players, however, we’ve increased the scope to also run for Coaches.
Player First Name Creation
I’ve removed the names that consist of two capital letters (like PK, RJ, PC, JC, etc) in favour of adding some random hyphenization when creating a random first name. I’ve also added quite a few more Quebec French First Names. There will be a 1 in 1000 chance that a player will have a hyphenated first name and a 50-50 chance that hyphenated name will actually be shortened to something like PK, RJ, etc. I’ve also optimized some of the name generation queries… I doubt anyone will notice on unless you are making a LOT of names at once, however, it should be a little faster now. This was released as a “hotfix” on July 14 2014.
Special Last Names
We’ve removed the code that could potentially add a “Jr.”, II, or III to the end of the player’s last name. Not really seen in hockey… it’s more of a soccer thing. Player last names have a 1 in 1000 chance of being “Special”…¬† where they will either become hyphenated or a new country will be randomly chosen for that last name.
Player Dodging Checks
There was a change made in a prior build that removed “dodged pass interceptions” being counted as a Check Avoided. All leagues should be seeing a decrease in the Checks Avoided category because of this.
Additionally, players successfully making their Quickness skill check will only be hit for half the defender’s strength (Power) skill when hit by the check. This should give the Quickness skill a little more oomph when considering a player as they’ll likely be able to stay on the ice for a longer period of time than those with low Quickness skills.
Public Site Contact Forms
I’ve added a validation question to the public site contact form as I’ve noticed (and you have probably too) that the form was being hit by spammers. While this won’t defeat human spammers, it should defeat bots.
League Member List
When logged into UHS all users will now see a “Members” link under the League menu. This will show all Owners, Commissioners and GMs assigned to teams. The member’s role, email address and last login time will also be shown to let everyone get a gauge of league activity. Further to this, members that have not logged in for 14 or more days will have their time highlight Red. If not logged in within the last 7 days the time is highlighted Orange.
Please note, we are intentionally not including this on the Public Site as I don’t want to be putting everyone’s real names and email addresses on a website where anyone can just go grab them. Privacy is important to me.
- Fixed an issue where the original owner of the pick was being shown in the Entry Draft list on the UHS site.
- Fixed an issue where teams were not receiving scouting reports for their own players when the season changed to the new Off-Season.
- Fixed an issue where players were able to be bought out despite still being on waivers.
- Fixed an issue where the value of contract offers was not rounding properly. Example: $0.3 * 3 years = $0.89999 instead of $0.9.
- Fixed an issue where the Search Ahead / Suggestion box for the player search was too light.
- Fixed an issue where the League Salaries page on the Public Site would display a multisort error.
- Fixed an issue where Ledger entries on the Public Site were appearing in ascending order instead of most recent at the top.
- Fixed an issue where hitting save would return “Array” in the message area for Settings > General Settings.
- Fixed an issue where lines would not shift off when reaching exactly 0 energy due to a floating point error.
- Fixed an issue where PK lines would have phantom players contributing to line energy… this resulted in PK lines spending more time on the ice than they should have been.
- Fixed an issue where the AutoGM would only set their farm roster when there was an injury. This fix will set the roster anytime a player is sent down to the farm team so good players are not benched waiting for an injury.
- Fixed an issue where new leagues were not creating owner accounts due to an old table being referenced. Released July 9 2014.
- Fixed an issue where COMs could not delete users with apostrophes in their username. Released July 12 2014.
- The Rookie table population job will now ignore leagues that have Inactivity Warnings. Released July 12 2014.
- The Rookie table population job will now ignore leagues that have not had anyone log in. Released July 18 2014.
UHS has started a KickStarter project to help raise some funds to pay for some basic things like server costs (around $100 / month). If we get a LOT more the money will go to things like developing random faces for our players among some other “Blue Sky” ideas I have.
If you pledge $25 to us, we’ll give you a big thanks on Facebook and Twitter.
If you pledge $50 to us, you’ll get a big thanks in addition to some awesome Chocolate Chip cookies home-made by my wife (Canada only unfortunately… not sure if they would survive the trip through customs to the US… but I’d be willing to give it a shot anyway).
Anything you can pledge to us will help.