I like
Thialf's suggestions, and I also like the idea of something more custom (game engine), just because it allows for more control over the direction of such a project.
When you talk about Mirror
AxelN are you referring to
You must be registered to see the links
?
All your ideas sound good, I only have 2 concerns: Server hosting, and user content integration.
I can imagine major areas such as a spawn location and shared community hubs need to be accessible to everyone, and the best way to do that (I can only assume) is to have a server that hosts the world (runs the game). I'm not sure if you plan to overcome this with mirroring (meshed instance?) or if Mirror still requires a host server. My concern is, who's going to pay for the server. I've been meaning to build my own server, but since I'll be getting done with college soon, working the summer, transitioning towns, and trying to start a career, I won't have the time or stability to be a server hoster. Do we need to keep an IT person on staff/call to make sure the server(s) keep running, or will one of us be managing that? We can't rely completely on the community, at least not at first. We will have to be the hosts, but once there is a community dedicated enough, we can offload server responsibilities to a team that is willing to take it up.
User Content Integration, specifically: characters and locations. I like the idea of separate communities, that cater to specific fetishes or interests or rps. I imagine the easy way to do this is to have players be their own hosts for private sessions (their own room and they are the servers). But then how to the make a 'base'? My concern with user uploaded content is the actual 'how do we implement this'? Images are simple, a texture is pretty abstracted by default, but what about 3D models and even more complex, animated character models with custom skeletons. How do we implement those to load and run? How do we abstract a data format for this? My best-case scenario is that we can make an abstraction class to inherant from, use it in a blank unity engine session, the person attaches all their data to their custom object (player mesh, rig, animation), There may even be another object that allows for basic testing of the object or setting its parameters (ie test character animation to make sure the animations are interfacing correctly through the abstraction layer, generic functions to allow for custom... machines to trigger different effects that don't follow any standards (A teddy bear that jumps your leg and starts humping
). After all that, my best hope would be we could just serialize the instance, including mesh and animation data (as child objects? not sure how unity handles this or if it just refers to the assets instead), and that way unity can just check for a file type, de-serialize, and bang the model is in. If we had to do something more custom, then we would be restricted to only being able to as much as we can design our system to do. If players wanted to personalize their own zones/space/location, it would need similar serialized objects, and to get the best experience, other players would have to download a package with copies of all the custom assets/files so that it is ready to load when they enter they zone. If objects are missing, a zoned off space could be used in stead, not sure if it would be easy to get file transfers between host to other users through unity. And lastly with regards to this, have you tried messing with the unity resource manager through code. Definatly not the funnest thing to do, but as far as I can tell all game engines have to deal with similar are worse when it comes to accessing, managing, saving, and protecting assets hidden in the game engine files.
Im not too worried about the render pipeline, that is something we can always tweek
Now game figuring out neat game mechanics and making game assets, thats where I get my rocks off (and then get sent to jail
). If we can get something as simple as,
- a test scene that acts as a public world space (where we can then find someone to have a private session with)
- be able to create a new scene (through code initially?) that acts as a private room,
- be able to save the room (maybe modify it by having a few blocks placed on the floor and moving them around, and saving what is in the room),
- being able to meet another user in the public room,
- and be able to move both players to a shared private room (literally just a flat floor with cube players)
- be able to upload a basic custom asset (another cube)
- and possibly stream that data to the other user.
If we can get the ugly demo working of that, then I would be confident that this project would be a success
On a side note, I have experimented with making a java program that connects with unity, and tries to talk to patreon, and would allow users to be able to log into patreon, and let the game know what tier user is logged in, even if the user isn't a patreon, we can still use this as a character log in so we don't need servers to manage any personal data, thus no legal concerns, and the data is all encoded so we don't pose any risk. And on top of this, if users are patreons, we can totally
pay to win I mean unlock user flair to give thanks to supporters. My java code only went as far as connecting and the start of the patreon code, but to go further I needed a server to host my patreon login key and I don't really have any server experience, front or back end coding.
Other than that, I'm down to model and animate!