UHS Build 10180 – Goalies Join the 99-Club

goalieUHS Build 10180 – June 22 2016
We have finally thrown off the shackles of HLS2 and brought goaltenders into the 99-club. Both goalies and players will now be measured similarly with the same maximum possible value. It meant creating some newer virtual stats that you wouldn’t normally see in a game. It also gave us the opportunity to bring in poke-checks. Free Agency minimum offers and Chemistry re-rates were both modified. AutoGMs now offer draft picks to get out of a tough financial bind. From discussions with Jon Lau and Trevor Cook, we came up with a better way to have AutoGMs valuate players being offered out in those tough financial situations. We have a multitude of bug fixes and hotfixes that were deployed since the last build as well.

Goalies Join the 99-Club
Since the inception of UHS, goalies have only been able to have a maximum skill of 81 as the CH and SH skills were ignored. This was legacy logic when we moved over from HLS2. Goalies will now use the CH and SH skills and we’ll also be tracking three new goalie stats to help with rerates. All pages have been updated to accommodate Goalies have a max of 99 skill, for instance Skill Classes no longer have the goaltender skill option. With the addition of the SH and CH skills to goalies the QK and PC skills have been modified slightly.

Shooting (SH):
– This skill is now the key saving stat for goalies and is compared directly against the Skater’s SH skill.
– This skill will rerate based on the calculated GStrength stat: SavePct * 10 – GAA.
– Existing goalies will have their SH match their PC skills.
– In leagues with skills hidden, this skill is scouted as “Solid”.

Quickness (QK):
– This skill will continue to be a key saving stat for goalies and will be compared directly against the Skater’s PC skill.
– This skill will rerate based on the new Scrambling Save (ScrSv) statistic. Any time the goalie’s QK is equal or higher than the Skater’s PC for the shot, their ScrSv will increment if the goalie makes the save.
– This was done to decouple the SH and QK skills as it felt a bit weird to have two skills rerate based on a single statistic.

Puck Control (PC):
– This skill is now only used to determine Rebound Control and is no longer a key shot/save rating.
– Anytime the goalie succeeds in their PC skill check, the new Rebounds Controlled (RbC) stat will be incremented.
– This skill will rerate directly based on the new RbC statistic.

Checking (CH):
– Goalies will use this skill for poke-checks.
– Poke-checks can only happen if the skater is attempting a Deke goal.
– The chance the goalie even attempts the poke-check is 1% per CH skill as the poke-check is an extremely risky play.
– The chance the pokecheck succeeds is based on the goalie’s CH skill and the skater’s PC skill.
– If the pokecheck fails, the skater will receive a large bonus to score that is increased by their PC skill. Please note that it will still be possible for the goalie to make the save in this case.
– If the pokecheck succeeds, the goalie’s PC skill is used to determine where the puck ends up. Please note that the goalie’s RbC statistic *can* be incremented if they successfully control the puck in this scenario.
– Poke-checks do not count as saves during regulation or overtime / regular play, however, they will count towards making a stop during a Penalty Shot or Shoot-out Attempt.
– All successful poke-checks are now tracked under the Poke-Check (PkCh) statistic.
– This skill will rerate directly based on the new PkCh stat.

Free Agency Minimum Offer Values
Players that linger in free agency typically will stay there as their minimum offers are pretty high. We do have code in to decrease the minimum offers but have changed it slightly. Players on free agency will have their minimum offer drop by 50% at the commencement of the pre-season. In addition to this, their minimum offer will drop by another 50% once the league has changed over to the regular season. If the free agent has missed one or more seasons of Regular Season play, their Minimum Offer will then drop by 75%. This cycle will continue until the player reaches the Salary / Contract Minimum, by default this is $0.1M.

Chemistry Re-Rate Adjustment
Leagues that use Chemistry should be aware that the Chemistry skill was being rerated too quickly towards average (perfect) Chemistry. We have changed the rerate values for chemistry so that shifts toward average / perfect Chemistry happens only half as fast as it does now. Chemistry has also changed from being a 1 decimal value to storing 2 decimals.

Rerate: Not Applicable or Decrease = 0.01 to 0.10 Chemistry shifted towards average (perfect). Previously this was 0.01 to 0.25.
Rerate: No Change or Increase = 0.11 to 0.25 Chemistry shifted towards average (perfect). Previously this was 0.25 to 0.50.

AutoGMs to Offer Draft Picks – Released May 11 2016
AutoGMs will now have an option to offer up draft picks in order to get out of having a negative account balance. Offering up draft picks will not be an option if the team is only above the salary cap. Draft Picks will also not be offered if the league is in its Inaugural season.

Draft pick valuation is determined by the account balances of all teams in the league. If there are more than four teams in the league, the two highest and two lowest account balances are ignored for determining the average. That average is then divided by the total number of teams in the league to get the value of the draft pick in the lowest round. Values of draft picks will increase as the round increases (5th vs. 4th or 3rd or 2nd).

AutoGM “Get Out of Hole” Player Valuation – Released June 14 2016
Thanks to some discussions with the TJHL and a nice post by Trevor, we’ve changed the valuation code for players when the AutoGM needs to get out of the hole (either negative account balance or over the salary cap). The new valuation will be based on the player’s skill and will rise exponentially as we approach 99. Prospects (players under MaxAgeProtected) will have their values doubled. All values will have a random value added or subtracted in order to help hide backwards math to determine player skill for leagues where skills are hidden.

Bug Fixes & Miscellaneous Changes
– Divide by 0 warnings on player profile games for Public Sites should no longer appear.
– Fixed an issue for public websites where players in free agency would not appear on the Career Stats list.
– COMs will now have an option to create 500 players at a time.
– Shots that are deflected will no longer have a chance to be “flubbed” by the original shooter. This resulted in some weird play by play messages.
– Big Hits and Fights were added to the All Players stats page.
– AgrSv was added to the All Goalies stats page.
– Big Hits, Fights, First Goals and Penalty Shot goals have been added to the League Players stats page.
– Aggressive Saves, Scrambling Saves, Rebounds Controlled and Poke-Checks have been added to the League Goalies stats page.

