RPTools / maptool

Virtual Tabletop for playing roleplaying games with remote players or face to face.
http://rptools.net
GNU Affero General Public License v3.0
779 stars 259 forks source link

UI modernization #2329

Open Iron-E opened 3 years ago

Iron-E commented 3 years ago

Thanks for your work on this product! I really appreciate it, especially since GM tools in the open source space are pretty scarce.

Is your feature request related to a problem? Please describe.

I'd like the UI to be more modern. I'm open to helping with this but I'd only want to if the team is open to the feature.

A part of the modernization effort would be the allowance of user-friendly theme customization (presets, etc) in the application. Whether or not this is a part of the MVP would be open for discussion.

Describe the solution you'd like

I noticed this project uses Swift for a UI library, and Swift has since been replaced by JavaFX (then later, arguably TornadoFX).

I would be interested in migrating to JavaFX at least, if Kotlin is undesirable.

Describe alternatives you've considered

We could expose an API that allows multiple front-ends to be created for one MapTool backend.

Additional context

My friends and I use Roll20 to play TRPGs on the weekends, but we are unhappy with its proprietary, freeware nature. We'd like to switch to an open source alternative (namely MapTool) but the older UI is a major put-off for getting them to actually switch.

I'm open to discussion as for what the design paradigm should be. Material design? Metro?

cwisniew commented 3 years ago

let me preface this with I am definitely open to a much nicer more modern UI as I don't want my next comments to seem like I am killing any discussion...

The problems we had with JavaFX is its canvas rendering is atrociously slow so the POC that was done for the map in JavaFX stalled almost out of the gate. It was so problematic a short discussion was also had about if we should do a browser based front end instead as canvas + webgl is much faster (this was a recentish version of JavaFX 14 I think). So this is one of the problems we would need to solve to be able to move to JavaFX.

Iron-E commented 3 years ago

I'm also open to the API+web frontend approach, that would let anyone write a frontend for MapTool but there'd have to be a separation of program logic vs client logic before we did that.

If JavaFX caused stalling, would that be a better idea?

Edit: to clarify, that would also allow the current frontend to exist independently as well if the web approach was not taken for a specific reason

Edit 2: I took a closer look at the source code. It seems like all of lib is tied very heavily to Swing. Is it worth trying to decouple at this point or would it be better to try and just make Swing look better?

Asteliks commented 3 years ago

Check this out it may help: https://new.tableplop.com/

I know that this site is much simpler but it may inspire you in the terms of UI and it's free. Perhaps we could initiate some kind of cooperation?

cwisniew commented 3 years ago

The problem is not that no body wants a nicer UI (trust me people do), but more the amount of work required to the backend to allow a browser based UI (its a near rewrite) and the amount of free time / people willing to help with such an undertaking.

So finding the time and people with skills/willingness to help is the main obstacle

Iron-E commented 3 years ago

I have to say when I opened the issue I didn't think the UI was attached to the application without an interface. Adding a different UI now really would be a rewrite, like you said.

If we were to design a new UI, we should probably create an interface for it so that multiple UIs can use maptool as a backend. But even then, how do you provide much functionality on a UI-driven application without knowing what UI you're using? It's a difficult one to think about (at least for me, who hasn't had much GUI experience)

Asteliks commented 3 years ago

The problem is not that no body wants a nicer UI (trust me people do), but more the amount of work required to the backend to allow a browser based UI (its a near rewrite) and the amount of free time / people willing to help with such an undertaking.

So finding the time and people with skills/willingness to help is the main obstacle

I do not want to say that this will happen any time soon but if we do not find some people to help write the code than based on their plan and progress https://new.tableplop.com/ will overtake this project.

Maybe a minor change in strategy should take place -> maybe we should improve the documentation, clarify the planed roadmap ahead and start looking for more people to use and develop this project. Adding some pictures is always nice.

cwisniew commented 3 years ago

Feel free to pop on to the discord server and discuss in this channel https://discord.gg/SMd6Akzsep Maybe if there is more people than me bringing it up it wont just be me talking to myself about it :)

Asteliks commented 3 years ago

Sure, I'll pop in when I can but unfortunately JAVA isn't my cup of tea

cwisniew commented 3 years ago

Sure, I'll pop in when I can but unfortunately JAVA isn't my cup of tea

Its more that we need more people in the discussion, as at the moment it's just myself raising it and most others there questioning why we need it as we probably have to move away from a Java front end.

Asteliks commented 3 years ago

Remember this issue? So here is a crazy enough idea that it may work: what if we make a Kickstarter campaign in order to gather the resources needed for the rebuild process of maptool. Worst case scenario we will not make it and not loose anything. Best case scenario bards will sing tales about our grand endeavor. How about that? Should I contact Puffin Forest and JoCat?

Iron-E commented 3 years ago

If this application is rewritten, I would advocate for the usage of a language other than Java. C# has MAUI coming around the corner, and C# is more performant on average (meaning users can create bigger maps with more assets). This is assuming the aim isn't still to create a joint web service.

Sorry I haven't come on Discord yet, by the way— I have been pretty held up as of late.