Search Unity

Multiplatform Runtime Level Editor

Discussion in 'Assets and Asset Store' started by FreebordMAD, Jun 10, 2014.

  1. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    Yes, this is on the todo list, but I'm currently to busy with my kids and my job... so it will take some time.
     
  2. Marz1887

    Marz1887

    Joined:
    Mar 26, 2018
    Posts:
    2
    Is this usable in a 2D sprite form? I'm interested in applying it to the Rex Engine
     
  3. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    The MRLE is not designed for 2d sprite editing and will need changes from your side.
    I can support you in this process, but you must have advanced C# coding skills for this.

    Feel free to try it out, if it doesn't work for you, then ask for a refund within 10 days by mail.
     
  4. Pascal-

    Pascal-

    Joined:
    Mar 23, 2013
    Posts:
    32
    Dear Denis,

    I'd like to edit the walls and floors of a room. Basically I'd like first to change their materials using the variation approach. How can I replace the demo game scene of LE_ExampleDungeonEditorGame with my room scene keeping that room in the hierarchy panel as I need to generate lightning before building and having the walls and floors editable?

    Thanks a lot in advance,
    Pascal
     
    Last edited: Apr 23, 2018
  5. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    You need to make prefabs for your walls and floor and set them up as LE_Objects. Then start the dungeon scene and delete all LE_Objects from it via the hierarchy while running the scene in Unity. Then drop your room prefabs into the dungeon example scene and arrange them. The prefabs must be loadable, this means in resource folders as the example ones with the path variables set. Finally, save the level via the runtime menu and use the resulting txt file to reload your scene on games startup.

    Keep me posted on your progress and don't hesitate to ask for details.
     
  6. Pascal-

    Pascal-

    Joined:
    Mar 23, 2013
    Posts:
    32
    Thanks a lot Denis,

    It's working fine but I have an issue with the lightning. The LE_object, here my wall, which is static is loosing the original generated light solution. Is there a way how not to destroy and then not to replace the LE_object by prefab on start, that my wall keeps same generated lightning like other ones?
     
    Last edited: Apr 23, 2018
  7. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    You can arrange your objects in the scene, bake lighting and save it.
    When the user clicks the save button, then you need to remove the LE_Object scripts from objects that are part of the scene.
    Alternatively, delete objects that are loaded on the same position as the scene objects by iterating the results of LoadLevelDataFromBytesCallback.

    Keep me posted on the progress.
     
    Pascal- likes this.
  8. Pascal-

    Pascal-

    Joined:
    Mar 23, 2013
    Posts:
    32
    Thank You Denis! I found the way baking the lightmaps data to prefab.
     
    Last edited: Apr 20, 2018
  9. Pascal-

    Pascal-

    Joined:
    Mar 23, 2013
    Posts:
    32
    Dear Denis, I got the extension, but how to implement properly the popup_fileselection_root in the LE_ExampleDungeonEditorGame scene?
    Thank you in advance,
    Pascal
     
  10. LordUber7331

    LordUber7331

    Joined:
    Oct 25, 2016
    Posts:
    2
    Hey, I have a question about MRLE, is there a way that loot spawning table can be implmented into the level?
     
  11. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    Usually it works out of the box.
    Import the extension and click load or save while playing the LE_ExampleDungeonEditorGame scene. The popup_fileselection_root prefab will be loaded.

    This is not yet included in MRLE.
    You could use the object variation feature to assign loot values to objects. Create a loot script that will spawn loot by loading a prefab. Add child objects to the LE_Object prefab containing your loot script with different spawn prefabs e.g. normal loot, epic loot, trash loot. Then use the variation feature to allow assigning the loot level by the players when they place an object.

    To both of you, don't hesitate to ask for further details and keep me posted on your progress. Keep in mind that a review would help a lot! :)
     
  12. Pascal-

    Pascal-

    Joined:
    Mar 23, 2013
    Posts:
    32
    It's working in the editor, from the fps scene, but when I try to build for webgl I get that error,

    Assets/LapinerTools/LevelEditor_FileSelection/Scripts/LE_FileSelectionHelpers.cs(8,67): error CS0426: The nested type `FileSelectionExtensionLoader' does not exist in the type `LE_LevelEditor.Extensions.LE_ExtensionInterface';

    Any Idea about what I should do?
    Thank you,
    Pascal
     
  13. LordUber7331

    LordUber7331

    Joined:
    Oct 25, 2016
    Posts:
    2

    Thanks, by the way if is not too much trouble can explain it in more detail, maybe step-by-step.
     
  14. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    Sorry to say that, but it is not possible to select any files on the players PC from WebGL, which relates to security guidelines enforced by all browser's.

    1. Create a loot script that will spawn loot by loading a prefab.
    2. Add child objects to the LE_Object
    3. Add you custom loot script to these child objects
    4. Configure your loot script with different spawn prefabs e.g. normal loot, epic loot, trash loot.
    5. Use the variationfeature to allow assigning the loot level by the players when they place an object. See http://www.freebord-game.com/index....time-level-editor/documentation/level-objects
    Please ask questions regarding certain steps from above
     
  15. Pascal-

    Pascal-

    Joined:
    Mar 23, 2013
    Posts:
    32
    Thank You Denis, I was guessing that. What should I do if I'd like to save/load the levels, levels info and level pictures to server? Do you have already some solutions with the extension or any experience using for example packages like "easy save" or "save game pro" ? Would you have time to develop such an integration as freelancer maybe?

    Please let me know,
    Thank you
    Pascal
     
    Last edited: Apr 25, 2018
  16. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    Instead of saving to file you need to send the bytes generated by the save function to the server.
    http://www.freebord-game.com/index.php/multiplatform-runtime-level-editor/documentation/save
    Hit find references on SavedLevelData and see how it can be converted to a Base64 string.

    When loading you then need to get back that bytes and load as below:
    http://www.freebord-game.com/index.php/multiplatform-runtime-level-editor/documentation/load

    Unfortunately, I don't have time for freelance work right now.
     
  17. Pascal-

    Pascal-

    Joined:
    Mar 23, 2013
    Posts:
    32
    Thank You!
     
  18. ledlamp

    ledlamp

    Joined:
    Apr 19, 2017
    Posts:
    5
    Hey, I'm a little confused about level icons with the meta data… We store our worlds on a server, and we want to be able to load a list of worlds with level icons. I'm thinking I would have the server generate a JSON document including the level icons encoded as base64. But this asset saves level icons inside of the meta data file. Currently we are zipping the level data and meta together, making the world one file. Should I save the level data and meta separately, and have the game download each world's meta file to load each world's icon (or include the meta files in the list)? But then what if we want to use the icon outside of the game (such as in web browser)? Or the game could get the level icon data when saving and upload that separately? But then the meta would unnecessarily have an icon, unless I can disable saving the icon in the meta file. What would you recommend?
     
  19. Outlandos

    Outlandos

    Joined:
    Oct 24, 2015
    Posts:
    1
    Hi Denis,

    First of all let me say great work on the editor. I can tell you've put a lot of work into it.

    I am trying to load models at runtime and be able to select and manipulate them using your system - I'm using a custom object browser I built myself - essentially I want to be able to use the move, rotate, and scale widgets on objects loaded from files at runtime (as in, not prefabs, and not in the resource folder - basically I am loading in .obj files from anywhere on disk and applying components to them at runtime). I understand that your object browser only works with prefabs in the resource folder, but I don't wish to use the object browser - just the move, rotate, and scale widgets. Objects would be selected by clicking on them in the scene (something else I haven't figured out how to get working). I am able to attach the LE_Object component to my objects but that doesn't seem to be sufficient to allow me to select and manipulate the objects. What is it that I'm missing?

    Thanks in advance!
     
  20. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    First of all, sorry for the very late replies!!!
    I was very busy with my regular job and got ill later...

    Yes, I did it like this in my game Mad Snowboarding. I would download a level list with names only, then for those levels that I wanted to show (e.g. first 20) I would download the level meta data and load the icons from it.

    You will see that a small PNG file is created for each level in the same folder were the level txt file is saved (with the save load extension), you could also use this PNG as a preview.
    (You could also increase the resolution of the PNG file.)

    Usually you level will be much bigger than the level icon, so it would not make much difference to optimize it away from the meta data.

    Thanks for the feedback! Would be great to see this in a review.

    It should work if you attach the LE_Object script to an object while using the editor scene. Doesn't that work?
    Maybe your object has no collider (needed to detect the mouse click)?
     
  21. peteradvr

    peteradvr

    Joined:
    Dec 22, 2016
    Posts:
    11
    I'm trying to figure out why the Camera Perspective Gizmo shows up on the left when I build out to mobile, and on the right while in the Unity Editor. I have Screen.orientation = ScreenOrientation.Landscape; on mobile. I figure that might be playing a part in the mater?

    Editor:
    upload_2018-7-17_13-9-32.png
    Mobile:
    upload_2018-7-17_13-10-1.png

    Thanks! Love your editor asset, its very useful!
     
  22. peteradvr

    peteradvr

    Joined:
    Dec 22, 2016
    Posts:
    11
    I figured out what was going on with my issue. There is a CanvasScaler in the scene set to favor height, and the offset you use to reposition the gizmo doesn't seem to account for that. It looks like you might be doing something to try to correct for that but I could never figure how to fix the code to re-position it next to to your level editor UI on the right.

    I got around this issue by rendered the gizmo to a separate render texture, and applied it to a UGUI RawImage, anchored to the upper right corner, so it would get consistently re-positioned with the rest of the UI as the CanvasScaler updates for different screen sizes. I also passed hit information from that RawImage through to the camera used for the gizmo so you could still click on the gizmo to interact with it.
     
  23. Lesnikus5

    Lesnikus5

    Joined:
    May 20, 2016
    Posts:
    131
    I'm interested in the possibility of streaming levels using this asset. In the documentation, I read that it is possible to store the positions of objects if they were moved by the player: "position, rotation and scale are cached when spawned objects are destroyed because the object is too far away. The object will be instantiated with the transformation, which it had when it was destroyed, when it is close enough again. On the one hand, you can save the state of your world."

    How is this implemented? How large worlds can you stream? Data is saved in one file or is it possible to split a giant level into many files and use only one or another file depending on the coordinates of the player? As I understand, only in this case the size of the world will be unlimited.

    Can I create multiple groups of objects with different creation and removal distances? For example, trees can be created at a distance of 300 meters from the camera, characters - 100 meters, and small objects such as boxes, chests, 50 meters?

    Finally, the issue of performance. Is there a drop in frames when streaming a large number of objects?

    I would really like to play in a demo to independently evaluate the possibility of streaming the level (with enable cache transformation of far objects). Can you make a Windows demo for me?
     
    Last edited: Aug 3, 2018
  24. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    First off all, I have to say sorry again to all for the late replies! My regular job is taking far more than 100% of my time in the last year...

    Great to hear that you have fixed the problem yourself! Also, you solution sounds very interesting ;)
    By the way, seen your comment "Love your editor asset, its very useful!" in an Asset Store review would be awesomely helpful!

    In general the MRLE stores only some meta data of object and not the objects themselves. Hence, the amount of objects is unimportant. The only thing that would consume memory are terrains, but from your questions I don't see any plans of yours to use Unity Terrain. As an example, let's assume that one object uses up 256 bytes to be stored (it is FAAAAR less in reality) and you have 100.000 objects in your level, than the size of you level will be below 25MB. Assuming that even your endless world will have less than 100.000 objects, I conclude that memory is not an issue. Furthermore, if you want to reduce the level size you can ZIP the level file, which will reduce it by at least 70% => 100k objects would be only 8MB.

    Yes, you can just set Instantiate Distance and Destroy Distance properties on you LE_Object scripts of your trees, boxes and characters (Every placeable prefab has a LE_Object script).

    I have tested with 1000 grass objects from the demo instantiated while moving within 3 seconds on smartphones, which by now are 4 years old and it worked well.

    Sure just get it from the link below and try out the objects from the streamed category.
    http://www.freebord-game.com/MultiP...atformRuntimeLevelEditorWindowsStandalone.zip

    [EDIT:] you can also use the Windows Store version or WebGL all demos here:
    http://www.freebord-game.com/index.php/multiplatform-runtime-level-editor
     
    Lesnikus5 likes this.
  25. Salja

    Salja

    Joined:
    Mar 23, 2017
    Posts:
    353
    Hey is the asset still in development any updates planed ? Unity 2018 ready? Thanks
     
  26. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    The MRLE is actively supported. If you have problems in new Unity versions, then report them and I will fix them. However, there might be some delays in the support if it gets complicated, you will get a reply within a week on those cases.

    The MRLE has a backlog defined mostly by the requests in this forum thread. Unfortunately, I'm to busy with my private life and my regular job right now. It could take a while till the next feature update, but I plan to continue working on this.
     
  27. TropicalGW2

    TropicalGW2

    Joined:
    Oct 16, 2018
    Posts:
    2
    I'm currently using this in a project at the moment, could you point me in some kind of direction on what would be the best way to verify the level on a multiplayer basis. I'm wondering if there is much we could do to stop someone loading in a different level under the same name etc and playing on a different map.
     
  28. Shredsauce

    Shredsauce

    Joined:
    Apr 4, 2016
    Posts:
    37
    Save your level to a database and use a unique identifier to access the level.
     
    FreebordMAD likes this.
  29. TropicalGW2

    TropicalGW2

    Joined:
    Oct 16, 2018
    Posts:
    2
    We will be using steam workshop for it, not our own database.
     
  30. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    Guts & Glory uses hashes to protect some values. For example, make a hash of all object positions and store it in the additional meta data of the level. Then let all players send the hash after loading to the hosting player and compare it.
     
    nirvanajie likes this.
  31. aidangig56

    aidangig56

    Joined:
    Aug 10, 2012
    Posts:
    105
    Hello

    I am missing the 3d axis navigation thing see screenshot. How can I restore it?


    Thanks
     
  32. derkoi

    derkoi

    Joined:
    Jul 3, 2012
    Posts:
    2,260
    Looks like your tree is set to align with terrain, so the Y axis is disabled.
     
    FreebordMAD likes this.
  33. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
  34. aidangig56

    aidangig56

    Joined:
    Aug 10, 2012
    Posts:
    105
    Thanks for the help but the scale, rotate, and move axis is not visible after dragging in an object. I am clueless as to why this is happening. Also can any of you help me instantiate an object dragged in over the Photon network? I have added a Photonview component to the prefab however, it doesn't instantiate properly and only shows for local client when I join the room.

     
    Last edited: Jan 8, 2019
  35. aidangig56

    aidangig56

    Joined:
    Aug 10, 2012
    Posts:
    105
    UPDATE - I wrote code to add Photon Network instantiation. If I need help I'll be sure to reach out for that one.

    But does anyone know why the editing axis's are gone? Should I reimport the package? Would I lose the progress on the script I modified? Update me please.
     
  36. devotid

    devotid

    Joined:
    Nov 14, 2011
    Posts:
    445
    As free board said.. Make sure the scale and rotate boxes are ticked on the prefab to be able to do that.
     
  37. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    Please send screenshots of your LE_Object setup
     
  38. aidangig56

    aidangig56

    Joined:
    Aug 10, 2012
    Posts:
    105
    I figured it out. Thanks for offering though
     
    FreebordMAD likes this.
  39. aidangig56

    aidangig56

    Joined:
    Aug 10, 2012
    Posts:
    105
    Hello!

    I have been implementing your asset into my game. I am using it for Photon for multiplayer usability. How can I get the loading to work over the network? Photon adds (Clone) onto an object instantiated overt the network. So I can get it working on the initial save but when I modify and it adds (Clone) it gives me an error like the following. I need to just have 1 (Clone) in the game objects name. Not (Clone)(Clone) etc etc. Or else it brakes the save.

    See screenshot.
     
    FreebordMAD likes this.
  40. MJDevsGames

    MJDevsGames

    Joined:
    Jan 9, 2019
    Posts:
    38
    Hello!

    I am very interested in purchasing the Multiplatform Runtime Level Editor for a game our team is working on! I have one important question though:

    Where can I find and view the legal documentation for this software? Does purchasing the Multiplatform Runtime Level Editor allow our team to freely use and modify the software for our game, while maintaining full ownership of our game? Are any royalties required for using the software, and do we retain full ownership of our game if we use this software in it? Is there any place that I can find the answers to these questions?

    Thank you very much!
     
  41. devotid

    devotid

    Joined:
    Nov 14, 2011
    Posts:
    445
    I believe you need to read the Unity Asset Store Eula or Guidelines.... As anything put up on the store is covered by the same EULA... But I believe you are fine. Denis is a great guy and Im sure he will be in here soon to help ya out.
     
    MJDevsGames likes this.
  42. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    Just add a script that removes '(Clone)' from an objects name, e.g. name.Replace("Clone", "") in on Start.

    It is the general asset store licence: https://unity3d.com/de/legal/as_terms
    To sum it up:
    * you can do what ever you want with your game after adding MRLE, including selling it without any royalties
    * you can sell your game, but you cannot sell any Unity Asset store package on its own => add a game to it and you are fine
    * you cannot resell any part of the MRLE on the asset store
    * you cannot make your game open source including the MRLE code
    * etc... nothing fancy
     
    MJDevsGames likes this.
  43. aidangig56

    aidangig56

    Joined:
    Aug 10, 2012
    Posts:
    105
    Thanks for the help. I really appreciate it :)
    How can I support Steam workshop download support from the in-game gui? I tried the example scenes but they do not load the scenes content. They just say "Item Played" and you close the window.
    Any help would be much appreciated.
     
  44. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    In 'Assets\LapinerTools\LevelEditor_FileSelection\Integration\' you should have the MRLE_SteamWorkshop_ESI_Example.cs file (also attached here). It shows how to upload a level with the FileSelection extension. You should also be able to see the files to be loaded when having this script in the scene (it will call LE_LevelEditor.Extensions.LE_ExtensionInterface.FileSelectionInstance.LevelDB = new LE_LevelEditor.Extensions.LE_LevelDatabase_SteamWorkshop(); on Awake).

    To load files without the file picker see documentation here:
    http://www.freebord-game.com/index.php/multiplatform-runtime-level-editor/documentation/load
     

    Attached Files:

    aidangig56 likes this.
  45. aidangig56

    aidangig56

    Joined:
    Aug 10, 2012
    Posts:
    105
    Thanks for this when I click the play button from the Steam workshop browse example script it doesn't load the contents. Any idea as to why?

     
    Last edited: Feb 15, 2019
  46. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    Did you change something? Something is NULL in the logic behind the play button
     
  47. aidangig56

    aidangig56

    Joined:
    Aug 10, 2012
    Posts:
    105
    See my screenshot also find a pastebin link to the scripts that should be used for this
     
    Last edited: Mar 5, 2019
  48. MJDevsGames

    MJDevsGames

    Joined:
    Jan 9, 2019
    Posts:
    38
    Thank you so much for your replies!

    I have one more question. What is the best low-cost / free approach to allowing players to upload levels and terrain they make with the MRLE? We are fine if there is a delay in the process (Time is not a big factor), we just need some safe in-game way that players can send files they create to a server / location where we can access them, so that we can then take these files and put them into Unity / in-game for use.

    What suggestions do you have for this? Thank you so much!
     
  49. MJDevsGames

    MJDevsGames

    Joined:
    Jan 9, 2019
    Posts:
    38


    Also, I have an additional question! I saw that the asset is listed as One License Per Seat; What are your expectations for this rule? Do you expect that every person that has access to the project (Including modelers and artists) has a license, or that only those who are editing the functionality that uses the MRLE?

    As a specific example, if we have two coders on our team, and only one of us works with MRLE and our game's level-editing functionality while the other coder works with non level-editing code and doesn't touch MRLE assets, would we be allowed to use just one license? Or would we need 2 licenses regardless? Our team would like to ultimately pay for both licenses and have both coders using the tool, but we are tight on funds for a little bit, so I wanted to ask if you would be okay with this usage under 1 license!

    Thank you very much for your responses!
     
  50. FreebordMAD

    FreebordMAD

    Joined:
    Mar 15, 2013
    Posts:
    633
    Make a Steam game and use Steam Workshop - Easy Steamworks Integration.
    Alternatively, host your own server and upload files there with a simple PHP upload script. Allow to get a listing of all files and download them again.

    Buy once licence now and when you start earning money with your game, then buy licences for each developer that has used or is using the MRLE.