Hot Fixes
– Fixed an issue where players were not being added to the Free Agency list if they were ever involved in RFA Compensation at some point in their career. Released as hotfix on April 2 2016.
– Fixed an issue where projected finances were not calculating the Salaries Paid field correctly. Released as hotfix on April 2 2016.
– All fonts have been changed to Helvetica instead of Verdana or Tahoma. Discovered Tahoma isn’t a web-safe / standard font. Whoops! Released as hotfix on April 5 2016.
– Fixed an issue where trades accepted by the AutoGM were not viewable by all GMs. Released as hotfix on April 6 2016.
– Fixed an issue where other trades were not being properly voided when the AutoGM accepted a trade if they involved the same picks or players. Released as hotfix on April 6 2016.
– Modified the ‘Get-Out-of-Hole’ code for the AutoGM to reduce the dollar valuation for their players by half. Released as hotfix on April 11 2016.
– Added checks to the AutoGM to ignore players from pending free agent bids or waiver claims when determining if an active team player should be sent to the farm. This was allowing the AutoGM to create a multitude of makeweights that were constantly being sent to the farm, however, more makeweights were required to set the team’s game roster. Released as hotfix on April 11 2016.
– Several hotfixes were deployed to get UHS back up and running due to the unplanned server migration (and upgrade) that happened. Released April 15-17 2016.
– Fixed an issue where makeweight creation was not considering defensemen being placed in the “extra” position for the game roster. Released April 17 2016.
– Fixed an issue where other trades were not being properly voided when the AutoGM accepted a trade if they involved the same picks or players (see the hotfix for April 6 2016). This should hopefully fix the same issue. Released as hotfix on April 26 2016
– Fixed an issue where trades to the AutoGM involving draft picks would always be voided with the message “Pick(s) no longer owned by team.” Released as hotfix on May 14 2016.
– Fixed an issue where the Waiver End time was converting the number of Waiver Clear Hours into minutes instead of seconds for behind the scene purposes. Released as hotfix on May 17 2016.
– Released a fix for the AutoGM where the Waiver End time was improperly calculated ONLY for cases where the AutoGM was simply moving a player down due to roster space concerns. Released as hotfix on May 17 2016.
– Added a check to ensure the AutoGM can afford to pay the Waiver Fee before making waiver claims. Released as hotfix on May 17 2016.
– Changed the AutoGM to now make “Get out of trouble” offers once every AutoGM Freq hours instead of every 3 days. This will allow AutoGMs to make more offers depending on the COM’s AutoGMFreq setting. Released as hotfix on May 19 2016.
– Reduced the base valuation of players offered by the AutoGM from $50,000 to $40,000. Released as hotfix on May 19 2016.
– Released code to set the inaugural draft salary for AutoGM picks to be $40,000 * the player’s overall skill. Released as hotfix on May 22 2016.
– Fixed an issue where the AutoGM was not buying out farm players. Released as hotfix on May 22 2016.
– Fixed an issue where the AutoGM was making waiver claims against players using incorrect position comparisons (ie. Goalie OV skill vs. Skater OV skill). Released as hotfix on May 23 2016.
– Fixed an issue where the AutoGM would not consider money received for incoming trades if they had an account balance below $0. Released as hotfix on May 23 2016.
– Fixed an issue where the AutoGM incorrectly valuated both incoming and outgoing draft picks in trades being sent to it. Released as hotfix on May 23 2016.
– Injured or Suspended players will now have a red cross appear on the personnel roster in the COM screens. Released as hotfix on May 23 2016.
– Fixed an issue where injured / suspended players on the AutoGM team would result in other players being incorrectly assigned to the wrong position. Released as hotfix on May 23 2016.
– Updated the AutoGM to no longer poach Restricted Free Agents. These players hang in limbo until compensation has been set and chosen so the AutoGM doesn’t consider them on their team until the RFA process is completed. Released as hotfix on May 25 2016.
– Fixed an issue where players currently in Free Agency would not appear in the Career Stats lists. Fix not released for public websites. Released as hotfix on May 27 2016.
– Updated the AutoGM to now consider all players owned by the team in regards to trading for money. Players that are at MaxAgeProtected are under are valuated higher. Released as hotfix on May 27 2016.
– Fixed an issue where the AutoGM would value draft picks from the final round as zero points. Released as hotfix on May 30 2016.
– Fixed an issue where the AutoGM would also decline / void trades if they were sending out a prospect, even if the other team was sending them one in return. Released as hotfix on May 30 2016.
– Fixed an issue where COMs would see the owner of the draft pick instead of which team’s pick it was on the COM’s Trade confirmation page. Released as hotfix on May 30 2016.
– Fixed an issue where the AutoGM would also decline a trade if they had a negative account balance. The AutoGM will now only decline if they are trading away money. Released on June 3 2016.
– Additional code to evaluate player and draft pick overall value has been added courtesy JonL. This extra check will only run if the trade involves players. Released as hotfix on June 3 2016.
– Fixed an issue where Pick valuation could be slightly undervalued when offering trades to the AutoGM. Released as hotfix on June 13 2016.

UHS Build 9948 Released – April Fool’s Day!

journalismUHS Build 9948 – April 1 2016
April Fool’s Day… no but really… this is a legit build.

This is a relatively smaller build but it’s one that comes with a major piece of functionality that will allow COMs and GMs the opportunity to contribute to the fantasy of their league. Media Articles are basically here to put an end to one of the needs of having forums. I have some further plans for Media Articles but we take baby steps first.

We also added in commentary from the AutoGM on declined trades. It’s nothing huge or robust… just a little something to give you an idea about why the trade was declined.

Media Articles
Leagues now have the opportunity to allow GMs to contribute to the overall fantasy and culture of the league and team by writing media articles. Media articles are typically written in the vein of a local tv station or newspaper covering the team. This also allows the GM to earn extra money for their team.

COMs can modify settings in the Settings > Media Settings section. In here, the COM can set:
– Articles require COM Approval (default) or are automatically approved on GM Submission.
– Minimum Words required to qualify an article to earn money. By default this is set to 300 words.
– Maximum Revenue allowed for each article. By default this is set to $250,000.
– Revenue / Word will set how much money is earned per word (as long as they meet the Minimum Words requirement). By default this is set to $500 / word.

Media Articles will appear on the League home page above the Game Results.

Bug Fixes & Miscellaneous Changes
– The AutoGM will now respond with very basic comments on why the trade was declined. You will know if you’re close to a deal (within 25%) or not.
– Fixed an issue where teams were not allowed to view trades they were not involved in.
– Status messages with excessively long words will now be wrapped so the Commissioner’s Corder, Game Results and League Activity are not squished.
– Users will now be able to Toggle whether the Commissioner’s Corner, Recent Media Articles, Game Results, Recent League Activity and Status Updates are shown.
– Fixed an issue where old draft picks would incorrectly be shown for trades completed by the Commissioner.
– Fixed an issue where Trades completed by the COM would not void other pending trades for the same players / picks.

Hot Fixes
– Fixed an issue where the play by play indicated the Goalie was being put back in the net despite never getting pulled for the extra attacker. Released on February 16 2016.
– Fixed an issue where a team losing by 1 or 2 goals would still pull the goalie if they were killing a penalty. Goalies should never be pulled if the team is on the penalty kill. Released on February 16 2016.
– Fixed an issue there a COM placing a player on waivers would calculate the end time based on days instead of hours. Released on February 24 2016.
– Fixed an issue where players were being released from teams and were placed in free agency, however, the AutoGM would not necessarily see them. Released on February 25 2016.
– Fixed an issue where attempting to relocate a team would result in an error. Released on March 5 2016.
– Fixed an issue where the new Fighting skill was not showing up in the Edit Player screen for COMs. Released on March 14 2016.
– Fixed an issue where Firing a Coach was not applying the league’s Salary Buy-Out Percentage. Released on March 14 2016.
– Added a new Unprotected Player report. The report will only appear for GMs or COMs when they are logged into UHS. Released on March 14 2016.
– Fixed an issue where Teams with a negative account balance could not purchase a $0 medical facility or staff. Released on March 14 2016.
– Fixed an issue where Players would remain protected after being traded, allowing teams to exceed the maximum allowed protected value set by the COM. This fix will be applied to AutoGMs once the build has been released. Released on March 14 2016.
– Fixed an issue where Expansion Teams were not appearing in Priority Lists for Waiver Claims. Released on March 14 2016.
– Fixed an issue where the AutoGM was able to draft underaged players. Released on March 26 2016.
– Fixed an issue where the AutoGM was signing drafted players to $0.125/1 contracts when they should have automatically be signed to the Salary / Contract as set by the Commissioner. Released on March 27 2016.

UHS Build 9758 Released – Major Metric Motherload

A large explosion of confiscated mortar rounds, grenades, guns and other explosive devices set up by Army explosive ordnance disposal technicians on Contingency Operating Base Q-West, Iraq, Dec. 31. The controlled blast, which contained more than 1,500 pounds of explosives, was set off at midnight as a way to ring in the New Year from Iraq.UHS Build 9758 – February 11 2016

Happy birthday, Owen! This is a massive build… it’s so massive that it’s actually the largest build we’ve ever released since we did UHS Dark. It’s the first build of the new year and it took 2.5 months. We actually needed to shut down UHS for hours in order to properly deploy the build and convert all league’s existing savepoints.

