PDA

View Full Version : MLLE - Playing catch-up with DJazz


Pages : 1 [2]

Stijn
Jan 12, 2012, 01:51 AM
Just immediately fork a version for Violet? Worst case, no one does anything for the public version and work on Violet's separate fork continues as-is. Best case scenario, the public fork is picked up by community coders.

Of course, it's still Violet's own project, so it's up to him, but I don't see any harm in making it open source.

Love & Thunder
Jan 12, 2012, 05:22 AM
I mostly agree with Stijn(Although I don't think it should go Opensource until it's gone gold), especially with the second paragraph(Technically the 5th), it is Violet's own project, so it's his choice.

Stijn
Jan 12, 2012, 08:50 AM
A mostly agree with Stijn(I don't think it should go Opensource until it's gone gold)
That's not at all what I said...

Love & Thunder
Jan 12, 2012, 12:11 PM
... "I mostly agree with your first paragraph(Technically the first two)" was what I meant.

Stijn
Jan 12, 2012, 12:35 PM
Yeah, and you clearly misunderstood it, since it doesn't say anything remotely close to "I don't think it should go Opensource until it's gone gold", rather the opposite.

Love & Thunder
Jan 12, 2012, 11:37 PM
I wasn't very clear about that. That bit was just something I added in, I'll edit that so it makes sense. It was supposed to say "Although I don't think it should go opensource until it's gone gold".

sonicnathan 1
Jan 21, 2012, 01:17 AM
Great work Violet! I'm gonna be doing a Let's Play of the 1.10g version of the game, and this could come in handy for showing off a few things.

Since a very glitchy springcord works in 1.10g, do you think you can add it to the list of events so I don't need to hex edit it in?

Violet CLM
Jan 21, 2012, 05:50 AM
edit the .ini file

Violet CLM
Jan 22, 2012, 09:20 PM
<a href="http://www.sendspace.com/file/qm1pa0" style="font-weight: bold">MLLE test release #2.1</a>

So I was wrong. Not everything from the last checklist is in there yet, but I did a lot of bug-fixing and minor-feature-adding today and yesterday and so I guess I'll drop the results of my frenzy here before doing something else for the rest of the night. Enjoy. Tell me whatever you think warrants telling, even if it's an issue that's been reported before, because I may well have forgotten about it. (As ever, if you run across an error, please include steps to reproduce it if at all possible.) No documentation yet, so have some hotkeys instead:

1-8: View that layer.
Ctrl + 1-8: Edit layer properties for that layer.
Ctrl + plus/minus: Zoom in/out.
Ctrl + M: Toggle mask mode.
M: View partial mask.
Ctrl + P: Toggle parallax mode.
P: View partial parallax.
Ctrl + V: Toggle event view.
Ctrl + Shift + R: Save & Run, with the start position temporarily moved to wherever your mouse is.
F, Backspace, E, Ctrl + E, Shift + E: You know how these things work.
Comma: Copy current tile.
Shift + Comma: Copy current tile and the event on it.
B: Begin or end a selection of tiles to grab.
Delete: Clear layer/selection.
Ctrl + C: Copy current selection.
Ctrl + X: Copy and delete current selection.
Ctrl + D: Deselect all.


Also, tileset hotkeys:

Shift + T: Assign tile transparent tiletype.
Shift + 0-9: Assign tile that tiletype, if possible. (e.g. 1 for Transparent and 4 for Caption in regular JJ2 levels.)


Additionally, holding down the Control key while using either of the first two drawing tools (Paintbrush and Fill) triggers an alternate mode so they work somewhat differently.

thanks to Neobeo for specifications and sound code; Overlord for password specifications; DJazz for experimenting and provocation; Jerry for everything Battery Check; Jerry and zapS for help with .LEV files; cooba for icon

Jgke
Jan 23, 2012, 05:59 AM
And the community for suggestions? :p
Anyways, how about choosing a block of tiles in the tileset view and there changing all of them at once to other type?

Toni_
Jan 23, 2012, 08:56 AM
Ctrl + D: Deselect all.

Isn't the spacebar a button what deselects all in real JCS? If it is, could you change it to spacebar ?

Violet CLM
Jan 23, 2012, 08:57 AM
Jake: if you mean the second and third ideas from my recommendations thread, that's currently untenable because no file format for the external .j2tprofile (or whatever) files has yet been chosen. The point of introducing such things is to have standards, not secret proprietary files.

Random: Ooh, I had forgotten the space bar, but I will add it shortly. Anyway, they're different functions. Space is like a more extreme (and IMHO less useful) version of backspace. Ctrl + D is used with the Selection tool, which is sort of like a more complicated version of the B key that can be used to select more complicated regions than single rectangles (http://img35.imageshack.us/img35/8826/mlleselection.png). It's used in conjunction with Ctrl + C and Ctrl + X, and if you have part of the layer layout selected, then placing a group of tiles inside the selection (e.g. with the fill tool or with an especially large stamp) will not affect tiles outside of the selection and vice versa.

