Narwhal's Explanations Thread

Discussion in 'Content Creation' started by Narwhal, Jun 20, 2016.

  1. Narwhal

    Narwhal
    Expand Collapse

    Joined:
    Aug 4, 2013
    Messages:
    1,698
    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!
     

    Attached Files:

    #1 Narwhal, Jun 20, 2016
    Last edited: Apr 17, 2017
    • Like Like x 15
  2. ajc918

    ajc918
    Expand Collapse

    Joined:
    Dec 17, 2013
    Messages:
    47
    Could you explain how to make/change an engine and transmission?
     
  3. Narwhal

    Narwhal
    Expand Collapse

    Joined:
    Aug 4, 2013
    Messages:
    1,698
    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. :(
     
  4. Funky7Monkey

    Funky7Monkey
    Expand Collapse

    Joined:
    Oct 12, 2014
    Messages:
    977
    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.
     
    • Like Like x 2
  5. Narwhal

    Narwhal
    Expand Collapse

    Joined:
    Aug 4, 2013
    Messages:
    1,698
    Updated first post with a new how to on How to move a texture to another car(for engine swaps, part swaps, etc)
     
    • Agree Agree x 1
  6. Peter Beamo

    Peter Beamo
    Expand Collapse

    Joined:
    Jun 27, 2016
    Messages:
    3,202
    man!! This is VERY USEFUL!!
    thx m8 it's very easy to understand!
    --- Post updated ---
    wut about adding textures to an object???
     
  7. Narwhal

    Narwhal
    Expand Collapse

    Joined:
    Aug 4, 2013
    Messages:
    1,698
    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.
     
  8. MisterKenneth

    MisterKenneth
    Expand Collapse

    Joined:
    Mar 26, 2016
    Messages:
    1,747
    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.
     
  9. Peter Beamo

    Peter Beamo
    Expand Collapse

    Joined:
    Jun 27, 2016
    Messages:
    3,202
    uhh...I want to know how to add the textures ingame :D
     
    #9 Peter Beamo, Apr 18, 2017
    Last edited: Apr 18, 2017
  10. fufsgfen

    fufsgfen
    Expand Collapse

    Joined:
    Jan 10, 2017
    Messages:
    6,782
    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:
    upload_2017-4-18_4-22-54.png

    Paths and files:
    upload_2017-4-18_4-24-5.png
    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 :p
     
    #10 fufsgfen, Apr 18, 2017
    Last edited: Apr 18, 2017
    • Informative Informative x 1
  11. Peter Beamo

    Peter Beamo
    Expand Collapse

    Joined:
    Jun 27, 2016
    Messages:
    3,202
    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
     
  12. Peter Beamo

    Peter Beamo
    Expand Collapse

    Joined:
    Jun 27, 2016
    Messages:
    3,202
    it's kind annoy me because NO TEXTURE FOR THAT GODDAMN OBJECT
     
    • Agree Agree x 1
  13. fufsgfen

    fufsgfen
    Expand Collapse

    Joined:
    Jan 10, 2017
    Messages:
    6,782
    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.
    upload_2017-4-18_20-8-8.png

    I get that same frustration I believe.
     
    • Like Like x 1
  14. Peter Beamo

    Peter Beamo
    Expand Collapse

    Joined:
    Jun 27, 2016
    Messages:
    3,202
    Ummm..I think a lot of people want to know how to make a proper jbeams..correctly
     
    • Agree Agree x 1
  15. Narwhal

    Narwhal
    Expand Collapse

    Joined:
    Aug 4, 2013
    Messages:
    1,698
    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.
     
    • Agree Agree x 1
  16. Peter Beamo

    Peter Beamo
    Expand Collapse

    Joined:
    Jun 27, 2016
    Messages:
    3,202
    for a vehicles
     
  17. Peter Beamo

    Peter Beamo
    Expand Collapse

    Joined:
    Jun 27, 2016
    Messages:
    3,202
  18. Flippi 284

    Flippi 284
    Expand Collapse

    Joined:
    May 2, 2017
    Messages:
    2,855
    thanks for all this info narwhal. rest in peace.
     
    #18 Flippi 284, May 17, 2017
    Last edited: May 23, 2017
    • Like Like x 3
    • Agree Agree x 3
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice