:
1. Go to hard coded offset (always near the end of the path file names) 2. There will be a DWORD, add this to the start of the file 3. At this new location load the next DWORD 4. Add this DWORD to the start of the file 5. The data here is specific to whatever is at the offset identified by 3 By the way Anim files work in a similar way. |
You mean there is some sort of table to "function calls", where each cell is one DWORD long, and points to a function identifier followed by some arguments?
|
I Dont know if this helps. But I downloaded the exoddus demo (I have the full game but wanted a smaller test file). and edited the path and changed every 00 01 (256) to 00 02 (512) Then it started screwing things up. Example: ledges were reveresed, doors were already open, doors would go to different locations. And every time you walking on to a ledge you would die. Its weird cause abe just freezes and dies.
|
:
-an int that has a magic meaning, the game always checks it for 2 or 4. -a pointer to the current file location in the path -a pointer to a global class that contains all kinds of stuff Werid thing is that load_mud wont appear to load any data from the file pointer for location / is it scrubber / native / etc.. it knows this info by checking members in the global class pointer. So I assume at the level load it somehow prepopulates this information |
If anyones trying to decode paths this is how the screen "array" is laid out in the first path.
http://i48.tinypic.com/4jp15h.jpg When I get time I'm going to doc all the offsets and function calls for each screen in an attempt to figure the format out. |
picture is too small, have a bigger one?
|
Try this.
|
Any progress with the .lvl editor program?
|
:
|
:
|
|
I'll prob make another version.. it will just be a long time before I come back around to it.
|
it would help if you gave out the source code, i have been learning a bit of computer language and are just a beginner, i would like to help and learn from the code, it really interests me. Even if you just pm me a link to it, that would be cool. Only do so if you want to.
|
Yeah, it really is, a level editor would be amazing. :)
Very well done for giving it a go! |
What is the problem with making a .lvl editor? How far have you got with making it? Why can't Oddworld Inhabitants make one?
|
Game code is complicated, and the A.L.I.V.E. engine in particular is very inflexible.
Not very far. We can swap backgrounds and edit object placement, screw up sounds and emulate some behaviours. Because OWI barely exist any more. |
Right, OK, I see.
Thanks for your reply. EDIT: Why can't we get the game codes from OWI? Surely they don't care for them anymore with a 12 and-a-half year old game... |
Um... they DO care... publishing the source code is like... giving game for free...
|
Also it would be, as stated several times in this thread and others, nearly pointless. The ALIVE engine has the versatility of a bread factory without those bread making things...
God I suck at metaphors today... |
How come SligStorm got close to making a level editor five years ago then?
Surely a very simple level editor would not be so hard? |
Did he, or did he just claim it? What evidence did he supply?
|
Well, in >this< thread that is five years old, 'SligStorm' did claim that he was 'nearly done'.
Whether or not he actually was 'nearly done' is unknown. He said that he was using 'Game Maker' to build this supposed level editor. So I sent him a PM, asking if he was finished or if he had worked on it at all, and he said that he scrapped the project years ago. Why would he do that? I don't understand why he would stop if he was 'nearly done'. It seems that he was probably lying about it, but why would he want to get our hopes up like that? If he is actually telling the truth about him being 'nearly done' (that seems somewhat unlikely) why did he stop? So many people want a level editor. If it is possible, then I would give it a go myself, but I have no idea on how to do so. |
That level editor was more like an imitation engine done in Game Maker with which the intention would have been to make it versatile enough that you could build your own levels with it and it would play more or less like the original game.
Essentially SligStorm was trying to make a completely new engine that looked like the old one but added the ability to load custom levels. That is a pretty tough project though, especially with the difficulty of getting graphics etc, so that would be why he scrapped it. But making a good level editor for the actual game is pretty much impossible since, as many above posters have said, the engine just isn't versatile enough - there's too much stuff which is hard-coded into the game. I think the idea of trying to actually create new levels for the original game was scrapped a long time ago, the work that's gone on since then is to try to create a replica engine (pretty much what I described above) which would use the original data while adding on a bit of customization ability. But of course, the first step in doing that is reversing the original data formats, which is quite challenging as you can see by reading through this topic :D Hope that helps ;) |
Thank you for explaining it to me. :)
Just one more question though (and I think I already know the answer). I know it sounds completely ridiculous but would it be possible to get the level editor from, for example, Command and Conquer: Red Alert 1 and then modify it to be able to create Abe's Oddysee levels? That game was made around the same time as AO. It is just an idea that flickered into my mind. ;) |
Well... its much more impossible than making it from scratch :P
|
Very few games can be edited by other game's editors, even with heavy modification.
|
What i don't it is how come the Source Engine was modded quite easliy and the A.L.I.V.E is near impossible.
I don't know much about Game Engines but surely a 2D side scrolling engine would be easier to mod then a 3D on? Anyway Paul, I still have compleate fath in you. You'll crack the code soon :D |
The ALIVE engine has too many hard-coded events (i.e. time before sligs turn, and I wouldn't be surprised if walking distance was as well) whereas the source engine was made avoiding these situations. AO probably wasn't originally!
|
Yeah, Source is easy to modify because that's how it was designed - Valve purposely made it easy to mod. Whereas with Abe's Oddysee /Exoddus, as Phylum said there's too much hard-coded and it wasn't really designed to be modified.
Also, as far as I'm aware no one had to reverse engineer anything to mod Source, Valve released official tools to create mods with :p |
:
:
I just find it quite strange how it is nearly impossible to make new playable levels for a game that is over 12 years old. How difficult really is it to crack these codes? What does it involve? Is there any other possible way to make a level editor? I really don't have a clue. |
Somebody can rewrite the whole game engine and then modify anything he/she wants, including levels... but its muuuuuuuuuuuuuuuuuch work
|
:
And by 'much work', do you mean that it takes alot of time or that it is really difficult? Or both? |
Reverse engineering
:
:
|
Jango if you REALLY REALLY REALLYYY want a level editor then...
1. Learn how to reverse engineer x86 binaries 2. Use this to figure out how to use the files which the game uses 3. Write something to convert this to a more robust format (means you need to know another programming language which likely means you know C or C++ as this is almost certainly a prerequisite to 1.) 4. Write a whole new game engine that uses these files 5. Write an editor to create new files / levels / sounds / etc for your engine If you have zero knowledge then you will appreciate even more how none trivial this is to accomplish (assuming you actually give it ago). Alternatively if you're pretty smart and know how game engines work in general and so on.. you can look at "Path 1" from path file in R1.LVL which I has posted the big image of above and see if any of the numbers make logical sense. I will be updating this image with more information as and when I can so that someone else can look at the level data and the path file data and try to figure out how its been pieced together. |
From what you two have just said above, I don't think I would really ever stand a chance of making one.
Thanks for explaining it all to me. :) I just really wanted to know why it is so tremendously hard to make one, and how possible it would be to make one. I think the bottom line is that a level editor is possible, but no one has the time or can be bothered with the effort to make one. Well done all of you for your huge effort on making a level editor. I appreciate it. :) |
Once the sprites are fully extracted, making a new engine should be a relatively simple task. Keyword, "relatively".
|
How far are you from extracting all of the sprites?
|
Sprites are not too much of an issue, the issues are:
1. AE background images, and all PSX back ground images (PSX uses MDEC so its possible to get those) 2. Path / level scripts, this is a big one, being able to convert or at least understand how these work is a must. 3. Other sprite types, there a few more compression types to figure out 4. Sounds.. well nothing seems to have been done on this The only thing I'm bothering with at the moment is #2. I'm pretty sure its possible to figure this format out, I spent about an hour last noting down the scripts for half of path one in R1 (up to the screen with the bombs in it, but have not done the secret areas or back tracking yet). Once I've got all of this information I will fix up the data and post it here, then someone else can also look at the data and try to figure out whats going on with it, I've already noticed a few things so far. |
Well done. :)
With #2 though, do you have to do the path/level scripts for the whole game or just for one level? Also, if all four of those things do get completed, what would be left to do to make a .lvl editor? |
Is any reverse engineering possible in visual basic 2008 or 2010, cause i know a fare bit of .net code, and wouldn't mind researching it. If it is, ill give it a go.
|