Legacy GM [Solved] Gamemaker 8.x (gmres file format)

Discussion in 'Programming' started by cabledragon, Oct 8, 2019.

  1. cabledragon

    cabledragon Member

    Joined:
    Oct 8, 2019
    Posts:
    2
    Okay, so this is a stretch and first let me apologize if this is the wrong forum. I feel like it could fit in a number of them, and my first choice was the advanced programming board, but that's locked, legacy gm support seems to be mostly just user issues, and programming in general seems to be a little broad for the topic specifically. There's a tl;dr below, but for those who care for the full story... here we go. *deep inhale*

    I'm working on making development tools in GM 8.1 for a rather large-ish scale project. (For those wondering, I prefer older GM for a number of reasons. Overall it just comes down to preference.) Developing the tools will be rather straight forward. They will be contained in a single Editor program that will have 2 modes, a "map editing mode" and an "object editing mode." These are basically just going to replace what GM already has with something a little more minimalistic/WYSIWYG.

    The map editing will be easy enough, creating a custom file format, storing data in a nice compact manor, store object locations, flags, etc... and then compressing it all. No issue.

    The object editor on the other hand is posing a problem, the plan is to export the objects to a file much the same as the map editor, but the issue comes with importing them afterwards. GM has plenty of features for the dynamic creation of objects, or "run-time" creation, whatever you prefer. (Although, I'm not sure if adding an object and setting it's code via "object_event_add" suffers the same penalties as using "execute_string" which suffers a serious performance hit. I haven't done any tests yet to check that side of things because there is another issue at hand.)

    The issue I'm having with this idea of loading the objects from files, well it's just that, load-time. I assume after a few thousand objects, each with their own code, sprite info, and other data, there will be a considerable load time, wherever I decide to load them into the program. The two solutions I see to this are:
    1. Loading the objects AS THEY ARE NEEDED, only loading objects I will be using per scene, menu, etc. This cuts down on load-times, but for larger scenes it will still be there and it will still be needed EVERY SINGLE TIME the game is run or a scene is loaded.
    2. Going in and manually adding every object to the main game file, essentially making the editor useless and doubling up on workload.
    The first option is okay thought not the most elegant and makes future programming/forwards compatibility a big mess. But perhaps it will be the one only option that "works." The second option is tedious and at that point I might as well just create the objects in the standard editor, but I still need a maintained list of all of these objects and some visual representation of them for use with the map editor.

    [tl;dr]
    Which brings me to my actual question, sorry for those of you who read all of that. Gm 8.1 has the ability to export and import resources via the editor through a ".gmres" file. However this file and it's format are to some capacity obfuscated.

    Is it possible to edit ".gmres" files in any reasonable capacity? Or is there any information available on their contents or how the data is stored? I don't know if these files are like this for any practical or legal reason, or if reverse engineering their contents is forbidden, if so, please let me know up front. But if anyone has any decent knowledge on this subject, please contact me, I'd be very interested.

    Thank you for your time and patience anyone who suffered through that, I know this is a question that probably only Mark or some GM dev would know the answer to, but feel free to surprise me! As far as I know, all support for ".gmres" files has been dropped during the transition to GMS so I assume it's safe to discuss.
     
    Last edited: Oct 8, 2019
  2. YellowAfterlife

    YellowAfterlife ᴏɴʟɪɴᴇ ᴍᴜʟᴛɪᴘʟᴀʏᴇʀ Forum Staff Moderator

    Joined:
    Apr 21, 2016
    Posts:
    2,409
    Your best bet would probably be to use gmk-splitter to convert a GM81 file into XML-based structure, modify it externally, and assemble it back together.

    object_event_add only compiles the code once, thus is less costly than execute_string.

    I wouldn't worry about dynamically loading objects, however - code doesn't add up to much in terms of memory and overhead from it just "existing".
     
  3. cabledragon

    cabledragon Member

    Joined:
    Oct 8, 2019
    Posts:
    2
    This is exactly what I needed! Thank you very much! I didn't even think about splitting the .gmk/81 file itself!

    Haha, this is why you ask other people for help, kids! They often have a nice viewpoint outside of your perspective or something you could have simply overlooked due to being too focused on trying to do something a specific way!

    Remember that a pair of fresh eyes is an invaluable development tool!
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice