Rollcage level editor
#1
A rollcage level editor was posted on the steam group webpage.

RollcageEditor.zip
Original Post
Discussion

Its an old windows program, pretty odd to get working on modern versions of windows.
People have got it working on windows xp so far.
Reply
#2
I was able to load the program on a old computer with windows xp.
Ive found its a pretty ghetto way to make a level, credit to the ATD level designers for making cool levels.

First impressions, its a 2d vector editor, you can make paths, LMB to move a vector, RMB space to add a vector, RMB vector to delete a vector.
The program has different modes, profile mode for example, which I think is used to edit the height of a segment and texture a segment row.
The different modes have different features/buttons/hotkeys, some buttons are modes where you can zoom or select things for example.
There is some 3D modes which can be accessed by using the F keys, F1 - F4, escape to exit, arrow keys to navigate, ctrl and alt to zoom.

The program can edit .lev files, the ducatti engine reads .blp files.
Opening a blp file with notepad, ive found the blp files are gfxm files, which are the files rollcage uses.

There is a good tutorial with useful info in the manual, on the steam group webpage.
The manual refers to a PROCESS O/P button, to compile a level, this will generate a btp and blp file.

Im not sure how to make valid rollcage blp/gfxm file, but that is the main problem.
Maybe the answers are in the manual.

..

I tried to follow the tutorial in the manual 'Setting Up The Editor' and 'Designing A Track, The Basics'.
I added a zip file with the files below.

First I had to setup the editor.
I was suppose to use the rollcage MBG and MED files, but I dont have them.
There are two files that come with the level editor, so I tried use them.
MBG is a graphic file, like the BTP files.
MED is text file, with a list objects, MDL, RDX, PIN, ANB, OAB.
RDX is a destruction file.
PIN is a PINP car/bike model file.
Im not sure what ANB and OAB are for.

The tutorial says load the 'new' level, the new level is a bit different from the description, but not much.
I followed the tutorial.. I had 6 check points, 6 start positions, a ducati start board/sign model, and a Bat textured start line.
I textured some of the track in a 3D face mode, F for face mode, T to select a texture.
The program kept moaning about 'unable to link with real world' when placing objects, after messing with the grid buttons this seemed to stop happening.
I got to the part when you have to reposition the start board/sign model.
test.lev.

I made a looped 'movement path', for the start board/sign, then linked the start model to the path.
The movement path line interpolation was all curvy, im not sure how to make some parts straight/linear.

After that, I made an 'AI path' for path 1.
I had some problem with this, I couldnt make the points link all the way round the track, they wouldnt link pass the next vector, so I made a little loop path near the start.
test2.lev.

I moved the paths so they didnt collide.
test3.lev.

For the flares, the start board/sign, I dont know if it the ducati board has flares, so I didnt bother adding them.
I tried to process o/p.. 'Failed: untextured polygon'.

I tried to change all the sky textures on the track to something else.
After doing about 80% of the track, which took some time, the program crashed, saying 'no room for face mode'.
I looked through the manual a bit, I found I was adding batternburg textures everwhere.
T is used for normal textures, B is for the start line, maybe other things.
test4.lev.

I had a break. I tried to texture the level again.
I got near 80% again, then is said 'no room for face mode'.
I found, the segment, was too big, too many faces to texture.
With auto grid on, I made the track smaller, moving path vectors into position.
The track seemed like a good size, so I pressed process o/p, the level compiled.
test5.lev, testy.blp, testy.btp.

I replace 034 with testy.blp (gfxm) and 035 with testy.btp (textures).
034/035 is the track from the manual with the space ship, Outworld Contact.
I compiled the img/idx archive, then replaced the rollcage one (keeping a backup).
Then it was time to run game and see if it worked.. Its crashed while or after the level was loading.

I tried the track on the ducati engine, it worked, so, I dont know.
I can make a ducati level from the new.lev file, which works, but it doesnt work on rollcage.


Attached Files
.zip   test.zip (Size: 278.22 KB / Downloads: 75)
Reply
#3
Ive found this version of the level editor, doesnt support rollcage type models, or the rollcage type models are messed up anyway.

If you open the mdl files in the 'mdls' directory with a text editor, you will find some use the 'MODL' prefix (rollcage type), and some use the ' DOM' prefix (ducati type).
This is a list of the models with the ' DOM' and 'MODL' prefixes.


