Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add an in-game asset pack manager. #73

Open
drwhut opened this issue Mar 22, 2022 · 9 comments
Open

Add an in-game asset pack manager. #73

drwhut opened this issue Mar 22, 2022 · 9 comments
Labels
assets Related to assets or asset packs feature New feature or request ui Related to the UI
Milestone

Comments

@drwhut
Copy link
Owner

drwhut commented Mar 22, 2022

Is your feature request related to a problem? Please describe.
When creating asset packs, there is plenty of online documentation to refer to, but it is somewhat technical and for someone that is new to the game and creating asset packs, it may take some time before in-game results are shown.

Describe the solution you'd like
Add an asset pack manager in-game, which can show the user what asset packs are installed (with what pieces are included, with previews), as well as the ability to create new asset packs, add new assets, and modify the properties of the assets.

Describe alternatives you've considered
Previously I was just going to have the documentation be the main resource for creating asset packs, and while I will still update the documentation, it will only help to add another way of creating/modifying asset packs.

Additional context
I have decided not to add a milestone to this issue, for two reasons: 1. this issue seems to be quite an undertaking, and 2. I would like other in-game functionality to be in the game before the v0.1.0 release.

@drwhut drwhut added the feature New feature or request label Mar 22, 2022
@traverseda
Copy link

Are you sure that "Asset packs" is the way to go? Tabletop-simulator's loading assets from the web seems to work very well for it, and seems to make it very easy for end users to distribute assets.

@drwhut
Copy link
Owner Author

drwhut commented Apr 6, 2022

If you wanted, we could have a further discussion about asset packs in a new issue, but the summary of why I picked the concept of "asset packs" is as follows:

  • Reliability - Having the assets be stored locally means they will always be there, if they were on the web and the site was down for whatever reason, players would not be able to play the game properly.
  • Cost - If assets were stored on the web, we would have to create our own CDN.
  • Legal - For legal safety, I as the developer will only ever distribute assets for public domain games.
  • Community - It's not set in stone yet, but there are thoughts about putting the game on Steam once it has had a full release. That way, we could take advantage of the Steam Workshop for the community to distribute assets.
  • Control - The game was designed from the start to be customisable, which is why it is fully open-source, and users/contributors should have complete control over how the game functions, and how assets are loaded. Having assets loaded from the web would entail less 'control' over the assets, e.g. it would be more difficult to modify the assets.

@traverseda
Copy link

Those are good points, I think they could be addressed using a few different mechanisms.

So I have a regular weekly gamnig group, it used to be in-person before covid but honestly even with the covid restriction loosening up we're probably still going to use tabletop simulator for a bunch of our board gaming. We started out mostly using one version of Catan, but one of our players semi-regularly has microphone issues, and another player is colour-blind.

So we found a customized version of that game board that has buttons that allow you to quickly enter simple phrases like "I can't do that" or "want sheep have wheat have stone" into the chat. We've also customized the default colors so that our red-green colour blind player can have an easier time of it.

Those customization didn't involve creating a new asset pack, they involved creating a new save file. What happened is that one of our friends found an online game of Catan with the chat buttons, hit save, and now we base our games on that.

Another scenario is we sometimes play Carcassonne. There aren't any versions of Carcassonne that have automatic/scripted score counters (such a thing would be very difficult to implement in tabletop simulator) so we import these "fancy" score counters which include a built-in calculator. I think one of our players found that object in some online game and decided to keep a copy.


So I guess my big concern about having concrete "Asset packs" is that it's going to be hard to pick and choose little pieces of other asset packs and import them into my game, without necessarily creating a whole new asset pack that can't get updates.

There's also some concern about the community/legality side of things. Right now with tabletop simulator no one is distributing any potentially pirated content, they are at worst just linking to it. Actually putting the content on steam could create some more legal issues. Also tabletop simulator assets can get pretty big if you get them high-quality, and steam has a hard limit on account storage. Being able to store the bulk of the assets off of your steam account's very limited storage capacity is important for stuff like this, I think.

Perhaps there's some kind of p2p asset loading strategy that could work? In tabletop simulator assets are sometimes loaded from github.io sites, or from google drives, or even as base64 encoded files on pastebin.

I think that the "early internet" model works pretty well, where objects can be saved to your local folder but they tend to be linked web-objects. When you say "asset packs", well my big problem is that they're packs. It implies that you can't share an object between a bunch of different packs without duplicating the object a bunch of times, or that you can't load outside objects in at runtime, or that you need to create a new pack to do things like deal with color blind corrections.

Maybe that doesn't line up with the reality of how you plan on doing asset packs, but I think it's important that I can just grab an object from one game and throw it into another.

@drwhut
Copy link
Owner Author

drwhut commented Apr 6, 2022

There's also some concern about the community/legality side of things. Right now with tabletop simulator no one is distributing any potentially pirated content, they are at worst just linking to it. Actually putting the content on steam could create some more legal issues.

This will be a problem for any distribution platform, even Steam. I remember when TS first came out, there were a huge debate online on how much people could get away with when uploading assets to the workshop, and I remember seeing some games on there that definitely "crossed the line", e.g. full-on Monopoly clones.

or that you need to create a new pack to do things like deal with color blind corrections.

This is totally possible with the current system - you could modify the asset locally in the same asset pack (maybe just by changing the color value in the config file?) and still use it in a game with other people, as long as the object is the same size, it should still have the same physics for everyone.

From what I understand from your comment, each example you give can be roughly divided into two features:

  • Have assets that download themselves from the web.
  • Being able to download individual assets without downloading the whole pack.