The All-Star / World Cup functionality was originally supposed to be the high-light of the build and that did take the majority of the work. All-Star stuff has been overhauled from top to bottom. But that wasn’t all we had in store. We also implemented the AG skill change and introduced the new FI skill. It took a lot less time than we originally thought, so might as well push it through.

The AutoGM got a new piece of code to get them out of financial trouble and the Three-Star determination / selection received a much-needed overhaul. Just when we thought we were good to go, I got ambitious and decided to rewrite the personnel management code to make sure the AutoGM properly manages it’s players.

We also have a new WIKI page if any UHS experts feel like contributing.

New Support Method – Discord
I’m happy to be able to offer another method of getting in touch with us for support or even just general chatting: DISCORD! If you haven’t heard of Discord, it’s a fairly robust chat program that also offers voice capabilities to folks that want it. All you need to do is click this link: https://discord.gg/0mQXA3o55cioiFhW and install the Discord program.

On Discord I’m known as Stone (don’t ask… that’s just my online “persona”). While I do keep the program running, I don’t necessarily keep it open, however, you can get my attention by typing @Stone. If I still don’t respond, I might not be at my computer or have access to my phone, so the best bet then would be to send in a support ticket. I typically won’t be available by VOICE (for reasons), but I will most certainly try to respond in chat.

On the usage of the chat, since this is a fairly public forum we can lay out a bunch of rules but they can best be summarized by saying we follow Wheaton’s Law: Don’t be a jerk! No racism, prejudice, uttering threats and general douchebaggery. We can and will ban folks for abuse.

AG Skill Change
The Aggression skill was a fairly wonky skill. The higher it was, the more of a chance your player was going to get involved in a fight and not be on the ice. So for a highly skilled player, a high AG was bad as it meant he would likely be off the ice more than he’d be on. I feel a skill should be valuable if it’s higher than lower. So it’s time for a change.

Skaters: The AG skill no longer affects fights. Instead, the AG skill gives each skater a chance to change a successful check into a Big Hit. A Big Hit will now provide the team with a little momentum and will also result in the checked player losing extra energy. Big Hits are tracked under the BH statistic and will directly affect how the AG skill rerates for a skater.

Goalies: For goaltenders, the AG skill was pretty much useless since Goalies are not permitted to fight. The AG skill now gives the goaltender a chance to reduce the Scoring Chance by 1%. Saves made with a successful AG skill check will be tracked in the new AgrSv (Aggressive Saves) statistic and will directly affect how the AG skill rerates for the goaltender.

New Fighting Skill
Since the Aggression skill is now going to be focused on Big Hits and giving goalies a better chance at making saves, we needed a new stat that tells us whether a player is prone to fighting. The Fighting skill (abbreviation FI) does that. For existing players, the FI skill will match that of the AG skill. For new players the FI skill be a random 1-9 skill that does NOT count towards the player’s overall skill.

The Fighting skill is simply a measure of how likely a player will engage in a fight, so we made the decision to leave it out of the Player’s Total skill calculation… plus… we like that the total overall skill for a player is 99… adding Fighting to that would have increased that to 108 which feels a bit weird.

The Fighting skill is also not handled by rerates in the same way as the other skills. Fights engaged in at the pro, farm or junior levels all carry the same weight. The skater’s Fighting skill will rerate accordingly… if they have fewer fights last season over the previous season and the ratio meets the threshold, the FI skill will rerate down… it doesn’t matter if the skater is in the Junior, Farm or Pro league: A fight is a fight. Additionally, while other skills are impacted by the amount of time on the ice, the Fighting skill ignores Ice Time for rerate purposes.

All-Stars / World Cup functionality
The All-Star Game link is now gone and changed slightly. There is a new link that only shows up during the Regular Season under League > All-Star / International. This will take you to the new page to manage everything you need for the new All-Star / World Cup functionality.

An additional change you’ll notice is that we’ve pulled out the Add Team code for All-Star teams and placed it into the Manage All-Star screen. You are still able to create / manage your all-star teams, however, you won’t do that with the Add Team section like you would previously. In fact, once you are out of the Off-Season the Add Team functionality will be hidden / disabled since you weren’t able to add Pro, Farm or Junior teams anyway.

When your league has all-star / international games played for a given day, a link will appear on the front page alongside the Pro, Farm, Junior game results link. In fact, the All-Star scores will be the default scores loaded as it is possible to sim international games on the same game day as the other levels in your league.

Logos
When creating an all-star team that has the same name as a Country, a logo will automatically be selected for the team using the 44 country flags we have on file. If you want to use your own logo, you can upload a 250×125 sized flag/logo for your all-star team. If no flag can be found the default All-Star flag will be used.

Penalties / Scoring
If you are running a single all-star game for the season, the base scoring chance will be bumped up to 25%. If you are running a tournament, the scoring chance will remain the same as a regular game. Penalty chances for a single all-star game will be 0% (no penalties) and 1% for tournaments (minimal number of penalties).

Goaltender Switching
In a single All-Star game, goalies will switch like they have in the past. The starting goalie will play the 1st and 3rd periods. The backup will play the 2nd period. In Tournaments, the Starting goalie will play all periods but will switch with the backup if the team is down by 3 goals.

All-Star Skills Competition
For single All-Star Games (as opposed to tournament / international level games), we’ve added the results of the All-Star Skills competition. All players participate in each of the competitions, however, only the top 4 for each team are shown.

Fastest Skater Competition: This uses the skater’s QK, SK and FA skills. Thanks to Jon Lau for supplying the base code that was slightly modified to fit UHS’s needs.
Accuracy Competition: This uses the SH, PC and PS skills to determine how many attempts a player needs to hit 4 targets.
Hardest Shot Competition: This uses the player’s SH and PW skills. Thanks to Jon Lau for supplying the base code that was slightly modified to fit UHS’s needs.
Breakaway Competition: This pits all 18 shooters against both goalies using the SH, PC, QK and SK skills.

AutoGM – Personnel Management Re-Write & Code Review
Yes, here we are again, messing around with the AutoGM. We’re going to keep at it until it feels just right. I’ve re-written the Free Agency Poaching, Waiver Poaching and overall player code into one Personnel Management section that will run before we get to set rosters. Once the Draft is over (or PreSeason and beyond), the AutoGM will begin to manage its players. If there are empty spots, it’ll attempt to fill them with existing players first and then hit up Free Agency and Waivers.

The AutoGM will still look at Free Agency and Waivers to see if there are any guys out there that will be good for their team, however, they’ll only do that one at a time.

The Pro Roster and Farm Roster setting code was pretty much gutted to eliminate the extraneous Free Agency and Waivers code. Makeweights WILL be created if the AutoGM lacks enough players to ice a team (less than 20 players) and there are actually still games remaining for the AutoGM to play in during the current Season Stage (PreSeason, Regular Season, Playoffs).

Overall I reviewed the entire AutoGM script with the goal of making it more efficient (less database queries and more optimized code) and smarter by pulling in projected expenses and revenue data. We are also calculating Player Salary Cap hits.

By no means, I don’t think it’s perfect and there will always be room for improvement, so if you notice anything wonky, please report it.

AutoGM – Get Out of Trouble code
I’ve added code to allow the AutoGM to sell off players to get under the Salary Cap or get out of debt (negative bank account value). The AutoGM will select a random player from their Pro Team and make a trade offer to all pro teams for cash.  The value of the player is based on the player’s Total Skill + a random factor. Offers will be valid for up to three days. If the offer is not taken the AutoGM will void ALL offers and make a new one with a new random player if they’re still in debt or over the cap. Offers will not be less than $1 million.

