Jump to content

Ethical Quandry


Talksintext

Recommended Posts

So, 6 months back I was helping beta test a mod (YAWM). The modder (NCrawler) had given me access to his beta files, which had seriously altered the coding of the mod. He was close to releasing it when he went MIA from the forums. I've tried PMing him a few times then and since without response. He never indicated anywhere his stance on sharing his mod, so I don't know how open he was to it. I tend to assume modders don't mind others taking their ideas and running with them, unless it's art assets or something, but that doesn't mean it's right to share without permission anyway.

 

Here's the thing, his code was good, and it would help other items modders to significantly improve their spawning (it basically circumvents the SuburbsDistribution table insertions we've all grown accustomed to having to do).

 

Now, the code is something anyone with extensive experience could put together with maybe 1-2hr of work, I personally have made very similar sorts of code for other games (though in a different language so I couldn't have done it in this game so easily), and additionally I've extensively altered the original code (and lost the original he gave me) I was given by NC for personal reasons once it was clear I was done beta testing. The basic framework of NC's code is still there, but the guts have been all moved around and added to.

 

My question is, after so many months away without contact, having asked for permission say 10 days prior without response, would I be 'right' to share the code I've personally modded extensively with this community openly now, assuming I credit NC with the underlying concept?

 

 

Also, if anyone knows additional contact info for NCrawler, it would be much appreciated.

Link to comment
Share on other sites

seems like someone with a yellow name would be able to access the members e-mail address and send a friendly "We miss you, please come back" e-mail. i know we could in other forums i have been in.

Link to comment
Share on other sites

The standard modding permission on our forum is this:

 

http://theindiestone.com/forums/index.php/topic/2530-mod-permissions/?p=36477

 

As a modder I'd much rather see my "dead" mods be updated / taken over by someone else, rather than vanishing, especially if it helps the modding community (hence why all my mods are open :P).

 

You could release it and - just in case -  NCrawler comes back and wants you to remove the mod, you could still remove it by then.

Link to comment
Share on other sites

I personally would disagree with RoboMat in a general context - assuming something was said, or at least implied, about it not being released. (In the case that it was left in the hands of- or exclusively with the OP, then it'd be freely his choice of whether to update or extend it)

I'd be pretty furious if someone I'd trusted to share my code with went and made changes to it at a later date without my acknowledgement. That's just me though, being a Web Developer by day I recognise that every programmer has a distinct way of writing code, and if that pattern is broken, then you can't really ever get back in to developing it further yourself. Most multi-person projects have some level of agreement between coders of the style and notation that should be used, and still then different parts of the project can be recognised as different people's work.

 

What I'm saying, is that if it was my Mod (which it isn't), and you went and extended or updated it without at the very least a reply of acknowledgement from me, and I came back again - weeks, months, years later I'd feel as if you'd taken my pet project from me and trained it up to fetch sticks for you rather than me.

Edit: Some programmers get very protective of their little 'pet' projects... Other's, not so much

Link to comment
Share on other sites

Writing a custom item spawner isn't too hard. I'm not sure what NCrawler's code did, but if you really are afraid to use it, then you could take a look at the story-spawner I wrote for one of my mods:

-- =============================================================================-- Muldraugh Tales-- by RoboMat-- -- Created: 11.11.13 - 23:31-- =============================================================================require'StoryHandling/StoryLoader.lua';require'StoryHandling/StoryTracker';-- -------------------------------------------------- Global Locals-- ------------------------------------------------local NO_NOTES = 11;local NO_LETTERS = 8;local NO_FLYERS = 11;local NO_PHOTOS = 1;local TYPE_NOTES = "Note";local TYPE_LETTERS = "Letter";local TYPE_FLYERS = "Flyer";local TYPE_PHOTOS = "Polaroid";local SPAWN_CHANCE_ALL = 50; -- Spawn chance for stories that have no room restrictions.local SPAWN_CHANCE_SPEC = 25; -- Spawn chance for stories that have room restrictions.local stories = StoryLoader.getStories();local spawnPoints = StoryLoader.getSpawns();-- -------------------------------------------------- Local functions-- ------------------------------------------------local function spawnStory(_id, _container)	local id = _id;	local story = stories[id];	local container = _container;	if story then		local item;		if story.tags['<type>'] == "letter" then			item = "MuldraughTales." .. TYPE_LETTERS .. (ZombRand(NO_LETTERS) + 1);		elseif story.tags['<type>'] == "flyer" then			item = "MuldraughTales." .. TYPE_FLYERS .. (ZombRand(NO_FLYERS) + 1);		elseif story.tags['<type>'] == "polaroid" then			item = "MuldraughTales." .. TYPE_PHOTOS .. (ZombRand(NO_PHOTOS) + 1);		else			item = "MuldraughTales." .. TYPE_NOTES .. (ZombRand(NO_NOTES) + 1);		end		local newNote = container:AddItem(item);		local modData = newNote:getModData();		modData.id = id;		print("Spawned story: \"" .. id .. "\"");	endend----- @param _roomName-- @param _containerType-- @param _containerFilled--local function spawnGlobalStories(_roomName, _containerType, _containerFilled)	local roomType = _roomName;	local containerType = _containerType;	local container = _containerFilled; -- ItemContainer	-- Make sure we have saved stories for this container type.	if spawnPoints.global[roomType] then		-- Spawn stories that are limited to certain room spawn.		if spawnPoints.global[roomType][containerType] then			for key, id in ipairs(spawnPoints.global[roomType][containerType]) do				if ZombRand(SPAWN_CHANCE_SPEC) == 0 then					spawnStory(id, container);				end			end		end		-- Spawn stories that can spawn everywhere in the world.		if spawnPoints.global["all"][containerType] then			for key, id in ipairs(spawnPoints.global["all"][containerType]) do				if ZombRand(SPAWN_CHANCE_ALL) == 0 then					spawnStory(id, container);				end			end		end	else		print("No stories for " .. containerType);	endend----- Spawns all stories with a specific coordinate. The difference to global-- stories is, that they have a 100% chance to spawn, only spawn once and-- always spawn at the same place.-- @param _roomName-- @param _containerType-- @param _containerFilled--local function spawnSpecificStories(_roomName, _containerType, _containerFilled)	local container = _containerFilled; -- ItemContainer	-- Cycle through the stories that have a special spawn place.	-- Get the container's coordinates.	local x = container:getSourceGrid():getX();	local y = container:getSourceGrid():getY();	if spawnPoints.specific["X" .. x .. ":Y" .. y] then		for _, id in pairs(spawnPoints.specific["X" .. x .. ":Y" .. y]) do			print(id);			spawnStory(id, container);		end	else		print("No stories have been found for these coordinates.");	endend-- -------------------------------------------------- Game Hooks-- ------------------------------------------------Events.OnFillContainer.Add(spawnGlobalStories);Events.OnFillContainer.Add(spawnSpecificStories);

It's pretty coupled to my mod of course, but at least you have my permission to do what you want with it ;)

Edit: Some programmers get very protective of their little 'pet' projects... Other's, not so much

I agree with you there, but there is also a difference between programs / apps / scripts / libs you have written (especially if they are to be used commercially) and a mod for a game in my opinion :) As long as proper credit is given I don't see any harm in using a script that he _shared_ with the OP.