One of the other reasons I decided to go with "asset packs" at the start (as well as the reasons listed above), is because it allows for modularity - if users were to distribute assets on their own, things could potentially clash that way - so to take your "chat buttons" as an example, not everyone would need that functionality when playing the game, but for those that do need it, the host could then download the "chat button" asset pack, and when people join, they should get the same assets (the host giving their assets to the clients is being worked on, see #11).

With the two features I mentioned, I feel like both could be implemented on top of the current system due to it's modularity. In any case, you've given me a lot to think about, but I feel that the demand for these isn't quite there yet for me to implement them before the 0.1.0 release.

@traverseda
Copy link

traverseda commented Apr 6, 2022

the host giving their assets to the clients is being worked on, see #11

Sounds like that's a bit of the p2p functionality I was mentioning, which sounds great.


  • Have assets that download themselves from the web.
  • Being able to download individual assets without downloading the whole pack.

I think the third thing there is "being able to dynamically load an asset into an existing scene". Not sure if that's covered by point 2, but it's worth mentioning. When we download the carcasonne add-on, well we need to also load in more complicated calculators and the like. We've also been known to increase the size of some pieces if there are issues seeing them, stuff like that.

I think there's a case for having objects be, well, objects, things that can exist outside of a particular asset bundle (or maybe just that can be imported in to another bundle?). I want to be able to spawn spooky candles and a pirate ship into my weekly D&D campaign, or spawn my custom painted army into a warhammer game, or the like.

you could modify the asset locally in the same asset pack (maybe just by changing the color value in the config file?) and still use it in a game with other people, as long as the object is the same size, it should still have the same physics for everyone.

I do think that you need to be careful with this, and people need to communicate things explicitly. Rather than having the color changed for just one player, I think it would be better if the color was changed for every user in the scene, as an example. Showing people different "realities" can cause some pretty big issues, and one of the reasons I've had so much luck using tabletop simulator with computer-illiterate family members is because we all see exactly the same scene. Also being able to reset the camera with the space bar is a life saver.

but I feel that the demand for these isn't quite there yet for me to implement them before the 0.1.0 release.

For sure, it's early days for this project yet, and do let me know if you're not finding this kind of thing helpful. Just sharing my experiences with my regular gaming group, and how we use tabletop simulator.

and I remember seeing some games on there that definitely "crossed the line", e.g. full-on Monopoly clones.

I mean that's always going to be a risk with any user-created content system, and I hope that you will err on the side of user-freedom for this project obviously.

@drwhut
Copy link
Owner Author

drwhut commented Apr 8, 2022

I think it would be better if the color was changed for every user in the scene

You can change the colour of objects in the game (for everyone), but it only changes the "albedo" right now, as in it multiplies the colour values.

do let me know if you're not finding this kind of thing helpful. Just sharing my experiences with my regular gaming group, and how we use tabletop simulator.

This is exactly the type of feedback I'm looking for! I didn't even think about having assets being on the web or on their own outside of asset packs. Even if I don't end up implementing it, I'm incredibly grateful for any kind of feedback about the game.

I mean that's always going to be a risk with any user-created content system, and I hope that you will err on the side of user-freedom for this project obviously.

In general, I want people to be able to do whatever they want with the project. But at the same time, I also want to avoid any potential legal issues as well. So in terms of the distribution of assets, I'm erring on the side of caution and choosing not to host or moderate an asset pack CDN. But I will still do what I can to allow for all kinds of assets to be used in the game.

@traverseda
Copy link

I think that tabletop simulator could actually be the future of AR/VR operating systems. It hits a point of still being navigable in 2d while providing genuinely useful 3D abstractions. After seeing how my computer-illiterate family interacts with it I'm convinced that it provides the right set of abstractions to let them feel comfortable playing around in a way they just aren't on normal computers. The multiplayer aspect also really helps as I can guide them through things "in-person".

So for me, I can't help but feel that one of the killer features of applications like this (once they start to become comparable to things like tabletop simulator) is some kind of RDP/remote-desktop client. The "browser tablet" built into tabletop simulator becomes unsynchronized and has other issues, or no doubt we'd use it more.

Still, this kind of "Tabletop scale VR" seems to me like it could really be the future of VR computing, I'm very hopeful that you do well with it. It might even be the kind of thing you could submit to ycombinator or other startup accelerators.

@drwhut drwhut added this to the v0.2.0 milestone Nov 6, 2022
@drwhut drwhut added ui Related to the UI assets Related to assets or asset packs labels Mar 26, 2023
@Cluedrew
Copy link

I'm sure there is a lot of nuisance around making sure assets are synchronized, collecting updates so on, but unlike scripting interfaces I have much less detail to say about it. Mostly I would just like to say that a lot of similar tools seem to underestimate how much modification people are going to do and seem to tune their interface for some small modification. What exactly making sure it is easy to make large and complex saves in the game looks like, I'm not sure. But there are some ideas like what I have said for scripting, but also a good way to look through the assets in the pack, as well as check out the individual assets.

@drwhut
Copy link
Owner Author

drwhut commented Mar 27, 2023

Yeah, one of the core values of the game is that it should be as easy to mod as possible - this feature would ideally make it so anyone can either make an asset pack, or modify an existing one, without having to look at the documentation. In terms of save files, currently there are no plans to make a "save editor", mostly because I think it's relatively painless to set up the table in the way you want (using a mixture of room settings, locking objects, and setting transforms in the context menu).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
assets Related to assets or asset packs feature New feature or request ui Related to the UI
Projects
None yet
Development

No branches or pull requests

3 participants