Giter Club home page Giter Club logo

tournamentassistant's Introduction

TournamentAssistant

A program designed to make it easier to coordinate tournaments for the VR rhythm game Beat Saber

Usage Guides can be found on the wiki page of the repository

Installing the plugin

https://github.com/MatrikMoon/TournamentAssistant/wiki/How-to-install-the-plugin

Coordinating a match

https://github.com/MatrikMoon/TournamentAssistant/wiki/How-To-Coordinate-a-Match

Hosting a server

(You do not need to host your own server if you don't want to. Feel free to use the Default Server!)

Linux

https://github.com/MatrikMoon/TournamentAssistant/wiki/How-to-Host-a-Server-on-Linux-GUI-DE-installation

https://github.com/MatrikMoon/TournamentAssistant/wiki/How-to-Host-a-Server-on-Linux-Terminal-only-Installation

Windows

https://github.com/MatrikMoon/TournamentAssistant/wiki/How-to-Host-a-Server-on-Windows

Contributing

Pull requests are welcome! Feel free to dm me on discord if you have any questions or concerns!

License

MIT

tournamentassistant's People

Contributors

16ajans avatar arimodu avatar batthew627 avatar bytealex avatar checksumdev avatar dannypoke03 avatar dependabot[bot] avatar matrikmoon avatar megalon avatar monkeymanboy avatar nanikit avatar onsive avatar raineio avatar rithik-b avatar thanighthawk avatar wolfcomp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

tournamentassistant's Issues

Invalid wire-type error when connecting to server with TournamentAssistantUI

I get this error whenever I try to connect to a server with TournamentAssistantUI 0.6.7. I tested it with magnesium.velvet.moe:2052 and localhost:2052. Both throw the same error whenever I try to connect. I can join the server with the TA mod in-game though. A WebSocket connection to port 2053 with node also works without issues.

image

Auto update crashes TA if GitHub doesn't return release information

This can happen for a number of reasons:

  • You are rate limited by GitHub
  • Your IP is on a blacklist
  • GitHub is being GitHub

Exception:

Unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'input')
   at System.Version.Parse(String input)
   at TournamentAssistantShared.Update.GetLatestRelease() in /src/TournamentAssistantShared/Update.cs:line 161
   at TournamentAssistantCore.SystemServer.Start() in /src/TournamentAssistantCore/SystemServer.cs:line 189
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__139_1(Object state)
   at System.Threading.QueueUserWorkItemCallbackDefaultContext.Execute()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()```

Websocket lacks synchronization

What I did

Send real-time score update event simultaneously by two client.

Expected behavior

No problem

Actual behavior

System.InvalidOperationException: There is already one outstanding 'SendAsync' call for this WebSocket instance. ReceiveAsync and SendAsync can be called simultaneously, but at most one outstanding operation for each of them is allowed at the same time.
   at System.Net.WebSockets.WebSocketBase.SendAsyncCore(ArraySegment`1 buffer, WebSocketMessageType messageType, Boolean endOfMessage, CancellationToken cancellationToken)
   at TournamentAssistantCore.Sockets.Server.Send(ConnectedUser connectedUser, PacketWrapper packet) in TournamentAssistant\TournamentAssistantCore\Sockets\Server.cs:line 349
