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)

Jango 04-03-2010 07:05 AM

Please can you send me it, or give a link so I can download it? It sounds great!

Also, would you be able to tell me how to use it please? It sounds as if it may be quite complicated. :)

Paul 04-03-2010 07:08 AM

Ugh! Clearly you did not understand what I am trying to say. Creating a PATH editor is what I am trying to accomplish!

Jango 04-03-2010 07:11 AM

:

()
Ugh! Clearly you did not understand what I am trying to say. Creating a PATH editor is what I am trying to accomplish!

But you said you completed one of those:

:

()
Edit: Uh to actually finish my point, you want a path editor, not lvl archive editor, I've already created one of those

Anyway, good luck with it Paul. Let's hope it isn't too hard-coded. :)

As I said, if you complete it, it would be so amazing!

And also, a path editor would not let me make whole new screens or add extra objects would it? It would let me change things in the screens that are already there, am I right?

mlg man 04-03-2010 08:24 AM

ok ok, i get it, .net wont work, i have been looking online tutorials on c and c++, its just way too confusing. and i dont have time to learn a whole language. its all up to you paul.

Jango 04-03-2010 11:12 AM

Yeah, as i've said, keep at it PaulM! :)

How long until you expect to complete the path editor (if you complete it)?

Namida 04-03-2010 04:29 PM

He said he's completed a LVL file editor. IE: A program which extracts and compresses files into the LVL file archive. However, the PATH file is one such file inside which is the important one to creating a custom level, and he is still trying to crack that.

Jango 04-04-2010 12:53 AM

:

()
He said he's completed a LVL file editor. IE: A program which extracts and compresses files into the LVL file archive. However, the PATH file is one such file inside which is the important one to creating a custom level, and he is still trying to crack that.

Well it was easy to get confused when he said that he 'completed one of those'.

Is anyone else trying to crack the PATH files instead of Paul? I guess it is because not many people know C and C++ programming...

Namida 04-04-2010 09:23 PM

It's not really to do with programming. It's to do with the format of those files, which is a format specifically created by OWI.

Phylum 04-05-2010 12:07 AM

Jango: you can't just say 'he said he "completed one of those"' because it's taken out of context. You misunderstood what he originally said, and are making it sound like he said what you understood him to mean (I think...).

:

()
Uh to actually finish my point, you want a path editor, not lvl archive editor, I've already created one of those

It seems clear to me from reading this that he has made a .lvl editor.

Jango 04-05-2010 12:19 AM

Sorry I didn't mean to be rude, it is just that I got a bit confused (could've happened to anyone), it can be interpreted either way. It's like 'is the glass half full or half empty?' Although, yes, Paul did mean the .lvl. editor and I will shut up about it now.

:

It's not really to do with programming. It's to do with the format of those files, which is a format specifically created by OWI.
Oh I sort of see now. OWI made a type of file that no other computers know how to use, so Paul needs to crack these files. Am I right?

ThibG 04-05-2010 05:44 AM

OWI created a game. And like many other companies, they did it themselves without using other's efforts.
That implies they had to create representations for things like sprites, sounds, level layouts or scripting, those are formats, and those formats are specific to the A.L.I.V.E. engine.
Since OWI hasn't documented them (since they didn't envisage modding or selling the engine at all), and didn't release the game source, that means you have the game in a hand, binary files in the other.
In order to get to understand those file formats, you need to guess, try to modify things, read the binary (that is, a sequence of simple operations like additions, substractions, etc.) and understand how the interesting parts work.
That is long, difficult, and involves much more than C/C++ knowledge.

Jango 04-09-2010 03:06 AM

Surely making a new game engine would be simpler?

Namida 04-09-2010 09:52 PM

Yes, but unless we use fanmade sprites, without ripping the sprites that isn't possible.

Scraby 04-10-2010 07:53 AM

i found a program for ripping but i didnt figure out how it works,you download it place it in a folder animget,and in that folder put files readme.txt and animget, when you capture animations go to adobe photoshop or something like that and create a TRANSPARENT background,or the sprites will go black and white....

Josh 04-10-2010 07:59 AM

There is a section in TOL with the AO sprites. Thats how I made these GIFs:

http://img248.imageshack.us/img248/9561/glukkon.gif
http://img638.imageshack.us/img638/692/mudlotus.gif

Scraby 04-10-2010 08:03 AM

yep i found it but no walking anim,or running...

Jango 04-16-2010 03:21 AM

Hey Paul, how is the path editor getting on?

Paul 04-16-2010 10:41 AM

It isn't im too busy lately

mlg man 05-01-2010 06:20 PM

Paul, are you abe to get all the animations before doing a path editor, because it seems if you do animations first you will get more work done.

Im just dieing for the Walking animation!

Jango 05-03-2010 12:19 PM

Have you done any work on it lately Paul? Or are you still too busy? :)

MA 05-03-2010 12:46 PM

hey there, Paul? Paul? you there, Paul? Paul? Paul? hey, Paul? Paul? Paul, my man? Paul? Paul, where did you go? where you gone, Paul? Paul? Come on, Paul? Paul, for god sake, you there? Paul, how's things going? you done it yet, Paul? is it coming along, Paul? is it done yet, Paul? are you working on it day and night, 24/7 Paul? are you devoting all of your time to it, Paul? are you abandoning your personal hygiene for this task yet, Paul? have you closed the curtains, Paul? have you become adept in the dark, Paul? does the light burn, Paul? will it be worth it, Paul? is there really going to be such a big reward for all this trouble and nagging and nagging and nagging, Paul? is there, Paul? please tell me, Paul! Paul! ARE YOU THERE PAUL?

