Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2020 Custom games bugs list #151

Open
DoctorGester opened this issue May 18, 2020 · 14 comments
Open

2020 Custom games bugs list #151

DoctorGester opened this issue May 18, 2020 · 14 comments

Comments

@DoctorGester
Copy link

DoctorGester commented May 18, 2020

Big things

  • GameRules:SetSafeToLeave(safeToLeave: bool), does not work for games which have leaver penalties enabled. Custom Hero Chaos and Clash could of enabled leaver penalty to deal with the bots, but currently its impossible to make the game safe to leave, so when a player loses first, they either stick around and watch the game or leave and cop the penalty ban. If game makers could get the game safe to leave, we could allow players to leave when appropriate.
    Proposed solution: Make it so SetSafeToLeave works like in the original game, allowing players to leave from the games with penalties enabled without those penalties applied

  • If players form a party of 5, they can enter games which only allow 4 or lower max players anyway. Proposed solution: Disallow entering games more players than intended.

  • Custom game version is sometimes cached/not checked (?) when hosting/entering a lobby, leading to situations when after uploading a new version of custom game people in lobby can't start a game cause of different versions between some players, host and server. Proposed solution: Somehow force a version check/invalidate cache when hosting/entering a lobby?

  • Combination of lobby auto start and long loading times. When a player fails to load into a custom game (it simply takes their PC too long) and the loading screen takes too long the offending player is not removed from the lobby. If that lobby is full then the game will bring up the Accept game dialog again right away to the same players, often causing the same timeout issue, that can often repeat multiple times. Proposed solution: When timing out of the loading screen, remove players who have not loaded yet from the lobby.

Small things

  • All images with DXT5 compression look like this in the asset browser
    image

  • Model change modifier cancelling other model changes. Steps to reproduce: go into Demo hero as Lone Druid. Use True Form. Type "-createhero lone_druid". The first LD will change his model back to the original one, while still maintaining True Form. This behavior can be reproduced with most model changing heroes as well as custom Lua Modifiers.

  • A more precise timer (akin to performance.now() in browser) in panorama for rudimentary timing profiling.

@movexig
Copy link

movexig commented May 18, 2020

  • ModifyGold no longer actually gives reliable gold even if the bReliable flag is set to true. Instead, gold is always given as unreliable gold.

  • Panorama: Entities.GetHealthThinkRegen() returns a rounded integer value, even though the value should be a float. The corresponding function for mana regen works as expected.

  • Panorama: There is no API for checking if an item is disabled because it recently was in a player's backpack, or how long until it's re-enabled.

  • SetLevel() on items doesn't work as expected, but will always show as level 1 (even though GetLevel() returns the expected value afterwards). Instead, only setting the item's base level in KV does anything at all (which is hugely impractical if you want to have items with many levels).

  • Innate melee hero block cannot be disabled or altered.

@SanctusAnimus
Copy link

Expose to lua or add API for interacting with ability charges
Suggested functions are:

  • :SetChargable(bool value);
  • :SetCurrentCharges(int value);
  • :SetMaxCharges(int value);
  • :SetMaxChargeCooldown(int value);
  • :SetCurrentChargeCooldown(int value);
  • :GetCurrentCharges();
  • :GetMaxChargeCooldown();
  • :GetCurrentChargeCooldown();
  • :IsChargable();

@SanctusAnimus
Copy link

SanctusAnimus commented May 18, 2020

Minor
bInformClient of lua modifier's :SetDuration(float flDuration, bool bInformClient) doesn't actually update modifiers HUD on clients, duration "Round Progress Bars" don't change at all

@Toyoka

This comment has been minimized.

@ark120202
Copy link

  • Panorama is missing GetStrength, GetAgility and GetIntellect. It already have been asked for previously, but since then that API was added to client-side Lua, so clients should already have these values
  • The existence of GameEvents.SendCustomGameEventToClient and GameEvents.SendCustomGameEventToAllClients API on the the client makes most of custom games vulnerable to event forging. A player could send an event to the other player, and the the other player has no way to know if the event actually came from server or from a malicious player.
  • DOTAScriptInventorySlot_t is outdated. Currently it's just missing names for slots 15 (tp scroll) and 16 (neutral item), but it actually appears to have no binding with the internal enum, because previously it's also been getting out of sync with actual values (i.e. DOTA_STASH_SLOT_1 actually pointed at 4th backpack slot, and all further stash slots were shifted).
  • Using any internationalization-related JS API is crashing the game, for example new Date().toLocaleDateString()
  • Errors in Panorama don't have stack traces shown in the console, even though they are actually collected, since the partial support can be enabled by this little hack: Error.prototype.toString = function() { return this.stack }

@darklordabc
Copy link

darklordabc commented May 20, 2020

Fix the spectate button so that I can spectate a random custom game in progress, good for new players to preview games.
image

@XavierCHN
Copy link

Lua API GetSoundDuration(soundname, actormodel) doesn't return a correct value, it always returns 2.0.

@fcalife
Copy link

fcalife commented May 21, 2020

Add the amount of players in the lobby to this screen:

image

So that players can know before accepting if a lobby filled up with all players properly, or if the host started the game prematurely with less players than is ideal for the game in question. Especially relevant since there is now a time penalty associated with declining this prompt.

@fcalife
Copy link

fcalife commented May 21, 2020

Also on the above: if the host starts the game prematurely (i.e. before the lobby is full), penalties for not accepting the above prompt should not trigger. Said penalties should only be applied when the game became ready as a result of the lobby filling up naturally and auto-starting.

@fcalife
Copy link

fcalife commented May 21, 2020

The updating process for custom games is really buggy if an update was pushed to them recently (in the last ~10-15min). This is a pain for all players when an update happens, but is especially painful for developers trying to playtest their updates, since the whole process can take 15-20 minutes and a lot of trial and error sometimes.

  1. When a custom game has been recently updated, trying to play a match of it should result in downloading the relevant update. Often, this simply doesn't happen, and players become unable to enter lobbies, receiving the "custom game archives don't match" message.

  2. In the situation above, attempting to uninstall and reinstall the custom game to force an update, more often than not, does nothing. It takes several minutes for the update to "register" - players know that has happened when they get a download bar after trying the uninstall/reinstall procedure.

  3. Players often resort to uninstalling a custom game, closing dota, relaunching it, and then reinstalling the custom game. This method has a high rate of success in "forcing" the update to be detected, but is still not 100% reliable.

  4. Sometimes, players can join a lobby with different versions of the same custom game. In that situation, if the host has not updated their game, they are unable to start it (it never goes beyond the 'finding server' phase, simply returning to the lobby phase silently). If a player has not updated, the game will load, the player in question will fail to load, and all players will be kicked back to the lobby phase.

In the above scenario, even worse, all players get a 5 minute (or more) custom game penalty time.

@fcalife
Copy link

fcalife commented May 21, 2020

Suggestion: add a custom game version number or hash to easily identify which version is currently installed on a player's machine.

@sscotten

This comment has been minimized.

@sscotten

This comment has been minimized.

@DoctorGester
Copy link
Author

I've marked suggestions as off-topic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants