PDA

View Full Version : (Almost) New Feature: Lots of testers needed (texture ovls)


Belgabor
09-18-2006, 05:20 PM
Hi everybody,

some of you might have read the discussion I had with Vodhin and others about texture ovls. I have now tried to create something like this and want you people to test it. The reason I need as many people as possible to do test is, that shyguy already tried to do it, and it worked for some people but not for others. For me it works perfectly.

Incuded are four walls of my snowset, please try to place them all in a park to see if you encounter any problems. The placing might be a bit strange as I changed some things in the importer that affect the 'fix orientation' flag, so that is no error :)

You can find the walls in the walls section, grouped as the (very probably) first item.

Test Pack Download (http://belgabor.vodhin.net/belgabor-TextureTest.zip)

If you encounter an error, please make sure it's intalled correctly (Nothing uncommon there, it has to be installed like all the other custom scenery. The only difference is that there have to be two extra ovl files in the theme directory along style.*.ovl).

Awaiting comments :D

PS: If this turns out to work it will be an integral part of TNG, [mafia voice]so it's in your best intrest to test it[/mafia voice].

marnetmar
09-18-2006, 05:35 PM
I just got it Belgabor, I'll give it a test run a little later this afternoon & let you know how it works or doesn't work. Hopefully it'll work as planned ;)

apet08
09-18-2006, 05:49 PM
It works fine on my system. I've placed each piece five times with shadows on, built a coaster and generally waited for a while and there was NO crash. [Thanks, -Nuclear Fish-]

marnetmar
09-18-2006, 05:51 PM
They seem to be fine here for me, I'll leave them in awhile & add some other stuff & see if they keep working the same.

http://img205.imageshack.us/img205/103/texturetestdd0.jpg

-Nuclear Fish-
09-18-2006, 06:12 PM
It works fine on my system. I've placed each piece five times with shadows on, built a coaster and generally waited for a while and there was crash.

Er... are you saying there was a crash, or wasn't?

I shall test this right away Belgabor to see if it works on my PC.

Belgabor
09-18-2006, 06:18 PM
It works fine on my system. I've placed each piece five times with shadows on, built a coaster and generally waited for a while and there was crash.
I believe (or hope) you missed a 'no' before 'crash' :D

Thanks for testing. I will need to do another test in the future, as the way I did it is currently a bit hackish. It's not a pure texture ovl, there is a dummy mesh inside. The Importer and libovl currently cannot write a texture-only ovl, it needs a mesh (one per texture, it segfaults if you have unassigned textures).

Please continue testing despite what I said, as it will take some time till I try to implement this properly (in TNG) :)

apet08
09-18-2006, 06:21 PM
In case you miss my edited post, let me repeat that I made a mistake: there was NO crash.

-Nuclear Fish-
09-18-2006, 06:28 PM
Everything worked fine for me too. No problems whatsover.

And I really hope you release your snow set soon Belgabor! Those ice walls would be perfect for Frozen Meltdown! I'm tempted to use the ones you've provided, but I shall wait patiently until you release the full snow set...

rforeman
09-18-2006, 07:18 PM
Worked on my system. :up:

Vodhin
09-18-2006, 07:28 PM
Just looking at the file I believe you have done it :D I doubt that there will be any problems since you were able to make the "phantom" OVLs that the others refer to.


Now, How do you set it up in the importer? do you have to type the path to the OVLs, or can you use referencial markers (..\texturefile)?

Belgabor
09-18-2006, 07:57 PM
Ok, I explain :)
Use either my exporter v1.4 or jonwils/DragonIOAs version. It won't work with my earlier versions.

1. The texture ovl
Open the create scenery ovl dialog
You need an ase with as many seperate objects (meshes) as you plan to use textures. Use a simple one (I used a triangle), it won't show up anywhere, we just need that to fool libovl.
Add your textures and assign each to one of the objects. Surplus textures will make the importer crash. Give them easy to remember names as we will need them later.
Save to an easy to remember name.2. The actual Scenery OVL
Open the create scenery ovl dialog
Open your ASE
You're probably able to add textures, but I have not tested that. Do NOT add the texture you will reference to.
Add the filename of your texture ovl (without the .common.ovl) to the references. This is a relative path to where the texture ovl will be in relation to the scenery ovl. I used for my test "../belgabor-snowwalltexture". It may be fine to put it in the same directory, but I also didn't test that.
Set the mesh options. For the referenced texture, type the name into the texture combo box.
Finish the scenery ovl as usual3. The Theme
Create as usual. Do NOT add the texture ovl as scenery. This is probably the reason shyguy failed.
Install
Copy the texture ovl files to where RCT3 expects them to be (in my case, in the theme directory with the style.*.ovl files).That's it :D

Note: If this really turns out to work reliably, I'll do an 1.5 that creates the dummy meshes automatically.

CoasterSim.Fan
09-18-2006, 08:15 PM
Sounds like a pretty promising idea I will DL tem and let you know how it goes.

