[ ] I believe the adjacent Node/ Edge code can be simplified, especially the way they are looked up. I made a dict of edges to nodes and nodes to edges when calculating longest road and I believe I can reuse that in other parts of the Node/ Edge classes.
[ ] Rendering code can be condensed and should be checked for redundancies.
[ ] Overall organization of code to be in a more logical order, especially for build_client_request() and update_server()
[ ] Separating main.py into server, client, and shared files. Currently the server imports Raylib even though it was specifically designed not to require Raylib. That could probably be fixed by moving the import module call, but separating into server, client, and shared might make the files easier to navigate in general.