This code will NOT run during the Off-Season. During that period the AutoGM needs to be able to move players around without freaking out about being over the cap and trying to sell off players. This code should only execute during PreSeason, Regular Season and Playoffs.

Three-Star Determination Overhaul
As most of you might know the old Three-Star determination method was to collect all the candidates, those who scored a goal, a game-winner or game-tying, a shut-out, save pct and so on and select the top three from those randomly. This method also tended to heavily favour the goaltenders. We’ve changed this to assign Star Pts based on the player’s performance in that game. The players with the three highest Star Pts will now be your Three Stars.

Players: Goal – 1pt, Assist – 0.75pt, Game-Winning Goal – 0.5pt, Game-Tying Goal – 0.5, Overtime Goal – 0.5pt, Plus-Minus – used for tiebreaking only.
Goalies: Shutout – 1pt, Goal – 1pt, Assist – 0.75pt, Saves (if Shutout) – 1pt / 14 saves, Saves (if no Shutout) – 1pt / 28 saves.

Goalies will be able to get a three-star appearance if they make lots of saves even in games where there are lots of goals…  as long as two or more players don’t have multiple goals/assists. I’ve compared the point-weights to some recent NHL games and have seen that the three-star selections were fairly close to what actually were selected or could have been.

Waiver Clear Days (HOURS!)
We’ve changed the Waiver Clear Days field to now be Waiver Clear Hours to give COMs the ability to fine-tune when players can clear waivers. This field lines up with Free Agency and Contract offer fields which are also in hours. The change will be applied to any new players placed on waivers as we record the clearing time at the moment the player enters waivers.

Junior Goalie Fatigue Injuries
Junior teams will now better manage their goalies so they no longer get fatigue injuries. This doesn’t mean fatigue injuries can’t happen, in fact, goalies can play over their fatigue if they’re the backup and get subbed in because the starting goalie is getting lit up. It’s still possible, just not as likely as it happened in the past.

Wiki Updates
The wiki site is now up and running. We’ve moved our help pages and guides to the wiki and will continue to add more with time.
– Player Characteristics was moved from the UHS site to the Wiki.
– Idle Leagues / Deletion page was moved from the UHS site to the Wiki.
– Inaugural Season Walk-through page was moved from the UHS site to the Wiki.
– added new page for All-Star Games & International Tournaments.
– Updated Player Characteristics with new information for Aggression (AG) and Fighting (FI) skills.
– Added an article on Player Rerates and a step-by-step walk-through of the rerate formula.

Bug Fixes & Miscellaneous Changes
– Links to the Guides & Walkthroughs have been replaced with links to the UHS Wiki: http://wiki.hockeysim.ca.
– Fixed an issue that was causing Debug Output files to be incorrectly formatted.
– Fixed an issue that caused an error to be displayed when deleted All-Star teams.
– Fixed an issue where newly added Status Messages were appearing as -196 seconds ago.
– Fixed an issue where Draft Picks could not be found in Entry Drafts for Season 2 and beyond when using the Make All Picks function.
– Fixed an issue where the Home player’s name would be used in the Live Game Penalty Summary when an Away player received a penalty due to injuring a player.
– Fixed an issue where unplayed games were not appearing on the Schedule page for Public Websites.
– RFA players owned by Teams becoming defunct will now correctly become UFAs.
– 172 Last Names and 41 First Names were added to the player pool from the 2016 World Junior Championships. UHS now has 1260 first names and 5929 last name-country combinations for a total of 7,470,540 name combinations.
– Fixed an issue where the rerate code was a little bit off from the intended calculations / formula.
– The AutoGM will now only send offers to players with expired contracts if their skill is 80% of the team’s highest skilled player. Previously this was set to 75%.
– Fixed an issue where selecting Make All Picks would incorrectly use the serpentine method for entry drafts.
– The Build History is now located under About UHS.
– Made some css tweaks to make the profile of buttons smaller.
– Made some css tweaks to decrease the height of the UHS navigation bar.
– Replaced the UHS Build link in the login panel with the league’s Database Name.
– Fixed an issue where it was possible to make free agent offers to players that were retired.
– The Last Wage column has been removed from the COM view of the Team roster.
– Fixed an issue where the player options were not appearing for Farm or Junior teams in the COM view of the Team Roster.
– Removed the Farm Team: ## text from appearing on the COM view of the Team Roster. This was being used for debugging.
– Added a TOT column to the COM Team Roster to show the total number of players on the team.

Hot Fixes
– Fixed an issue where the AutoGM wouldn’t pull back correct TeamStandings data when performing Player Release functions. Released on November 16 2015.
– Fixed an issue (I think) where the AutoGM was releasing all players. Not sure why this was happening, however, I did see the AutoGM job hanging for one league. I added in some extra code to ensure player/team arrays are fresh for each Release check. Released on November 17 2015.
– Fixed an issue where the AutoGM was not making contract offers to players with expiring contracts. This relates directly to the problem “fixed” on November 17… players were not being offered new contracts so they were all released once free agency began. Released on November 20 2015.
– Fixed an issue where the AutoGM would hang in a very specific set of circumstances (affected only one league) when setting the team’s game roster. This would result in players being bought out incorrectly and also caused game roster errors within the sim engine. Released on November 20 2015.
– Added an additional check for roster positions where the PlayerID is 0. This results in errors when the game is about to be simmed. Released on November 21 2015.
– Fixed an issue where Trades involving other teams were not being voided if the players/picks were being offered to the AutoGM. Released on November 24 2015.
– Fixed an issue where creating unassigned players in a relegation league would result in the players not appearing in Free Agency. Released on November 25 2015.
– Fixed an issue where the AutoGM was not making Entry Draft selections. Released on November 26 2015.
– Fixed an issue where the AutoGM was signing Free Agents and then immediately buy them out. AutoGMs will no longer buy-out players that are on the first year of their contract with the team. Released on November 29 2015.
– Fixed an issue where GMs making a Coach Free Agent offer would receive a message saying they already made an offer in X number of hours even though an offer had not been made. Released on December 3 2015.
– Released code to prevent the AutoGM from running for teams (and their applicable farm teams) if there are games queued. Released on December 14 2015.
– Fixed an issue where Incoming trades could potentially put AutoGMs over the Salary Cap or under the Salary Minimum. Released on December 15 2015.
– Released code to allow AutoGMs from Relegation leagues to make more than 5 Free Agent offers during the Off-Season so that they can fill their rosters. Released on December 31 2015.
– Fixed an issue where clicking the UHS Wiki link would make the Wiki page show in a super short frame. Released on January 14 1016.
– Released code to clean up issues where the AutoGM could crash the Free Agency tables… this resulted in some Free Agents not being able to be signed. Released on January 21 2016.
– Added further checks on SavePoint names to ensure illegal characters can’t be used. Released on January 23 2016.
– Released a change to limit AutoGMs to only look at the top 5 free agent coaches instead of everyone that is better than their current coach. Released on January 26 2016.
– Fixed an issue where the AutoGM could ignore player and pick ownership for incoming trades. Released on January 31 2016.
– Added further limits on the AutoGM and free agency: if the AutoGM’s team salary cannot support even one player at the minimum Salary, the AutoGM won’t bother looking at free agency at all.  Released on January 31 2016.
– When the AutoGM is looking at Free Agency to fill out their team, they will pull back only the top 50 free agents instead of ALL free agents. Released on January 31 2016.
– Fixed an issue where players could remain on their team with a 0-contract if they had ever been an RFA. Released on February 8 2016.
– Fixed an issue where a team claiming a player on waivers resulted in all teams incorrectly paying the waiver fee with no ledger entry. Released on February 9 2016.

UHS Build 8971 Released – Back from BlizzCon

sea of humanity