Anyway: MLLE Test Release #2.1 (http://www.sendspace.com/file/qm1pa0)! Changes:
bass.dll is now included in the .zip, so the Play Music option will actually work.
Changing the Transparent and Tile 0 colors no longer crashes MLLE if no tileset has been loaded, and they also affect the mask instead of just the image.
(Note that MLLE.ini has not changed between 2.0 and 2.1, so if you already downloaded 2.0, then you might not want to extract that file so that you don't have to go through the folder-finding sequence again.)

Jgke
Jan 23, 2012, 09:12 AM
I meant in the tileset view, like pressing shift + t changes one tile transparent. For changing blocks of tiles at once, much faster.

Toni_
Jan 23, 2012, 09:12 AM
Ok, I think I understand what you said.

Love & Thunder
Jan 23, 2012, 12:31 PM
I started it up and got this:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentException: The path is not of a legal form.
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.Path.GetFullPathInternal(String path)
at System.IO.FileSystemEnumerableIterator`1..ctor(Str ing path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler)
at System.IO.Directory.GetFiles(String path, String searchPattern)
at Mainframe.PopulateTilesetDropdown(Version version, IniFile ini) in C:\Users\Sam\documents\visual studio 2010\Projects\Renderer1\Renderer1\Mainframe.cs:lin e 238
at Mainframe.ProcessIni(Version version) in C:\Users\Sam\documents\visual studio 2010\Projects\Renderer1\Renderer1\Mainframe.cs:lin e 232
at Mainframe.NewJ2L() in C:\Users\Sam\documents\visual studio 2010\Projects\Renderer1\Renderer1\Mainframe.cs:lin e 1021
at Mainframe.Mainframe_Load(Object sender, EventArgs e) in C:\Users\Sam\documents\visual studio 2010\Projects\Renderer1\Renderer1\Mainframe.cs:lin e 339
at System.Windows.Forms.Form.(-)(-)(-)(-)(-)(-)(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Mes sage& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.239 (RTMGDR.030319-2300)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
MLLE
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/MLLE/MLLE.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.235 built by: RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.236 built by: RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
OpenTK.GLControl
Assembly Version: 1.0.0.0
Win32 Version: 1.0.278.44921
CodeBase: file:///C:/Program%20Files%20(x86)/MLLE/OpenTK.GLControl.DLL
----------------------------------------
OpenTK
Assembly Version: 1.0.0.0
Win32 Version: 1.0.278.44921
CodeBase: file:///C:/Program%20Files%20(x86)/MLLE/OpenTK.DLL
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.233 built by: RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

I clicked "Quit", and it started MLLE up anyway, so I tried to exit by clicking on the "X"(Because MLLE was clearly bugged and didn't let me select any Tilesets or Versions properly), then this happened:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
at Mainframe.Mainframe_FormClosing(Object sender, FormClosingEventArgs e) in C:\Users\Sam\documents\visual studio 2010\Projects\Renderer1\Renderer1\Mainframe.cs:lin e 354
at System.Windows.Forms.Form.OnFormClosing(FormClosin gEventArgs e)
at System.Windows.Forms.Form.WmClose(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.239 (RTMGDR.030319-2300)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
MLLE
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/MLLE/MLLE.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.235 built by: RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.236 built by: RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
OpenTK.GLControl
Assembly Version: 1.0.0.0
Win32 Version: 1.0.278.44921
CodeBase: file:///C:/Program%20Files%20(x86)/MLLE/OpenTK.GLControl.DLL
----------------------------------------
OpenTK
Assembly Version: 1.0.0.0
Win32 Version: 1.0.278.44921
CodeBase: file:///C:/Program%20Files%20(x86)/MLLE/OpenTK.DLL
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.233 built by: RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.233 built by: RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

If I click quit on this it doesn't quit, and the same happens again if I try to exit, the only way to exit then becomes Task Manager. This is probably because the only versions of JJ2 I have are TSF, BC, and the AGA Demo, while MLLE automatically always chooses 1.23 on startup. I tested this by making it think that I also have 1.23 installed in my TSF directory and it ran completely fine.

Violet CLM
Jan 23, 2012, 12:37 PM
This is probably because the only versions of JJ2 I have are TSF, BC, and the AGA Demo, while MLLE automatically always chooses 1.23 on startup. I tested this by making it think that I also have 1.23 installed in my TSF directory and it ran completely fine.

Good thinking! I'll put in some conditional checks.

Love & Thunder
Jan 23, 2012, 12:42 PM
Thanks. Oh, and make sure it's compatible with the LK Avalon version! I can't tell you how many times this LK Avalon TSF has made me want to scream at the top of my lungs.

EDIT: Another bug: The Set Water Height event is completely bugged. If you set it to 0, it goes up to the tile the event is on, then every setting up to a certain point(I think it's around 20) leads it up to the top of the level in large chunks, then it starts going down in large chunks until the height reaches 40, where there's nothing. From then on, it goes up by small amounts every 1 setting, and I haven't really tested any further than that.

EDIT 2: If you try to load a level and click cancel, it crashes.

Violet CLM
Jan 23, 2012, 07:48 PM
Thanks. Oh, and make sure it's compatible with the LK Avalon version! I can't tell you how many times this LK Avalon TSF has made me want to scream at the top of my lungs.
This was addressed on page 3, and the conclusion was that there should be no difference whatsoever, since MLLE interacts with the game executable only by passing .j2l files to it. (I guess the ambient sound player might care, if the sounds are at all different between the two versions of TSF anims.j2a, but it'll work either way, it just might conceivably play different sounds for certain numbers.)

EDIT: Another bug: The Set Water Height event is completely bugged. If you set it to 0, it goes up to the tile the event is on, then every setting up to a certain point(I think it's around 20) leads it up to the top of the level in large chunks, then it starts going down in large chunks until the height reaches 40, where there's nothing. From then on, it goes up by small amounts every 1 setting, and I haven't really tested any further than that.

EDIT 2: If you try to load a level and click cancel, it crashes.
I cannot replicate either of these, so you'll have to be more specific. The <strike>latter</strike> former at least sounds like it would be an issue with your JJ2, rather than with MLLE, which treats it as just another event warranting no special treatment.

Love & Thunder
Jan 23, 2012, 07:53 PM
Maybe it was just a 1-time thing. I don't know. I'll test it a bit more later.

Olsen
Jan 25, 2012, 05:39 AM
Playing music doesn't seem to work for me... A very unhelpful error report, I'm sure, but that's all I have. :(

edit: Yes, I have the bass.dll included in the folder.

Other than that, I love this! All the tools available are really helpful, the parallax view mode is unbelievably helpful. The series of dialog windows prompting me to point to my game folders could probably benefit from being a menu instead. I know I can edit the .ini file, but for user-friendliness a menu would probably be for the best.

editedit: Holy shitballs the multipleselection+ctrl+filltool is amazing! No more time wasted filling in the ground details like some zombie!
editeditedit: <3 Violet <3

Violet CLM
Jan 25, 2012, 09:10 AM
Playing music doesn't seem to work for me... A very unhelpful error report, I'm sure, but that's all I have. :(

edit: Yes, I have the bass.dll included in the folder.
Initial questions: did you have your sound turned on, was JJ2 able to play the track/s, and what music did you try it with? (It can't play .j2b files.)
Also: does Play Music work for anyone else?

The series of dialog windows prompting me to point to my game folders could probably benefit from being a menu instead. I know I can edit the .ini file, but for user-friendliness a menu would probably be for the best.
Not a bad idea, if only because all those dialog windows feel a bit like error messages. I'll look into it.

editedit: Holy shitballs the multipleselection+ctrl+filltool is amazing! No more time wasted filling in the ground details like some zombie!
There is a reason I made my Carrotus remake level in this. :) The borders still took some time, although the rectangle tool was handy for sufficiently long edges, but once those were done, a quick fill and the insides are all taken care of. Very pleasant!
(I suspect that Ctrl+Fill may be more common than Fill by itself, but Fill is more similar to Paintbrush in that it uses the whole stamp, and Ctrl+Fill is more similar to Ctrl+Paintbrush in that tiles are placed at random, so. Consistency won out.)

Obi1mcd
Jan 25, 2012, 09:17 AM
This is looking pretty interesting, but I can't access Sendspace where I am. Would somebody be able to put up a mirror? It would be much appreciated.

Olsen
Jan 25, 2012, 11:09 AM
Initial questions: did you have your sound turned on, was JJ2 able to play the track/s, and what music did you try it with? (It can't play .j2b files.)

Yes, yes, carrotus.j2b.

(It can't play .j2b files.)

Oh, lol.

Tried it with an .it file, now it worked!

I assume the reason .j2b files won't play is because the sound format used isn't open source or something?

Violet CLM
Jan 25, 2012, 11:21 AM
They won't play because bass.dll doesn't play them. :P While the file format is understood -- Open ModPlug Tracker (http://openmpt.org/) can play .j2b now, as of course can PSM and J2B modules player -- I know next to nothing about music and I won't try to attempt to get that working all by myself. What I should do is contact Dr. Eggman and see if I can use his .j2b code, like how I'm using Neobeo's code to play ambient sounds.

Love & Thunder
Jan 26, 2012, 06:32 PM
I found another bug: When you Save&Run or Trial Run a Battery Check Level, it does this:
Fatal Application Error
Battery Check signaled the following internal error:

Could not find the library file 'Data.j2d'.

Make sure Jazz Jackrabbit 2 has been installed correctly and retry.
If the problem persists, please reinstall Jazz Jackrabbit 2.

The Data.j2d file is exactly where it should be, and I've made sure that everything is in the Battery Check Folder.
I tried a different method which worked fine though; backup "binnen.j2l", then call your level "binnen.j2l" and test it from within Battery Check. This works as a temporary solution, but it's not ideal.

EDIT: And if you click Save&Run, it saves a new level called "Generic MLLE Level.j2l" or something like that, and runs this new level instead of your level. Trial Run doesn't do this, though.

Violet CLM
Jan 26, 2012, 06:40 PM
What filename were you using for your Battery Check level? I've experienced issues there before. I'll look into the other thing and see if I got the two options switched around or something.

Love & Thunder
Jan 26, 2012, 06:43 PM
It was "batterytest.j2l". It's blank apart from having the same layer 1, 2, 6, 7, and 8 of "binnen.j2l". Oh, and it has a platform in the middle of the level with a Start Pos and a Revive Gate.

Love & Thunder
Feb 5, 2012, 09:07 AM
Another bug: In Battery Check Mode, if you save a level, then minimise MLLE, then start BC up, then exit BC, open up MLLE, then right click and click Set Event, open Events, and all the sections will become options(Like Events). Select any of them, and an error message comes up. The only way to fix this that I can find is to restart MLLE, but it'll happen again once you do this again. This is unfortunate because the above steps are currently the only way of testing levels, as "Save & Run" or "Trial Run" both cause "Unable to find Data.j2d" messages.

Violet CLM
Feb 9, 2012, 06:16 PM
Robo, I've fixed the BC Save & Run, but I can't replicate the error in your latest post. Can you make a video of the steps?

Love & Thunder
Feb 10, 2012, 05:19 PM
Hmm... That's odd, neither can I :(. I'll let you know if I bump into it again.

Love & Thunder
Feb 13, 2012, 05:23 PM
New bug: Animations don't work. I right clicked on a blank Animation Tile in a Tileset, clicked "Edit Animation", and created one, I placed it out, but it didn't work. Not only that, but it didn't show up on the tileset or level view. So, I clicked Save&Run, but it said that there were unknown tiles in the level. I tried deleting the Animation, and it came up with an error, I clicked "Continue", and nothing on the Tileset View or the Level View worked. So, I tried to save, but it came up with another error. In the end, I had to quit MLLE.

Love & Thunder
Feb 18, 2012, 10:47 PM
2 New bugs! Okay, first go into Animaniacs mode, then scroll to the bottom of Layer 4, then look at the coordinates of the currently highlighted tile, you'll see that the last tile or so is being cut off. That's the first bug. Next, try to place a tile in a place that you can't see (I placed a tile at 1,64), then resize the layer to be 256 x 66(Assuming the old Layer Size was 256 x 64), and MLLE will crash.

Here's a video of me doing this glitch:
<iframe src="http://www.youtube.com/embed/tu9hsJZaQdU" allowfullscreen="" frameborder="0" height="510" width="854"></iframe>
(Here's a link in case you can't see embedded videos) (http://youtu.be/tu9hsJZaQdU)

Love & Thunder
Mar 22, 2012, 02:59 AM
... So, is MLLE still being developed?
(Sorry about the Triple-Post, but it's kinda unnavoidable)
EDIT: This post kinda sucks and is unclear. What I meant was: How is MLLE Development going?

Sean
Mar 22, 2012, 04:49 AM
...do we have any facepalm emotes? Too bad.

Violet CLM
Mar 22, 2012, 09:27 AM
Just keep an eye on this post and its last modified dates. That'll tell you everything you need to know.

ThunderPX
Jun 9, 2012, 05:18 AM
Download link is broken D:

Olsen
Jul 30, 2012, 08:44 AM
Minor bug report:

Shift+E pasting an event on a tile and then immediately after pressing E to edit the event causes the event window to display as if there's no event, and if you then press OK there will be an empty event on the tile.

Moving the mouse after using Shift+E or doing anything that causes MLLE to "update" (or whatever) and then using E to edit the event works fine. It seems like the event isn't updated the second you paste an event.

This is quite annoying if you're used to Shift+E and then E to edit the newly placed event (like if you're pasting several enemy events and want to change the difficulty on each one of them).

Jgke
Jul 30, 2012, 01:34 PM
Say, Violet, has there been any progress in converting MLLE to Mono?

Neobeo
Dec 21, 2012, 03:14 PM
The sendspace link on the first post is dead. Any chance you'll reupload this?

Darkhog
Oct 23, 2013, 10:20 AM
Actually, JCS was always a pain to work with. Could you consider following suggestions?

- Level editing should work more like RPG Maker/Stencyl/Tiled than like JCS (though you should leave JCS mode for those insane enough to keep using it). The reason being that this would make placing tiles and object easier. Go check Stencyl's level editor, with some free assets from it's library (program is free as well, though it has very... specific licensing model), that demonstrate pretty much what I have in mind.

-Easy tileset/enemy/object/animation importer. User should be able to select png file and program would break it up into tiles automatically (or animation frames).

-"Level Settings" window, with centralized settings, like tileset used, background (with ability to load and auto convert ordinary image file into background), foreground/background scrolling speed (parallax), etc.

Treylina
Oct 23, 2013, 10:42 AM
I'm fine with the JCS interface. It could just really do with more shortcuts. And previews for certain angelscript features.

Also, fix the download pls.

Violet CLM
Oct 23, 2013, 11:32 AM
Actually, JCS was always a pain to work with.
I'm afraid you're kind of alone in this view.

Trey: I'm not sure if I have the .zip at this point, and I'm no longer able to recompile the program successfully, but someone else mentioned being willing/able to put it in their public dropbox.

Love & Thunder
Oct 23, 2013, 06:36 PM
[...]someone else mentioned being willing/able to put it in their public dropbox.
Now, I'd just like to point out before posting a link that I have no idea how well this version will work, since the Laptop I'm currently using to post this doesn't really run anything very well(And the only other computer I have MLLE installed on is broken), so -- with that in mind -- here you go (https://www.dropbox.com/s/0hg3a1qx1y5hdsq/MLLE%20Oct17.zip).
If I manage to get my other laptop working(Or if I get access to its HDD) and it has a later version, I'll update this post.

Violet CLM
Oct 24, 2013, 12:16 PM
No, that's only the first build. Here, I put it on J2O for permanency.

minmay
Oct 24, 2013, 01:25 PM
what the heck i went 15 years without knowing about backspace?

Jerrythabest
Oct 24, 2013, 11:11 PM
I guess so. Maybe you didn't read the help file back then? :p

cooba
Oct 24, 2013, 11:23 PM
backspaceI can't even begin to calculate how much time I could have saved by knowing this.

Jerrythabest
Oct 24, 2013, 11:59 PM
You didn't know either? :O Michiel should have included a "Tip of the Day" prompt in JCS to show these things to people who don't read the help file :p

Seren
Oct 25, 2013, 12:08 AM
I might've heard of it but ignored and forgot it because I never encountered the need to use it. Backspace is far from either of my hands when I'm making a level, therefore using "B" for this purpose is faster in all cases. No matter where in the level you are, you usually have an empty tile nearby. If you don't, you usually don't need to place one. If you do, you usually want to erase a large space, so "B" is still faster as it lets you grab a whole group of empty tiles. No matter what, backspace sounds useless to me - maybe if it were closer to the remaining hotkeys.

Violet CLM
Oct 25, 2013, 12:12 AM
using "B" for this purpose is faster in all cases. No matter where in the level you are, you usually have an empty tile nearby.
Sounds like you're using B in place of Comma.

cooba
Oct 25, 2013, 12:16 AM
Comma..............

Seren
Oct 25, 2013, 12:26 AM
Which is also just about as far and less flexible.

Jerrythabest
Oct 25, 2013, 01:02 AM
I wonder, Cooba, did you ever try pressing stuff like E, Ctrl+E and Shit+E? :D

Also, I think using B to select a single transparent tile is not quite helpful, because you need to hold down Shift in order to place it. The only reason I would use B on transparent tiles is because using B on a group of transparent tiles with (preferably different types of) events allows you to put those events elsewhere with Shift + click (or Shift + Enter).

Violet CLM
Oct 25, 2013, 01:03 AM
<strike>or I</strike>

cooba
Oct 25, 2013, 01:04 AM
I wonder, Cooba, did you ever try pressing stuff like E, Ctrl+E and Shit+E? :DCome on, now, I'm not /that/ special.<strike>or I</strike>Ha! This one I knew.

Seren
Oct 25, 2013, 02:11 AM
Also, I think using B to select a single transparent tile is not quite helpful, because you need to hold down Shift in order to place it.
I don't understand how you can consider holding shift more effort than reaching out to backspace. When you work with JCS - or nearly any other program that doesn't require you to write too often - one of your hands should be on the mouse and the other one in the shift area for the most important hotkeys: - in JCS they're B, F, E, ctrl+E, shift+E, shift+T, ctrl+S, ctrl+Z, ctrl+R, occasionally number keys. Backspace and comma are then between your hands and unreachable by either. Meanwhile, B and shift are right under your fingers.
I wonder, Cooba, did you ever try pressing stuff like E, Ctrl+E and Shit+E? :D
That reminds me, obviously it would be difficult to work without these in the level window, but I always wondered - is there anybody who uses them in the tileset window? I don't, because setting it up feels like a waste of time and I don't use event tiles that often, and when I do I often want to give them parameters.
Shit+Ehttp://img30.imageshack.us/img30/8499/oa2n.jpg

Violet CLM
Oct 25, 2013, 08:45 AM
Well, if I'm setting a group of tiles to all use the same event--usually Hurt or Vine or One Way--then sure, all but the first are going to be done by keyboard.

minmay
Oct 25, 2013, 10:30 AM
Sounds like you're using B in place of Comma.ASDFJLKASDFJLASKDJALSKFJALSDKFJALSDJSLFKJSDF NO STOP IT

Jerrythabest
Oct 25, 2013, 12:25 PM
This thread is becoming more hilariouser with every post.

Violet CLM
Oct 14, 2014, 12:16 AM
I was bored and reuploaded MLLE.
Comes with .ini support for <a href="http://www.jazz2online.com/jj2plus/plus-readme.html#jcsevents">JJ2+ event/texture/tile type stuff</a>
Repurposes "I" key to work exactly like the "F" key, except it flips tiles vertically instead. The results will only work in JJ2+. In retrospect I should have used a different key, but Illuminate Surroundings is pretty rare and I'm used to Ctrl+I from PSP.
So yeah. No other changes. If it didn't work for you before it probably won't work for you now, and the plusification is pretty clumsy (in particular, "I" really shouldn't work when editing e.g. Battery Check levels), and parallax view doesn't understand the new tile types. But <a href="http://www.jazz2online.com/snippets/86/vertically-flip-any-tile-by-placing-an-event/">this is just embarrassing</a>, so we needed <em>some</em> level editor to support the damn feature. There's a field in one of the .ini files somewhere for JJ2 executable name, which can be changed to Jazz2+.exe or whatever if you want Save+Run stuff to work.

ETA: <a href="https://github.com/Violet-CLM/MLLE">Here's the source.</a> Do anything you like.

Love & Thunder
Oct 14, 2014, 10:31 PM
Excellent. Nice to know that we can all now use that feature without weird hex editing or something.

Violet CLM
Jun 18, 2017, 02:22 PM
I've been upgrading MLLE a lot recently to take better advantage of, and to make it easier for people to use, certain JJ2+ features. Here's a preview:

<img src="https://cdn.discordapp.com/attachments/171304641970044928/326122466944614400/Jazz2-CheloniaV-000.png" />

That level uses the standard Castle1.j2t, but I used new tools in MLLE to edit its palette, add tiles from two other tilesets (Damn and Mez01), and recolor various graphics (including the snow particles) to use the level-specific palette. I didn't have to once touch a text editor for any of the angelscript stuff in that screenshot. Additionally, the JJ2+ support MLLE already had--editing special triggers and making the level a pit level--now works better and is easier to use than it was in the last release.

Still a few bugs left to quash before release, but it's something to look forward to. :) Using multiple tilesets in a single level feels a lot simpler than combining multiple .j2l files/doing all the work entirely in script.

Love & Thunder
Jun 18, 2017, 04:02 PM
Looks great!

Can't wait for this. :)

Primpy
Jun 20, 2017, 08:41 AM
I need more of that level ;-;

DoubleGJ
Jun 22, 2017, 05:44 AM
...!!!

I'm stoked!

Jelly Jam
Jun 22, 2017, 01:35 PM
Oh-my-gosh. I can't wait for this. I've been using MLLE for months now.

When are you going to release the next version?! THIS MASTERPIECE!

Violet CLM
Jun 23, 2017, 03:13 PM
MLLE version 2.3 has been uploaded. Some bug fixes, some quality of life improvements, and a lot of new JJ2+ support.

The next major landmark, in theory, is the creation of levels with more than eight layers, but I suspect that'll be difficult to implement so I decided to leave it out of this release.

Love & Thunder
Jun 24, 2017, 02:34 PM
:D

...

Okay, I should probably say more than just :D

But at this point, that's the only thing of value I'm capable of contributing.

So, :D

P4rr0t
Jun 27, 2017, 03:10 AM
Hi, Violet CLM

i have a problem your MLLE v2.3 not working? How to fix this?

Pic: http://i.imgur.com/yKFMh3K.png

Error code
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentException: The path is not of a legal form.
at System.IO.Path.LegacyNormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
at System.IO.Path.GetFullPathInternal(String path)
at System.IO.FileSystemEnumerableIterator`1..ctor(Str ing path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
at System.IO.Directory.GetFiles(String path, String searchPattern)
at MLLE.Mainframe.PopulateTilesetDropdown(Version version, IniFile ini) in C:\Users\Sam\Documents\Visual Studio 2015\Projects\MLLE\Mainframe.cs:line 266
at MLLE.Mainframe.ProcessIni(Version version) in C:\Users\Sam\Documents\Visual Studio 2015\Projects\MLLE\Mainframe.cs:line 260
at MLLE.Mainframe.NewJ2L(Nullable`1 version) in C:\Users\Sam\Documents\Visual Studio 2015\Projects\MLLE\Mainframe.cs:line 1289
at MLLE.Mainframe.Mainframe_Load(Object sender, EventArgs e) in C:\Users\Sam\Documents\Visual Studio 2015\Projects\MLLE\Mainframe.cs:line 358
at System.Windows.Forms.Form.(-)(-)(-)(-)(-)(-)(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Mes sage& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2053.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
MLLE
Assembly Version: 2.0.0.3
Win32 Version: 2.0.0.3
CodeBase: file:///D:/Giochi/Jazz2/MLLE.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2053.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2053.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2053.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2053.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2053.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2053.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
OpenTK.GLControl
Assembly Version: 1.0.0.0
Win32 Version: 1.0.278.44921
CodeBase: file:///D:/Giochi/Jazz2/OpenTK.GLControl.DLL
----------------------------------------
OpenTK
Assembly Version: 1.0.0.0
Win32 Version: 1.0.278.44921
CodeBase: file:///D:/Giochi/Jazz2/OpenTK.DLL
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Violet CLM
Jun 27, 2017, 08:41 AM
It looks like something is probably wrong with one of the directories you specified that you keep games and tilesets in. Check the <code>File>Paths and Filenames</code> menu option, or if MLLE crashes before you get that far, edit MLLE.ini manually.

P4rr0t
Jun 28, 2017, 05:42 AM
It looks like something is probably wrong with one of the directories you specified that you keep games and tilesets in. Check the <code>File>Paths and Filenames</code> menu option, or if MLLE crashes before you get that far, edit MLLE.ini manually.

It works! Problem solved! Thanks! :-)

http://i.imgur.com/bpUpFBj.png

Jelly Jam
Jun 28, 2017, 01:30 PM
This makes everything easier.

Violet CLM
Aug 11, 2017, 12:39 PM
MLLE version 2.3 has been uploaded. Some bug fixes, some quality of life improvements, and a lot of new JJ2+ support.

The next major landmark, in theory, is the creation of levels with more than eight layers, but I suspect that'll be difficult to implement so I decided to leave it out of this release.

Now that happened. MLLE is up to 2.4 and you can add and reorder layers to your heart's content. And some other stuff, so check the changelog.txt.

Jelly Jam
Oct 3, 2017, 01:53 PM
Surely there's a lot more to it, but for now maybe you could add UseLayer8Speeds to the JJ2+ Functions. I think lots of level makers use that now.

Violet CLM
Oct 3, 2017, 04:38 PM
<code>jjUseLayer8Speeds</code> has the feel of a property that'll eventually be deprecated in favor of <code>jjLayers[8].useSpeeds</code> or something similar. That and the various textured background properties are being avoided in MLLE until either they become layer properties in angelscript or I become convinced that will never happen.

Violet CLM
Dec 2, 2017, 06:19 PM
Looks like I didn't mention 2.5 in this thread, but we're <a href="https://www.jazz2online.com/downloads/files/42245/changelog.txt/info/">up to 2.6 now</a>. Mostly just bug fixes in the last two updates.

Darkhog
Dec 3, 2017, 01:09 PM
Okay, so here goes my layout critique.

While the layout is workable, I think you should keep tileset, animated tiles, layer view and parallax view as separate, but dockable windows, so anyone can arrange them in whatever layout they prefer, including to emulate original JCS layout or put in the tabs if they want it that way.

For example, the way to add animated tiles is so obscure I couldn't really find it. In JCS it's easy: Find empty spot in the animated tiles window, click it and then ctrl+click the tiles for the animation. In MLLE? Hell if I know.

Anyway, that's just my critique. To sum it all up: You shouldn't force certain layout on people, but make it as flexible as it can be so they can customize it the way they prefer.

//edit: A suggestion: How about, for the events that have the associated graphic in it, like enemies, gems, etc., in parallax view the event could be shown as a graphic for that item, so you can see how the level would look like more or less with all items spawned without actually launching the game.

Another thing would be a built-in AngelScript editor with syntax highlighting so you can create and edit associated script for that level. A third-party editor for the Super Mario Bros X that is now bundled with SMBX (long story) does something similar.

Violet CLM
Dec 3, 2017, 01:52 PM
The parallax view style is not changing. Whenever I try JCS again nowadays it is just a severe downgrade in that regard.

How about, for the events that have the associated graphic in it, like enemies, gems, etc., in parallax view the event could be shown as a graphic for that item, so you can see how the level would look like more or less with all items spawned without actually launching the game.
I think WebJCS implements this, or at least DJazz was talking about it... it's never been a high priority for me, though, because I've never found the text event names particularly uninformative. Also it would be an unnecessary, inaccurate distraction if the level someone was working on had a script that replaced an object with something else. Also it would be pretty tedious to assemble all the different sprite sheet images (and note down each individual sprite's coordinates) for the various different games MLLE supports.

Another thing would be a built-in AngelScript editor with syntax highlighting so you can create and edit associated script for that level. A third-party editor for the Super Mario Bros X that is now bundled with SMBX (long story) does something similar.
I've thought about this, but <a href="http://notepad-plus-plus.org/">Notepad++</a> is so much better than anything I could embed in MLLE, especially if you get SE's plugin to work. Also I think it's a lot better having the script in a separate window from the level editor, because that way you have maximum flexibility for editing script and layout at the same time. Even if somebody does come up with a much better AngelScript editor than Notepad++, it should be able to be run on its own.

Darkhog
Dec 3, 2017, 02:14 PM
Then how about, regarding AS thing, ability to create an j2las file directly from the MLLE (if it doesn't exist when clicking "Edit level script" option that you could put under JJ2+ menu), then launching it in the default editor? Heck, you could even bundle np++ with the MLLE, along with SE's extension as it is an open-source software, and when "edit script" is clicked just launch bundled np++ instance so everyone would have same or close to the same environment.

Also I like how you dodged animated tiles thing, talking about parallax. And no, it isn't about what you, as the developer finds comfortable, it is what users find comfortable. You may have Parallax set up as a tab for yourself, I don't really care, but some people like to see changes side-by-side, in real time, so they are sure they're putting tiles in the right positions, especially for layers with different scroll speeds.

Violet CLM
Dec 3, 2017, 02:29 PM
Then how about, regarding AS thing, ability to create an j2las file directly from the MLLE (if it doesn't exist when clicking "Edit level script" option that you could put under JJ2+ menu), then launching it in the default editor?
This isn't a bad idea. ETA: Implemented in 2.7, now reuploaded to J2O.

And no, it isn't about what you, as the developer finds comfortable, it is what users find comfortable. You may have Parallax set up as a tab for yourself, I don't really care, but some people like to see changes side-by-side, in real time, so they are sure they're putting tiles in the right positions, especially for layers with different scroll speeds.
I mean, I am a significant percentage of the use MLLE gets. And being able to see that things are in the right positions is, indeed, what being able to view the level in parallax is for. You may be misunderstanding; the Parallax button isn't a tab, it's just an alternate display mode. You can still edit the current layer when it's enabled.

Darkhog
Dec 4, 2017, 12:43 AM
This isn't a bad idea. ETA: Implemented in 2.7, now reuploaded to J2O.

Thanks. One problem though. MLLE seems to be not able to load 1.24 j2t files, such as Easter99 (in GoG release), which JCS loads fine.
https://i.imgur.com/3Ff1Shx.png

//edit: And I still don't know how to animate tiles in MLLE :mad:.

Stijn
Dec 4, 2017, 04:29 AM
So set the game version to 1.24. It's one of the menu options, click around a little bit and you'll find it.

Darkhog
Dec 4, 2017, 02:01 PM
Ok, I'll lok for it. From the message it looked more like 1.24 support was overlooked (at least for tilesets), but I guess I was wrong.

//edit: Though, in my defense, I have only path to JJ2+ 1.24 set up as I simply don't have other supported games, so it should default to the version I have and completely disregard those I don't (indicated by empty paths). Guess it's something that should be improved.

//edit #2: Got it. I hope it's not something I will have to do for every level or each time I start the program.

Violet CLM
Dec 4, 2017, 02:44 PM
In your MLLE.ini, change the "DefaultGame" value from "JJ2" to "TSF"

Darkhog
Dec 5, 2017, 06:55 AM
Yeah, figured that out myself, but it should autodetect and choose first game that has associated path if path wasn't set for the default game (i.e. is empty). Should be an easy fix though.

//edit: Before I forget, could you add a MRU (most recently used) list to the MLLE? So I won't need to click open and scroll through long list of levels to actually locate the level I want if I've opened it recently. A buffer of 4 recent levels would do just fine. I mean, even JCS has it:
https://i.imgur.com/2jhleHF.png

Jelly Jam
Dec 6, 2017, 02:09 AM
You're right. I'm guessing that's in the plans?

Darkhog
Dec 6, 2017, 06:42 AM
Yeah, I suppose so. Mentioned both of these on the rare chance it isn't. Oh and I've also made a (crappy) mascot for the tool. Probably if I'd spent more time on shading it would've turned out better, but yeah, can't be arsed to do that.
https://i.imgur.com/wbIGfrE.png

The design was supposed to be something between Servbots (Capcom) and Balrog from Cave Story. I guess it's similar to neither.

Jelly Jam
Dec 6, 2017, 10:55 AM
I like what you did with the second L lol

Violet CLM
Dec 7, 2017, 08:39 AM
A list of recently opened levels would not be too hard, no, I've just never gotten around to it. Thanks for the reminder.

btw, if you have a GitHub account, you can also make reports/suggestions here (https://github.com/Violet-CLM/MLLE/issues) and they'll have the benefit of staring me in the face every time I visit the repository. :)

Darkhog
Dec 7, 2017, 11:10 AM
Oh, thanks. Forgot it was open-source and didn't know it's on github. Yes, I do have a github account. Will open issues for my suggestions.

Violet CLM
Dec 14, 2017, 05:10 PM
A list of recently opened levels would not be too hard, no, I've just never gotten around to it.
This has been implemented in MLLE 2.8, available now on J2O. Plus a few more fixes for increased stability in certain contexts.

DoubleGJ
Dec 14, 2017, 09:27 PM
Sweet, I don't know how it happened but MLLE now works normally on my system again! Now all I need is an equivalent of JCS's Animating Tiles window and I can stop using JCS forever :D

Jelly Jam
Dec 15, 2017, 04:30 AM
But I thought people liked it the way it is in MLLE.

Darkhog
Dec 16, 2017, 08:43 AM
For the love of sky daddy I can't figure out how to add animated tiles in MLLE and there is no site "HowToMLLE." So that should say something.

AvalancheMaster
Jan 4, 2018, 03:40 AM
Indeed, neither can I. Can somebody clarify how to open the animations tab?

Slaz
Jan 4, 2018, 09:58 AM
I haven't used MLLE much (yet), but it seems to me the way MLLE displays animated tiles makes more sense, as they're appended as new tiles in the tileset like they've always been. Sure, JCS makes them look more organized, but MLLE actually shows where they are in a setting where the tileset may no longer be a static image.

AvalancheMaster
Jan 4, 2018, 02:39 PM
I haven't used MLLE much (yet), but it seems to me the way MLLE displays animated tiles makes more sense, as they're appended as new tiles in the tileset like they've always been. Sure, JCS makes them look more organized, but MLLE actually shows where they are in a setting where the tileset may no longer be a static image.

Care to elaborate on that?

Slaz
Jan 7, 2018, 03:41 AM
Care to elaborate on that?
To create an animation, double-click on the blank tile shown at the end of the tileset, then Ctrl+click on the tiles you want in the animation. Check the animation's settings, and click Save.

Violet CLM
Jan 7, 2018, 12:42 PM
You can also right-click instead of double-click, and that gives you some more options.

Violet CLM
Mar 16, 2018, 09:17 AM
MLLE v2.9 has been released, <a href="https://www.jazz2online.com/downloads/files/44226/changelog.txt/info/">mostly focused on fixing crashes or other bugs</a>, but also you can build tilesets now. Could be nice if you only own 1.23 but want to make a tileset with more than 1020 tiles, or if you've been dreaming of making a new episode for Battery Check, or whatever.

ShadowGPW
Apr 2, 2018, 01:10 PM
"-By enabling the new "Zooming Above 100%" option in the Preferences
dropdown menu, you can view the level at 200% or 400% size. This is
primarily intended for people with very large resolutions, but might also
be helpful for finding tile bugs."

I am SOOOO happy :D

Violet CLM
Apr 15, 2018, 05:37 PM
MLLE v2.10 has been released, <a href="https://www.jazz2online.com/downloads/files/44532/changelog.txt/info/">mostly focused on making little improvements to existing windows or menus</a>. For example, if you've been editing a level's palette inside MLLE and realize you need <a href="http://alister.eu/palsuite/">a more sophisticated tool</a> to finish the job, now you can actually export the level's palette instead of having to recreate all your past edits from scratch.

Also, after six years of being grayed out, the "Package in ZIP file" menu option is now functional and has full AngelScript support. I stress-tested it on HH17, and MLLE automatically built a ZIP with 87 of HH17's 88 files, missing only the episode file, which it had no way of knowing about. (Actually, it found an <em>extra</em> file, <code>Icicle.j2a</code>, which I guess was a past filename for <code>HH17_Icicle.j2a</code> but was still being referenced in <code>HH17_Guardian.j2as</code>.)

Violet CLM
Aug 30, 2018, 03:12 PM
<a href="http://www.jazz2online.com/J2Ov2/downloads/info.php?levelID=7291">MLLE v2.11 has been released</a>. It's not a substantial update, but if you've been annoyed at the bug with editing sucker tube parameters, that's fixed now. Also while editing tile images you can copy them to the clipboard, edit them in a different program, then copy them from there and paste them back into MLLE, so that's neat. Also you can find an event by typing its name instead of memorizing where it is in the event tree!

Violet CLM
Apr 21, 2019, 09:11 PM
<a href="https://www.jazz2online.com/downloads/7291/multilayer-level-editor-v212/">MLLE v2.12 has been released</a>, bringing <a href="https://www.jazz2online.com/downloads/files/45816/changelog.txt/info/">three new features and two bug fixes.</a> If you find yourself coding a lot of custom events and you'd like MLLE to know what they're called, or if you're tired of overwriting events while editing your layer 4 eyecandy, this is good news for you.

Violet CLM
Aug 23, 2019, 03:20 PM
<a href="https://www.jazz2online.com/downloads/7291/multilayer-level-editor-v213/">MLLE v2.13 has been released</a>, with the <a href="https://www.jazz2online.com/downloads/viewfile.php?fileID=46575&lines=362">major new feature</a> being a window that lets you use custom weapons (or reconfigure the default ones, e.g. replacing pepper spray with fireballs) without writing any code. This is by far one of MLLE's most ambitious features, with a huge number of moving pieces and a ridiculous assortment of edge cases that the angelscript files hide away from you, but hopefully everything will work fine? :lori:

<img src="https://cdn.discordapp.com/attachments/171304641970044928/595082025694920714/unknown.png" />
<img src="https://cdn.discordapp.com/attachments/171304641970044928/595082243265789952/unknown.png" />

To use any custom weapons, you'll need to download both the <a href="https://www.jazz2online.com/downloads/7759/standard-weapon-interface/">Standard Weapon Interface</a> and the <a href="https://www.jazz2online.com/downloads/7966/custom-weapons-mllecompatible/">Custom Weapons (MLLE-compatible)</a> pack. Together these two uploads rewrite numerous previously written custom weapons to use a single unified setup interface, which MLLE in turn handles for you.

See the next post for more details (forthcoming...)

Violet CLM
Aug 23, 2019, 03:21 PM
Making a level

Editor interface
While editing a JJ2+ level with MLLE, click the "JJ2+ Properties" dropdown menu at the top of the window and select the "Weapons..." option. This will bring up a modal window with a 3&times;3 grid of the nine weapons used in this level. Each panel in the grid shows, by default: the weapon number, a preview icon of the weapon, and the weapon's name.

The weapon's name is actually a dropdown menu. By clicking on it, you open up the menu to see the rest of the weapons available to you, and selecting any one of them will cause your level to use that weapon instead. For example, if you click the dropdown box in panel 2 and change it from "Bouncer" to "Electro Blaster," then all bullets players shoot in this level with weapon 2 selected will be electro blaster bullets, and all ammo pickups, ammo crates, and powerups for weapon 2 will use electro blaster sprites as well.

If you have downloaded any custom weapons that are compatible with MLLE, they will also appear as options in each panel's main dropdown box, so for example you could change weapon 2 from "Bouncer" to "Laser Blaster" instead. Again, that is all you need to do. (<a href="https://www.jazz2online.com/downloads/7966/custom-weapons-mllecompatible/">Here are a bunch of custom weapons you can download to start off with.</a>)

Notice that each of the nine weapon panels has a vertical scrollbar on its far right. By scrolling down, you can look at and edit a list of options. All weapons share the following six options:

<b>Maximum:</b> How much ammo of this weapon a player can carry. The cheat codes JJAMMO, JJGUNS, and JJGOD all instantly set each weapon's ammo to this number, and when a player has maximum ammo for a weapon, ammo pickups for that weapon can no longer be collected. The default value of "-1" is special and is interpreted as either 99 or 50 depending on whether you are playing single player, but other values are also accepted. Some weapons are so powerful that you might want to lower their maximum value to maybe 25 or even 1.
<b>Birds:</b> If your level contains any bird cage objects (or if the player uses the JJBIRD cheat code), this property affects whether the birds will be able to fire this bullet type (if the player has it selected) or whether they'll default to weapon 1 instead.
<b>Appears in gun crates:</b> By default, only ammo pickups for weapons 2, 3, 4, 5, and 6 can appear in Gun Crate and Gun Barrel events. This property lets you change that. (No effect for weapon 1, which has no ammo pickup objects.)
<b>Gems lost (normal)</b>: This option is only useful in Treasure Hunt levels, where it specifies how many gems a player loses after being hit by a normal bullet of this weapon. If this is not a Treasure Hunt level, you can ignore this option completely.
<b>Gems lost (powerup):</b> Same, but for powered-up bullets.
<b>Availability:</b> Whether players should start with the maximum amount of ammo for this weapon, and whether ammo pickups are necessary. These options are changed very rarely but might be useful for a high-concept level.


Besides those six options, some weapons have <em>additional</em> options that are specific to them only: these appear below the six common options and can also be found by using the panel's scrollbar. Of the nine default weapons, four have weapon-specific options: Bouncer, Ice, TNT, and Gun8. Some custom weapons have weapon-specific options and most do not; the only way to check is to use the scrollbar.

Interacting with MLLE code
Using almost any of MLLE's JJ2+ tools in a level will cause MLLE to write some code to the level's .j2as file, and the Weapons window is no exception to this. As ever, though, the rule is basically this: <em>leave it alone and nothing will go wrong.</em>

The most important of MLLE's interaction with your .j2as file are the following two lines (or similar):
#include "MLLE-Include-1.5.asc" ///@MLLE-Generated
const bool MLLESetupSuccessful = MLLE::Setup(); ///@MLLE-Generated

<code>MLLE-Include-1.5.asc</code> is a special angelscript library generated by MLLE that interprets all the various JJ2+ properties that MLLE embeds in your .j2l file, and <code>MLLE::Setup()</code> is the function call to run the library. 99% of the time you can (and should) ignore these two lines and let MLLE worry about them. If for whatever reason you want some code to run <em>before</em> the function call, you can use the following pattern instead and nothing should go wrong:
#include "MLLE-Include-1.5.asc" ///@MLLE-Generated
void onLevelLoad() {
//do something important
MLLE::Setup();
}

This changes slightly if you use the Weapons window to use any custom weapons in your level, or even to make significant enough modifications to the default weapons. In that case, those two lines will look more like this:
#include "MLLE-Include-1.5w.asc" ///@MLLE-Generated
const bool MLLESetupSuccessful = MLLE::Setup(array<MLLEWeaponApply@> = {SzmolWeaponPack::MeleeSword::Weapon(), null, SzmolWeaponPack::DischargeGun::Weapon(), SzmolWeaponPack::LockOnMissile::Weapon(), SzmolWeaponPack::AutoTurret::Weapon(), null, SzmolWeaponPack::PetrolBomb::Weapon(), null, null}); ///@MLLE-Generated

Note that the <code>MLLE::Setup</code> function call now takes a single argument: an array initializing each of the nine weapons used in your level. (Or <code>null</code> if you're leaving the default weapon for that slot unchanged.) The angelscript library filename is also changed slightly: <code>MLLE-Include-1.5w.asc</code> is a special version of <code>MLLE-Include-1.5.asc</code> that has a lot of additional code specifically for dealing with custom weapons.

<strong>To be continued... documentation currently unfinished at this point.</strong>
Making a level: advanced

Making a weapon

Minimum requirements
MLLEWeapons::WeaponInterface

Violet CLM
Mar 28, 2020, 10:23 PM
<a href="https://www.jazz2online.com/downloads/7291/multilayer-level-editor-v214/">MLLE v2.14 has been released</a>, and its <a href="https://www.jazz2online.com/downloads/files/47230/changelog.txt/info/">big new addition</a> is Smart Tiles, which let you create fully tiling walls and stuff just by dragging your cursor around and letting MLLE find the right tiles for you without your needing to so much as <em>look at</em> the tileset. <strong>Remember to copy everything from MLLE's "ExtractToJJ2+Folder" folder or this won't work.</strong> Some examples of how MLLE's smart tiles can guess what you want to do and place exactly the right tiles for you:

<img src="https://cdn.discordapp.com/attachments/597155742113595422/690308952273060218/unknown.png" />
<img src="https://cdn.discordapp.com/attachments/597155742113595422/692846007943299077/unknown.png" />
<img src="https://cdn.discordapp.com/attachments/597155742113595422/692437890809987143/unknown.png" />

All official tilesets are supported except for Inferno, Haunted House, and Town House, and you can define your own smart tiles for any tileset you please using the built-in editor. When you first click the menu option to add a new smart tile, you'll see a window like this:
<img src="https://cdn.discordapp.com/attachments/597155742113595422/693169452950487171/unknown.png" />
Each of the special Assignment tiles in the right-hand image represents a possible way tiles can connect to one another. To get started, click one of the assignments on the right, then click a tile from the tileset image on the left to assign it. Or click multiple times if there are multiple tiles that fit that assignment. In a minute or two the window should look more like this:
<img src="https://cdn.discordapp.com/attachments/597155742113595422/693170675032129587/unknown.png" />
Few, if any, tilesets have tiles available for <em>every</em> possible assignment, but that's okay. MLLE will try a series of next-best options to make your tiles come as close as possible to tiling even if the exact necessary tile doesn't actually exist in your tileset. (Every smart tile you create <em>must</em> assign at least one tile to assignment 11, 14, and/or 47, because all the different series of next-best options eventually default to one of those three, and they all default to one another.)

If you hold down F and/or I while clicking a tile to add it to an assignment, it will be flipped horizontally and/or vertically. (For example, Medivo only has slope tiles in one direction, so the other direction needs to use horizontally flipped tiles.)

If you make a mistake, you can right-click a tile from the vertical list on the far right to remove it. Or you can right-click that same tile from the tileset image to remove <em>all</em> copies of that tile from the vertical list. Or you can right-click the assignment to clear the vertical list entirely and start afresh.

The "extra" assignment is a special case. MLLE will never automatically place tiles from it, but tiles assigned to it will count as part of this same smart tile. For example, if you're making a level with Castle, MLLE has no way to guess where you want the tiles with the cannon and cannonballs to go. But if you do place those tiles somewhere manually, the smart tile should place other wall tiles gracefully around them. This is achieved by adding the cannon's floor tiles into the "extra" assignment.

The "Friends" dropdown menu appears when there are multiple smart tiles for the same tileset, and lets you specify that tiles of one smart tile should continue into tiles of another rather than place edge tiles. It's similar to putting that entire other smart tile into the "extra" assignment, although not quite the same. For example, Diamondus's "Caves" smart tile has "Walls" as one of its friends:
<img src="https://cdn.discordapp.com/attachments/597155742113595422/693714135556423771/unknown.png" />

But the friends menu is only part of that: the Walls smart tile also needs to know to place right-edge wall tiles with caves behind them instead of transparent pixels. For this you need to use the super-wide button with the plus symbol on it to add one or more Rules to the right-edge wall assignment:
<img src="https://cdn.discordapp.com/attachments/597155742113595422/693717893262606386/unknown.png" />

Each of the three rules you can see in that screenshot looks at the tile immediately to the right of the right-edge wall tile, as indicated by the position of the red rectangle in the grid. Depending on whether that tile belongs to another smart tile, or is one of a number of specific other tiles (in this case, tiles that have tree branches in front of caves), different tiles get placed instead of the normal right-edge tiles: specifically, right-edge tiles with tree branches and/or caves behind them.

Editing any of the fields of a rule&mdash;e.g. moving the red square&mdash;selects that rule: once you do so, left-clicking a tile from the tileset image will add the tile (flipped or otherwise) to that rule instead of to the assignment generally.

Rules are tried in <em>top to bottom order.</em> In this case the "specific tiles" rule is on top because it's the most specific: only if the tile in the red square position is not 666, 667, or 668 does the second rule get evaluated, and only if the second rule is also false does the third rule get evaluated, and so on.

If a rule does not have any result tiles on the right at all, it is treated as an "and" rule instead of a "then" rule. A "then" rule is only accepted if it is true <em>and so are all "and" rules immediately preceding it.</em> For example, depending on what's available in the tileset, you might want to place one tile if there are cave tiles both on the left <em>and</em> on the right; a second tile if there is a cave tile only on the left; and a third tile if there is a cave tile only on the right.

The "X" button on the right side of every rule deletes that rule. The "D" button duplicates it. The "^" and "V" buttons move it up or down in the order.

Rules are the most complicated part of defining smart tiles, and defining smart tiles is the most complicated part of using smart tiles. If you don't want to get involved in defining smart tiles, that's fine: remember, they're <em>already totally available</em> for almost all of the official JJ2 sets! And maybe someone else will make a smart tile definition file for any other tileset you might be wanting to use. Once you get the hang of it, defining smart tiles doesn't take very long, and then they can save you incredible amounts of time once you start actually laying out a level.

cooba
Mar 29, 2020, 05:43 AM
As my friend from Brazil would have said,

"Hauahauahuahaua holly shit"

EDIT: Here's a video:

<iframe width="640" height="390" src="//www.youtube.com/embed/RwngzIdJ3gI" frameborder="0" allowfullscreen></iframe>

Superjazz
Mar 30, 2020, 07:01 AM
:O!

proud2beamerican
Apr 6, 2020, 07:50 PM
MLLE appears to have some serious problems with scrolling. That happens after zooming in or out, you can't scroll all the way to the end of a layer.

If you change the size of the window itself (maximize it or shrink it) then it goes back to normal again and the scrolling area becomes bigger, allowing you to explore the full size of a layer.

One other problem: When you open a level that has layer 8 set to texture mode with a specific fade color there is no way to check that color. Once you click on the color it always shows black.

Violet CLM
Apr 9, 2020, 11:07 PM
Thanks, I'll add them to the <a href="https://github.com/Violet-CLM/MLLE/issues">issues tracker</a>. The problem with the scrollbars being a bit too short is an old one but I have trouble getting it to happen consistently.

Violet CLM
Aug 19, 2020, 03:30 PM
<a href="http://www.jazz2online.com/J2Ov2/downloads/info.php?levelID=7291">MLLE v2.15 has been released</a>, nothing <a href="https://www.jazz2online.com/downloads/viewfile.php?fileID=48387&lines=454">major</a> but it's easier to edit multiple tile images at once now, for example if you have a 128x128 graphic and don't want to slowly paste bits of it into sixteen tiles one at a time, and some recent reports got addressed. Only MLLE.exe and MLLE.pdb have been modified since last release.

Violet CLM
May 15, 2021, 02:49 PM
<a href="http://www.jazz2online.com/J2Ov2/downloads/info.php?levelID=7291">MLLE v2.16 has been released</a> and it is <a href="https://www.jazz2online.com/downloads/files/49846/changelog.txt/info/">oops! all bug fixes</a>. Only MLLE.exe and MLLE.pdb have been modified since last release.

Violet CLM
Oct 19, 2021, 06:39 PM
MLLE v2.17 has been released (http://www.jazz2online.com/J2Ov2/downloads/info.php?levelID=7291) and mostly just refines things (https://www.jazz2online.com/downloads/files/52939/changelog.txt/info/). If you are updating from a previous release, besides the .exe and the .pdb, there are two new files to extract into your MLLE folder, "MLLE Event Sprites - Jazz.png" and "MLLE Event Sprites - Battery Check.png."

Violet CLM
Oct 28, 2021, 05:13 PM
I just found an issue and reuploaded MLLE as version 2.17a. If you have saved any multiplayer levels in 2.16 or 2.17, please resave them in this. Otherwise clients in servers will sometimes not be able to open your level, in the same way that had previously been fixed in 2.8.

Violet CLM
Dec 17, 2022, 12:02 AM
MLLE v2.18 has been released so that you can use the new layer options introduced by JJ2+ v5.10. Consider re-extracting "MLLEProfile - JJ2.ini" and "MLLEProfile - TSF.ini" so you'll see the new textured background options. Also MLLE supports JCS's tab key now, "stijn vision" also applies to the event tree, and in JJ2+ levels you can place events anywhere you like now, not just the centers of tiles. (https://www.jazz2online.com/downloads/files/54179/changelog.txt/info/)

Also: weaponVMega8.asc turned out to have a syntax error that was ignored in earlier versions of AngelScript but doesn't work in JJ2+ v5.10. Please download a fixed version here. (https://violetclm.com/static/files/misc/weaponVMega8.asc) (I've also added the fixed version to my two uploads (https://www.jazz2online.com/downloads/files/54102/weaponvmega8.asc/info/) containing it.)

Violet CLM
Jan 2, 2023, 03:09 PM
MLLE v2.19 is out, featuring a couple layer property fixes (https://www.jazz2online.com/downloads/files/54447/changelog.txt/info/) (and a new level properties button). Fortunately I didn't have to change the .asc/Data5 format at all--we're still on 1.6--all that needed changing was a bit of the logic around processing it.

Violet CLM
Dec 3, 2024, 01:44 PM
MLLE 2.20 is out! It's been a couple years huh? Once again, only MLLE.exe and MLLE.pdb have been modified since last release.

Basically everything in here (https://www.jazz2online.com/downloads/files/57011/changelog.txt/info/) is sourced from people's ideas at the github repo. (https://github.com/Violet-CLM/MLLE/issues) Some fixes to off-grid events, some minor things, and a new window to try out:

https://violetclm.com/static/mlle/SelectTileset.png

This window is an alternative to existing ways to select tilesets; it does not replace them, at least at this time, because what if it doesn't work well? what if people don't like it? well we can find out, in a low-pressure way.