Hi all, Recently i have been typing up some really useful tutorials, based on what people have asked me. So I thought i would share it with the world. If anyone has a specific thing they need an explanation on, I may be able to write up something for it, depending on my knowledge of it. If I get something wrong, please correct me! Here are some of them. Most of them assume you know how to unpack the vehicle. If someone wants a write up on that I can do that. All files I edited will be attached! How to move a texture to another car(for engine swaps, part swaps, etc) For this example, I will be using the 200bx You can only have 1 materials.cs per folder. This means if you put your new materials.cs in the main folder with the other, it will overwrite it. To avoid this create a new folder and name is something like "200bx_Engine". Next copy all the textures from the 200bx engine and put them in this folder, including its materials.cs*. After that edit the materials.cs and remove all the textures you will not be using. Next change the file paths to the new location of the textures. Make sure you use forward slashes as well. You should be left with something similar to whats in the spoiler. so long as you have the top 2 lines and the ending bracket and forward slashes it should be fine Code: singleton Material(coupe_engine) { mapTo = "coupe_engine"; diffuseMap[0] = "vehicles/coupe/coupe_engine_d.dds"; specularMap[0] = "vehicles/coupe/coupe_engine_s.dds"; normalMap[0] = "vehicles/coupe/coupe_engine_n.dds"; specularPower[0] = "32"; pixelSpecular[0] = "1"; useAnisotropic[0] = "1"; castShadows = "1"; alphaTest = "0"; alphaRef = "0"; dynamicCubemap = true; materialTag0 = "beamng"; materialTag1 = "vehicle"; }; *For organization purposes, it would be worth sticking all the engine files in there(textures, material.cs and DAE file are the main ones). DO NOT put the configs you make in that folder, leave them in the main vehicle folder. How to make a jbeam a separate part For this example i will be using the moonhawk hood Copy and rename each jbeam you want welded to something like moonhawk_door_welded.jbeam. You do this so your part doesn't overwrite a existing part with that same name.Next open one of them up. For example the start of the hood jbeam should look like this Code: "moonhawk_hood": { "information":{ "authors":"BeamNG", "name":"Hood", "value":100, } You need to add onto the top part(moonhawk_hood) _welded or whatever you want to call it, just make sure there are no spaces. This is so the game can tell its a separate part. Next add Welded in front of Hood in the name part. This is the text that shows up in the part selector. Code: "moonhawk_hood_welded": { "information":{ "authors":"BeamNG", "name":"Welded Hood", "value":100, } That will make it a separate part, however if you are making it a brand new jbeam as well, you need to follow some formatting rules. The jbeam must have a unique file name the jbeam has to be setup correctly, like below. Stuff after a // are comments to explain. All of this is required for the jbeam to function correctly Code: { //this starts the jbeam, "INSERT_PART_NAME": { //this is the part name, do not use spaces, it is what shows up for the slots in the jbeam "information":{ //this just opens a bracket to include below info until the closed bracket "authors":"INSERT YOUR USERNAME", //this indicates who made this file. "name":"INSERT NAME OF PART", //this is what shows up in game in the selector. Spaces are fine here "value":100, //this is the games currency. How much is your part worth? } //this closes the information bracket "slotType" : "INSERT_SLOT_NAME", //this is the slot name of the part. It should be something from the slots part of another jbeam that this fits under(this is a child part to a parent part) } //this closes your part. after every part you need this BEFORE making a new part and at the end of the jbeam }// this closes the entire jbeam file How to move suspension. Please note this does not work on all cars, however I can write something up for the other cars if someone wants For this example I will be using the ETK800. First, open the etk800_body_wagon jbeam. Scroll down until you see the rear suspension, its around line 50. It should like like this: Code: ["etk800_suspension_R","etk800_suspension_R", "Rear Suspension"], What you need to do is add a nodeoffset of 0 for a base. Code: {"nodeOffset":{"x":0.0, "y":0.0, "z":0.0}} like this ["etk800_suspension_R","etk800_suspension_R", "Rear Suspension"{"nodeOffset":{"x":0.0, "y":0.0, "z":0.0}}],[/code] Next change the Y value in small increments(0.1 at a time). To move it foward make it a negative value, to move it backward keep it postive. It is easier to remove the wheels first in part selector before you move the suspension. The flexbodys may not move, if this is the case add a position of 0 to all the flexbodys in the etk800_suspension_R.jbeam. For example purposes, i will move it foward by 0.4, note that moving foward means it will be negative. Code: ["etk800_suspension_R","etk800_suspension_R", "Rear Suspension"{"nodeOffset":{"x":0.0, "y":-0.4, "z":0.0}}], Now for moving the actual wheels. Open the etk800_suspension_R.jbeam. and edit the exisiting node offset for the etk wheels. It should look like this(if it splits it into 2 lines, its actaully just 1 line) Code: ["wheel_R_5","etk_wheel_03a_18x9_R", "Rear Wheels", {"nodeOffset":{"x":"$trackwidth_R", "y":1.41, "z":0.32}}], Once again you need to edit the Y value. Since we moved the suspension foward by -0.4, that means we need subtract 0.4 from the current Y value. Code: ["wheel_R_5","etk_wheel_03a_18x9_R", "Rear Wheels", {"nodeOffset":{"x":"$trackwidth_R", "y":1.01, "z":0.32}}], And now your suspension jbeam should be moved! How to move flexbodys For this example I will be using the ETK800. To move flexbodys, you need add postion to them. It looks like this {"pos":{"x":0,"y":0.0,"z":0}} Note, that if your current flexbody doesnt end in with a third term, or , [], you need to add the, [], to it for this to work. Lets take the rear lower arms from the etk800 and add postion to them Code: ["pessima_lowerarm_R", ["pessima_lowerarm_R"]], would turn into Code: ["pessima_lowerarm_R", ["pessima_lowerarm_R"][], {"pos":{"x":0,"y":0.0,"z":0}}], Now when you move the suspension jbeam, the lower arm will move with it. You DO NOT have to change the y value. just leave it at 0. How to Weld doors/hood/trunk shut For this example I will be using the Moonhawk hood For the moonhawk hood, find the word latch(most text editors you can press ctrl f). It should be around line 306 and look like this Code: //hood latch {"beamDeform":10500,"beamStrength":30500}, {"breakGroup":"moonhawk_hoodlatch"}, Change the value for beamStrength to a higher number if you want the welds to still break, but be stronger than the regular latch. or put "FLT_MAX"(exactly like that with the quotes too) if you dont want it to break. Code: //hood latch {"beamDeform":10500,"beamStrength":30500}, {"breakGroup":"moonhawk_hoodlatch"}, This is what it looks like when i have the flt max value put in. Code: //hood latch {"beamDeform":10500,"beamStrength":"FLT_MAX"}, {"breakGroup":"moonhawk_hoodlatch"}, Now that part should be welded!
As in change the rpm and all that jazz? or just make a new one with same values? Creating engines is a huge weak spot for me, as i never have been able to figure out how to tune engines.
For naturally aspirated engines (non turbocharger), it's fairly simple. Having duplicated an engine (easiest way to start IMO, you've already got most, if not all, of the values you need), and renaming it, changing the power of the engine is simple. Just adjust the torque curve defined by the set of values ( [RPM, TORQUE] ), adding and/or removing values as you will. Horsepower is calculated based on torque and RPM. You can adjust the RPM limit, clutch torque, and various other things easily. As for turbocharged engines, you want to duplicate the engine and turbocharger (or just the turbo if that's all you want to change) (once again, duplication for ease). Rename them, as well as the turbo slot on the engine and the slot type on the turbo. The torque curve in the engine will be for before turbocharging. The turbo modifies the torque curve based on things I frankly don't understand. Someone else may be able to assist with that. The transmission is also fairly simple to modify. Again, duplication for ease: Copy the transmission you want to edit, renaming it, and making sure it has the correct slot type for the engine you want it in. You can change the gear ratio of each gear, as well as the final drive ratio. In addition, you can adjust the shift points and other things. Because of the way jbeam slots work, values within an object that is within another object's slot will override the higher level object's value. For example: A naturally aspirated engine has an RPM limit of 9000 RPM. A turbocharger that can be put into a slot of the engine defines the RPM limit at 8000 RPM. The engine without the turbocharger will rev to 9000 RPM, however, when it has the turbocharger, it will only rev to 8000 RPM. Likewise for transmissions. And, in theory (I don't think anyone has done it), you can have all of this data within the engine part.
Updated first post with a new how to on How to move a texture to another car(for engine swaps, part swaps, etc)
man!! This is VERY USEFUL!! thx m8 it's very easy to understand! --- Post updated --- wut about adding textures to an object???
Do you mean in blender? or in game? If you mean in blender i can link some tutorials, or if in game ill type out something if you need it.
Do you think maybe you could do one on modifying wheel files? I've recently been trying to do yellow Alder Sporters and STXs for my MFP skins for the Grand Marshal, and I always get the same result.
You mean like when you put objects to map and texturing those? Me too, I have spent hours during last days, Bob even gave me really good explanation and sample files, but I'm still getting no texture. Theory is that you put texture and model to map's folder, edit .cs file which contains instructions for game to place texture to object, but I had no luck, there is some small detail I just haven't figure out in it. One thing was also that model name and texture name could not be the same or no texture will happen and this was new for 0.9 version, but this is from my memory which sadly is not the best. Also one point Bob told me was that don't touch the material editor in game, that is asking for trouble. Update: I get this: Paths and files: materials.cs Code: singleton Material(seamless_S) { mapTo = "seamless_S"; diffuseColor[0] = "0.721569 0.717647 0.686275 1"; diffuseMap[0] = "levels/template/art/misc/seamless_S.dds"; translucent = "0"; materialTag0 = "RoadAndPath"; normalMap[0] = ""; specularPower[0] = "1"; translucentZWrite = "1"; alphaTest = "1"; alphaRef = "0"; useAnisotropic[0] = "1"; }; It is probably common newbie error, maybe my stupidity helps others
And u can send me a link how to put the textures to an object too!! But a porblem is "How can i make the textures appear ingame?? @Narwhal
That object I showed, it is now in new Tennessee map and Bob got it textured, bridge_support4.dae that is set up as a forest object, I think. So I took same .DAE, same texture and same materials.cs which I just edited path to be correct and I get more yellow no texture and that is about it. I get that same frustration I believe.
Heyo, Sorry for not being in here. My sleep has been completly messed up and i have not been able to think straight. @PETER BEAMO did you need to get textures working for a vehicle or a static object? This thread is also more of a beamng help thread, not a blender. So i will not answer blender related questions most likely. i may drop a link for a tutorial, but thats about it.