Now with gamemaker studio source files are no longer stored in a proprietary format – instead they are stored as simple XML files containing all data. Now I am wondering, can projects created with gamemaker be licensed using an open source license – especially wondering about the GPL and BSD/APACHE families?
And if so how to? The biggest objection I see is that all files are generated by gamemaker – and regenarated each time gamemaker saves/loads. The main problem with this is that GM will remove any “unrecognized” data from the xml (so any comments). Including copyright notices.
A second problem is that gamemaker typically creates a few dozen files, basically for each function a separate file is created.
A typical generated xml looks as following:
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName><undefined></spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName><undefined></parentName>
<maskName><undefined></maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>xml = FS_xml_open("C:UsersuserDocumentsfilesystemstudent.xml");
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="9" enumb="13">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>var root_elem = FS_xml_root_element(xml);
show_message("start with root element: " + FS_xml_get_elem_name(xml, root_elem));
xml_test_display_func(xml, root_elem, "");
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>
(where you can see that the amount of non-generated actual code programmed corresponds to 4 lines). Adding something like <!-- copyright 2013 ....... >
to each file does not work as the notice will simply get replaced the moment gamemaker “saves”.
Is using a central COPYRIGHT notice file “enough” for open source formats? Can that be used with GPL/APACHE? If it is incompatible, what would cause this?
6
IANAL, but I think Earlz’s comment is spot on (of course different countries might have different rules, contact an intellectual property lawyer if you want to be 100% certain).
Copyright is implicit, it belongs to the original creator. That’s the person who pressed the “generate” button in a computer program as much as it is the photographer who presses the shutter release on his camera (which would also fall under Michael’s “generated and therefore can’t be copyrighted”, when we all know photos ARE copyrighted material) or the painter putting his pencils to the canvas.
Of course copyright and licensing are different beasts, but generally speaking the copyright owner can determine how to license his or her creations, barring restrictions placed upon him by the law or other contracts (I don’t know Gamemaker, but have seen in the past code generators that required generated code to be released under a specific license, so double check).
There’s no need to have a license statement in each code file, just as there’s no need to have a copyright notice in each work (source file, photo, painting). As long as you notify the recipient of the terms under which he can use your work, that should be enough (Da Vinci didn’t write a license agreement on the back of the Mona Lisa either, nor Ansel Adams on his photographs…).
4