UHS Build 8971 – November 16 2015
I had a few other developments lined up for this build, however, the changes to the AutoGM were not accompanied by the updated Roster checking/fixing functions so we began seeing a number of errors. The problem was the errors were more on the back end or when a COM attempted to sim a game. There would be no other indication that there was a roster error to the COM other than the game just not simming.

Also… Happy 70th Birthday, Mom!

Tier 3 Relegation Exemptions
Relegation leagues now have an option to make the bottom teams for Tier 3 be exempt from disbanding / relegation. Subsequently, COMs will lose the ability to add a new team to fill the vacant position since it’s no longer being vacated.

Team Power Rankings
GMs will have a new Team Power Rankings option under the Scouting menu. For leagues that have skills shown, this simply takes the overall skill of the team’s top 4 C, 4 LW, 4 RW, 6 D, and 2 G and sums them together. For leagues that have skills hidden, we compare each team’s players against every other team and accumulate points that way.

Auto-Complete Draft
We’ve built in a new option during the draft. Owners and COMs will now be able to select a “Mall All Draft Picks” button that will basically complete the remainder of the draft. A confirmation message will be shown and the button will become disabled. This was tested using 25-round 30-team league (750 picks) and saw a completion time of 40 seconds. With slower connections, it’s possible you could see up to a minute or more. There is a 2-minute time-out period… if you see a Gateway timeout issue it means the draft was a little too large, however, I *believe* the picks are still being made… it’s just that the browser has lost this particular connection.

You will be able to monitor the progress of the draft through your Public Site > League > Entry Draft.

For Inaugural Drafts, the drafter is designed to select 6 forwards, 3 defense and 1 goalie for every 10 picks. For Entry Drafts, the teams will be selecting the highest Total Skill players first.

AutoGM Modifications (not hotfixed)
AutoGMs will now void trades where they are sending out prospects (players equal or under the Max Age Protected age) and they are receiving no prospects in return.

Fixed an issue with draft pick valuations. Previously it was possible for the AutoGM to value high round draft picks the same as late round draft picks, however, there had to be a pretty unique set of circumstances happen. With the fix, the valuation applied to draft picks by the AutoGM has been lowered.

AutoGMs will now assess the state of their team roster and release extraneous players if they meet the following criteria:
– Buying out the player will not bring the team below $10 million.
– Player’s age must be greater than MaxAgeProtected (prospect players are exempt from release).
– Player must not be on a game roster.
– Player must be out of the top X for each position (doubled if a real farm team exists): C/LW/RW = 5; D = 8; G = 3.

AutoGM & Forwards ** – Released as Hotfix on November 2 2015
The AutoGM and the Roster Fixer functions have been updated to better handle Forward players (vs. C, LW, RW). Previously, Forwards were inserted a roster position without looking at whether other forward positions had vacancies. For example: 3 F players Joe, John, James were inserted as Centers, even though the team already had 3 Centers (but happened to be lower skilled than the Forwards) and despite the fact the team had no LWs! This meant the team would look elsewhere to fill those empty spots (farm team, free agency, waivers, makeweights).

The changes made will now mean that Forwards will be used to fill empty positions first before being reinserted based on skill. For the above example: Joe, John, James will be marked as LWs internally (you won’t see this) to ensure the game roster minimums can be met and a roster can be created.

Additionally, the AutoGM will now always set their best Pro and Farm Game Roster, regardless if a valid Game Roster is already set. Previously, the Game Roster would only be set / changed if a player was injured or suspended. This also means that the AutoGM will over-write any changes you might make to their rosters.

The AutoGM will now look at players to move down to the farm team AFTER the Pro Game Roster has been set and BEFORE the Farm Game Roster is set. Previously, the AutoGM moved players down to the farm before the Pro Game Roster was set… this led to high-level players being sent down because the Game Roster was valid and there was no need for the extra player.

Bug Fixes & Miscellaneous Changes
– Teams changed to AutoGM will change their prospect scouting to 0 since AutoGMs don’t use it anyway.
– Updated the RosterFixer function to integrate Forwards better into a GameRoster.
– Fixed an issue where GMs could ignore the Free Agent Decline Hours setting and make multiple offers to free agent coaches until he accepted an offer.
– Fixed an issue where Goalie Save Pcts were over-inflated for Team Career Spct leaders in Public Websites.
– Fixed an issue where a team could have an incorrect roster and the GM / COM may not even know… this prevented games from being simmed but returned no errors indicating a roster issue, leaving the GM/COM unable to proceed with the season.

Hot Fixes
– Fixed an issue where the new mailer was not working the live / public version of UHS (but it DID work through the test version). Released as hotfix on October 25 2015.
– Fixed an issue where teams could not be assigned to AutoGM if there was already a schedule created. Released as hotfix on October 26 2015.
– Fixed an issue where sometimes a schedule could not be created in Relegation leagues. Released as hotfix on October 27 2015.
– Fixed an issue where the PlayOff Tree would not display on Public Sites for Relegation Leagues. Released as hotfix on October 27 2015.
– Fixed an issue where saving General settings in Season 2 and beyond would cause a league to revert from a Relegation League to a Standard League. Released as hotfix on October 27 2015.
– Fixed an issue where Free Agents idle for 2 or more seasons were not having their Last Salary and Last Contract Value numbers adjusted downwards. Those values should be 75% of the previous value for each season after the first idle season. Released as hotfix on October 28 2015.
– Released code that allows UHS Admin to toggle whether SavePoints are allowed for all leagues. This will be used when we have builds being released that require previous SavePoints be to be updated with database changes. Released as hotfix on October 28 2015.

UHS Build 8866 – Relegation Leagues

RelegationThis one took a very, very long time to do. Between family, other hobbies and health, finding the time to get this done was a challenge and even then, the sheer amount of changes necessary was far larger than I had originally thought. Every time I turned around, I found myself needing to change a script or add a field to a table. Every time I made a change, I had to go back and start testing from scratch to make sure I didn’t mess up something that was already good to go. Overall we made 561 changes… it’s possible this could be the single biggest build number leap that we’ve had since we started UHS Dark.

There are a bunch of other smaller changes and fixes I made. I’ve decided to bundle in the miscellaneous changes in with the Bug Fixes just to save on Build Note real estate. We also managed to fix the issue where emails weren’t getting received by Microsoft accounts, so there’s that, too.

I checked the dates and this release would have come out around three months after our last one… to me it’s way too long… it’s a combination of the sheer size of the Relegation development + body issues; but I’m really hoping to get back to the usual once/month release schedule. I do fully expect there to be some fixes, although I really hope I’ve caught all the errors before they’ve gone live. Time will tell.

Relegation Leagues are Here!
Relegation leagues will allow you to run your league in a similar fashion to that of the Premier League… teams that finish in the bottom get demoted (relegated) to the next tier down while top teams get promoted to the next tier up. You can only toggle Relegation during Season 1 Off-Season. Once you’ve started your season, your league will be a Relegation League until you decide to Reset it.

In UHS, Relegation Leagues will consist of one, two or three tiers. All tiers will be able to handle their own separate conferences and divisions just as they do now, however, you should keep in mind that the bottom team(s) of each DIVISION will be relegated down. So if you’ve set that the bottom 2 teams will get demoted (and subsequently the top two from the lower tier get promoted) and you have 4 divisions, this means that in total 8 teams will get demoted (2 from each division). Due to this, we recommend you go with a one-conference, one-division set up, however, you are definitely free to do more.

When determining teams to promote, UHS will look at the playoff champions for each Tier and automatically place them as the team to be promoted, regardless of their finish in the regular season standings. If the COM has set up the league to relegate/promote multiple teams, the regular season standings are then used to determine the other teams being promoted.

