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.
|
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; |
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 :( |
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.
|
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! |
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.
|
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. |
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; |
|
What happened to the positioning of everything?
|
Cause I screwed with the Animation files, check out this vid:
http://www.youtube.com/watch?v=xqH1ZWU3sR0 Extreme UBX's :D |
Mmm, that's actually pretty useful for seeing where objects are...
|
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?
|
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 |
:
:
|
its in the path files, usualy (level)PATH.BND.
I actualy manage to get all mudokons to turn into bombs myself. |
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; //? |
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?? |
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. |
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?
|
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.
|
nice find :D keep up the good work,and ill plus rep as work ;)
|
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 :( |
"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. :) |
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.
|
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. |
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?
|
I plan making a level editor, but I haven't started anything yet.
|
Since I've already got all the parse code I've started one just now. Heres how its lookin.
|
Not really a lot to see, but still nice work! :)
|
Well hopefully it will turn into something very useful soon :D
|
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. |
Looks good, what language / UI framework you using?
|
Clickteam's Multimedia Fusion 2 for the GUI, C++ for the internals.
|
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.
|
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.
|
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 |
Nice work :D
|
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. :)
|
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! :) |