· 6 years ago · Oct 27, 2019, 01:04 AM
1???Today at 12:32 AM
2@master2015hp this individual is 99% certain to have just simply cut and pasted code from my Victory Aftermath Level Up plugin and just pasted it on Olivia's
3https://master2015hp.itch.io/olivia-victory-addon
4itch.io
5Olivia Victory UI's addon _ Extra Actor Info window| Rpgmaker Plug...
6add extra windows to give detail info about Levelup Actors
7
8https://img.itch.zone/aW1hZ2UvNDY3NjY4LzIzODg0MTAuanBn/original/nxwpbO.jpg
9
10And they're reselling it
11https://master2015hp.itch.io/addon-yepgridfreedoodads this one is also apparently just key bindings attached to code I've made that they're also reselling
12itch.io
13addon for YEP Grid Free Doodad | Rpgmaker Plugin by Isabella Ava
14make it more convenient to work with Yanfly Grid Free Doodad
15
16I'm going to suggest you guys get rid of this person from the server
17
18Resi ♥Today at 12:38 AM
19Is anything going to be done about him essentially selling your code?
20
21???Today at 12:41 AM
22Already reporting them on itch.io
23Going to get them taken down
24@master2015hp banned from the Portal server for theft and resell
25I suggest you guys do the same
26
27Czar ZarslaToday at 12:51 AM
28Doesn't this break MV EULA:
29https://master2015hp.itch.io/mv-database-wizard
30I believe it does but I may be wrong
31itch.io
32MV Database Wizard by Isabella Ava
33simple software for modifying RPGMV 's Classes database
34
35
36???Today at 12:59 AM
37I still see them on this server
38
39Resi ♥Today at 1:58 AM
40@??? It's taken care of.
41
42BakuToday at 1:58 AM
43Just one second before I could do it xD
44I just woke up.
45
46SRDudeToday at 2:43 AM
47I'm a little confused, so I hope you don't mind me asking for clarification, but what aspect of the plugin is so damning that is must be plagiarism? While both look similar, surely it could just be the design that is being used, not the original YEP Aftermath Levelup code itself? @???
48As for the second plugin, I mean, how do we know it isn't just an extension plugin that only uses original code? It seems to make it very clear that it relies upon YEP Grid Free Doodads, so I can't imagine it does anything besides perform runtime modifications?
49
50BakuToday at 3:41 AM
51:Thinking: yea I just looked into it now, do we have more proof that the code is stolen?
52
53BakuToday at 3:49 AM
54Actually... I shouldn't get involved in this. I don't want trouble.
55
56SRDudeToday at 4:03 AM
57Welp, I really, REALLY hate to do this, but I have to give my two cents. I think what just happened here was really not OK.
58
59While this person undoubtedly based their plugin's design off of Yanfly's, there is no evidence that any code was taken. Yanfly's article refers to a "distict" way the numbers as displayed, but the way the numbers are displayed is a very typical method used in RPGs and RPG Maker plugins. Just look at MogHunter's Battle Results, while not the same design, the numbers' structure is the same. It's the same as most equipment plugins and vanilla RM equipment. It's not that bizarre.
60
61Another uncomfortable part about Yanfly's article is the second message of the person. It was very clear the second I read it they were referring to the core RPG Maker MV API (drawRect from rpg_core.js is what they're almost certainly referring to). Yet this seems to have been misinterpreted as them using Yanfly's API? Despite the uncertainty, this is treated as solid evidence of their plagiarism.
62
63I went into the RPG Maker Portal, I read the entire context. There wasn't much. Irina immediately labeled them as a plagiarist, and Yanfly stated that they reported them to itch.io. This was before they even came into defend themselves. When they arrived, they were already treated like they had done something wrong. In a matter of a couple confused messages, they were banned. I will admit, they should have provided the source code to Yanfly in a DM asap, but it's very clear that there was a lot of confusion there, and English is not their strongest suit. While you can look at their actions from the perspective of someone guilty and it lines up, I think an argument can be made that their actions also line up with an innocent person's. If they have done nothing wrong, why should they have to go through so much effort to defend themselves? I'm sure they were thinking something along those lines.
64.
65Of course, I wouldn't be writing this message if this was all. But it was enough to push me to go and purchase the plugin myself to be 100% certain. After comparing this plugin and Yanfly's Level UP Aftermath, it is pretty clear they did not plagiarize from it (I'm sure it's still possible they could've plagiarized some other plugin, but that's the only one I compared). Their plugin takes a very PIXI/Object Oriented approach to the design, it definitely feels like a completely unique take on a similar design. There is clearly a lot more animation, and plenty of twists on the design itself. I will link after this message for people to compare themselves.
66
67If Yanfly wants to take the perspective of "you shouldn't sell an extension plugin without permission" that is one thing, but this person is clearly being attacked for plagiarism. That's a serious accusation, and I think way more should have been put into the investigation.
68.
69Yanfly, I love you, I really do, but I also think some of your behavior was really unacceptable. You used your authority to immediately destroy this person everywhere. While I understand that it is justified if their crime was real, it happened so fast, without any second thought.
70
71Furthermore, pressuring the mods on here to immediately ban this person with messages like: "I still see them on this server" is not cool, especially on such flimsy evidence. It's OK if they remain in the server for a couple more hours, I think the people who run this server have the right to make that decision on their own.
72
73Your authority is also something you should take into account. The messages Baku sent above says everything. They are too afraid to even question the idea that this person is innocent because you are so certain they are guilty. Such certainty should not have been laid down, because there was no certainty in this case. Even I am... very uncomfortable writing this message, because I don't want to be hated or laughed at because of my rightful uncertainty. But I do feel it is my duty as another figure in this community to call out something like this, so I am. Even if I end up wrong, there is something I overlooked, and it ends up this person did plagiarize, I still feel that my doubts are justified. So I hope if it does turn out I'm wrong, that you can understand where I am coming from. But, I am writing this because I am fairly certain that I am not wrong, and the person who was immediately banned and defamed on your site is also not wrong.
74Attachment file type: code
75master2015hp_OliviaVictoryAddon.js
7622.44 KB
77
78ᴅairnonToday at 4:22 AM
79the one this is being compared to is YEP_X_AftermathLevelUp? @SRDude
80
81SRDudeToday at 4:24 AM
82@ᴅairnon yes
83
84ᴅairnonToday at 4:24 AM
85I'm having a very hard time to see any similarities between the two
86
87SRDudeToday at 4:25 AM
88I'm glad you agree. It's, like, not even close. -_-
89Like, I totally understand Yanfly and Irina's perspective, based on what was available from that person it didn't look good; but... plagiarism is so serious, it really needs a lot of evidence before something like what happened is done.
90
91ᴅairnonToday at 4:27 AM
92like seriously
93what specifically am I supposed to be eying as directly copying
94This seems really standard way to take on the objective at hand
95
96???Today at 8:05 AM
97@Resi ♥ thanks, they've also been caught on RMW for lots of rule breaking and suspicious behavior as well
98
99First off, thank you SRD for what I assume you purchased the product to check it. However, if an event like this arises in the future again, I advise you to not do it again since you should always be cautious of your flow of money. But thanks to that, we are able to check the code and yes, you are correct, that the code is not similar, but only at first glance. Let me explain:
100
101YEP:
102Window_VictoryLevelUp.prototype.refresh = function() {
103 this.contents.clear();
104 var bitmap = ImageManager.loadFace(this._actor.faceName());
105 if (bitmap.width <= 0) return setTimeout(this.refresh.bind(this), 5);
106 this.resetFontSettings();
107 this.resetTextColor();
108 this.drawActorAppearance();
109 this.drawDarkRects();
110 this.drawStatChanges();
111 this.drawLearnedSkillsTitle();
112};
113
114
115Theirs:
116Window_ActorLevelUp.prototype.refresh = function() {
117 this.contents.clear();
118 this.drawBackground();
119 this.drawBackgroundRewardStrip(actorStat_x - 20, actorStat_y - this.lineHeight(), actorStat_w - 100, 100);
120 this.contents.fontSize = cFontSize;
121 this.drawText(str1, actorStat_x - 20 + ckeIndent * 5, actorStat_y - this.lineHeight(), actorStat_w - 100, this.lineHeight(), 'left');
122 //this.drawForeground();
123};
124
125
126Seems innocent enough right? However, that's where the inexperienced eye just looks at a few more things and stops.
127
128Theirs:
129Window_ActorLevelUp.prototype.createSubWindows = function() {
130 this.createPortraitWindow();
131 this.createStatWindow();
132 this.createContinueWindow();
133};
134
135
136continued into next post:
137
138???Today at 8:12 AM
139Hmm? Am I unable to type here?
140Okay, Discord's being unfair, but I'll chop it up
141They split up the refresh function into a trio of other windows where the code is then disassembled.
142
143YEP:
144Window_VictoryLevelUp.prototype.drawStatChanges = function() {
145 this.contents.fontSize = Yanfly.Param.ALUFontSize;
146 for (var i = 0; i < 9; ++i) {
147 var rect = this.itemRect(i);
148 this.drawRightArrow(rect);
149 this.drawParamName(i, rect);
150 this.drawCurrentParam(i, rect);
151 this.drawNewParam(i, rect);
152 this.drawParamDifference(i, rect);
153 }
154};
155
156
157In my example above, if you are familiar with RPG Maker MV, the usual index that stops for base parameters is 7, not 8. Yet:
158Theirs:
159Window_ActorStats.prototype.createSubWindows = function() {
160 var statData = "";
161 for(i = 0; i < 9; i++) {
162 switch(i) {
163 case 0: statData = "Level"; break;
164 case 1: statData = "Max HP"; break;
165 case 2: statData = "Max MP"; break;
166 case 3: statData = "ATK"; break;
167 case 4: statData = "DEF"; break;
168 case 5: statData = "MAT"; break;
169 case 6: statData = "MDF"; break;
170 case 7: statData = "AGI"; break;
171 case 8: statData = "LUK"; break;
172 default: statData = "Test";
173 }
174 this._subWindows = new Window_SubStats(statData);
175 this.addChild(this._subWindows);
176 subStat_y += this.lineHeight();
177 }
178}
179
180Hmmmm, so why use such an arbitrary system that's like YEP Aftermath instead of drawing level separately and then go the usual 0 to 7 loop?
181
182This leads into the splitting of code even further down the road. I would go ahead and post the code to take a look at the second level and further but Discord's 2000 character limitation stops that from being done elegantly so I'll just type up the function names instead:
183YEP:
184Window_VictoryLevelUp.prototype.drawStatChanges and functions called inside are basically transcribed into these:
185
186Theirs:
187Window_SubStats.prototype.getData
188Window_SubStats.prototype.getDataOld
189Window_SubStats.prototype.drawData
190
191The major difference is that they have all the plugin parameter fluff inside it removed from the YEP Aftermath Level Up plugin.
192
193???Today at 8:20 AM
194I'll leave the intricate details but let's see what happens if I strip away the plugin parameter fluff:
195
196this.drawText(TextManager.param(index - 1), x, y, this._paramNameWidth);
197this.drawText(Yanfly.Util.toGroup(this._actor._preVictoryParams[index - 1]), x, y, this._paramValueWidth, 'right');
198this.drawText('\u2192', x, y, dw, 'center');
199var newValue = this._actor._postVictoryParams[index - 1];
200var diffvalue = newValue - this._actor._preVictoryParams[index - 1];
201if (diffvalue === 0) return;
202var text = Yanfly.Util.toGroup(diffvalue);
203if (diffvalue > 0) {
204 text = ' (+' + text + ')';
205} else {
206 text = ' (' + text + ')';
207}
208this.drawText(text, x, y, this._bonusValueWidth, 'left');
209
210
211theirs:
212this.drawText(this.title, ckeIndent, 0, this.width, this.height, 'left');
213this.drawText(String(this.valueOld), 150, 0, this.width, this.height, 'left');
214if (this.valueOld != this.value) {
215 this.drawText('→', 200, 0, this.width, this.height, 'left');
216 this.drawText(String(this.value), 250, 0, this.width, this.height, 'left');
217 var str = '(+' + String(this.value - this.valueOld) + ')';
218 this.changeTextColor(this.textColor(3));
219 this.drawText(str, 300, 0, this.width, this.height, 'left');
220}
221I'm not going to dive layer upon layer upon layer because that's just going to be repetitive
222However, I will say this
223This is a case of where "to hide a body, you have to chop it up into little pieces first"
224
225I gave them a chance to defend themselves, they didn't do it. In fact, I always give people chances to defend themselves. While I did say I would report it, such an action has not yet been concluded as of yet. But the important thing here is the fact that they did not want to defend themselves, making it come off as that they have something to hide, but then reacted as if they did.
226Now, I can continue on with this if you want, but I'd rather go onto my next point, which I deem to be more important
227
228???Today at 8:32 AM
229Point #2: The article was not to instate proof of plagiarism but instead, awareness. In fact, the "plagiarism" and similar root words haven't even been used in the article. While I will agree that the article is not painting them in a welcome light, its purpose is not to do such a thing due to their shady behavior. However, before you accuse others of attacking an individual for plagiarism, you also have to make sure they are accusing them of such a thing in the first place.
230
231Furthermore, things happened behind the scenes regarding this individual:
232
233Archeia did verify it to me that Isabella Ava was banned from RMW for reasons disclosed (rule breaking and other offenses).
234The quick ban to action was a result of the confirmation and adhering to Portal's rules.
235
236So if you thought I acted recklessly in regards to this matter, I suggest you revise your train of thought to make the pieces fall back together.
237Now, all that having been said
238Point #3 is something I wanted to bring up for a long time
239A really really really long time
240Someone from 4chan brought this up to me
241
242Can you explain to me what this is about?
243I ignored it for a while since you've done a decent service to the community, but as you're putting the spotlight on me in regards to my stances on plagiarism, I suppose I should do the same to you.
244But of course, as I mentioned before, I always give people a chance to defend themselves.
245I'll be returning later tonight to check up on any messages as I'll be gone for the day for errands.
246See you all later.
247
248Czar ZarslaToday at 8:44 AM
249@??? I have a question. If someone is making a paid plugin, and ends up for compatibility reasons ends up using you're code, would it be better to just turn that part of the code into a patch for users that's free to download?
250
251???Today at 8:44 AM
252Make the paid plugin separate, leave a free to download compatibility patch
253However, if they ran it through me first for permission, I'm usually okay with it
254The difference here is, this person did not run the permission through me
255And instead, is selling it as their own product
256Where the only things they've really done is just dissect the code into smaller bits and pasted it on top of Olivia's Victory UI
257
258Czar ZarslaToday at 8:46 AM
259@??? I see. also thank you for the explanation.
260
261ArcheiaToday at 10:09 AM
262I also think its to note that this person shouldn’t be profiting from olivia paid plugin and selling it this way. They didn’t get permission?
263As far as im aware olivia isnt mit either
264Thats like me in a scenario getting rtp, editing and reselling my edits to public
265But that’s just opinion
266
267Resi ♥Today at 10:56 AM
268I'm guilty of repurposing your code in my projects too yanfly as you solve a lot of issues many people have and it's easy to use code that exists to make something work
269
270SRDudeToday at 12:06 PM
271Wow, that's a lot to digest. I apologize for the delay, my sleep schedule is wonky on the weekends.
272
273Um, I'll try to address everything. But before that, let me first respond to Archeia's input, because it is an interesting one. I would agree that it's sort of a gray area to sell extension plugins, but let's not forget that RPG Maker MV itself is a commercial product. By selling any sort of plugin, you are relying upon the engine's privately licensed code and "profiting" from it in the same way one is "profiting" off of extending someone else's plugin. I think as long as a plugin isn't literally copying the entire engine into the code, and instead forces the users to have their own copy, then there's nothing wrong with that. Since, after all, the modifications, while dependent on another's code, are still owned by the creator of said modifications.
274
275The same applies to this case, as this Ava's plugin doesn't copy Olivia's code, it simply assumes its existence and attempts to make additional modifications on their own ground. So it's within their right to sell it. That's my perspective on the matter at least.
276
277SRDudeToday at 12:18 PM
278Now, of course, I should probably delve directly into the plagiarism accusations against myself. These are especially interesting, because they do highlight issues with the perception of plagiarism.
279
280First of all, the biggest ones, the middle two which involve counting files/directories in the system, I distinctly recall relying on StackOverflow for this. If I type "list files with png extension nodejs" into google, this one pops up first, which uses an identical structure to the one shared between our plugins: https://stackoverflow.com/questions/25460574/find-files-by-extension-html-under-a-folder-in-nodejs
281
282When it comes to the NodeJS API, there is only one way to really accomplish what we both needed in this situation. A list of files, appropriate for both Doodads and the runtime Character Creator. Now admittedly, the variable names are similar, and I can only blame this on coincidence. If you want, I can probably go through other plugins and find instances of me using "result" and "fs" all over the place.
283
284The setTimeout usage on the other hand is 100% based on your method. I have no doubt that I read a Yanfly plugin and got the idea from there. But does that mean that I'm no longer allowed to ever use it for such a function? setTimeout is a built in JavaScript function that is made for that specific purpose, and I have no doubt that at the time of writing said plugin, it was simply the method I relied upon without needed to reference any of your plugins. This is... once again a gray area. I would not consider this plagiarism, and clearly the implementation was done in a different fashion that would only be logical of someone who clearly understood how the function worked. This is something that should require consultancy from other programmers, but in my experience, understanding and adapting abstract methods is not the same as directly copying code.
285Stack Overflow
286find files by extension, *.html under a folder in nodejs
287I'd like to find all *.html files in src folder and all its sub folders using nodejs. What is the best way to do it?
288
289var folder = '/project1/src';
290var extension = 'html';
291var cb = function(err, r...
292
293
294ArcheiaToday at 12:24 PM
295Rmmv codwbase for game engine is open source btw amd has been in github. Not editor code.
296I still count that as different
297
298SRDudeToday at 12:26 PM
299I don't know how to respond to the top comparison however. I don't know how that could possibly occur on accident. I thought that was something from the RM codebase, but as stated, it's not present. I often have your most popular plugins installed in my project when developing in order to maintain a decent amount of compatibility. I suppose it's possible I mistook one of your plugins as a core file, and referenced the regular expressions and usage from there. It's a stretch, but there's no way I would do something like that on purpose.
300
301I do feel that if that comparison I legitimate, I sincerely messed up and would be more than happy to take responsibility in any way possible. Even as a mistake, it is inexcusable, and I would be down to resolve the issue in anyway possible. I will publicly admit my fault and remove the plugins in question if you so desire. I think the other comparison's are a stretch just built to support the main one, but I certainly feel the first one is my fault. I hope we can discuss this more at a later time.
302.
303Really? You can use the RM engine without purchasing RPG Maker MV? :thinking:
304
305ArcheiaToday at 12:28 PM
306Yes
307The game engine
308Osscript iirc
309
310inVictorToday at 12:28 PM
311We all learned some coding from looking at Yanfly’s plugins, I thought that was the idea, specially considering that there was a T&T section on his Patreon for a very long time in which he helped us minor developers with code. I don’t see how it’s an issue that some of the code looks alike, specially considering SRDude never did plugins for a profit :thinking: I mean, Yanfly should be proud he inspired people’s coding. I don’t think this is a case of plagiarism but again I look at the definition of plagiarism from an academic perspective.
312
313ArcheiaToday at 12:30 PM
314Donations can count as profit but thats always debated. Its why yanfly said he never mentioned it till now
315
316SRDudeToday at 12:33 PM
317Well, I still think that code, regardless of its dependencies, is 100% owned by the creator. If selling extension plugins is forbidden, that should be made very clear in the terms of use. RMMV plugins still contain properties like parameters and other data that can only be exclusively read by the RPG Maker MV editor, so I do feel my point still stands.
318But, I do feel we are getting off track here.
319
320ArcheiaToday at 12:34 PM
321Yes but i feel that if u r piggybacking on fellow indies work ppl tend to be harsher
322Honor amongst thieves idiom
323
324SRDudeToday at 12:35 PM
325Absolutely. If anything, I would say its worse to sell an extension to a free plugin. At least in this case, every customer of Ava's is forced to also purchase a copy of Olivia's.
326
327ArcheiaToday at 12:35 PM
328Yes but think of i this way
329What of a pedophile made an extension to ur paid plugin, are ok with that?
330Not saying ava was but thats a situation
331Even corporations discuss collabs with one another
332
333SRDudeToday at 12:37 PM
334I see what you're saying.
335
336ArcheiaToday at 12:38 PM
337In short, its why i support communication with og dev first
338Before u do anything.
339
340SRDudeToday at 12:38 PM
341But once again, that goes back to my point about general RPG Maker plugins. There has never been a process or a movement to create a process to receive explicit permission from Kadokawa for every plugin dev.
342
343ArcheiaToday at 12:39 PM
344Rpgmaker has an exclusive state clause to not reverse the editor
345But game scripts are mit license
346
347SRDudeToday at 12:40 PM
348Ok