The reason modding sucks (as of now).
No, this is not trollbait. No, this is not criticism about mods in general. This is a legitimate concern about it's implementation. Having different binaries, or installing a bunch of mods in the same game tends to suck balls as sometimes functions conflict, after ten or so mods it's hard to keep track of how things work, people making mappacks with mods MUST include the mods they used, and overall it's more a hassle than it's worth for the casual gamer.
I will say, mods are pretty damn alright. But let's not fall into the same tar pit trap that Minecraft has while there's still time for us to change. Here are several ideas to make modding mari0 fun, easy, and relatively safe.
keeping mods in a separate folder
The "Modloader"-esque mod here is on the right track when it comes to implementation. Modularity is a big part of modding, adding and removing components as one pleases, and eventually map packs will become useless as mods are removed, upgraded, modified etc.
There's a solution to this. People submit and have approved their modifications by a select group of moderators. Whenever a mod is used, a map pack will include a "mods" text file that mari0 will read from. If the mods suggested in the pack-do not exist, then the game will download from a mod repository everything it needs for the pack to work. Inspired partly by Tiny Core Linux, which keeps everything outside of the core system in an "Optional" folder that can be deleted in one fell swoop.
Managing mods
Over time, the mods folder, should such a thing exist, will contain every single approved mod downloaded. Some of them will be pack-specific, some of them will be graphics packs, other will be function mods and enhancers. Still, these things will exist in their own directory, and should be managed in-game, much like if a "Moddable" program is open, add-ons, plugins and extensions can be managed. This should also lead into the DLC and local menus, giving users the option to delete map packs without having to visit where they are stored. (Should also obsolete the "Press M for mappack folder" selection)
Implementing mods
The easiest way I can think of doing this is to simply install mods and enable them from the main menu. The editor should also have a similar menu for turning mods on and off, which will update available tiles, and delete tiles that are not being used. As mods are switched on and off, the mods text file will be modified to suit. Any user will see this added hurdle to using mods as a useless distraction, but in the long run it will allow the user to have complete control over what goes into the editor. So for the sacrifice of "Get up and go", users can micromanage what they wish to use so function creep and forgetting how stuff works happens much less often.
When finished, installation should be a breeze. When a map is selected, the game will seek out this mods text file, and if it does not exist, or all dependencies are satisfied, go straight into game; Otherwise, mods will be downloaded and put in their appropriate places, and the game will retry loading with these mods enabled.
mari0 is still young, and while it's a crap-ton of work to ask Maurice, it will benefit the community in the long run, with mods coming out of the proverbial arse, and only quality, useful content getting approved. The option for local mods should still exist, but users shouldn't rely on the existance of some odd mod an author forgets to include, so letting the game do the heavy lifting for users will be an immense long-term benefit.
Why all this matters
One word. Netplay. If you are connected to the internet, you can play with your friends. If you are able to play with your friends, then them too can download the same mods you can. Automating everything will lead to a much more enjoyable experience for everybody as there isn't much user confusion, which means people can get to their game and fun times much faster than otherwise.
The second word is ease, which I have already emphasized far too much on here. Let's make this happen for the benefit of our community.
I will say, mods are pretty damn alright. But let's not fall into the same tar pit trap that Minecraft has while there's still time for us to change. Here are several ideas to make modding mari0 fun, easy, and relatively safe.
keeping mods in a separate folder
The "Modloader"-esque mod here is on the right track when it comes to implementation. Modularity is a big part of modding, adding and removing components as one pleases, and eventually map packs will become useless as mods are removed, upgraded, modified etc.
There's a solution to this. People submit and have approved their modifications by a select group of moderators. Whenever a mod is used, a map pack will include a "mods" text file that mari0 will read from. If the mods suggested in the pack-do not exist, then the game will download from a mod repository everything it needs for the pack to work. Inspired partly by Tiny Core Linux, which keeps everything outside of the core system in an "Optional" folder that can be deleted in one fell swoop.
Managing mods
Over time, the mods folder, should such a thing exist, will contain every single approved mod downloaded. Some of them will be pack-specific, some of them will be graphics packs, other will be function mods and enhancers. Still, these things will exist in their own directory, and should be managed in-game, much like if a "Moddable" program is open, add-ons, plugins and extensions can be managed. This should also lead into the DLC and local menus, giving users the option to delete map packs without having to visit where they are stored. (Should also obsolete the "Press M for mappack folder" selection)
Implementing mods
The easiest way I can think of doing this is to simply install mods and enable them from the main menu. The editor should also have a similar menu for turning mods on and off, which will update available tiles, and delete tiles that are not being used. As mods are switched on and off, the mods text file will be modified to suit. Any user will see this added hurdle to using mods as a useless distraction, but in the long run it will allow the user to have complete control over what goes into the editor. So for the sacrifice of "Get up and go", users can micromanage what they wish to use so function creep and forgetting how stuff works happens much less often.
When finished, installation should be a breeze. When a map is selected, the game will seek out this mods text file, and if it does not exist, or all dependencies are satisfied, go straight into game; Otherwise, mods will be downloaded and put in their appropriate places, and the game will retry loading with these mods enabled.
mari0 is still young, and while it's a crap-ton of work to ask Maurice, it will benefit the community in the long run, with mods coming out of the proverbial arse, and only quality, useful content getting approved. The option for local mods should still exist, but users shouldn't rely on the existance of some odd mod an author forgets to include, so letting the game do the heavy lifting for users will be an immense long-term benefit.
Why all this matters
One word. Netplay. If you are connected to the internet, you can play with your friends. If you are able to play with your friends, then them too can download the same mods you can. Automating everything will lead to a much more enjoyable experience for everybody as there isn't much user confusion, which means people can get to their game and fun times much faster than otherwise.
The second word is ease, which I have already emphasized far too much on here. Let's make this happen for the benefit of our community.
-
- Posts: 18
- Joined: 08 Mar 2012, 01:05
IMO, an open-source indie game is only for Casual Players when the game is in the original state. Modding for an O-S game has and always will be for the more involved.
If you can't handle sorting out your own folders with all the different .love/.exe/.whatever files, then you shouldn't be using mods.
And since this game is Open-Source, you can add this mod system of yours by yourself instead of begging Maurice, you seem to know exactly what you are talking about.
If you can't handle sorting out your own folders with all the different .love/.exe/.whatever files, then you shouldn't be using mods.
And since this game is Open-Source, you can add this mod system of yours by yourself instead of begging Maurice, you seem to know exactly what you are talking about.
- The Architect
- Posts: 13
- Joined: 09 Mar 2012, 07:29
Exactly...this is Mari0, not Mass Effect...also not sure why OP considers himself the rule maker on this...open source means open - no rules...
There are some issues with the other people that need to be sorted out. First, I wasn't writing rules. I was emphasizing the rationale behind this so very much because I feel this is super-duper important if netplay ever does happen.
Second, I DON'T know what I am doing. If I could code it myself, I wouldn't need the help of you more intrepid coders who make half this stuff happen out of what appears to be from a top hat. I am what most here would call a noob. And forever a noob I shall be until I get the gall to get serious about programming, which most likely will never, ever happen. Whoever does do a netplay system that takes into account mods, gold stars for them.
Third, rules. There ARE rules in open-source. Sure, they are more flexible, but they are rules to follow, especially when incorporatiing functions from more-established software. Maurice had to follow a strict set of rules when programming mari0 for it to function, otherwise if He just typed any old thing out, it wouldn't run in love. Hell, Linus has to follow his own rules He made up for other people when it comes to working with software, like how to handle Git packages and how to best modify the kernel.
Goes back to point #2, if I could just type into a text editor "Analyze mari0 and make P2P netplay and mod transfer within the game happen", then save it and have it work, then I wouldn't have made such a lengthy-ass post about it.
Second, I DON'T know what I am doing. If I could code it myself, I wouldn't need the help of you more intrepid coders who make half this stuff happen out of what appears to be from a top hat. I am what most here would call a noob. And forever a noob I shall be until I get the gall to get serious about programming, which most likely will never, ever happen. Whoever does do a netplay system that takes into account mods, gold stars for them.
Third, rules. There ARE rules in open-source. Sure, they are more flexible, but they are rules to follow, especially when incorporatiing functions from more-established software. Maurice had to follow a strict set of rules when programming mari0 for it to function, otherwise if He just typed any old thing out, it wouldn't run in love. Hell, Linus has to follow his own rules He made up for other people when it comes to working with software, like how to handle Git packages and how to best modify the kernel.
Goes back to point #2, if I could just type into a text editor "Analyze mari0 and make P2P netplay and mod transfer within the game happen", then save it and have it work, then I wouldn't have made such a lengthy-ass post about it.
-
- Posts: 18
- Joined: 08 Mar 2012, 01:05
The only rules we should follow regarding this game is the rules that Maurice has set.
Which, in regards of modding, is none.
Which, in regards of modding, is none.
To use LÖVE you have to utilize its API, but that has nothing to do with OSS.lovechild wrote:Third, rules. There ARE rules in open-source. Sure, they are more flexible, but they are rules to follow, especially when incorporatiing functions from more-established software. Maurice had to follow a strict set of rules when programming mari0 for it to function, otherwise if He just typed any old thing out, it wouldn't run in love.
- creeper1919
- Posts: 29
- Joined: 10 Jul 2013, 19:56
how do you install modloader
Last edited by Sašo on 12 Jul 2013, 15:20, edited 1 time in total.
Reason: removed font effects
Reason: removed font effects
Don't use colored text, or any other font to edit your text in some way. They're meant to be used to point out helpful information, not because you can do it anyway. And you've bumped this by over a year. Don't do that, look at the last post's date. If it's been a while (~1 month), don't post, unless it's urgent.creeper1919 wrote:how do you install modloader
As for your question, I believe ucenna made a modloader a while ago.
You can find that here.
The part about downloading the mods is doable through Lua, in case anyone was wondering. I'm using it myself to download stuff such as DLC and whatnot to my Lua game. AFAIK, it only works with public dropbox links, but might just work also with something like mediafire. If anyone wants the source, I'll gladly post it. However, for the most part about modding, SE will have custom enemies which are mappack-dependent.
Well, for the DLC, it's quite simple. Firstly, you have to do:
Somewhere in the love.load function. Then, you can easily do this:
What you then do, is call the new download function:
During load, I check that version from the function:
This is how you'd download the mods, more or less. In this case, it's self-updating, but just as an example. You can test it yourself. I've done trials with just public dropbox, but also the Stabyourself logo for the forums, and a few other things. It works. I haven't tried Mediafire just yet, though.
Code: Select all
http = require("socket.http")
Code: Select all
function download(imagelink, settingslink, location, filename)
if type(imagelink) ~= "string" then
imagelink = tostring(imagelink) --it has to be a string URL, or it won't work
end
--Shit just got real
local file
info, b, c = http.request(imagelink) --request 'info', the data that we want, and store it
if not love.filesystem.exists("version/") then
love.filesystem.mkdir("version/") --for update checking
end
if settingslink then --this is for the DLC, mainly for hats
local d,e,f = http.request(settingslink) --again, we're storing to 'd' the info of the file
file = filename:gsub(".png", "") -- since this is for hats, I use a hats folder to load the custom ones. They have their own folder in "hats/" named after their graphic
if not love.filesystem.exists("hats/" .. file) then
love.filesystem.mkdir("hats/" .. file) -- we'll need to make the directory if it does not exist
end
love.filesystem.write(location .. "/" .. file .. "/" .. "config.txt", d) --write the config file
end
if settingslink == nil then
file = "" --since it's for updating purposes, I skip naming the folder
end
love.filesystem.write(location .. "/" .. file .. "/" .. filename, info) --write the other file that can be anything (text file, png, etc)
end
Code: Select all
function checkversion()
local versionlink = "link-to-new-version.txt"
download(versionlink, nil, "version/", "version.txt") --always check
local aa = love.filesystem.read("version/version.txt")
return aa
end
Code: Select all
if tempnew > versionstring then
print("WE NEED AN UPDATE NOW!")
download("url-to-new-version", nil, "version/", "game.love")
else
print("Version: OK!")
end
You should at least give credits to Hatninja and me. Hatninja made it work, and I was wondering how Lua socket was supposed to work properly.