Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Welcome, Guest!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

Sign in to follow this  
Guest Mauler

3 - advanced How to get more FPS from your FPS

Recommended Posts

Guest Mauler
How to get more FPS from your FPS


First up, some terminology: A W3D file can contain multiple meshes, aggregates, and proxies. When I say mesh, I'm referring to a mesh object inside of a W3D file and not the file itself. Skinned meshes are meshes that have a WWSkin modifier applied. A draw call (or batch) is a unit of measurement which we’ll be using in this tutorial.  On most hardware, the Renegade engine is limited by overall CPU power and not the video card in use, so we’ll be trying to reduce how much the engine has to do each frame.


Now for some basic optimizations: We’ll handle rigid meshes first.  If you modeled it and it isn't alpha-blended or skinned, it's a rigid mesh. In general, each rigid mesh produces a draw call. If you use multiple materials in a mesh, each material will produce a draw call. Each additional pass in a material will produce an additional draw call. If you’ve been completely oblivious to rendering performance and want to optimize existing meshes, the simplest thing you can do is to merge meshes that use the same material but don’t actually need to be separate objects for rigging purposes (like wheels). It’s always faster to render an object with 4000 polygons than 4 objects with 1000 polygons. You should strive to keep objects using a single material; this means a barrel or crate should be using a single material and not a different one for each side. These optimizations are most effective when done on meshes that are used often (like props.)


Skinned meshes act roughly the same like rigid meshes; they must be deformed and uploaded to the video card every frame however. If you decide to skin an object, you should use as few polygons as needed to make it look good. Skinned meshes additionally do not have support for collision detection and cannot have decals applied to them, nor can they use precomputed lighting (ie “Compute Vertex Solve”.)


