MC2 Content Creation Discussion
This goes along with my other post regarding graphics creation, but I am thinking of making a change to the way MC2 loads content, which should allow for more distributed development, but also easier modding.
Right now in MC1, all of the game parameters are defined in a single json file. My thought for MC2 is to have a "buildings" folder in the project directory that is full of individual building definition files. When the client is loaded, it will scan that folder and load each building file individually, instead of reading everything from the single json script.
This is more complicated, but it allows for adding new buildings to the game at runtime for modding/customization. It also allows for the community to easily create and submit their own buildings for inclusion into the main game. And since the files can be loaded at runtime, new building candidates can easily be tested out by the entire community before getting the go/no go for inclusion into the main game.
My thought would be to release an editor desktop application that would allow you to create a building, define all of it's parameters, and package it together with a 3d model file and a small thumbnail image for the construction sidebar. That way anybody could download the editor and start making content for the game. They can even load it right into their game and test/debug it.
Just wondering what people think of this model/concept, or if anybody would actually utilize it. It is a bit more work for me up front, so if nobody would take advantage of it I would not waste my time. However, in the long run I think it could greatly expand the content of the game and expedite development.
Let me know your thoughts!
Just a further thought, the editor wouldn't even have to be a separate desktop application, I could probably just build it right into the main My Colony 2 game.
That seems a good way of doing things. I've tried to build things in a single file and almost always regretted it when it came to adding or changing something.
The only issue would be the number of web requests that would have to be made by the client (unless it was compiled server side on initial load).
My Colony Discord Server - https://discord.gg/dvJSKBB
Well in terms of web requests, I think all of the data files would still be bundled into the app package. If someone was playing in the browser, it would be a progressive web app just like the original My Colony, so after the first playthrough the entire game would be cached on the users' system anyway (so that it is available to play offline)
I would rather have the complete game install, and then a mods folder at the root where you put everything you add/modify. If you take the example of Minecraft (again) they have a different folder for mods.
It would make it easier to manage installed mods (why not even a launcher option to choose which mods to load/unload) and keep the native install clean.
You only seemed to have talked about mods as building additions. Will we be able to modify other behaviours in a standardized manner? (I mean not by modifying the native js files). That would be great.
I don't know how modding works on other games, but callbacks to mod functions (thus in the mods folder) at the end of each task (like "building finished" or "trade bought" or "some panel displayed") could work. I would help test these out if needed.
I haven't worked out exactly how the modding will be set up yet @Sobeirannovaocc so I can't answer everything for certain.
My intention is that I don't want to have to fiddle around with a bunch of .JSON data every time I make an update. And it's not that JSON is difficult or anything, but in MC1, there are so many records in the file now, that if I want to add an additional property to a building, it takes all day of going back through the file and adding the new property to all existing buildings. Not fun.
So to me, the more the game can be created by using it's own built-in tools, the better.
Now, your ideas about having mods in their own folder or using a launcher are good, but here is the problem. Well, three problems: they are called Android, iOS, and Windows 10 (via the Store). Sorry, four problems: Web Browser. All of the big platforms require all applications to run in a sandboxed environment and severely restrict your access to the filesystem. The Web does not have real filesystem access at all, although this is theoretically changing by the end of the year, at least for Chrome and Edge (the chromium version). But I doubt it will be changing at all for Firefox anytime soon. Apple iOS is actually becoming a bit more open in terms of filesystem, but Android is going in the opposite direction and becoming even more locked down with every release.
So the biggest issue for modding like that is application sandboxing. But just because the customized files are stored within the application's sandboxed storage, does not mean they have to dirty the clean install of the game. Maybe modded content is only loaded on a per-game/server basis? So that when you start a new game, you can select which extensions you want to activate. And maybe also have an in-game mod panel where you can activate new mods or update existing ones after the game is already running. And maybe have a container file that groups a bunch of mods into one package, so that you can easily install an entire collection of things bundled into one mod package. I am just thinking of ideas here.
So anyway, hope that answers some things. I don't know if it will be just buildings until I kind of see the direction of the engine. I know that buildings will be the most important unit in MC2. To the extent that I have Rovers, I don't think they are going to have the same importance as they do in MC1. I suppose resources and map types can also be customized. We'll see!
Ah, yes. I always think about the desktop version and never account for the others :p
Well, an in-game mods loader would be great for singleplayer (integrated server). If possible, a mod could take the form of a zip file and ppl just "import mod/extension", choose a file from filesystem and it imports it into the sandbox envi and then we can check/uncheck what mods we want to load! Might not work well for browser though, but...people should just download the desktop version ;)
That was for singleplayer. In any case, as the client fetches (missing) game content from the server, the standalone server app (for multiplayer) will be able to have that fairly easily, right?
Yes, I figured that on connection, the server would tell the client which all mods are required and transfer resources as needed.