notatallshaw / fall_guys_ping_estimate Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
Perhaps use Nuitka instead of PyInstaller: https://github.com/Nuitka/Nuitka
The purpose of which would be fore generating a smaller exe (10 MBs is pretty big for a small box).
Minor issue but I sometimes connect to the São Paulo server and it is displayed like SaAo Paulo with 2 characters for the ã
I guess that the Fall_Guys_IP_Networks.csv file is not being read as UTF8 when loaded.
Probably a quick fix to use UTF8 when opening the file
https://stackoverflow.com/questions/5004687/python-csv-dictreader-with-utf-8-data
PS C:> python -m fgpe
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in run_module_as_main
return run_code(code, main_globals, None,
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in run_code
exec(code, run_globals)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\fgpe_main.py", line 193, in
logging.basicConfig(
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\logging_init.py", line 2040, in basicConfig
h = FileHandler(filename, mode,
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\logging_init.py", line 1169, in init
StreamHandler.init(self, self.open())
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\logging_init.py", line 1201, in _open
return open_func(self.baseFilename, self.mode,
FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\user\AppData\Roaming\fgpe\errors.log'
Manually creating C:\\Users\\user\\AppData\\Roaming\\fgpe
corrected the issue.
Link: https://upx.github.io/
UPX Adds some additional compression to the executable build, and can be specified in the pyinstaller command arguments, in my testing it reduced the exe by 8% or 800 kBs, this isn't a lot but maybe it's worth it?
We two have written on reddit, here is my error file.
Have a configuration file, all the variables should be configurable:
Rather than creating a new subprocess each time, only spawn it once, and parse it's output on a separate thread or process and send stats back on a queue?
Would use ping arguments that run infinitely.
Would have to handle killing the process and maybe it also crashing.
Investigate if it's possible to implement a semi-transparent background
Based on IP Address display the Fall Guys server locations.
I tried using a GeoIP library for this but it seems the offline ones are outdated and the online ones all require an account.
Probably just going to have to hard code them.
I noticed sometimes that it it's not always picking up that it has been disconnected from the server after a match but before you rejoin.
There are a number of disconnect messages in the log, perhaps pick a different one to monitor or make the query a little more broad.
I tried using Github Workflows to automatically create an installer, but I couldn't figure out how to:
This was my yaml so far, clearly needs some fixing:
name: Package exe with PyInstaller - Windows
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pyinstaller
python -m pip .
- name: build with pyinstaller
run: |
pyinstaller --noconsole --onefile run_fgpe.py
- uses: actions/upload-artifact@v2
with:
name: run_fgpe.exe
path: dist
I've never written tests before, I should really learn.
Currently on every event loop we check if the Fall Guys process is running.
This is the most lengthy part of the event loop, taking 0.2 to 0.3 seconds, where as getting the mtime of a file takes less than 0,0001 seconds.
Heuristics: If log file has been updated in less than refresh window assume that the Fall Guys game is running, if the log file hasn't been updated in over 1 hour assume that the game is not running, otherwise check if the process is running.
Crashes on startup. Happy to provide logs if necessary.
> python -m fgpe
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\username\scoop\apps\python\current\lib\tkinter\__init__.py", line 1892, in __call__
return self.func(*args)
File "C:\Users\username\scoop\apps\python\current\lib\tkinter\__init__.py", line 814, in callit
func(*args)
File "C:\Users\username\scoop\apps\python\current\lib\site-packages\fgpe\overlay.py", line 51, in update_label
wait_time, update_text = self.get_new_text_callback()
File "C:\Users\username\scoop\apps\python\current\lib\site-packages\fgpe\__main__.py", line 124, in update_text
status, connection = self.reader.get_connection_details()
File "C:\Users\username\scoop\apps\python\current\lib\site-packages\fgpe\log_reader.py", line 72, in get_connection_details
self._update_ip_from_log_file()
File "C:\Users\username\scoop\apps\python\current\lib\site-packages\fgpe\log_reader.py", line 55, in _update_ip_from_log_file
for line in f:
File "C:\Users\username\scoop\apps\python\current\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 7153: character maps to <undefined>
Actually the ToS look good for ip-api, I will need to test querying a realistic amount of IP addresses and see if it balks in practice (so 20 per hour for a whole day) and also check the accuracy.
If it still looks good I would still want to:
Originally posted by @notatallshaw in #44 (comment)
For some reason on the executable version of the program I see occasional flickering.
Need to investigate why it's happening and how to fix it.
I use IPIP.NET to check the CIDR(129.227.0.0/16). I find the geographical location of the IP segment based on the network delay of the ICMP packet.
In 129.227.0.0/16
129.227.0.0/20 KR
129.227.32.0/20 PH
129.227.52.0/22 JP
129.227.64.0/19 SG
Given the limited time, I only checked part of the information for this CIDR to divert traffic for the Fall Guys game. Please consider updating the information in Fall_Guys_IP_Networks.csv.
Investigate if it's possible to make the window dragable. If so, record the last position the user dragged it to so that next time it's opened it will be opened in that position.
Playing with LAN without vpn from Germany, do not know what reagion candidates there are.
Check if we can connect to server list on the main branch and download it as the current version to use.
One thing I've noticed is sometimes the overlay can fall behind other windows. I'm not sure why this happens and can't find reproducible steps.
One workaround is if there's a way to bring the window to the front every time we update it. I don't think if this is possible, will need investigating.
Thanks for this tool!
I get lots of unknown server addresses when playing from Sydney, Australia
Hello,
I didnt know how to contact you in other way. It only says Looking for FG server and then nothing ever happens.
Is this app still compatible with epic servers?? I'd really like to use your app!!
Can u help me out? Im on W11
Cheers Matt
Based on historical statistics, we can tell how good this ping is compared to normal.
There are a number of ways to approach this, will have to think a bit on it.
Use something like PyInstaller to make an exe that can be executed without needing to install Python / Dependencies
Would be good if it's automatically generated using GitHub workflows.
Hello, the overlays says "Could not reach Fall Guys IP: 193.118.53.6", "Could not reach Fall Guys IP: 172.241.68.180", etc etc
If i open a cmd and ping that IP i can ping it.
Do you know what could be the error, i tried running the program even in admin mode.
Thank you
Unknown server location while playing in Europe servers.
unknown_ip_addresses.csv
When a user has unknown ip addresses, that are actually unknown, and Fall Guys is closed then create a button that opens a GitHub Issue with either the IP addresses or instructions on how to attach the unknown addresses.
Need someway to gracefully shutdown the script/overlay. Some ideas:
Log Stats so you can identify your best server
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.