NCrawler is free to come back to his project (of which the spawning script only seems to be a small part anyway) at any time.

I mean what are the possibilities here? Talksintext could still reverse engineer NCrawler's code and write a script of his own and I know a lot of people are doing this - but that's what I feel is a bit unethical :D

Link to comment
Share on other sites

Well, I tried to be as open and constructive as I could to help the community. For better or worse, it's now open to everyone to use. I've not shared the rest of his beta files with anyone, just the one .lua that's relevant to this.

 

As someone who's done significant modding, I can understand being frustrated by that, but also as someone who's watched so many mods and good ideas go to waste, it frustrates me to no end to see good work rot in the dustbin of a game's history and become unusable as the engine progresses. As far as I can tell, NC never made specific claims on his content, as such the community norm of free sharing with credit is to be expected.

 

However, I understand that as a beta tester, I'm not necessarily held by such a free standard, but he's not responded to anything I've sent him since Jan, and other mods are coming up and moving along with a lot more content and active creators that could use the code.

 

Might be I'm never asked to beta test again in this community if I really broke his trust. I guess I can live with that.

 

http://theindiestone.com/forums/index.php/topic/9693-how-to-spawn-items-without-suburbsdistribution-inserts/

Link to comment
Share on other sites

Talksintext, you should not have an ethical quandry in regards to my code.  I don't make money off of it, like my day job, so it's not like you are taking food off of my family's plate or anything.  I'm actually surprised that someone would want to use it anyway as it is not very optimized or efficient.  Being a .Net programmer, this LUA stuff harkens back to my assembly and Ansi-C programming days, and I have forgotten most of what I knew 20+ years ago.  Lol.  At any rate, it's open source, just credit where credit is due...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...