Relegation leagues will have no Farm league and no Junior league. Teams will obtain their players via Free Agency only. Since there is no Farm league, Waivers is disabled.

When a team is relegated out from Tier 3 (the bottom Tier), the team becomes defunct and all players are placed in Free Agency for bidding. The COM is given an opportunity to create new teams, set whether they are Auto-GM’d and whether they will be created pre-loaded with players.

Trades are allowed between Tiers. All three tiers act as Pro Level when comparing it to a Standard UHS League.

Players cannot be loaned to other teams as they are in Premier League soccer. We are not adding that aspect of soccer to our Relegation development. If you want a player you will need to either trade for him or pick him up via Free Agency.

There is no Entry Draft. Young players will need to be manually created by the COM so that teams can sign them in Free Agency. It is recommended that one player is created for every player that just retired (not including players that were forced into retirement due to lack of playing time). Since there is no Entry Draft, trading draft picks is not allowed and should be hidden.

You can find the Relegation settings in Settings > General.

Email Fixed!

As some of you might know, receiving an email from UHS to your Hotmail.com, Outlook.com, Live.com, or any Microsoft-hosted domain would result in the email message never appearing. The dang thing would never even appear in your Spam / Junk Mail folder. We’ve fixed that.

Expansion Drafts
I’ve added code to only show Pro level teams that have not played in previous seasons for the team selection drop-down. Additionally, when there is only one expansion team in the list, that team will be automatically selected so we can shave off a few seconds of COM mouse-clicking.

Expansion & Distribution Draft links
The Expansion Draft and Distribution Draft links will no longer appear if the league is in Season 1 since these tools are really only used in leagues that are in Season 2 and beyond.

Bug Fixes & Miscellaneous Changes
– Fixed an issue on Public Websites where the Misconduct penalties were appearing as “Game” penalties when only 10-minutes was intended.
– Lawyers Settings have been added to the Settings Home page.
– The League Structure links in the Settings Home page will now only be shown if the league is in the Off-Season.
– Fixed an issue where the Public Site contact form would incorrectly use the Championship Teams header.
– The new reCaptcha v2 package has been installed on all public forms that generate emails (the ones that don’t require you to log into UHS).
– COMs can now select whether Imported NHL Teams will be Auto-GM’d.
– Fixed an issue where Logo images with spaces in their file names would not be displayed on the public website.
– Fixed an issue where AutoGMs would create 3 RW and 3 LW any time they needed to create a makeweight.
– Fixed an issue where only Pro league series were being automatically created. Farm and Junior series would not be created even if the COM had setup their playoff settings.
– Removed some debugging code from being displayed when using League Grouped for playoff series creation.
– Fixed an issue on Public Websites where the links on the Team Home page would take you to the incorrect page.
– Additional checks have been added for Teams without arenas. Applicable teams will be automatically set to use the Default Arena.
– Fixed an issue where Offers on Free Agent Coaches would not always update properly and result in the coach not being signed.
– The RFA text will now be shown in Red to make it stand out more in the list of free agents.
– Teams now have an option to offer Money as part of RFA Compensation.
– Fixed an issue where the Next and Previous arrow buttons were not appearing on datepicker popups.
– Playoff games that are Not Needed will no longer appear in Public Website’s schedule.
– Fixed an issue in the Teams list for Public Websites where the defunct indicator would not appear beside a team’s name.
– GMs will no longer be able to view trade offers that they are not directly involved with (either the sending team or the receiving team).
– Clicking on the Trade ID link in the public site will now correctly take you to UHS, requiring you to login to view the trade.
– Retired players will no longer appear in the drop-down list for Player Training.
– COMs and Owners will now be able to use the Compare Player tool.
– The public website Team Career leaders page will now properly show all applicable players… I must have created this initially while completely intoxicated.

Hot Fixes
– Fixed an issue that prevented newly created leagues from being used. Owners would not receive user account info and the new leagues resulted in failed cron jobs. Released on July 21 2015.
– Fixed an issue where players given Match penalties (not to be confused with Misconducts or Game penalties) were not actually removed from the game and were instead only give 5 PIM. Released on July 29 2015.
– Fixed an issue where Misconduct penalties were appearing as “Game” penalties when only 10-minutes was intended. Fix will not be released for public websites until the next build is released. Released on July 29 2015.
– Fixed an issue where the Waiver priority was using the Entry Draft order instead of the current Regular Season standings. Released on July 29 2015.
– Fixed an issue where switching to Playoffs while in Career Stats would result in a Fatal Error. Released on August 11 2015 (Fix for Public Sites will be released with build).
– Goaltender Career Stats now only require the 20 GP Minimum if viewing GAA or SPct. Released on August 11 2015 (Fix for Public Sites will be released with build).
– Fixed an issue where the Automatic Draft List was not working for Inaugural Drafts. Released on October 15 2015.
– Fixed an issue where draft picks for new teams were sometimes not being created when the number of draft rounds was changed. Released October 20 2015.

UHS Build 8305 – Assistant GMs Are Here (David)

asstgmThis is a bigger build than I would have liked but deciding to do the Assistant GM development meant a lot of code changes to accommodate the new security level. The development also uses ajax for the Asst.GM account permissions so you don’t have to constantly refresh the entire page when changing a single setting. Once you click the permission to change, it’s changed in the system.

I was able to do a few other things like add account locking at the COM level and modified the Undraft option to be a true full Undraft function… when a pick is undrafted, the team can go back and re-use that pick. The current pick will now be highlighted in green so it’ll be easier to see who’s pick it is… this is especially useful when a pick was Undrafted.

Assistant General Managers Have Arrived!
A long-standing development idea was to give a GM the ability to hire their own Assistants. One of the requirements for introducing such a role was the ability for the GM to set permissions. Anyone that is NOT an Asst.GM will be able to create an Assistant GM account and assign it to a team. The COM or the GM of the team the Asst.GM is assigned to can edit their Permissions. If a GM wants to hire an Assistant, they are not required to wait for the COM to add their account… the GM can do it from the Team > Assistants menu.

The COM / GM can edit the Assistant GM’s permissions, basically their ability to manage certain sections of the team. By default, all Permissions are set to Enabled… this means the Asst.GM will be able to function as a FULL GM for the team. You can edit the Permissions by clicking the “Perm.” button for the user you want to manage. With Permissions you can get your Assistants focused on particular areas of your team… perhaps one that only focuses on Scouting and Draft picks and another on just Rosters and Lines.

You can toggle the following 28 Permissions On or Off:
– Setting the team’s Draft List.
– Making Draft Picks.
– Managing Free Agent Offers.
– Making Waiver Claims.
– Buying new Arena Seats.
– Setting Team Ticket Prices.
– Managing Lawyer Settings and Initiating Suspension Appeals.
– Managing Medical Facilities and Staff.
– Changing the Junior Scouting Investment.
– Setting Pro or Farm Roster, Lines and Shoot-Out lists (each are individually).
– Coach Management (which includes Coach Free Agency, Hiring, Firing and Scouting other Coaches).
– Setting Player Protection.
– Retiring Jerseys.
– Ability to Create Makeweights if they’re needed.
– Train Junior Players.
– Make decisions on RFA Compensation (*COUGH* David)
– Make, Void, Accept or Decline Trade Offers.
– Scout Individual Players.
– Buy Out or Release Players from the Team.
– Offer New Contracts to Players.
– Place Players on Waivers.
– Move Players between Pro, Farm or Juniors.
– Change Positions on Junior Players.

Account Locking
COMs now have the ability to lock a user’s account instead of simply re-assigning the team, deleting them or changing the password. Accounts that are locked out will not receive emails from UHS, even if it is to reset a password or receive trade notifications.

