Oddworld Forums

Oddworld Forums (http://www.oddworldforums.net/index.php)
-   Oddworld Mods & Hacks (http://www.oddworldforums.net/forumdisplay.php?f=24)
-   -   .lvl files (http://www.oddworldforums.net/showthread.php?t=15680)

Paul 10-18-2010 01:58 PM

Hmm looks like the lowest index in the array is actually always zero :( Looks like heuristically detecting the end of the collision data is the only way to get the real start of it. Heuristically detecting the end of the screens array seems to work ok so far though.

LIJI 10-18-2010 02:30 PM

Yeah I believe it's all hardcoded, including the level width in screens.
Anyway, the structure for Muds:

Mudokon
short magic;
short size=3000;
long id=3100 0000
//x%25=1
short x;
short y;
short x2=x+25;
short y2=y+20;
short unknown;
short type; //0 Mining, 1 cleaning , 2 "Angry worker", 3 Red Ring Giver, 4 Yellow Ring Giver,
short direction;
short voicePitch; //Some values do not work are reset to default, I'll research more about it later.
short unknown;
short unknown;
short unknown;
short unknown;
short mood; //0 normal, 1 angry, 2 sad, 3 crazy, 4 sick
short blind; //0 is normal, 1 is blind;
short mood2; //0 normal, 1 slapper
short unknown;
short unknown;
short unknown;

Paul 10-18-2010 02:50 PM

I've managed to get all the data of R1 from AO loading correctly :)

36 screens
77 collision items
283 objects

I'm going to make my app draw out the collision objects like yours does to see if it all makes sense. Then I will see about editing the information of each object, only problem is that all AO objects seem to have different Id's and data :(

LIJI 10-18-2010 02:58 PM

Good job! :) It kind of makes sense considering the fact the AE has more features. Take Mudokons for examples, these values were only added in AE: voicePitch, mood, blind, mood2. I think we should focus on one game at a time, however.

Paul 10-18-2010 03:14 PM

So here is the collision map for R1, now then why are there massive gaps between screens? I can see that the layout is certainly correct though!

Also I've given every "type" the same colour for now.

Edit: Here we have the collision map for MI of AE, no gaps in this one!

LIJI 10-18-2010 03:27 PM

Mmm, these gaps ARE weird. I've figured shadows though, they're defined as objects, not as collision data. I have no clue what the red rects in my map mean now.

Paul 10-18-2010 03:36 PM

Here is a coloured version with screen splits for AE MI. I'm thinking it will be a good idea to draw the map objects in here too (at least the ones we know about, unless they all have position data?).

Edit: I'm really disappointed that AO has some weird spaced collision data :( I hope there is an easy way to make sense of it.

LIJI 10-18-2010 03:45 PM

Most objects do have positions, as rectangles (left top right bottom), and they're stored in the same position. It'd be nice if you made them render too! (Expect some random rects from the few rare objects without position though)

Edit: More objects!

Stats Monitor:
short magic;
short size=1800;
long id=4000 0000;
short x;
short y;
short x2=x+25;
short y2=y+20;
short inThisTunnel;
short unknown;
short unknown;

Ledge (From top)
short magic;
short size=1800;
long id=0200 0000
//x%25=0
short x;
short y;
short x2=x+24;
short y2=y+24;
short unknown;
short direction;
short unknown;
short unknown; //When it is set to 1, not only the ledge is no longer working, you can't even press the down key on it.

Shadow
short magic;
short size=2000;
long id=0600 0000
short x;
short y;
short x2;
short y2;
short unknown;
short unknown;
//These are signed shorts.
short red;
short green
short blue;
short background; //0 to affect BOTH foreground and background, 1 to only background.

SligAIData //These define how a Slig behaves (e.g. Never cross this from the left. Cross this from the left only if you're chasing Abe)
short magic;
short size=1400;
long id=2E00 0000
//x%25=0
short x;
short y;
short x2=x+24;
short y2=y+24;
short unknown;
short unknown;

Paul 10-18-2010 04:21 PM

I edited all muds into UBX's

http://www.youtube.com/watch?v=uHaMJ4WAtT8

LIJI 10-18-2010 04:29 PM

What happened to the positioning of everything?

Paul 10-18-2010 04:58 PM

Cause I screwed with the Animation files, check out this vid:

http://www.youtube.com/watch?v=xqH1ZWU3sR0

Extreme UBX's :D

LIJI 10-18-2010 05:05 PM

Mmm, that's actually pretty useful for seeing where objects are...

Paul 10-18-2010 05:43 PM

Do you have a current list of object Id's? I'm gonna make my app print the object names and add drawing to the map at some point. Maybe it will make it easier to see whats going on?

LIJI 10-18-2010 05:52 PM

19 UBX
3C LCD Sign
1C Portal
55 Path Blocker (Slam Door)
31 Mud
40 Stats Monitor (Escapees etc)
02 Ledge (from top)
06 Shadow
2E SligAIData
32 Something related to ledges
11 Lever
58 Teleporter

Littleleeroy 10-19-2010 01:13 AM

:

()
I might sound like a bit of a noob but

I have been trying to find out how to change muds into uxbs etc and you guys have the long list of settings:
:

Mudokon
short magic;
short size=3000;
long id=3100 0000
//x%25=1
short x;
short y;
short x2=x+25;
short y2=y+20;
short unknown;
short type; //0 Mining, 1 cleaning , 2 "Angry worker", 3 Red Ring Giver, 4 Yellow Ring Giver,
short direction;
short voicePitch; //Some values do not work are reset to default, I'll research more about it later.
short unknown;
short unknown;
short unknown;
short unknown;
short mood; //0 normal, 1 angry, 2 sad, 3 crazy, 4 sick
short blind; //0 is normal, 1 is blind;
short mood2; //0 normal, 1 slapper
short unknown;
short unknown;
short unknown;

and I wanted to know where to find the file with all these values. I looked through the mi.lvl file contents. Thanks.

mlg man 10-19-2010 02:54 AM

its in the path files, usualy (level)PATH.BND.

I actualy manage to get all mudokons to turn into bombs myself.

LIJI 10-19-2010 03:13 AM

It appears that level scripting isn't that hard coded!
For Mudokons, the value about voicePitch is rescueID. Not all Muds have it, most will have it as 0. The last value for Portals is a Mudokon rescueID too, and so is the value after background in Path Blockers (Slam Doors).

When a Mudokon with a rescueID is rescued (No matter via which portal), portals sharing this ID will disappear (Will no longer reappear), and slam doors sharing this value will open. This is probably the same with many other objects. I believe levers work similarly. I might figure out teleporters soon.

Edit: Solved levers and teleporters.

Lever
short magic;
short size=2000;
long id=1100 0000
short x;
short y;
short x2=x+24;
short y2=y+24
short type; //Not really sure what it does though
short background;
short unknown;
short soundEffect;
short unknown;
short objectID; //The object it operates

Teleporter
short magic;
short size=2800;
long id=5800 0000
short x;
short y;
short x2=x+24;
short y2=y+24;
short sameScreen; //Unsure
short DestTeleporterID; //Teleporter number in the destination screen. 0 based.
short DestCamID; //Whatever comes after C in the screen name
short unknown; //might cause inivsibility
short unknown;
short objectID; //for levers
short background;
short reloadObjects; //?

Paul 10-19-2010 07:08 AM

Hmm I think your naming of some of these is confusing.. is a teleporter the thing you stand on that teleports you, or a bird portal that you jump into?

Also as of yet do you know of a way of linking the screens up with the collision data? I want to overlay the collision rects into the screen images...

Edit: So I've done it for MI, yay! However it looks like the images should be 240 in height, so maybe you've got screen units wrong??

LIJI 10-19-2010 09:27 AM

I see. It so that means there are 20 invisible units for each screen. That explains some of the troubles I've been having with calculating the size. So for the Y axis, a unit equals a pixel.

All bird portals are called one object, called portal. If you look at the structure I wrote for the portal object, it has a flag that sets it type. (Rescue, stay open, and Shrykull). Teleporter are those red "doors" where you stand by them and pull a lever.

Paul 10-19-2010 09:41 AM

Hmm I see, Im about to try making maps from *all* path files. Then I will try the same but put the objects in there too, also I noticed that the X offset of the collision map isn't quite right, so perhaps the width is slightly off too?

LIJI 10-19-2010 10:26 AM

I believe you're talking about C20? It makes sense, as the X positions have to fit on the 25 units grid, so they appear a little weird on non-wall obstacle, such as the vents on C20.

Scraby 10-19-2010 10:36 AM

nice find :D keep up the good work,and ill plus rep as work ;)

Paul 10-19-2010 11:08 AM

Look at how close my collision mesh fits, I think this must be the correct sizes.

Unit size = 375x260
Pixel size = 368x240 (This is the PS1 resolution!)

Question is though, would this allow you to walk half way off screen?

Btw I've converted all 114 paths to images like this, some have the array size wrong though so the images don't match up with the mesh :(

LIJI 10-19-2010 11:15 AM

"Question is though, would this allow you to walk half way off screen?"
Yes! Try with DDCheat, and check the Y position, there are some Y values to do not belong to any screen. Try to move between screens very very slowly with DDCheat and you'll understand what I mean.

On another topic:
I find the order of objects in the array quite interesting. It lets you have some basic understanding on what earlier versions of the game looked like. :)

Paul 10-19-2010 11:52 AM

Ok in this image all of the objects are marked via red rectangles, I think this confirms the sizes are correct since the LED scroller rect seems to fit exactly.

LIJI 10-19-2010 12:03 PM

Another list of objects and IDs: (Not sure about all of them)
11 Lever
58 Teleporter
0F Slig?
20 AI?
2D Slig AI
2F Slig AI?
13 Orb
4F Wheel
30 Wheel/level/etc light
56 Level loader?
61 Wheel related
03 Ledge, bottom only
17 Well
05 door
07 Platform Stop
15 Platform Rope
0C Ring
60 Platform?
0D Animation (Vent?)
51 Laughing Gas
42 Secret Area?
3D Information
04 Pit Fall?

Together with the previous list it should cover most objects in MIP1.

Paul 10-19-2010 12:10 PM

Are you making any sort of editor? I'm thinking about allowing dragging items around to move collisions and object items, and double click to edit properties of known objects, what do you reckon?

LIJI 10-19-2010 01:13 PM

I plan making a level editor, but I haven't started anything yet.

Paul 10-19-2010 01:30 PM

Since I've already got all the parse code I've started one just now. Heres how its lookin.

LIJI 10-19-2010 01:35 PM

Not really a lot to see, but still nice work! :)

Paul 10-19-2010 03:03 PM

Well hopefully it will turn into something very useful soon :D

LIJI 10-19-2010 03:36 PM

Something quick I made. :)
It handles loading frames and objects via the index array, object array and screen array. Doesn't display objects yet. The offsets to the array are hardcoded for MIP1, I'll have to make a list of all hardcoded values, but for now I'll only work with MIP1. The screen images are pre-copied CAM files.

Paul 10-20-2010 02:36 AM

Looks good, what language / UI framework you using?

LIJI 10-20-2010 02:43 AM

Clickteam's Multimedia Fusion 2 for the GUI, C++ for the internals.

LIJI 10-20-2010 04:52 AM

Screenshots with objects. Note that the object sizes are taken from the .lvl file, which sometimes reports wrong sizes. This will be fixed in later versions.

Chubfish 10-20-2010 08:04 AM

GUI looks okay; this is all pretty nice work! This thread has progressed a whole bunch since the first post, which is awesome to see.

Paul 10-20-2010 09:02 AM

Heres how my editor is looking, still a long way to go and not much time to work on it :(

Edit: Added bone werkz shot.

Edit: And the brewery

Crashpunk 10-20-2010 10:03 AM

Nice work :D

Jango 10-20-2010 10:07 AM

Wow! What sort of editor is this that you are developing? Is it a fully playable one? Because if it is, then I can't say how pleased I am with you guys. :)

LIJI 10-20-2010 01:42 PM

Here is a really big list of objects, sorted, and a few screenshots: (I'm surprised that all of them can load on mi!)
02 Ledge (from top)
03 Ledge, bottom only
04 Pit Fall?
05 door
06 Shadow
07 Platform
0C Ring
0D Animation (Vent?)
0E Time Bomb
0F Slig
10 Slog
11 Lever
13 Orb
15 Platform Rope
17 Well
18 Bomb
19 UBX
1C Portal
20 AI?
21 Step Switch
2D Slig AI
2E SligAIData
2F Level Changer?
30 Wheel/level/etc light
31 Mud
32 Something related to ledges
3C LCD Sign
3D Information
40 Stats Monitor (Escapees etc)
42 Teleporter related?
4F Wheel
51 Laughing Gas
52 Fling Slig
54 The-little-fleech-like-things-whose-name-I-forgot
55 Path Blocker (Slam Door)
56 Level loader?
58 Teleporter
5A Grinder
5B Colorful meter (like in the boiler)
5D Mine Car
5E Meat Sack
5F Explosion Set/Falling obstacles. (Mines Ender-like)
60 Platform Stop?
61 Light (Like on wheels)
62 Slap Lock
65 Fart Machine
67 Naked Slig
68 Slig Get Pants
69 Slig Get Wings
6A Greeter
6B Naked Slig Button
6E Tortured Mudokon

Notes about screenshots:
-Don't get too excited about the mine car! The mine car requires different and more complex collision maps. Just putting it in a random place will make it unable to move when Abe enters, and even worse, it will lock poor Abe inside! :O
-About greeter2.png: I made the greeter chase me, and he fell and got there. It was pretty funny, it even bounced a little when it landed (A bit too detailed for a feature which didn't get to the game, isn't it? ;)) I'm surely going to use this in a level design! :)