yesmydear
09-19-2006, 04:58 AM
Your set works properly on my computer too. Thank you so much for this new feature :)

The_Cook
09-19-2006, 06:29 AM
Note: If this really turns out to work reliably, I'll do an 1.5 that creates the dummy meshes automatically.

As part of something else that I'm working on I've been going through libOVL very carefully. My understanding is that RCT3 doesn't need the dummy meshes, but the libOVL code does because of the way that it has been coded. From the game engines point of view it is perfectly legitimate to have an ovl with just an ftx segment in it, ie. a FlexiTexture. If you drop Style\Themed\Adventure\BrassTexture.common.ovl into a text editor capable of displaying hex you'll notice that at about byte 30 you'll see FGDK, FlexiTexture and ftx which are all associated with the header block for a flexitexture. There are no other header blocks. Do the same with a real scenery piece, eg. TreasureChest and you'll see header blocks for ftx, shs and svd which are FlexiTexture, StaticShape and SceneryItemVisual respectively.
Unfortunately the SaveSceneryOvl() routine in libOVL is hardcoded to create an SVD object, which will fails if there aren't any meshes present. Ideally that routine should be able to handle the case when there are textures but not meshes, some if clause around lines 292 to 347 should be sufficient.

I don't wish to belittle JonWils contribution, I'm genuinely in awe of what he has already worked out, but the actual code implementation of libOVL is a very good example of how not to structure a software project. I'd love to refactor it into properly encapsulated C++ classes, but I simply don't have the spare time at the moment.

Vodhin
09-19-2006, 08:26 AM
/\ I second that observation, and I'm just using notepad. Now... if you could do something like that for joint parts...

Belgabor
09-19-2006, 08:49 AM
Nicely put, The Cook!


Unfortunately the SaveSceneryOvl() routine in libOVL is hardcoded to create an SVD object, which will fails if there aren't any meshes present. Ideally that routine should be able to handle the case when there are textures but not meshes, some if clause around lines 292 to 347 should be sufficient.
Indeed, but I'm not sure what to do with the Symbols and Loaders, so I won't touch it at the moment. (Actually after having slept I think I know what it's about, maybe I will look at it later).


I don't wish to belittle JonWils contribution, I'm genuinely in awe of what he has already worked out, but the actual code implementation of libOVL is a very good example of how not to structure a software project. I'd love to refactor it into properly encapsulated C++ classes, but I simply don't have the spare time at the moment.
Couldn't have said that better. Unfortunately I will have to do the refactoration for TNG. I did a lot of code commenting on the dumper on sunday (mushy brain afterwards included). What still stumps me are the relocations. I know what they do (I suspected it, but since you explained it in the shop thread I know for sure :) ), but reading the respective code is another matter...

I'll work on 1.4.5 now, which will have new in-game features (No, I won't spoil the surprise :p ). They will be entirely unrelated to texture ovls though.

The_Cook
09-19-2006, 12:29 PM
Indeed, but I'm not sure what to do with the Symbols and Loaders, so I won't touch it at the moment. (Actually after having slept I think I know what it's about, maybe I will look at it later).

Couldn't have said that better. Unfortunately I will have to do the refactoration for TNG. I did a lot of code commenting on the dumper on sunday (mushy brain afterwards included). What still stumps me are the relocations. I know what they do (I suspected it, but since you explained it in the shop thread I know for sure :) ), but reading the respective code is another matter...

I'll work on 1.4.5 now, which will have new in-game features (No, I won't spoil the surprise :p ). They will be entirely unrelated to texture ovls though.

Loaders are the header structures for each of the segments within an OVL file. I've seen two different types of loaders, type 0 and type 2. Type 2 contain information that is needed to sort out the relocations. The relocations being pointers that need fixing up when the structure is loaded into memory. In order to create different types of scenery the SaveSceneryOvl() routine needs to be rewritten to write whatever files are required, at the moment it's hardcoded to write ftx, shs and svd segments but it's needs refactoring to handle segments in a generic fashion if it's going to be used for non-static scenery. The use of global lists doesn't help on that front either.

Symbols are all tied in with this somehow, but I'm not quite sure of the precise details just yet. Symbols act as a means for referencing other blocks.

wabigbear
09-19-2006, 04:19 PM
I downloaded and tried the test walls first in a empty bench in the scenario editor, and then in a 100X100 park fully landscaped with multiple types of custom (I've used almost all of them in there...) and generic scenery, shops, flat rides, and tracked rides, ran it at differing speeds, daytime and at night, and allowed around 50 peeps to move around and about the test pieces. I ran 1/2 hour in the empty bench, 1 hour in the full bench at my usual settings, then the same amount of time with high settings, (granted, the large park lagged so much that it barely moved), but experianced no crashes.

CoasterSim.Fan
09-19-2006, 05:04 PM
I had no crashes ether. Good job figuring this work around out.