Goalie Fatigue Injuries
Goalies sustaining injuries due to Fatigue (playing in too many consecutive games) will now use a different table of injuries to describe what has happened instead of using the regular injury table (sustained from another player or blocking a shot). The injuries will be one of: Neck, Shoulder, Groin, Hip, Hamstring, Upper Body, Lower Body, Biceps, Back, Quadriceps, Thigh, Knee, Calf.

UnDraft and Pick Highlighting
The UnDraft option will now also completely reverse the team’s draft pick used for the UnDrafted player selected. This will also mean that the draft will skip back to the earliest available draft pick… typically the team you just UnDrafted for. It sometimes might be hard to see who’s pick it is next when undrafting a player since a pick can be undrafted from anywhere in the draft, so we’ve added a green high-light on the team who’s pick it is next.

Players selected by Ad Hoc method are not applicable for UnDrafting since it doesn’t actually take up a draft pick. To reverse these players the COM will need to release them from the team via the Teams page.

Bug Fixes & Miscellaneous Changes
– Corrected text in the Regular Season -> PlayOff advance league screens that incorrectly showed pre-season schedule not being completed instead of regular season.
– Fixed an issue where the Draft Player for GM button was not using the correct css id.
– The Movement History when viewing a player’s profile will now appear even if you are looking at the player’s Awards or Scouting reports.
– Team shoot-out lists can now be set during the Off-Season.
– Added proper error messages for when players are not available for drafting.

Hot Fixes
– Fixed an issue where it was possible to double-click on Schedule creation and cause duplicate games to be created. Released June 29 2015.
– Fixed an issue where it was possible to for a league to be created using the NHL or NHL/AHL/OHL templates and not have draft picks created. Released July 11 2015.
– Fixed an issue where Will Acton’s age was 3. Released on July 15 2015.
– Fixed an issue where COMs attempting to place players on waivers on behalf of teams would result in an error. Released on July 15 2015.

UHS Build 8053 – Congrats to the Blackhawks!

chicago-blackhawks-win-2015-stanley-cupCongratulations to the Chicago Blackhawks for winning their third Stanley Cup in six years! Yes, it’s been over two months since I released some new stuff. Between managing a number of other websites and my own personal health issues, I barely had time to deploy anything. I’m not sure how things are going to happen over the next 2-3 months, especially with my boys out of school for the summer… I’m hoping I will be able to deliver a small build similar to this one at the very least.

Two-Way Contracts
UHS has added support for Two-Way Contracts. The COM now has two settings available to them… the Two-Way Value and the Two-Way Penalty. Any player with a yearly salary that is over the Two-Way value will be paid the full amount of their contract regardless of whether they are on the Farm or Junior team. The Two-Way Penalty is a modifier that applies to the signing chance is the yearly salary being offered to the player is equal to or lower than the Two-Way Value.

By default we are disabling this (Two-Way Value is set to $20.000 million and Two-Way Penalty is set to 0%) so that leagues can choose whether they want to implement this feature. If your league allows contract values exceeding $20 million / year, you can still disable this the Two-Way salary option by making the Two-Way Value higher than your league’s Salary Maximum.

Pre-Season No Longer Mandatory
The Pre-Season is no longer mandatory. Previously a Pro-level Pre-Season schedule was required to be created and played through in order to advance to the Regular Season. You will still be prompted / reminded that a schedule can be created only during the Off-Season. If you are already playing a Pre-Season schedule and decide you just want to skip ahead, you will be able to do so… you’ll just get a reminder saying the schedule isn’t completed, however, you will still be able to advance to the Regular Season.

RFA Compensation and Draft Picks
We have put in a fix to remove Draft Picks attached to unresolved RFA Compensation decisions from being offered as part of a trade or other RFA Compensation packages. The draft picks attached with the RFA Compensation decision will be made available again once the decision has been made to Keep the Player or Accept Compensation.

Bug Fixes
– Fixed an issue where sometimes a PK Pct would appear as 999.99% in the League Standings.
– Fixed an issue where Farm Team names would appear twice when double-clicking the Log In button.
– Fixed several issues (stats not showing, stats misplaced) with the Hall of Fame page on the Public Sites.
– Team Club names will now also appear in the Activity Report for players that were injured or suspended instead of just the Team City.
– Teams will now require a Club name upon creation or edits unless they are an All-Star level team.

Hot Fixes
– Fixed an issue where the Contract drop-down was empty for Free Agency offers. Released on April 16 2015.
– Fixed an issue where the Wages appearing the Salary leagues were only showing the Salary value. Released on May 2 2015.
– Fixed an issue where the RFA Min Offer pct value for Contract Offers was always showing 0. Released on May 2 2015.
– Fixed an issue where RFA compensation was not being transferred to the original team. Released on May 2 2015.
– Fixed a behind-the-scenes issue where the AutoGM would attempt to insert coaches into free agency even though they were already there. Released on May 3 2015.
– Fixed an issue where Auto-GMs were still moving players down to the farm team even if the COM has Farm Leagues disabled. Released on May 7 2015.
– Fixed an issue where new Players and Coaches could be retired early (and subsequently deleted). Released on May 7 2015.
– Fixed an issue where 21-year olds were not being shown in the Available Prospects report. Released on May 9 2015.
– Fixed an issue where unbalanced leagues could sometimes time-out when creating schedules. Going forward there is no longer a division requirement for removing games when leagues are unbalanced. Released on May 18 2015.

UHS Build 7956 Released – I Flew Over the SAP Center

sap centerThis shot is from November 2012 (I think)… or is it 2013?  Ugh… time is going by too quickly! My bucket list included attending a San Jose Sharks game in San Jose. It was great! 🙂

UHS Build 7956 – April 9 2015
After pumping out a release every 3 weeks or so, I need a bit of a break. Most of the time I was looking at stability issues that happened because of the move to our new Dedicated Server. There are a few issues that happen now and then that I’m still trying to track down… for instance: a particular job runs once a minute… so just over 10,000 times a week. I get one library error. One. Why? I made no changes on my end. Tracking down these mysterious errors drives me nuts. There must have been SOMETHING that happened to have the library error spit out but how does that happen when no one else has access to my machine except me? The error didn’t even happen at the same time… it was maybe 2-3 hours off… ugh.

Anyway, it’s fairly evident that time spent on development is going to be cut down again. There is no way I can stay at the computer long enough to do a release every three weeks… so time between developments will definitely increase but I think overall they might be bigger? Who knows… I’ll likely be keeping an eye more on stability and scaling issues… our usage has spiked and honestly the move to the dedicated server saved us. This is a good problem to have but still a problem nonetheless.

As the playoffs are almost upon us, I’m going to be doing a roster update and simming through the NHL Playoffs for some crits and giggles.

Idle League Deletion Thresholds (starts February 26 2015)
We’re going to change out Idle League Deletion thresholds to help better accommodate people that might be away for an entire month or more. The new thresholds are:

League Idle: 60 days (up from 30). A warning will be sent to all league members.
League Deletion: 7 days (up from 4). The league will now be deleted 7 days after the warning email was sent out.
New Leagues with No Logins: 4 days. Newly created leagues with no logins will be deleted after 4 days (no change).

Waivers Disabled (Released March 11 2015)
The Place on Waivers option will be hidden and the Send to Farm option will be shown for GMs when the Commissioner changes the Waiver Clear Days setting to 0. This will essentially disable Waivers for all HUMAN teams. This does not apply to AutoGM teams yet.

Contract Offer Chances
When offering new contracts to players (either immediate or extensions), the Minimum Value Required will now show the chance that offer value has of actually getting accepted. We’ve also added a new row to show the Offer Value required in order to hit the 90% acceptance chance.