Unfortunately the previous optimizations won’t help much with object visibility. Renegade utilizes frustum culling which will skip drawing meshes that are behind you, but in order to skip meshes behind hills, buildings, and other large obstacles you will need to use a system called VIS. Maps with VIS will generally perform better than maps without because objects that are hidden can be completely ignored.  You can find an excellent tutorial written by YSLMuffins on how to hook VIS up on the Renegade modding forums. (http://www.renegadeforums.com/index.php?t=msg&th=6243)



Fixplanes (not boats)

The W3D exporter for 3dsmax doesn’t properly calculate the plane equations used for collision detection. Renegade will recalculate this information whenever a file is loaded, but you can speed load times by drag and dropping these files onto the fixplanes tool. This tool can process more than one file at a time; simply drop multiple files or a folder onto it. It’ll also process any files found in subdirectories.



Z-Aligned Billboards

The usual “orient” and “align” billboard modes aren’t very effective for foliage and plants because they will turn upwards to always face the camera. In order to use the new Z-align mode, simply drag and drop a W3D file onto the zalign tool and any meshes with a billboard mode applied will be modified.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Guest Mauler
      By Guest Mauler
      In scripts 4.1, it is possible to have a building in your map that works as a helipad. It will be totally separate from the weapons factory/airstrip in that you will be able to buy helicopters even if the war factory/airstrip is down and you will be able to buy ground vehicles if the helipad is down. You can even have someone buying a helicopter and someone else buying a ground vehicle at the same time.
      Firstly, in order to use this functionality you need to be using the sidebar in your map.
      Follow this tutorial http://multiplayerforums.com/index.php?/topic/2980-renegade-sidebar-tutorial/
      to set up the sidebar (make sure to read part 2 and follow that)
      You also require scripts 4.1 so make sure you have it installed and working in leveledit
      You also need the attached helipad_cinematic.txt [BELOW] file in your map mix file (it relies on the XG_HD_HTraj.w3d file from the stock renegade always.dat file)
      Also, open the C&C_blah_tt.ini file you made in the sidebar tutorial and add the following:

      [General]VehicleFactoryVehicleLimit=xAirFactoryVehicleLimit=yx being the number of ground vehicles players are allowed to build and y being the number of air vehicles players are allowed to build (and yes the numbers are separate)To set up the helipads, firstly you need to put a building on your map to act as the helipad. Create it like any other building (give it MCTs, PTs, damage aggregates and whatever else you want for it)
      Then open leveledit and open your map.
      Create a new preset underneath "simple". This will be the helipad fly-in cinematic object. Untick the "DefaultHibernationEnable" checkbox. Tick the "NotTargetable" checkbox. Tick the "IsEditorObject" checkbox. Tick the "IsHiddenObject" checkbox. Leave all the other settings at the default. Attach the script Test_Cinematic to this object and give it the parameter helipad_cinematic.txt
      Next, you need to create a landing position object. This will determine where the helicopters will fly in at.
      You will need one for GDI and one for Nod. (the fly-in cinematic object is used for both teams).
      Make this one a copy of the Dave's Arrow preset with no changes to the settings.
      Next, go to buildings and then air factory. Create an instance of this (one for each team). If you dont see air factory in the list it means you dont have 4.1 installed properly.
      Set this preset up as for any other building with all the usual settings and scripts.
      Make sure to set the building type to "helipad"

      Set LandingPosDistance to 1000Set CinematicTimer to 14.0Set CinematicSlotIndex to 4Set Landing Position Object to the landing position object preset created earlier.Set fly-in Cinematic Object to the fly-in cinematic object preset created earlier.No special scripts are required for this building.Once you have done this, place the helipad building controllers as per normal for buildings. Then place several (2 or 3 works good) of the landing position objects (for the right team) around the helipad at ground level. (these will determine where the helicopters land at).
      No you cant have more than one helipad per team, the logic doesn't support it.
      Now you need to set up the war factory/airstrip to not build helicopters anymore and to have them be built at the helipad.
      Create temp presets of the war factory and airstrip (or if you are already using temp presets, open them). The only change you need to make is to tick the BuildGroundOnly checkbox.
      Also, when using this you need to tick the allow flying vehicles checkbox under edit-level settings in LE, generate flight data (as part of pathfinding) and have a proper flight roof (i.e. all the things you normally need for a flying map).
      Helipad_Cinematic.txt contents

      -1 Create_Object, 3, "XG_HD_HTraj", 0, 0, 0, 0-1 Play_Animation, 3, "XG_HD_HTraj.XG_HD_HTraj", 0-1 Attach_to_Bone, 4, 3, "BN_Trajectory"-437 Destroy_Object, 3
    • By Pwn Call
      Destructible Pillars Tutorial
      By: Pwn Call (a.k.a. ESCALADE)
      This is a tutorial that will teach you how to make destroyable pillars in C&C Renegade.  Think of the scene from the movie the Matrix where all of the pillars are exploding from gunfire (only a little less epic)
      Here is a quick video to show you what your final outcome could look like.



      Quick disclaimer before you start.
      Make sure when doing this you don't put too many of these in your level as it requires a lot of meshes depending on how you make your pillars.  I wouldn't recommend making the breakable tiles as small as I did in the video that was just a quick test level.
      Also to allow for fewer meshes you could only make them breakable in the areas that are around the height of a player where you would normally only shoot anyways so you don't make too many extra meshes.
      If you already know how to set W3D settings for objects and are experienced in map making there is a quick outline of how to set up the pillars at the bottom.
      First step is to create the core of your pillar in RenX.  Create a small vertical box about .5 X .5 (depending on how you want your pillar or object) and whatever height will fill your room.  For the core I recommend the texture  "ref_cemnt_tmp.tga" which is from the Renegade texture pack.
      Also when you create the core of your pillar make sure to name it something like "core" because you will want to know what everything is by name for setting W3D options which I will explain later, also it makes it much easier to duplicate your pillar and select all the necessary parts later on.
      Here is my pillar with the outer "destructible" pieces near the bottom

      Next you will create the "destructible" part of your pillar as seen in the above image is the brown tiles at the bottom.  In that picture there are 8 tiles that surround the core pillar,  you will need to make these go all the way to the roof so your pillar is completely covered.  Do this by selecting them from the "Top" view and then go to the Edit Menu>Clone.  To move them up I would switch to the side view and I would also change your snap to grid settings to the same height as your breakable tiles so you don't have to line them up manually.
      Again make sure that they have a common name like "shatter" or "Break",  just something so you know what they are so you can select all of them later.
      As you can see in this picture make sure they are outside of the core of your pillar so the core doesn't show through and they completely cover it.


      Here is the side view to clone them up to the ceiling.

      Next what you will need to do is create a collision box that is completely outside of the entire pillar and outer breakable layers as seen in this picture.  Again name it something like "collision" so you know what it is.  It only needs to be the height of the player but you can make it all the way to the ceiling, this is necessary because it stops the player from breaking the outer breakable layer when walking into them.

      Now your pillar is complete and all you need to do is set up the collision settings.  If you want to make more pillars simply clone this one and move it where you want it.  Create however many pillars you want and then set the W3D settings after because when clones the W3D settings are reset.
      So first I will go into detail on how to set up the W3D settings for the Outer collision box.  First to select all of your collision boxes go to Edit>Select By> Name.  Now you will want to select all of the meshes that are called "collision" or whatever you named them, this is only for the outer collision box.  Once you have them all selected go to the Utilities Tab then W3D options then scroll down to where it says W3D export settings. Under Geometry you will check the Hide box and under Collision settings only click Physical.


      You can leave all of the other options the same,  this will hide this box but make it so you run into it with your character.
      Now for your Pillar Core's again go to Edit>Select By>Name and select all of your cores, this time under W3D options only check Camera, Physical, and Projectile under Collision settings and leave everything else the same.
      And finally for your destroyable tiles around the pillar go to Edit>Select By>Name and select all of the meshes that you named "shatter" or "Break" or whatever you named them.  There will be very many of these meshes.  For these W3D settings check off Shatter under Geometry and check off Physical, Projectile, and Camera for Collision settings.
      Now your Pillars are ready to go!!
      All you have to do to make more is select them all and hit clone and move the new pillars where you want them.  Make sure when cloning you redo the W3D options because the clones don't have any W3D options set!
      Play around with these settings to see what other cool things you can create.
      Quick Overview for Experienced Map Makers.
      Create the pillar core with normal W3D settings, Physical, Projectile, Camera
      Create your destructible outer meshes completely covering the core,  W3D settings > Shatter on Geometry, then Physical, Projectile, Camera
      Create a box just bigger than all of the meshes, W3D settings > Hide on Geometry, then Physical
      The last box stops the player from bumping into the outer layers and destroying them.
    • Guest Mauler
      By Guest Mauler
      RenX /  Leveledit
      First of all, some things you should keep in mind about elevators:
      an elevator might cause problems if there are alot elevators, or if people try to use the same elevator at the same time with a slow connection (56k for example) people might fall "through" your elevator and popup at the top after some seconds elevators can NOT transport vehicles! You should always take care that the Transition Zones (explained in the tutorial later) are not reachable for vehicles because the wil get STUCK in them! elevators often cause problems with beacons, if you try to deplay them ON the eevatro plattformFisrt Step is ofcourse, create your elevator. This is myone. Ok its not very nice but thats a 2 min one

      Basicly an elevator has a platform (in this image the red parts), and a door (the blue parts). Of course an elevator can also have other parts in the deep of complexy you want but for this tutorial this is the best choice. 
      Always create your elevator in the center of RenX/Gmax.To get an ide of the size of an elevator, the Single Player ones have an aprocxiamte size of L: 6m, W: 6m, H: 12m
      You can create a box with these settings to get an idea if your elevator has the right size:

      (my elevator is a bit too big as you can see, but the size is your choice, you just get a general idea about the size with this method) Because the Rengade-Engine don`t like textured objects that are moving we now create some "cages" that later will be invisible, but responsible for the collision parts.
      These are basicly just meshes without a texture that covers that elements, that later collide with players.


      Activate the W3D hide and collision Settings: Vehicle, Camera, Projektile, for the textured Meshes don`t activate any Collision Settings. Now it is time for the animation, an elevator has 3 Animation stages: 
      Stage 1: (Baseframe)
      Move all your parts of the elevator so it is on the Top-Part, with the door open for enter at the Top:

      As you can see I just moved the whoe plattform up, and lowered the ring so if the player can enter the elevator at the top.

      Stage 2: (On the move)
      Now klick the animate Button,  
      Goto Frame 1 and move your door so it is closed (you can use more than one frame if needed, just note this framae somewhere)
      Now on the trackbar goto frame 10, and move the elevator down, so it is on the botom with an closed door (same comment as before for the cloe door thing):

      The best is you note this frame on a paper or something, because you`ll need this later.

      Stage 3: (Final Animation)
      Now just make an animation when the door moves down, so you can leave the elevator. My one ends on frame 11, because only one frame is used for open the door in my example, of course you can use as many as you need:

      Now you`r finihed with this, deactivate the anim Button and feel good that the work is nearly done. Export the elevator to your Modpacket:
      Export it as HirachyAnimated Model and from Frame 0 to the last frame (in my example frame 11):

      Open the Commando (Leveleditor), browse to Tiles and press the Add Button

      Now enter a name, e.g. my_elevator, and switch to the Settings Tab Change the type to ElevatorPhys, Select your W3D and change Collision Mode to STOP, Animation Mode to Manual.

      Scroll a bit down and set 
      DoorClosedTop to the frame when the door at the top is closed (that is frame 1 in my example), 
      DoorOpeningBottom to the frame where the elevator is at the bottom with open door (Thats frame 11 in my case)
      ElevatorStartTop that is in nearly all cases frame 0
      ElevatorStoppedBottom this is the frame where the elevator is at the bottom with closed door (Frame 10 in my case)

      Now cahnge the CloseDelay to the Time the elvator should need to go up/down and press OK and your nearly ready for test your elevator. Ok, now its time to tell the elevator where people will wait to enter:
      Select your elevator again and press Mod, goto the Zones Tab.

      You see 4 Zones:
      LowerCallZone: Defines the zone where the Character has to stay in to call the elevator to come to the bottom
      LowerInsideZone: When you are inside this zone the elvator starts to move Up
      UpperCallZone: Same as LowerCallZone but for the top
      UpperInsideZone: Same as LowerInsideZone but for the top

      When you doubleclick you can adjust the zones t the size / position you need.

      First / Lastframe switsche between the start and end frame so you easy can adjust the zones.
      Adjust now all zones like it is explained above.

      Here are mine:
      LowerCallZone LowerInsideZone UpperCallZone UpperInsideZone Now press OK and your done with the setup.
      Load your Level and select your elevatzro then press Add and it will apear on the map:

      Export your Map and test the elevator Congratulation! You can now go up and down with your elevator as long as you want.
    • Guest Mauler
      By Guest Mauler
      RenX /  Leveledit
      Make your own Building:
      a Step by Step to create a full functional building like the Westwood ones.

      Important!! Read this tutorial carefully. 
      If something didn`t work as you have expected it, check the coresponding part of the tutorial if you have not miss a thing.
      First of all, of course you need you building. I used for this tutorial is the Atreides Weapon factory for the Battle for Dune Mod

      It is important that you move your whole building to the center of RenX.
      You also should already have setup all collision settings.
        Now select all the meshes that are part of the EXTERIOR. This should be all parts of the exterior of the bulding, excluding any emitters, animations or doors.

      Then goto the W3D-Tools --> Assign Node Names:

      In the following dialog uncheck/check the Options you see on the screen below, enter at the Root Name: entry a short name, e.g. atrwep (atreides weponfactory) followed by a ^.
      You should write this down. because youll need that later, I`ll refer to this name as the Meshprefix later.
      The Meshprefix should NOT exceed 6 characters.

        Congratulation you have now created a buildings exterior. Now goto Group --> Group and enter a name (e.g. wep_ext)

        Now hide your ExteriorGroup and unhide all parts of the interior, again excluding any emitters, animations or doors.

      Again select all meshes and open the same dialog as for the interior. Enter the Meshprefix followed by a #.

      Again Group this and name it for example wep_int:

        Now we will add the doors, emitters as well as animate them for the later use.
      If you have already done this, you can just skip this part.
      For the doors I`ll use the standard Rengade MP ones, but of course you can make your own ones. As you can see, I have unhidden the Ext/Int-Group to better align things. For the doors you need the name of the preset of the door, the standard Rengade doors name is `mpdr_0` create a box 1x1x1 at the topview, and place it at the location where the door should be placed, name the box : mpdr_0~ (or the name your door-preset has in Leveledit + a ~ ) add a 00 after the ~ for the first, a 01 for the second and so on.
      When you have placed all doors, group the doors e.g. as wep_doors.

      When you are done with the doors, you need some damage emitters. You can make your own with W3D-Editor or use Renegade ones, extract them with XCC_Mixer you can identify them by the leading e_ (e.g.e_19fire1.w3d). For all Emitters you should extract (or download) the e_master01.tga so you can see the emitter effects:

      Now create three boxes (1x1x1) named: emitter0, emitter25, emitter50, emitter75. I will refer to this as the `DamageBox`.
      After that, create 1x1x1 boxes named like the emitter file (without the w3d) that should be displayed later, in this case e_fire1. I will refer to this as `EmitterBox`.
      IMPORTANT: Never just rename the emitter file!! You must edit the name in w3d-Viewer and re-export it or the file will not be loaded or even crash Renegade!!!
      Now link the EmitterBox to the DamageBox emitter75 if this emitter should be showed up at the state for when the building is 25% damaged, emitter50 for half damged, emitter25 when the bulding is damaged by 75% and emitter0 when the building is detroyed.

      For this use the Link tool 
      and klick and drag from your EmitterBox to your DamageBox (The damage box will flash for about 2 sek when this is done succesfull.

      Then place all around your building emitters or objects that should be displayed at the different states and link them to the coresponding DamageBox.
      I recommend to save your work now if you have not done this before!! Now we must make an animation, so Renegade later know what parts must be showed at the damage states.
      For that you should reopen RenX, because the `Trackview` that we will need often conflicts with the RenegadeMaterialEditor for Gmax, restarting RenX solves the problem.
      Open now the `Trackview`: 
      On the Trackview browse to Objects --> emitter75:

      Add a visibility track by clicking the eye icon  that will add a new option to your Object:

      Click on the new option and add via the  at frame 1, 2 and 3 a new key.

      Rightklick the first key and change the value to 0 (invisible)

      Now change this also for key2. The trird key must not be changed and should stay at value 1 (visible)

      Repeat this process for all other DamageBoxes, but switch the keys to the following: When you have done this, group all DamgeBoxed and the EmitterBoxes e.G wep_emitter
      emitter50 frame 1,4,5 emitter25 frame 1,6,7 emitter0 frame 1,8,9 Now we will prepare the PT and the MCT (This is optional)
      Your PT`s and MCT can have also animations like the damage emitters. For the PT`s you might want to add animations for a powerless building like westwood does. for thsi jsut create four more emitter boxes( emitter0p, emitter25p and so on) and count up the last frame by one for each state liek you have seen in Section 6.

      Select all MCT Meshes and use the naming tool that is described in Section 2, and use as a basename the meshprefix#mct (e.g. atrwep#mct). repeat this for the PT`s also but use meshprefix#pt here (e.g. atrwep#pt)
      Group all your PT`s and the MCT to a seperate group, e.g. wep_pct and wep_mct Exporting time.
      Now you must export all parts for the use in Leveledit.

      * the Interior Group as mesprefix_int (Renegade Terrain)
      * the Doors Group as meshprefix_doors (Renegade Terrain)
      * the Damage and Emitter as meshprefix_dam (Hirachy Animated Model)
      * The MCT Group as meshprefix_mct (Hirachy Animated Model)
      * The PT Group as meshprefix_pt (Hirachy Animated Model)

      In my example I`ll get 5 files: atrwep_int.w3d, atrwep_doors.w3d, atrwep_dam.w3d, atrwep_mct.w3d, atrwep_pt.w3d

      Copy all these files into Your modfolder if you have not done this already, a seperate folder e. g. buildingparts would be a nice idea.
      Setup your exterior mesh for use in Maps.
      You might wonder what will happen to the exterior mesh. We must jsut setup some very simple parts to finish this:
      create a box from the TOPVIEW (1x1x1) in the EXACT center of Gmax/Renx. Name this box meshprefix_int~, then clone the box (or create a new one) and name it meshprefix_doors~ and so on for all w3d`s you have exportet in part 8. then select all these boxes and activate the [x] Hide and [x]Aggregate w3d option.

      After that select your ExteriorMesh and these Boxes and group them to for example AtreidesWeponfactory and save your work.
      You can now Merge this Group into your map(s) like the orginal westwood buildings. Setup everything in Leveledit.
      Now start the Leveleditor and Load your Modpackage.

      Goto Terrain-->Add and enter a name, e.g. mybuildings

      Select this new group and press again add. Enter as name meshprefix_doors (e.g. atrwep_doors) and under the settings tab under m_Modelname select your _doors w3d file.

      Repeat this part also for the mesprefix_int w3d file, you`ll then has 2 new entry`s:

      Now change to the Tiles Tab and again press add create a new entry named: mybuildingtiles under the Physics Type select BuildingAggregate.

      Select this new group and once again press add, enter as name: meshprefix_dam, under the Physics Model be sure that the type is Building Aggregate, change the Model Name to your coresponding w3d file, the AnimationMode to Manual

      Scroll down to the Building Behavior Settings and change the AnimLogicMode to ANIM_LOGIC_SEQUENCE.
      The Buidling state for 75% to 1, 1 as showed below, for 50% 2,2 for 25% 3,3 for detroyed 4,4.
      Repeat this also for the State: Power OFF.

      After that press OK, again use the add, now enter as name: meshprefix_mct (e.g atrwep_mct), select the needed w3d, setup everything like before, but check the checkbox labled [x] IsMCT.
      If your MCT also has animation sequences, you must set them up coresponding to your animation as described above.

      Again add another tile, name it meshprefix_pt, set it up as explained for the MCT, but let the [ ] IsMCT uncheked.

      Now you have three new entrys in your mybuldingstiles group:
      You are finished now. Add your Building Group you have created in part 9 to your map via the MERGE command in RenX/Gmax, export it as Renegade Terrain and enjoy your bulding. One Last Step:
      To make your building work ingame you have to Clone wia the ADD button one of the Buildingcontrollers, for example mine is a Weponsfactory, so I clone the GDI_Weponsfactory:

      You can name it whatever you want.... but you must fill in the MESHPREFIX into the coresponding field:

      Of course you can edit other settings like health in this dialog too,play around abit with these settings  Have Fun by detroy all your hard work ingame 
    • Guest Mauler
      By Guest Mauler
      First we need our Character, here you can see the Umagon from Reborn
      Then we need the Skeleton, depending on what Charactertype we have, import either the male or the feamle character
      ( You find them in the folder of the Renegade Public Tools under Characters\(fe)male\ select the sceleton and a screen similar to this should came up )

      Select ALL and press ok.
      Now we need to align and resize the character, because in most cases it will look like this:
      To make your life easier you should hide all K_ bones and the old mesh, also the wordlboxes

      Try to align the character as close as possible to fit the bones!!

      Tweak up the base position, so the character fits the bones. As you saw on the previous screenshot the arms and the feets/legs don`t fit that good, so we need to align them, so hope that the creator of the model has already designed the model to fit, otherwhise you`ll have a lot of fun now align it propperly 
      Its is very important that you align it as close as possible, that will later make your life alot easier and will reduce the amount of animation errors you later might get!

      Now it fits the bones alot better

      Unhide all parts, delete the merged Head and body mesh, the female file also contains a camera object that you can delete also its not needed. If you have not done it yet, save your work into a new file 
      Now we will Link the Mesh to the WWSkin (thats the small CrossBone) by selecting 
      and the click on the mesh ad drag to the WWSkin: 

      Now the model has the WWSkin Binding Modigfier aplied we will now use this to bind the vertices to the bones:

      Select all Vertices and press on the Auto-Link Button

      Congratulation, the smart part is done now
      Time for fixing errors, or did you thought it is THAT easy??? For better working on the next steps you can again hide all the K_ Bones the Worldbox, the select all the c_ bones and activate the "Display as box" option

      Now move the animation slider to frame 1, you will notice that your Character moves.

      Move through the different frames and watch out for anny missaligned faces.

      Select the Bone the faces "should" be aligned to here it is the right tight bone, write it down, or rember it, and select the missaligned faces, and click on the Link to bone by Name

      Find and select the bone the faces belong to:

      Press Ok and your faces are aligned right, well done 

      Repeat these steps untill all faces are alingend right
      Export your final result Export it with following Settings:

      Female Charcter: Male Charcter: You find the needed Skeleton Files in the coresponding folder from where you have merged the sceleton file.
      Now you can test the Character In-Game and see if there are any other problems you might need to fix, have fun on your hard way 
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.