drwhut / tabletop-club

An open-source platform for playing tabletop games in a physics-based 3D environment for Windows, macOS, and Linux! Made with the Godot Engine.
https://tabletopclub.net
MIT License
1.28k stars 55 forks source link

OSC messaging support for external control of Tabletop Club and assets #228

Open shamanicvocalarts opened 1 year ago

shamanicvocalarts commented 1 year ago

Is your feature request related to a problem? Please describe. a problem with both tabletop club and its closed source competitor, is that the game is not easily controllable externally, resulting in having to navigate the 3d gui to do anything ( or relying on key commands, which can easily conflict ). having some form of external addressing system would allow for all sorts of ease of use benefits such as users being able to create accessibility controls, or having prescripted actions on a tablet for a DND DM, or being able to quickly move the camera to positions in space at button presses .

Describe the solution you'd like I propose implementing OSC into Tabletop Club, OSC is a Human Readable self defining open standard for communication in audio visual fields, but is also gaining traction in VR titles such as VRChat. there is a GODOT plugin that can add OSC functionality to any GODOT project ( seemingly trivially, Im not 100% though as im not familiar with GODOT ) https://github.com/frankiezafe/gdosc. Implementing OSC as a standard at this early stage would give tabletop club a massive legup compared to its main competitor ( the reason I found tabletop club at all is because I looked for an open source tabletop sim clone with OSC support ) and allow for some seriously awesome user generated content in the future.

Describe alternatives you've considered the obvious alternative is just a deep hotkey system, but HID keyboard input has some massive problems and ultimately is best avoided as a deep solution. OSC has a big advantage of not having a limit on the amount of messages you want to send.

Additional context Think Ive covered most things. having OSC support added in would allow for super deep game assets, add in an easy route to User defined Accessibility controls and make it easy to plug Tabletop Club into other more powerful scripting and programming paradigms without making TC more complex than it needs to be .

drwhut commented 1 year ago

Thank you for the suggestion! This would definitely help with accessibility, and the fact a plugin exists already helps a ton - I'll have a look at the standard and how it's been used elsewhere before deciding whether to add it or not.

shamanicvocalarts commented 1 year ago

for sure. other standards that would maybe make sense could be websocket, but I feel OSC is more accessible and easily supported.

drwhut commented 1 year ago

So I've been doing some digging into this, and I've come across a couple of hurdles that will probably need addressing before something like this is implemented:

I may just be looking in the wrong places when it comes to OSC implementation in games, but I think it may also be worth looking into potential alternatives (e.g. WebSockets) to achieve a similar goal, since support for OSC looks "meh" at best for Godot.

shamanicvocalarts commented 1 year ago

I think a Websocket Implementation would functionally allow for the same basic functionality. shame there is not more support for OSC in Godot.