Client Disconnected!
Sending data: (Event) (user_left_event)
Received data: (ForwardingPacket) (Push)
System.Net.WebSockets.WebSocketException (0x80004005): The 'System.Net.WebSockets.ServerWebSocket' instance cannot be used for communication because it has been transitioned into the 'Aborted' state.
 ---> System.Net.WebSockets.WebSocketException (0x80004005): The 'System.Net.WebSockets.ServerWebSocket' instance cannot be used for communication because it has been transitioned into the 'Aborted' state.
   at System.Net.WebSockets.WebSocketProtocolComponent.ThrowIfSessionHandleClosed(WebSocketBase webSocket)
   at System.Net.WebSockets.WebSocketProtocolComponent.WebSocketGetAction(WebSocketBase webSocket, ActionQueue actionQueue, Buffer[] dataBuffers, UInt32& dataBufferCount, Action& action, BufferType& bufferType, IntPtr& actionContext)
   at System.Net.WebSockets.WebSocketBase.WebSocketOperation.Process(Nullable`1 buffer, CancellationToken cancellationToken)
   at System.Net.WebSockets.WebSocketBase.SendAsyncCore(ArraySegment`1 buffer, WebSocketMessageType messageType, Boolean endOfMessage, CancellationToken cancellationToken)
   at System.Net.WebSockets.WebSocketBase.ThrowIfAborted(Boolean aborted, Exception innerException)
   at System.Net.WebSockets.WebSocketBase.ThrowIfConvertibleException(String methodName, Exception exception, CancellationToken cancellationToken, Boolean aborted)
   at System.Net.WebSockets.WebSocketBase.SendAsyncCore(ArraySegment`1 buffer, WebSocketMessageType messageType, Boolean endOfMessage, CancellationToken cancellationToken)
   at TournamentAssistantCore.Sockets.Server.Send(ConnectedUser connectedUser, PacketWrapper packet) in TournamentAssistant\TournamentAssistantCore\Sockets\Server.cs:line 349

I think exception is self-explanatory.

TA for BS 1.19+

Hi.

We were testing TA for a tournament planned in about 2 weeks with version 1.19, though it seems that version broke the latest TA version.

The following error is what I am observing:
[INFO @ 16:20:05 | _] System.MissingMethodException: void PlayerSpecificSettings..ctor(bool,single,bool,single,bool,bool,bool,bool,bool,single,single,bool,bool,EnvironmentEffectsFilterPreset,EnvironmentEffectsFilterPreset) [INFO @ 16:20:05 | _] at TournamentAssistantShared.Sockets.Client.ReadCallback (System.IAsyncResult ar) [0x000a8] in <21662bde7ba94ae082387bf67483f192>:0

In game it's visible by trying to connect to a TA server, which will hang in "connecting" screen, even though the client appears on the TA server almost immediately.
A game cannot be started.

I hope you can have a look at it.
Thank you & Best
Alex

Question about overlay functionality

I see that in the config, there's a port-configuration for some sort of overlay.

Am I correct to assume this is bound to be shown in OBS, as a browsersource, with IP:PORT? If that is the case, how is this set up correctly. I get met with a "System.IndexOutOfRangeException: Index was outside the bounds of the array. At TournamentAssistantShared.Sockets.WsServer.AcceptCallback(IAsyncResult ar)" trying to use it.

Sorry if this has been answered on BSWC-Discord or other places, but I have not been able to find any answer for this.

Kind regards.

Game Soft-locks at end of level

Sometimes some players will soft-lock at the end of a level without going back to the menu. The "go back to menu" button and "kick player" button do not work. (I was coordinating the matches and do not have logs, though it's happened multiple times.)

Bot leaderboard failing to edit/update

Bot sends the leaderboard correctly once, but refuses to update it while correctly logging newly received scores to the channel.

image

Note the non-inclusion of the new scores in the leaderboard message.

Logged:

Mar 08 18:47:16 cvre01 TournamentAssistantCore[499911]: Object reference not set to an instance of an object.
Mar 08 18:47:16 cvre01 TournamentAssistantCore[499911]:    at TournamentAssistantCore.Discord.QualifierBot.SendLeaderboardUpdate(UInt64 channelId, UInt64 messageId, List`1 scores, List`1 maps)
Mar 08 18:47:16 cvre01 TournamentAssistantCore[499911]:    at TournamentAssistantCore.SystemServer.Server_PacketReceived(ConnectedUser user, Packet packet)
Mar 08 18:47:16 cvre01 TournamentAssistantCore[499911]:    at TournamentAssistantCore.Sockets.Server.ReceiveLoop(ConnectedUser player)

0.6.0 TACore throwing errors.

Updated to 0.6.0, and have gotten some random errors, just spamming the console.

  • Using the auto-generated config, with only changing name, password, ip and the banned mods. Config-file was closed before launching server.
Wrong group was ended
   at ProtoBuf.ProtoReader.State.ThrowProtoException(String message)
   at ProtoBuf.ProtoReader.State.EndSubItem(SubItemToken token)
   at ProtoBuf.ProtoReader.State.ReadMessage[TSerializer,T](SerializerFeatures features, T value, TSerializer& serializer)
   at proto_2(State& , Packet )
   at ProtoBuf.ProtoReader.State.ReadAsRoot[T](T value, ISerializer`1 serializer)
   at ProtoBuf.ProtoReader.State.DeserializeRoot[T](T value, ISerializer`1 serializer)
   at ProtoBuf.Serializer.Deserialize[T](Stream source)
   at TournamentAssistantShared.Utilities.ProtobufExtensions.ProtoDeserialize[T](Byte[] data)
   at TournamentAssistantShared.Sockets.WsServer.ReceiveLoop(ConnectedUser player)
Invalid wire-type (6); this usually means you have over-written a file without truncating or setting the length; see https://stackoverflow.com/q/2152978/23354
   at ProtoBuf.ProtoReader.State.ThrowProtoException(String message)
   at ProtoBuf.ProtoReader.State.ThrowWireTypeException()
   at ProtoBuf.ProtoReader.State.AppendExtensionField(State& writeState)
   at ProtoBuf.ProtoReader.State.AppendExtensionField(State& writeState)
   at ProtoBuf.ProtoReader.State.AppendExtensionData(IExtensible instance)
   at proto_74(State& , SendBotMessage )
   at ProtoBuf.ProtoReader.State.ReadMessage[TSerializer,T](SerializerFeatures features, T value, TSerializer& serializer)
   at proto_2(State& , Packet )
   at ProtoBuf.ProtoReader.State.ReadAsRoot[T](T value, ISerializer`1 serializer)
   at ProtoBuf.ProtoReader.State.DeserializeRoot[T](T value, ISerializer`1 serializer)
   at ProtoBuf.Serializer.Deserialize[T](Stream source)
   at TournamentAssistantShared.Utilities.ProtobufExtensions.ProtoDeserialize[T](Byte[] data)
   at TournamentAssistantShared.Sockets.WsServer.ReceiveLoop(ConnectedUser player)

When looking at websocket data, it returns a stringy mess, when looking at it. Both unicode filtered:

$342f7525-061f-46f1-9555-81832df8f894$00000000-0000-0000-0000-000000000000R2*0.,$69a41d72-8ec4-4972-964d-fd462908b80aCoordinator

and none-filtered:

$342f7525-061f-46f1-9555-81832df8f894�$00000000-0000-0000-0000-000000000000R2*0
.
,�$69a41d72-8ec4-4972-964d-fd462908b80a��Coordinator

No password input field in game

I've set up my server with a password to keep the server clear while in tournament, but I couldn't find a way to enter the password ingame.

Is it somewhere hidden or just missing?

Borked leaderboard

The leaderboard on the left side doesn't show anyone. The Beat Saber 1.13.4 version of TournamentAssistant still shows the leaderboard correctly.

Excel leaderboard export fails

Logged:

Mar 08 18:53:49 cvre01 TournamentAssistantCore[499911]: 18:53:49 App Command System.ArgumentException: The worksheet name cannot start or end with an apostrophe ('). (Parameter 'Name')
Mar 08 18:53:49 cvre01 TournamentAssistantCore[499911]:    at OfficeOpenXml.ExcelWorksheets.ValidateFixSheetName(String Name)
Mar 08 18:53:49 cvre01 TournamentAssistantCore[499911]:    at OfficeOpenXml.ExcelWorksheets.AddSheet(String Name, Boolean isChart, Nullable`1 chartType, ExcelPivotTable pivotTableSource, XmlElement sheetElement)
Mar 08 18:53:49 cvre01 TournamentAssistantCore[499911]:    at TournamentAssistantCore.Discord.Modules.QualifierModule.ExcelLeaderboardsAsync(String eventId)
Mar 08 18:53:49 cvre01 TournamentAssistantCore[499911]:    at Discord.Interactions.Builders.ModuleClassBuilder.<>c__DisplayClass11_0.<<CreateCallback>g__ExecuteCallback|1>d.MoveNext()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.