These chance estimations are just that… ESTIMATIONS. It assumes you are offering exactly the same salary value as their last salary. If you choose to have the contract take effect immediately, there is a -20% chance that is not factored into this estimation. These estimations are there to help guide you with more successful contract negotiations with your players.

Salary / Contract Toggle
COMs now have the ability to toggle Player & Coach Salaries & Contracts. By default Salaries & Contracts will be enabled. When disabling, there are quite a number of substantial changes to how your league is going to operate.

– All Contract Lengths will now show up as 1 year, however, they will never expire.
– Salaries are still shown / used so that you can use the Salary values as part of a points / value structure to keep teams balanced.
– Salaries will not be charged at the end of any game.
– The Salary Cap is in effect… since you can use it to penalize GMs that are beyond the Salary Cap thresholds you set out.
– Teams will still earn money from games to spend on Lawyers, Medical Facilities, Free Agency Bids, Waivers and Scouting.
– Free Agency changes to a bid system… the team that wins a Free Agent will be immediately billed the bid value.
– You can acquire players normally via Draft, Free Agency, Trades or Waivers.
– Players will not leave your team due to a contract running out, however, you can move them via Trade or Waivers.
– Teams can Release a player… that player will be moved to Free Agency as a UFA… there is no such thing as a RFA with Salaries & Contracts disabled. There is no refund of the Bid Amount when Releasing a player.
– Players can still retire… that’s the only method a player can be removed from a team where the team has no control over the situation.

Allow C/LW/RW to Occupy Any Forward Spot in Game Roster
In the Game Roster you’ll have noticed that for the Center, Left Wing, or Right Wing spots can only be occupied by a player that is a Forward or that particular position spot… so for example the Left Wing spots can only be occupied by a Left Winger or a Forward. COMs can now toggle a setting found in Game Settings that will allow a GM to put any Center, Left Winger, Right Winger or Forward in any of the forward spots… so in our example the Left Wing spots can now also be occupied by Centers and Right Wingers.

Players not in their natural position will still receive a negative position modifier in the game unless the COM disables that setting.

By default this setting is disabled. AutoGMs are not affected by this setting.

Bug Fixes
– Fixed an issue where retirements in the League Activity report on the Public Website would cause that page to prematurely end with an error.
– Retired players will no longer show up on Scouting Reports for Teams in Leagues where Skills are shown.
– Lawyer maintenance fees will now be charged during the season transition along with Medical and Arena maintenance fees.
– Fixed a rare error where ice times were being saved as MM:SS when it should have been saved as total seconds. Leagues should not have noticed this issue.
– Fixed an issue where the incorrect GP values were being shown for Coach Stats on the public websites.

Hot Fixes
– Fixed an issue where deleting a team already placed into a Conference / Division would result in subsequent schedule creations to run in an infinite loop and time out after 30 seconds. If you see this issue, please let me know ASAP. Released on March 4 2015.
– Fixed an issue where leagues were allowed to use spaces in the league abbreviation. This resulted in stagnant league cleanup issues. Released on March 4 2015.
– Fixed an issue where offering AutoGM teams trades that involved draft picks could result in either the AutoGM crashing or unexpected responses (Acceptance or Declines). Released on March 5 2015.
– Fixed an issue where 20-year olds were not appearing on the Available Prospects page. Released on March 11 2015.
– Fixed an issue where it was possible under some very special circumstances to sim games for teams that had incorrect rosters. Released on March 25 2015.
– Fixed an issue where Junior-Aged players holding out for free agency would be sent back to the juniors but their original teams will continue to own the player’s rights. Released on April 3 2015.
– Additionally, Junior-Aged players holding out for free agency will no longer be removed from free agency when being sent back down to the juniors. This will allow teams to bid on the player. Released on April 3 2015.

UHS Build 7851 – New Dedicated Server!

serversUHS Build 7851 – February 18 2015
Yep… another technical build release. It’s really to update the build number with all the hotfixes I had to put out after the last build. The last build made it painfully clear that remaining on the VPS just was no longer an option. We have successfully moved everything over to a Dedicated Server. Being the sole occupant of a server is great…  we get FULL CPU usage… our cron jobs went from 25 seconds on average to FOUR seconds. Crazy stuff… never thought it would be such a huge improvement.

Our databases remain on a dedicated VPS… we can move those over to our new Dedicated Server if needed. So far everything is looking pretty stable.

Also, I’ve added a Patreon link to the right side of the page. This is to allow folks to donate a monthly contribution to helping keep UHS up and running. I have put up some Milestones as well. As always, UHS will be free regardless of whether you want to help contribute. All folks that contribute have my gratitude and sincere thanks. We continue to grow (hence the necessity of moving to a dedicated box) and I’m hoping with some additional funding we can continue along the path to do some truly awesome things. Thank you for your support!

SavePoints & League Advancement
Leagues will no longer be allowed to advance past the Playoff if they have 5 or more SavePoints. Currently the SavePoint maximum is 5… transitioning between PlayOff and Off-Season requires a SavePoint to be created, so the league can only have 4 by the end of the season.

Bug Fixes
– None

Hot Fixes
– Several (read: metric crapton) cron and system hotfixes immediately after deployment of build 7802 on February 12 2015.

UHS Build 7802 Released – Middle of the Night

cloudy-full-moon-1440x900-4b87It’s the middle of the night… the build has been released. Things look good…  I’m tired… but not tired enough to sleep… OHHH…  Happy Birthday to my youngest boy… he’s a whopping FIVE years old now. I just realized we’re after midnight, so today is his big day. 😀

UHS Build 7802 – February 12 2015
This is another mostly technical build. We briefly tested out grouping leagues based on their DB size and setting up a cron job for each league… now I’m going a step further to add a cron job for each league. What does this mean to you? Not much hopefully… other than when the system gets super busy, you won’t need to wait for your games to be simmed… each league will have it’s own sim job kick off.

I’ve also added a new custom error reporting tool to let me know immediately when there is a sim error with detailed information. I’m hoping that once this is deployed I can get rid of some of the more elusive bugs that have troubled some users.

I think should be one of the last major technical upgrades I need to do… our scaling should be good and it should free up some more of my time to concentrate on adding more enhancements and such.

GM Team Home
The Upcoming Games section for both Pro and Farm teams have been updated to show the number of games remaining in the season. Upcoming Games will now only show you the games in the current stage of the Season: PreSeason, Regular, PlayOff…. previously, Upcoming Games showed any unplayed games in the schedule.

Sim Engine
I’ve replaced the default error handler with a custom one to email me directly on any error, warning or even a notice when the simulator encounters issues. I’ve already identified a handful of minor issues that will be addressed as a bug fix in this build or as a hotfix. As the user, you should NOT see any of these errors… if you do, please copy and paste them into a ticket to UHS Support.

Contract Offers – technical change
Nothing to really see here… just moved the Contract Offer logic into it’s own function… should not impact anything when you make offers to your players.

Bug Fixes
– Fixed an issue where the Goalie Change on Goal Difference will no longer give 0 goals as an option.
– Fixed an issue where an Away player would sometimes not have their PIM updated when receiving a Game Misconduct.

Hot Fixes
– Released a set of admin tools and updated code to configure UHS Group sizes through the UI. Released as hotfix on January 18 2015.
– Fixed an issue where All-Star games could not be played. Released as hotfix on February 1 2015.
– Fixed an issue that prevented teams from being changed to AutoGM while a season was in progress. Released February 3 2015.
– Fixed an issue that prevented leagues from advancing from Off-Season to Pre-Season if they had active All-Star teams. The error messaging would also falsely indicate a problem with the Farm league’s conference / division structure. Released February 3 2015.
– Fixed an issue where a team’s abbreviation could change when saving an edit to the team while the league’s schedule / season was in progress. Released February 4 2015.