Code:
// DOMS
6bill1.mdl
6bill2.mdl
6bill3.mdl
6bill4.mdl
6bld1.mdl
6bld2.mdl
6bld3.mdl
6crane1.mdl
6lamp1.mdl
6lamp2.mdl
6sup1.mdl
6trees1.mdl
6tun1.mdl
6tun2.mdl
6tun2b.mdl
6tun3.mdl
6tun4.mdl
6tun5.mdl
6wall1.mdl
LLAMP2.MDL
LSIGN1.MDL
LTREE2.MDL
start.mdl

// MODLS
CNBUSH1.MDL
CNBUSH2.MDL
CNRBAR.MDL
JBUILD1.MDL
JBUILD2.MDL
JBUILD3.MDL
JBUILD4.MDL
JBUILD5.MDL
JBUILD6.MDL
JLAMP1.MDL
JLAMP3.MDL
JTREE1.MDL
RNTRAFIC.MDL
TEST2.MDL
TEST3.MDL
TEST4.MDL
TEST5.MDL
TEST7.MDL
TEST8.MDL
TEST9.MDL
THWHEEL.MDL
TNBUSH1.MDL
TSWHEEL.MDL

// Null
JTREE3.MDL


The Pc.med file that comes with the editor, loads the ducati type models.
If you modify it to load the rollcage type models, on startup the editor will show an error for each model 'Obsolete Model Format' and crash for some models.

The level editor does load some of the rollcage type models, but they look all messed up in the model viewer.

I checked the version of the level editor.
The manual says Version 11, also the screen shot of the program in the manual says 'Ver 11.' at the top.
The lvled version is 2.83, I checked the version of the level editor in the program, the version is 'Ver 19.83.'.
So I dont know.. If theres an older version of the program out there, it would probably be more suited.

The editor does load the obsolete models, and they can probably be added to the map, but I dont know beyond that.
Reply
#4
Finally writing a reply here... better late than never, eh?

First of all, I'm really impressed you got the editor to run! I tried running it in dosbox but just got "division by 0" (00h) from DOS/4GW. And wine didn't want to run it (no dos memory range, so it just tries to run it through dosbox).

I'm sorry to hear the editor might be too modern to work... I tried loading tracks (blp and btp) from both rollcage games in ducati, but it didn't work. I could extract and replace the btp (textures) of the ducati track, but changing the blp didn't work (but they look quite similar to the ones from rollcage in a hex editor). So btp seems identical, but blp is somewhat different. Perhaps one could get it to work with the right "textures.h" and "modindex.h" files? It's possible rc1 and rc2 also use different/incompatible track versions.

But even if the editor can not be used for rollcage tracks, at least this means we might get more clues for reverse-engineering the track data format. Making small edits and checking how the resulting blp changes can be helpful. And once ducati blps can be extracted, one can probably find what's different to the rollcage tracks.

