A Stream helper for fighting game tournaments!
tournamentstreamhelper's Introduction
tournamentstreamhelper's People
Forkers
imranvirani asbjoernb edgeexe meta114 wolfy76700 kekwel ashleygruver jinchanj daniele-bondi twilcynder cash12121 vyral-teq tasabu grimmtyr voidscape-development lunki51 nmcnew yuhiko1122 longur rogueyoshi levraipixel jovostudios zombiehdgaming lavyyy sticks-stuff selmoo tsh-testing cudzinovicar nirvanaruns ogmkp ohms064 imeryl tytocorvustournamentstreamhelper's Issues
Layout: check for null/undefined variables
If you open the program and edit only one form, for example, this will be the only data available in the json. That makes so the Update on the layouts gets into exceptions.
Idea: Store game logo in `base_files` asset packs
Allow for game logos to be stored in an asset pack's base_files
folder for use in an overlay or other purposes
Clean up code
Having all code in one file might not be the way to go lol
Also, there's duplicated code here and there.
The program (.py) itself is not very edit-friendly at the moment.
Crash when saving players in local database in v3.03 (Windows 10)
When using the ARMS assets in v3.03, I have an issue where saving a player in the local database with incomplete data crashes the program
Unfortunately the cmd window also closes making logging difficult, but attached is a photo of the last message before closure
Restarting the program shows that this data was indeed saved
NB: This happens with both P1 and P2 sides
Attached here is the log:
logs.log
Software crash or incorrect skin mappings when trying to load a game with more than 10 skins per character
When trying to test the Project+ Asset Pack, the software either crashed due to characters having more than 10 alternate costumes referenced, or the skin displayed in software was not matching the one saved in the out
folder
Check this merge request to access the problematic asset pack
4.0: Create wiki about the thumbnail generation
(This is a task for @Wolfy76700)
Add a page on the wiki about how to use the thumbnail generation script and how to create your own foreground/background template
Add "Best of N" to demo layouts
4.0: Autocomplete list for round names is no longer present
Compared to 3.0, the autocomplete list for round names no longer exists
Idea: Add hotkeys for score up/down
Being able to use hotkeys for score up/down, reset scores, and swap players would allow use for a Streamdeck or custom Arduino Controllers.
4.0: Crash when clicking Gear (Settings button)
Every time I try to click on the gear (the settings) it crashes.
Create more layout samples, simplify edition
- Create a global library file to clean up all the .js
- Comment code
- Create documentation for editing layouts
- Check for errors such as undefined variables, etc
- Idea: have the js search for specific classes and check if the element exists to add text into it. Example: jQuery search for ".p1-name" so user can put this anywhere in the html (or not) and it will just work. Do this for all exported variables, maybe in an automatic way using key names from json
Idea: Allow a player in the local database to have different mains saved for different games
Sometimes a player will play multiple games, and thus have a main in each game, it'd be nice to be able to assign one main per game to one player in the local database
I'm not sure how easy to handle it is in the CSV though
Idea: Add a feature/tab to display the last played sets for a given player
If the tournament data is extracted from Smash.gg or Challonge, display previous played sets and scores in the tournament in the app and save them to a file for stream display (Akin to what was done at Heatwave: https://twitter.com/CH_Bonanza/status/1459985041421856768)
My contribution to #eSports broadcasting. This, I believe, is the first graphic of its kind, showing an individual player's run through the bracket. Hope to use this at more tournaments #RivalsofAether #heatwave pic.twitter.com/MYeP4WzER0
โ Taylor Broad @ Ascension (@CH_Bonanza) November 14, 2021
This feature could in theory extend to display set counts between two players as given by different data sources like a subset of Challonge/Smash.gg tournaments or Smash.gg general stats
(Obviously this is a low priority feature ^^)
Stage Strike App: hide browser top bar
I found out some other day that the Facebook webapp does this by a simple scroll call, where it scrolls the page 1px down once opened. In react, that would mean a function call on the ComponentDidMount function.
4.0 suggestion: Lock asset download behind `base_files` download
As a user, the current UI for the asset downloader doesn't make it quite clear that someone has to download the base_files
pack before being able to download other asset packs, and the base_files
pack sometimes does not appear first in the list. The app should probably separate the base_files
pack from the other packs, and lock the other asset packs from being downloaded until the base_files
pack is
ARMS: Selecting Min Min crashes the software
Attempting to select Min Min (ARMS) as a character for either player in auto save mode in v3.03 crashes the software
The log is attached here: logs.log
Forbid closing a tab
I closed a tab by accident and I don't know how to re-open it ๐ฌ
Maybe don't allow such thing if possible ?
Idea: Addition of Next on Stream module to scoreboard widget
This is more of a nice to see feature addition over currently needed.
Considering we already implement the same technology between the scoreboard widget and commentary widget, it should be looked into adding a scoreboard sub-module for setting who will show up next on stream with a slimmed down score sub-module. All it would need is the players per team, the team widgets and maybe the load set button for pulling it from Smash.gg for the functionality.
This would add the ability to make a stream facing "Up Next" display as if people are viewing a major or higher end event and would be a nice tool that I'm sure most users would take advantage of.
4.0: Integrate thumbnail generation into the software
As a user, I want to be able to generate my thumbnail from the current data in TSH by clicking a button in the TSH UI
Additionally, I want to be able to configure the following parameters in the UI: (Which are already configurable in the thumbnail script)
- Import a custom foreground image
- Import a custom background image
- Import a custom icon
- Set if the generated thumbnail should use team names
- Set if the generated thumbnail should display sponsor names
- Set if the generated thumbnail should display the phase name
- Set the font used for the thumbnail (If possible based on system fonts, if not based on a list of free-to-use fonts)
Support other games
The way the program is implemented makes it possible to support more games. Streamline character mappings from SmashGG to filename.
Add support for saving/loading local player files
- Support spreadsheets for the user to edit, export as .CSV, and have the program read it
- Add a save button for filled in player data. Maybe add a screen similar to the one where you select a set to show, but with local users for deletion?
Idea: Add a functionality to display/store pronouns for players in the local database
Adding a "pronouns" field in the software would allow for commentators and TOs to avoid misgendering players and maybe even display said pronouns on stream if they so choose
Debug and fix crashes
4.0: Add if an asset pack has eyesight data in the asset downloader
As a user, I want to know if the asset pack I'm downloading has eyesight coordinates in the config (for layouts, thumbnail generation, etc.)
Typos in default round names
There are some typos in the default round names
Grand Final -> Grand Finals
Losers Final -> Losers Finals
Winners Final -> Winners Finals
Find a way of updating without overwriting layout edits
If I release a new update, it will overwrite user edits on /layouts/
.
One thing I could do is to rename the directory, but I need a better solution as I'm not renaming it for every new release.
Maybe check if the directory exists before update and rename it to /..._backup/
?
4.04: Stage-Strike App doesn't appear to launch correctly in browser due to missing JS file
It appears after you made the commit for adding new features to the stage strike app (pulling names, changing scores via app, etc.), the stage strike app won't load properly in a production environment due to the JavaScript file it's looking for (main.825bd5ae.js, as of your latest changes) due to the file being changed in commit da93317072bc49f5e65dde2be8a6e7eaa95e142d
and the original file being removed with no substitute file introduced. As such, when players go to use the tool, at this moment, the browser just shows a white screen as it returns a 404 for the JS file.
If this can get added back, this would be greatly appreciated as I really want to continue integrating the new 4.0 features into our local, and I have no idea how I'd make a PR for this as React is new to me ๐
4.0: Rework UI, reorganize the code, add more functionality
I'm going to have this registered here, I am now working something that is almost like a new start to the program. Seeing old functionalities not making sense anymore and new possibilities I learned recently, I think it's time to take a few steps back before going forward again.
- Transform the main selection to TOURNAMENT. This is the program's main focus, right?
- Downloading autocomplete from a tournament not only does not work but also does not make sense. If you're using SmashGG, you're already using "Select Set". If not, I think autocomplete should load in the background as you set a tournament, so that it will just magically have every player as an autocomplete option.
- Add Challonge support, as long requested. SmashGG offers so much more data, but I guess for some TOs it seems too complicated...?
- Add a bracket tab
- Add support for dynamic player slots -- support for doubles, teams (team games?)
- Add a tournament info tab
- Add a intermission tab with wait message, timer
- Add commentators somewhere
Project-wise:
- Start using QT Designer -- easier and quicker to make UI edits, cleans up a LOT of code; I can see translation support also being a thing!
- Have at least one class per tab
- Create sub-classes from Qt's widgets for cleaner code and less code repetition
- Have more user feedback for async features. Example: Currently, when you click "Select Set", it takes a few seconds to execute. There is no visual indication of anything.
Idea: Add notification in software if a downloaded asset pack has an update
As a user, I want to see an indicator in the main software window if one or more of the asset packs I have locally have been updated
NB: That means we need consistent version numbering rules in the asset packs
Idea: Add Top 8 bracket widget
As a user, I want to be able to input the players in an 8-player single-elimination or a double-elimination bracket, and select the victory paths in order to generate a stream graphic displaying Top 8. Theoretically you could load sets from this widget directly into the scoreboard widget as well.
A quick UI mockup for the widget would be:
Idea: Allow for assigning an MP3/OGG file to play on stream when a character/player is on stream
Allow the user to assign an audio file to a character or player for when said character / player shows up on stream. (Either as Player 1 or Player 2)
The Player audio would potentially override the character audio
Maybe avoid storing MP3s in the Assets repo to avoid copyright issues and leave it as an optional user feature though...
The new .pyw is not running
Before update I used to run .exe and software ran normally.
Did the installrequirements.bat part, then
Tried clicking on the ".pyw" file to open but it won't run. I had to type in "cmd" on explorar bar and run it that way. But I need to keep command prompt open or if not it will close.
Feature: add sample HTML-based stream layouts
assets download
I can't download the assets
Bug: Text stays shrinked after name change
When a text is shrinked to fit a container, the font size doesn't go back to full size when text changes.
Images missing
Getting some errors saying that:
[Errno 2] No such file or directory: 'character_icon/chara_0_link_00.png'
[Errno 2] No such file or directory: 'character_icon/chara_1_link_00.png'
[Errno 2] No such file or directory: 'character_icon/chara_3_link_00.png'
[Errno 2] No such file or directory: 'character_icon/chara_3_link_00-halfres.png'
I'm assuming that these images are unnecessary, as everything seems to look fine on the gui end.
Idea: Load/Save tournament phases type to a local JSON file
As a TO, I would like to save my manual input in the tournament phase field and/or add more suggestions
Examples include:
- Round Robin
- Pool A
- Winners Quarters
- Winners Semis
- Losers Semis
Save button does not update files other than `program_state.json` when loading from the local database
Manual saving using the "Save and Export" button does not save any file in the out
folder other than program_state.json
using Version 3.03 when loading data from the local database
Manually changing elements
Automatic saving does work as intended
Idea: Generate the separator images in code instead of loading external images
This is more of a backend thing, we should add a function which can create the separator_h
and separator_v
images from a thickness value and a color, so those can be more easily configured later (They're just lines, we really don't need them to be static images ^^)
4.04: Crash when using Dragon Ball FighterZ assets
The software seems to hard crash when trying to load the Dragon Ball FighterZ assets, specifically version 1.2 of base_files
and full
Running the software from the BAT file reveals the following message:
Reload games
SmashGG characters file updated
Changed to game: dbfz
Loaded stock icons
Character Android 16 has 1 skins
Character Android 17 has 1 skins
Character Android 18 has 1 skins
Character Android 21 has 1 skins
Character Bardock has 1 skins
Character Beerus has 1 skins
Character Broly has 1 skins
Character Broly (DBS) has 1 skins
Character Captain Ginyu has 1 skins
Character Cell has 1 skins
Character Cooler has 1 skins
Character Frieza has 1 skins
Character Gogeta (SS4) has 1 skins
Character Gogeta (SSGSS) has 1 skins
Character Gohan (Adult) has 1 skins
Character Gohan (Teen) has 1 skins
Character Goku has 1 skins
Character Goku (GT) has 1 skins
Character Goku (SSGSS) has 1 skins
Character Goku (Super Saiyan) has 1 skins
Character Goku (Ultra Instinct) has 1 skins
Character Goku Black has 1 skins
Character Gotenks has 1 skins
Character Hit has 1 skins
Character Janemba has 1 skins
Character Jiren has 1 skins
Character Kefla has 1 skins
Character Kid Buu has 1 skins
Character Krillin has 1 skins
Character Majin Buu has 1 skins
Character Master Roshi has 1 skins
Character Nappa has 1 skins
Character Piccolo has 1 skins
Character Super Baby 2 has 1 skins
Character Tien has 1 skins
Character Trunks has 1 skins
Character Vegeta has 1 skins
Character Vegeta (SSGSS) has 1 skins
Character Vegeta (Super Saiyan) has 1 skins
Character Vegito (SSGSS) has 1 skins
Character Videl has 1 skins
Character Yamcha has 1 skins
Character Zamasu (Fused) has 1 skins
Character Android 21 (Lab Coat) has 1 skins
Traceback (most recent call last):
File "C:\TournamentStreamHelper_Next\TournamentStreamHelper\src\TSHScoreboardStageWidget.py", line 307, in SetupOptions
self.LoadRulesets()
File "C:\TournamentStreamHelper_Next\TournamentStreamHelper\src\TSHScoreboardStageWidget.py", line 382, in LoadRulesets
myRuleset.useDSR = ruleset.get("settings", {}).get(
AttributeError: 'list' object has no attribute 'get'
4.0: The updater doesn't seem to work
In the 4.0 Windows release, attempting to update to 4.01 downloads the package but closes the software after doing so. Rebooting the software still shows that an update is available and still offers to download 4.01
Additionally the layout folder is completely deleted in the process
Links to associated logs:
log.txt
log_error.txt
Modular layout
What if every screen element was a separate HTML?
The user could place them wherever they want in OBS.
Might be a great option, actually. No html/css editing! And simpler files for the user to not get too overwhelmed.
Find a way of getting info on who's coming from losers in GFs and also bracket resets
Find a way of detecting it's grand finals and who's in losers brackets for the [L] thing
Improvements to stage strike app
- Api side: export player names and receive match score
- App side:
- start set with 2 options: starting player (p1/p2), or "random"
- show player names instead of P1/P2
- send current game count to the api
Idea: Add fixed height flags to the software
In addition to having fixed width flags, allow for someone to have fixed height flags for use directly with their streaming software like OBS (More often than not when people have their custom overlays in image format it is more convenient to have fixed height flags to fit said flags into the player bars)
Idea: (4.0) Allow doubles/teams to have a custom name
Some events will allow teams to have a name besides the name of both players (e.g. "The Fun Gang"), so a text field could be enabled when 2 or more players are in a team
Rethink player data management
From what I can think of, tournaments can be of the following types:
- SmashGG, with tasks
- tasks and score updated in real time; can get character selection and stage striking);
- should get smashgg player data once and then let the user change everything (aside from character);
- should not overwrite character skin unless player changes current character (then set it to 0);
- SmashGG, without tasks (offline?);
- score usually updated by TOs only in the end of the set; no need to be auto-updating;
- should get smashgg player data once and then let the user change everything;
- Others (offline?);
- make use of local player data;
Maybe I can make it so SmashGG data is always saved into local_players.csv or create some kind of cache.csv so that if there's any problem with SmashGG or anything like that the user can always have up-to-date data.
Add more tabs and functionality
- Add tab for commentator data
- Add tab for timer(s)
- More?
Crashes with local_players.csv
Whenever I save a player locally with "Save to local DB" and when I load a player with the autocomplete from the local database, the application crashes with a KeyError of the country code.
<class 'KeyError'> 'Brazil (BR)' <traceback object at 0x0BC92B68>
Also, the local_players.csv is not being loaded when I start the program. When I save a player, it looks like this:
org,name,full_name,country_code,state,twitter,main,color (0-7)
,test,,Brazil (BR),,,,0
,test2,,Afghanistan (AF),,,,0
but if I remove the blank lines in the csv, it loads correctly when I start the program:
org,name,full_name,country_code,state,twitter,main,color (0-7)
,test,,Brazil (BR),,,,0
,test2,,Afghanistan (AF),,,,0
And the crashes regarding the KeyError seems to be fixed by renaming the country_state to "BR" and "AF" in the previous example
org,name,full_name,country_code,state,twitter,main,color (0-7)
,test,,BR,,,,0
,test2,,AF,,,,0
I'm using the version v2.97 on Windows
4.03: Downloading Super Smahs Bros 64 asset crash the app
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.