Overwatch

OverPy v6.0: Insane optimizations, workshop settings extensions, built-in unicode selector, wiki, element count, & more!

Overwatch9 - OverPy v6.0: Insane optimizations, workshop settings extensions, built-in unicode selector, wiki, element count, & more!
Loading...

For those who don't know, OverPy is a high-level language for the workshop: a custom built language that compiles to the workshop language.

OverPy allows you to manage your gamemodes much more easily, thanks to its ability to code with modern development practices: multiple files, switches, dictionaries, macros, function macros, enums, built-in JS preprocessing…

I haven't posted an update in quite a few months, so here's the big changes since then!


Optimizations

The use of a proper AST enabled me to optimize every last bit of gamemodes: see this issue for the full list of optimizations.

This includes for example math formulas (cos(33) -> 0.8623), array functions ( -> A), use of built-in functions (len(getPlayers(B)) -> getNumberOfPlayers(B)), etc, and even some advanced optimizations such as removing a rule if there are only control flow actions in it.

However, there are also size optimizations that exploit some quirks of the element count. As such, when possible, the optimizer replaces by false or null, 1 by true, or even vect(0,0,0) by null. The saves are only one element per replacement (3 for the null vector) but they add up fast.

For even more size optimisations, several replacement compiler directives were added:

#!replaceTeam1ByControlScoringTeam #!replace0ByCapturePercentage #!replace0ByPayloadProgressPercentage #!replace0ByIsMatchComplete #!replace1ByMatchRound 

These replacements need to be applied on a per-gamemode basis (as they don't work with every gamemode), and can squeeze out the last elements.

The results, when applied to gamemodes near the element limit, are pretty high:

Загрузка...
  • Loot Quest – Regular Maps (4QV99) by Delwion : 19998 -> 18750 (-1248)
  • OverHammer (KYGBP) by Kinkku : 19865 -> 17664 (-2201)
  • Among Us (6C777) by Momaker: 19909 -> 17575 (-2334)

Workshop settings extensions

Some quality of life stuff:

  • Workshop settings can now have a blank category, or even a blank name
  • Workshop settings can have the same name in two different categories (such as two settings both named "health" in categories "team 1" and "team 2")
  • Workshop settings can have a sort order (the default is 0; settings with the same order are ordered alphabetically).

Unicode selector

With the new & string escape you can now insert entities into your strings, that compile to one of several "neat" unicode characters.

For example, "This is a black square: &black_square;"

This allows you to not have to search for a unicode character you can input.


Wiki

To get started with the language even more easily, OverPy now has a wiki: https://github.com/Zezombye/overpy/wiki


Element count

The element count of a gamemode is now displayed when compiling; in the future, optimizations will take note of this count (such as privileging size over speed when close to the element limit).


Discord

OverPy now has a discord if you need help, or if you just want to provide feedback: https://discord.gg/4gBSV9s

Thanks for reading and feel free to ask your questions in the comments 🙂

Source: Original link


Loading...
© Post "OverPy v6.0: Insane optimizations, workshop settings extensions, built-in unicode selector, wiki, element count, & more!" for game Overwatch.


Top 10 Most Anticipated Video Games of 2020

2020 will have something to satisfy classic and modern gamers alike. To be eligible for the list, the game must be confirmed for 2020, or there should be good reason to expect its release in that year. Therefore, upcoming games with a mere announcement and no discernible release date will not be included.

Top 15 NEW Games of 2020 [FIRST HALF]

2020 has a ton to look forward to...in the video gaming world. Here are fifteen games we're looking forward to in the first half of 2020.

You Might Also Like

Leave a Reply

Your email address will not be published. Required fields are marked *