Oh, and about your old avatar (before you changed it): are you working on a new track? (or was it a track from rc2 I didn't recognize?)
Try systemd. They said.
It'll be just as reliable as init. They said.
It'll be completely bug-free. They said.
Our monolithic windows-approach is far superior to the Unix-approach. They said.
Okay, so the codebase has grown gigantic and no one but our paid group of full-time developers who created it can maintain it and fix bugs... but it'll be fine. They said.
Okay, we'll shove it down your throat whether you like it or not. They said.

I guess it's finally time to look into GuixSD and/or devuan.

Code:
systemd-journald(195): Received SIGTERM.
systemd[1]: systemd-udevd.service has no holdoff time, scheduling restart.
systemd[1]: systemd-udevd.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-udevd.service
systemd[1]: Unit systemd-udevd.service entered failed state.
systemd[1]: systemd-journald.service has no holdoff time, scheduling restart.
systemd[1]: systemd-journald.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-journald.service
systemd[1]: Unit systemd-journald.service entered failed state.
Reply
#5
Hi.

Lvled

With dosbox, I got the same error on windows.
It seems to only work on old versions of windows.

I gave up with lvled, for now anyway.
I think one would require a set rollcage models (start board, cars, wheels, etc), a valid MBG texture file for the levels and models, and some other data files, made or generated.
I dont know if the blp/gfxm format is different, it probably is a bit different.
The main difference seems to be the models, and how the models are added to the MODL Directory.
http://wiki.xentax.com/index.php/Rollcage_2_IMG#GFXM (Table of MODL locations)

I dont know if lvled can be used to make new levels for rollcage or not, its a mystery.

Levels

It would be a big project to try to decode the gfxm/blp files, in order to make a new toolset, I dont know where to begin with this.
I tried to decode the pinp files to make new cars, but some of the formats still prevent me from making a model maker/exporter.

Im not decoding at the moment, sometimes I look at the pinp files and try to make sense of some of the data.
Its usually the little bits of data that prevent people from making new content.

Avatar

I added the old avatar below.
In short I was byte editing a level, which took a lot of time todo.

I was trying to update some of the segment vert positions, to see if I could modify a level.
With the Racing Line level 122, I made some of the track into a ramp.

First I modified some of the segment Vert list: SEGM Verts List: ZZ ZZ XX XX YY YY ?? ??
For part of the track I incremented some of the Z positions.

This worked, but then I played the level, the car treated the ramp like it was a flat road, so I guessed the face normals were incorrect.
So I looked for some surface normals, after some time I found a pointer was added to each face, for one of the segment face lists.

Code:
SEGM Face List: RR RR NN NN TT TT TT TT
RRRR: Face render order or something.
NNNN: GFXM Surface Normal ID.
TTTTTTTT: Face Texture ID.

I found the face normals are added to a GFXM List, segment faces use one of these surface normals.
Im not sure how the surface normals are stored, its probably some orientation/rotation format, or maybe its a vector.

To make a track with segments, first one would have to check all the surface normals, add the unique normals to a list, then for each segment face, add a pointer to one of the surface normals.
Though this is just theory, I havnt made such a program.

A tool to update these lists may be a fun to use, but its not something im working on.
It would be nice to be able to make new levels, but it seems like a fantasy to me.


Attached Files Image(s)
   
Reply
#6
Oh, thanks for the explanation!

I'm really surprised. It seems you've figured out so much of the formats!

When you say it treated it like a flat road, did the car drive through the ramp or did it just collide weirdly? Anyway really nice reverse engineering¹! Don't be afraid to start a new thread and post more about what you try, I'm sure I'm not the only one finding this interesting.


¹ I originally used the word "hacking" here. By the term "hacker" I mean a positive, inquiring and inventive way of looking at things in a new and playful way (click for an example of true hacking, or: how RMS managed to use 6 chopsticks at the same time). I've changed it to "reverse engineering" to avoid the chance of people to misunderstanding and thinking orgyia was doing something bad. Wink
Try systemd. They said.
It'll be just as reliable as init. They said.
It'll be completely bug-free. They said.
Our monolithic windows-approach is far superior to the Unix-approach. They said.
Okay, so the codebase has grown gigantic and no one but our paid group of full-time developers who created it can maintain it and fix bugs... but it'll be fine. They said.
Okay, we'll shove it down your throat whether you like it or not. They said.

I guess it's finally time to look into GuixSD and/or devuan.

Code:
systemd-journald(195): Received SIGTERM.
systemd[1]: systemd-udevd.service has no holdoff time, scheduling restart.
systemd[1]: systemd-udevd.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-udevd.service
systemd[1]: Unit systemd-udevd.service entered failed state.
systemd[1]: systemd-journald.service has no holdoff time, scheduling restart.
systemd[1]: systemd-journald.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-journald.service
systemd[1]: Unit systemd-journald.service entered failed state.
Reply
#7
Its hard to explain, the ramp looked like a ramp, but the car treated the ramp like it was a set of stairs.
The car would go full speed up these stairs, but the car stayed flat like it was on a flat road.
The car would go forward across the face, then at the end of the face, the car would jump up from the end of the face to the start of the next face, then the car would go forward again.

..

I think I need a break from rollcage, to save my sanity.
Lol. Sad

I would like to be able to get lvled to work, or some other toolset, but I think its too much messing about at the moment.
Making a model maker is probably a good next step, but I myself, really need to slow down and, do something else for a bit.
Reply
#8
(2015-06-17, 04:31 PM)orgyia Wrote: Its hard to explain, the ramp looked like a ramp, but the car treated the ramp like it was a set of stairs.
The car would go full speed up these stairs, but the car stayed flat like it was on a flat road.
The car would go forward across the face, then at the end of the face, the car would jump up from the end of the face to the start of the next face, then the car would go forward again.

..

I think I need a break from rollcage, to save my sanity.
Lol. Sad

I would like to be able to get lvled to work, or some other toolset, but I think its too much messing about at the moment.
Making a model maker is probably a good next step, but I myself, really need to slow down and, do something else for a bit.
In any case I'm really surprised by how far you went retro-engineering. I don't know how many hours do you spend per day on it.. But it must be quite a lot
___________________________________________________________________________________
Rollcage steam group to plan multiplayer games, check it out -> http://steamcommunity.com/groups/rollcage
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)