i don't think he's there, children.

Crashpunk 05-03-2010 11:52 PM

I'm not surprised he left...

we nagged him to death

MeechMunchie 05-04-2010 12:12 AM

I'm so quoting that.

Nate 05-04-2010 03:09 AM

Paul comes by occassionally and he always posts an update. Nagging questions here and (god help me) via PMs will have no effect on the regularity of his posting; except maybe to irritate him beyond the point of no return.

Jango 05-04-2010 07:43 AM

Sorry. :(

I hope you are not angry anymore.

Or I'll slap you. ;)

Paul 05-04-2010 10:22 AM

Attached is some reversed source for a path parser. It can only handle R1Path, path 1.

It will call the decoder with given arguments for the first few screens. It still needs the following:

-A unit test for current input/output
-Refactor the code to be human readable/figure out wtf is going on (use unit testing to check nothing was borked)
-Figure out how the format is working properly, I Think there might be another function that sets up the placement objects maybe.. who knows..

There are 3 hard coded values, two offsets in the file and the path items which is 0xC. Hence this wont work for any other path since these values change. It should be possible for someone else to at least screw with the first few screens after spending a lot of time looking at this ;)

Edit: btw slight issue with the code, swap the arguments of main() around, also figuring out collision detection reading from the path still needs figuring out too :|

Sample output from the loading screen to the first screen of the game

Loading to S1
aIndex: 0 aIteration: 1 Arg3: 1 Arg4: ffffffff
OPCODE: load_unknown_1
OPCODE: load_null
OPCODE: load_null_1
OPCODE: load_font_q
OPCODE: load_slig_bans2
OPCODE: load_unknown
OPCODE: load_glow_bans
OPCODE: load_glow_bans
OPCODE: load_glow_bans
OPCODE: load_glow_bans
OPCODE: load_glow_bans
OPCODE: load_hoist_rocks
OPCODE: load_null_35
EXIT LOOP!
aIndex: 0 aIteration: 2 Arg3: 1 Arg4: ffffffff
OPCODE: load_hoist_rocks
OPCODE: load_null_1
OPCODE: load_font_q
OPCODE: load_slig
OPCODE: load_slig_bans2_proxy
OPCODE: load_unknown_4
OPCODE: load_glow_bans
OPCODE: load_null_35
OPCODE: load_info_point
EXIT LOOP!
aIndex: 1 aIteration: 1 Arg3: 1 Arg4: ffffffff
OPCODE: load_null_1
OPCODE: load_hoist_rocks
OPCODE: load_hoist_rocks
OPCODE: load_switch_bans
OPCODE: load_hoist_rocks
OPCODE: load_unknown_bans_1
OPCODE: load_mud
OPCODE: load_unknown_bans_1
OPCODE: load_hoist_rocks
OPCODE: load_unknown_8
OPCODE: load_switch_bans
OPCODE: load_null_35
OPCODE: load_meat_saw
OPCODE: load_meat_saw
OPCODE: load_meat_saw
OPCODE: load_unknown_11
OPCODE: load_unknown_4
OPCODE: load_glow_bans
OPCODE: load_mud
EXIT LOOP!
aIndex: 0 aIteration: 1 Arg3: 1 Arg4: ffffffff
OPCODE: load_unknown_1
OPCODE: load_null
OPCODE: load_null_1
OPCODE: load_font_q
OPCODE: load_slig_bans2
OPCODE: load_unknown
OPCODE: load_glow_bans
OPCODE: load_glow_bans
OPCODE: load_glow_bans
OPCODE: load_glow_bans
OPCODE: load_glow_bans
OPCODE: load_hoist_rocks
OPCODE: load_null_35
EXIT LOOP!

After the first exit loop that is everything for the first screen, it appears to also load items for each screen around it, e.g:

ParsePath( &data[0], 0, 1, 1, -1 );
ParsePath( &data[0], 0, 2, 1, -1 );
ParsePath( &data[0], 1, 1, 1, -1 );
ParsePath( &data[0], 0, 1, 1, -1 );

Paying attention to only arg1 and 2 we can see that screen 0,1 is loaded which is the very first screen. Then 0,2 which is the screen DOWN or under the first. Then 1,1 which is the screen to the right... and then the first screen again for some reason..

However screen 2 to 3 makes much more sense:

std::cout << "\nS1 to S2\n";
ParsePath( &data[0], 0, 3, 1, -1 );
ParsePath( &data[0], 0, 2, 1, -1 );

screen 0,3 - the 3rd screen is loaded, and screen 0,2 the 2nd screen is loaded. Thus is always loading one extra screen. And the NEXT screen seems to be done first.

Crashpunk 05-04-2010 12:20 PM

Speaking of the devil!

Cool update even though I don't know idea what it's all about

STM 05-04-2010 12:37 PM

Can't decipher script for the life of me so, anyone mind telling me what this does?

Scraby 05-05-2010 08:45 PM

i found out that the path phrase is something like a form where everything is,getting nearer to the path editor.

Paul 05-11-2010 11:08 AM

Update: I'm not longer working on reversing the path format, I think I understand enough about the engine as a whole to do a basic reimplementation of it.

BUT! The following *has* to be done first otherwise there won't be enough game data:

1. Figure out all animation type compressions
2. Figure out FG1 in cam files
3. Figure out how to get sound sample data out of .VB files (music will have to be sodded off)

Once this is complete I will create an installer like tool to allow converting of all of this information, then I can write a level editor for the planned engine. So there will be a level editor before there is a game engine to run them on.

Edit: Note this will *only* be for data files in the PC version of AO.