Page 1 of 17 1234567891011 ... LastLast
Results 1 to 50 of 846

Making the Keeper a playable race - a modding tutorial for newbies.

  1. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #1
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld

    Making the Keeper a playable race - a modding tutorial for newbies.

    I started playing around with HW2 modding again, and while there is a ton of information available here, most of it is spread out, and I couldn't find any decent tutorials for newbies.

    So, I'll try to write up a tutorial series. Comments, suggestions, and "omg you moron that's totally wrong!" posts are welcome!

    Over the course of the series we'll attempt to do the following:

    • Make the Keepers a playable race
    • Give them Bentus as their mothership
    • Allow them to build a handful of different units
    • Build a tiny research tree


    In order to do that, we will have to modify a bunch of files. I am going to assume you know how to extract .zip files and add information to shortcuts, but other than that I'll try to keep it as low-level as possible.


    Part One - The Tools

    Actually, we don't need a lot of them. The .lua files (contain information on formations, starting ships, races, etc.) as well as the .ship (those contain values for individual ships) and .wepn (weapon info files) can all be edited with the text editor of your choice. I use Windows' built-in editor (Notepad), because it's simple and perfectly suited for this task.

    On top of that, we will need a tool to add hardpoints to ships. Hardpoints are "mounts" on which you can put stuff such as weapons and subsystems. For this, we will use a tool called HardEd which was coded by pip and which can be found here.
    HardEd requires Microsoft's .NET framework to run. Download it here.

    Finally, we need a way to actually get to the data we're going to edit. Most of the HW2 data is packed into .big archives - kinda like giant .zip files.

    There are tools available to extract those archives, but then you still have to decompile the files. We don't want to worry about it, so we're going to download the files that have already been decompressed and decompiled. This data.zip can be found here.
    This is a self-extracting RAR archive rather than a .zip file, because it achieves better compression. Download and double-click on the file to extract it.

    Those are all the tools we'll need. Now let's have a look at how to set HW2 up for modding.


    Part Two - Setting HW2 Up To Accept Mods

    This is fairly simple. First off, go to your HW2 folder and copy the entire "data" folder someplace safe. This is just in case, should we screw anything up we can always fix it by putting the original files back.

    Next, extract the contents of that data.exe to a temporary folder somewhere. It'll contain a lot of folders, but we only need a few of those, namely the Ships, Weapons, and Scripts folders.
    Copy those folders to HW2\data. Your data folder in the HW2 directory should now look similar to this:


    Now as a general rule of thumb, you should only keep those files in your data folder that you plan on modifying. This is important because some of the files may cause game crashes.
    Open the scripts folder and remove everything with the exception of these folders:

    +Building and Research
    +startingfleet
    +unitcaps
    and this file:
    -race.lua

    Your scripts folder should now look like this:


    Finally, you have to tell HW2 to actually accept the decompiled data (which we will be modifying) rather than the stock data. To do this, create a shortcut to HW2 (In case you don't have a shortcut: left-click on HW2 once, keep the left button pressed, hit ctrl and shift simultaneously while moving the mouse curser to your desktop, then release everything). Then right-click on your shortcut, and select "properties".
    Take a look at the "target" line. It should read something like this:
    "C:\Program Files\Sierra\Homeworld 2\Bin\Release\Homeworld2.exe"
    Add -overrideBigFile to that line. It should now look exactly like this (obviously you have to replace the program files\sierra part with whereever it is you installed HW2 to):
    "C:\Program Files\Sierra\Homeworld 2\Bin\Release\Homeworld2.exe" -overrideBigFile
    .
    The quotation marks are important, don't forget them.

    There, all done. You're now ready to start modding! Ok, try launching HW2 by double-clicking on that shortcut just to make sure everything works. From now on, when you are told to launch HW2, launch it with the shortcut.

    Next up: enabling the keeper race in skirmish.


    Part Three - Enabling The Keepers

    Another easy one. The Keeper race is already all set up and ready to go, all you need to do is tell the game that you're allowed to play with them.
    Go to your HW2\data\scripts folder and find the race.lua file. Open it in notepad.

    It will look like this:
    LuaDC version 0.9.19
    -- 5/23/2004 7:23:16 PM
    -- LuaDC by Age2uN
    -- on error send source file (compiled lua) and this outputfile to Age2uN@gmx.net
    --
    NotPlayable = 0
    Playable = 1
    races =
    {
    { "Invalid", "Invalid", "", "", 0, NotPlayable, "", },
    { "Hiigaran", "$1100", "hyperspace_gate", "etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN", 9.5, Playable, "HGN_", },
    { "Vaygr", "$1101", "hyperspace_gate_vgr", "etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN", 9.5, Playable, "VGR_", },
    { "Keeper", "Keeper", "hyperspace_gate_kpr", "etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN", 12.5, NotPlayable, "KPR_", },
    { "Bentusi", "$1103", "hyperspace_gate_bentusi", "etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN", 18.5, NotPlayable, "BEN_", },
    { "Random", "$3226", "", "", 0, Playable, "", },
    }

    Change the "NotPlayable" in the "Keeper" line to "Playable". That line should now look like this:
    { "Keeper", "Keeper", "hyperspace_gate_kpr", "etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN", 12.5, Playable, "KPR_", },
    Save the file, and you're done! Launch HW2 (remember, use the shortcut!) and start a skirmish. Besides Hiigaran and Vaygr you should now be able to select "Keeper" from the drop-down menu.
    Try playing a skirmish as keeper. It should load, but you will be defeated instantly - after all, you don't have any ships to begin with, so the game thinks the enemy just blew up your entire fleet. We'll get right on that problem in the next section - but for now you can pat yourself on the back, you just managed to successfully enable a previously unplayable race in HW2!


    Part Four - Starting Fleets

    We need to tell the game what units our Keeper race is supposed to start with in a skirmish game. To do that, go to the HW2\Data\Scripts\Startingfleet folder. Right now you should find two files there, Hiigara00.lua and Vaygr00.lua.

    You guessed it - create a new file called Keeper00.lua in that folder. Copy-paste this stuff in there first and save it, we'll go through it line-by line next.

    -- LuaDC version 0.9.19
    -- 5/23/2004 7:23:48 PM
    -- LuaDC by Age2uN
    -- on error send source file (compiled lua) and this outputfile to Age2uN@gmx.net
    --
    PersistantData =
    {
    StrikeGroups = {},
    Squadrons =
    {
    {
    type = "Kpr_Bentus",
    subsystems = {},
    shiphold = {},
    name = "",
    size = 1,
    number = 1, },

    },
    Research = {}, }
    Ok, so what did we just do? Let's take it from the top.
    -- LuaDC version 0.9.19
    -- 5/23/2004 7:23:48 PM
    -- LuaDC by Age2uN
    -- on error send source file (compiled lua) and this outputfile to Age2uN@gmx.net
    --
    Those lines are for all intents and purposes useless - they are comments added by the decompiler script. We can learn one important thing from those lines though. Obviously -- designates a comment.
    This means that if you put -- in a .lua file, that whole line will be ignored by the game. You can use it to add info (short notes to yourself about what you changed, so that you can later understand why you did something to the code), or you can use it to "comment out" a line. This is useful for troubleshooting.
    Let's say you just added five new lines to a file, and the game suddenly stopped working. Now one of those lines is causing it, but which one?
    Instead of deleting them, you can go through them one by one, adding -- in front of them. The game will now ignore that line, it's as if you never added it - but it's still there, so you don't have to start copy-pasting again if you want to re-enable it. All you have to do in order to enable it again is delete the --.


    PersistantData =
    {
    StrikeGroups = {},
    PersistantData is where the actual game info starts. In .lua files, functions are bracketed in by {}, similar to C++. Everything between two brackets "belongs" to that one function. You can nest those brackets as deep as you'd like.
    StrikeGroups can be used to pre-define strike groups (I think) if you want to script more complex missions. For example, you could decide to have the mothership strafed by a group of bombers right away - you would use strike groups for that. We're not going to use this function, so just leave it empty.

    Squadrons =
    {
    {
    type = "Kpr_Bentus",
    subsystems = {},
    shiphold = {},
    name = "",
    size = 1,
    number = 1, },

    },
    Squadrons is used to define the squadrons you'll start with. In our case, this is one ship type at first, which is Kpr_Bentus - our modified Bentus mothership.

    As you can see, using this function is fairly straightforward. type determines what kind of ship you want, subsystems and shiphold tell the game if the ship is supposed to have any subsystems already built and if it's supposed to have a hangar filled with ships.
    I'm not sure whatsize does, so just leave it at the default value.
    Finally, number determines how many ships of that type we want to start out with.

    Starting the game now will result in an error - there is no Kpr_Bentus, after all! We'll see how to fix that in the next section.


    Part Five - Bentus, Our Mothership

    When you open your Data\Ships folder, you will see a lot of subfolders, one for each ship. Let's take a quick look at the prefixes and what they mean:
    Kpr = Keeper (duh!)
    Hgn = Hiigaran (more duh!)
    Vgr = Vaygr (duh!)
    Meg = Megalith (stuff like the Tanis shipyards, parts of the Bentus debris, etc)
    Neu = neutral (transports)
    SP = singleplayer campaign stuff

    Right now we're looking for the folder called Meg_Bentus. Rename it to Kpr_Bentus, then open it. There should be two files inside with the meg_ prefix, which you should replace with the kpr_ prefix. Your kpr_Bentus folder should now contain these two files:
    Kpr_Bentus.events
    Kpr_Bentus.ship

    Actually, if you had decompiled this manually, there would be a third file called Kpr_Bentus.hod. The .hod file contains texture and hardpoint data, we will work on that later. Since the file is needed though, download it here and put it in the Kpr_Bentus folder, which will now have the following contents:
    Kpr_Bentus.events
    Kpr_Bentus.ship
    Kpr_Bentus.hod

    The .events file contains all the information regarding the ship's FX animations. These animations are basicaly a series of FX that are triggered with a set delay so that they run in a sequence (although often there may onlt be a single effect).
    These animations mainly include things such as damage, death animations and weapon muzzle FX as well as many other effects. Since we won't be changing any of that, we'll leave that file alone.
    Finally, the .ship file is where all the information about the ship itself, such as speed, armor, weapons and much more is stored.

    Double-click on the .ship file. Since windows doesn't know what to do with .ship files, a dialog will appear asking you what you want to do with the file.
    Choose "I want to choose a program from a list". Then scroll down in that list until you find "notepad". Make sure the "always open with this program" option box is ticked, and press ok. From now on, when you double-click on .ship files, they will be opened with Notepad.

    The .ship file is huge. We can see loads of values there, some of which are way too complex to go into right now. For now, close the window without saving and start HW2. Start a skirmish with the Keepers. You should now have a huge Bentus sitting there as your starting fleet. However, you will notice that Bentus doesn't do anything - it just sits there, it won't move, it won't Hyperspace, and it most certainly won't shoot anything. Since Bentus was never intended to do any of this, she lacks info on how to accomplish all those things. We will have to teach her how to do this!

    Next up: Making our ship mobile.


    Part Six - Making Bentus Move

    The reason why Bentus just sits there is twofold - first off, the game doesn't really know how the ship is supposed to move, and secondly it is not set up to accept move commands. Let's remedy that.
    Look for this line:
    NewShipType.controllerType = "None"
    Now change that "None" to "Ship".
    Also add this line anywhere in the file:
    addAbility(NewShipType, "MoveCommand", 1, 0)
    Finally, add these two lines:
    addAbility(NewShipType, "HyperSpaceCommand", 1, 10, 100, 400, 10, 15)
    addAbility(NewShipType,"CanBuildShips",1,"","");
    What did we just do?
    Well, the first line (I think, I'm not entirely sure here) tells the game how the ship is supposed to behave movement-wise. The second line teaches our ship to actually accept movement commands. The next line teaches Bentus how to hyperspace. Don't worry about the numbers, you can look up what they do on the Karos Graveyard.
    The last line gives Bentus the ability to build ships. This is necessary because you need a build-capable ship to start with, or you will be defeated instantly. We don't have any build trees defined yet, so you won't be able to build anything at the moment - what counts is having the capability to do so.
    To summarize, we have now made the following changes:
    NewShipType.controllerType = "Ship"
    addAbility(NewShipType, "MoveCommand", 1, 0)
    addAbility(NewShipType, "HyperSpaceCommand", 1, 10, 100, 400, 10, 15)
    addAbility(NewShipType,"CanBuildShips",1,"","");
    Now Bentus knows how to move! For testing purposes, let's make sure she actually moves and doesn't just slowly float along.

    Let's find these lines:
    NewShipType.thrusterMaxSpeed = 50
    NewShipType.mainEngineMaxSpeed = 50
    NewShipType.rotationMaxSpeed = 40
    NewShipType.thrusterAccelTime = 1
    NewShipType.thrusterBrakeTime = 1
    NewShipType.mainEngineAccelTime = 6
    NewShipType.mainEngineBrakeTime = 1
    NewShipType.rotationAccelTime = 0.2
    NewShipType.rotationBrakeTime = 0.2
    The names are pretty self-explanatory. I'm not entirely sure why there are both thrusters and main engines, because the ship seems to use both of them.

    Just to be on the safe side, we will give them similar values though - set both of them to 900. Rotation controls how fast the ship can turn, a value of 90 will ensure swift turns.
    AccelTime and BrakeTime control how long it takes the ship to speed up and slow down. Let's set the values for MainEngine and Thruster to 1, meaning the ship can reach full speed and come to a full stop in one second.
    The last two lines control how fast the ship can accelerate to its maximum rotation speed, .2 seconds sounds about right for our purposes.

    After those changes, these nine lines should now look like this:

    NewShipType.thrusterMaxSpeed = 900
    NewShipType.mainEngineMaxSpeed = 900
    NewShipType.rotationMaxSpeed = 90
    NewShipType.thrusterAccelTime = 1
    NewShipType.thrusterBrakeTime = 1
    NewShipType.mainEngineAccelTime = 1
    NewShipType.mainEngineBrakeTime = 1
    NewShipType.rotationAccelTime = 0.2
    NewShipType.rotationBrakeTime = 0.2
    Save the file, and launch HW2. You should now be able to issue move commands to Bentus, and she should respond pretty darn quickly. Also try hyperspacing her. Of course, those speeds are insane for a mothership, but we don't want to wait ten minutes until Bentus gets somewhere once we get into weapon testing (she does need to move closer to the stuff she's supposed to shoot, after all).
    Moving is all well and good, but we want to blow stuff up! We will build a weapon for her in the next section.


    Part Seven - Weapons Development

    No doubt about it, Bentus needs to be armed. But using one of the stock weapons would be boring, so let's build our own. We will heavily modify the weapon that is used by the Hiigaran Mothership. "Heavily modify" means "turn from sucky to wtfbbq" in our case.
    Open your Data\weapon folder. Similar to the ship folder, every weapon has a folder. Create a new one called hgn_bentushulldefense. Then open the folder called hgn_mshulldefensegun, and copy the .wepn file to our new directory, and rename it hgn_bentushulldefense.wepn.
    Double-click on the file. Once again, Windows won't know what the heck to do with this file - use notepad to open it.
    Let's have a look at the file:
    StartWeaponConfig(NewWeaponType, "Gimble", "Bullet", "HDefense", "Normal", 2500, 2200, 0, 0, 0, 0, 1, 1, 0, 2, 0, 0, 1, 0, 0, 0, 0.1, "Normal", 0, 0, 0)
    AddWeaponResult(NewWeaponType, "Hit", "DamageHealth", "Target", 20, 20, "")
    setPenetration(NewWeaponType, 5, 1,
    {
    PlanetKillerArmour = 0,
    },
    {
    ResArmour = 0.75,
    },
    {
    TurretArmour = 3, })
    setAccuracy(NewWeaponType, 1,
    {
    Fighter = 0.14,
    },
    {
    Corvette = 0.45,
    },
    {
    munition = 0.2, })
    setAngles(NewWeaponType, 90, 0, 0, 0, 0)
    The most important stuff can be found in the first non-comment line. StartWeaponConfig has all the values for firing speed, range, weapon type, etc, etc, in it.
    As you can see that function has a lot of variables - tons of numbers in that line! Let's go through them one by one, heavily borrowing from Karos Graveyard in the process.

    The following list goes through the arguments from left to right. <> denotes the argument name, [] will be the value that argument has in our example.
    1. <sWeaponName> [NewWeaponType]: Reference to the weapon. Generally, this will be NewWeaponType.
    2. <sWeaponType> [Gimble]: How the weapon tracks targets. Possible values are Gimble, AnimatedTurret, or Fixed. Gimble indicates the weapon is not in a turret but can aim at targets within a certain cone. AnimatedTurret indicates that the weapon is mounted in a visible, moving turret. Fixed indicates the weapon can only fire in a fixed (unchanging) direction, such as the ion cannon on the Ion Cannon Frigate.
    3. <sWeaponFireType>[Bullet]: Type of projectile, possible values are InstantHit, Bullet, Mine, Missile, or SphereBurst. InstantHit is generally used with beam weapons, and causes the weapon's damage or other effects to take place immediately upon firing. Bullet indicates an unguided projectile. Mine indicates the projectile is dropped where the ship is located, and waits to detonate when an enemy ship moves nearby. Missile indicates a guided projectile.
      SphereBurst indicates an area of effect weapon. SphereBurst weapons require two ".wepn" files to be defined. The first ".wepn" file defines how the weapon is fired, while the second ".wepn" file defines the effects of a hit or miss. See "hgn_smallemp.wepn" and "hgn_smallempburst.wepn" for an example.
    4. <sWeaponFireName>[HDefense]: The name of the weapon fire script (".wf" file) that specifies effects details.
    5. <sActivation>[Normal]: When the weapon is used. Possible values are Normal, Special Attack, Normal Only, or Dropped. Normal indicates the weapon is always used during any attack. Special Attack indicates the weapon is used only after being activated by research or by the special attack key, which is also active only after researching something. Normal Only indicates the weapon is used only if a special attack is not researched. Dropped indicates that the weapon fires only when the Deploy Mines key is used. This is used with mines, only.
    6. <fWeaponFireSpeed>[2500]: Projectile velocity. For Missile weapons, this is the initial velocity. For InstantHit and SphereBurst weapons, set to 0.
    7. <fWeaponFireRange>[2200]: Maximum range at which the weapon may fire. Note that this does not indicate the maximum range of the projectile.
    8. <fWeaponFireRadius>[0]: Only used for SphereBurst. This determines the radius of the blast, within which all specified ships are affected by the weapon.
    9. <fWeaponFireLifetime>[0]: Duration of the projectile, in seconds. Used for beam weapons, only.
    10. <fWeaponFireMisc1>[0]: For beam weapons, this is the anticipation time. The time after the firing sequence starts until the beam appears.
    11. <iWeaponFireAxis>[0]: For missiles only. The direction of ejection for the missile. Possible values: 0 (Forward), 1 (Left), and 2 (Up).
    12. <iMaxEffectsSpawned>[1]: Maximum number of hit effects to spawn over the lifetime of the weapon. If lifetime is 0, then 1 effect will be spawned.
    13. <iUseVelocityPred>[1]: If enabled, the weapon will lead the target. Otherwise, it fires directly at the target.
    14. <iCheckLineOfFire>[0]: If enabled, the weapon checks for friendlies in the way before firing.
    15. <fFireTime>[2]: Delay between shots, in seconds.
    16. <fBurstFireTime>[0]: Duration of a burst, in seconds. Divide this value by iFireTime to determine how many shots are fired per burst.
    17. <fBurstWaitTime>[0]: Delay between bursts, in seconds.
    18. <iShootAtSecondaries>[1]: If enabled, when the weapon cannot shoot the main target, it will try to shoot secondary targets.
    19. <iShootAtSurroundings>[0]: If enabled, when the weapon cannot shoot any of the given targets, it will scan for nearby enemies (SLOW!).
    20. <fMaxAzimuthSpeed>[0]: Horizontal tracking speed of the weapon.
    21. <fMaxDeclinationSpeed>[0]: Vertical tracking speed of the weapon.
    22. <fSpeedMultiplierWhenPointingAtTarget>[0.1]: When the weapon is over the target ship, its speed is modified by this. Use < 1 to make beams sweep slowly over the target.
    23. <sWeaponShieldPenetration>[Normal]: Possible values are Normal, Enhanced, or Bypass. This argument has no obvious effect. The chance that a weapon penetrates a defense field is set by the setPenetration function.
    24. <iTrackTargetsOutsideRange>[0]: If enabled, the weapon tracks targets outside of its range.
    25. <fWaitUntillCodeRedState>[0]: Animation hookup. With this set, the weapon cannot fire untill the Code Red Animation finishes. See the Vaygr Missile Frigate.
    26. <iInstantHitThreshold>[0]: If the target has less than this health, the beam will go through the target ship.


    Now that's a lot of info. But we're in luck - we're not going to have to change all of them.
    Before we jump into that, let's think a bit about what our weapon should look like. The Bentusi are obviously very advanced and would never build little projectile pea-shooters to protect their most important ship in their fleet! So we'll want to use a beam weapon. The game already has point-defense beam weapons - the pulsars on the Hiigaran HC for example. We'll build an improved version of those.

    This is what our weapon will look like:
    StartWeaponConfig(NewWeaponType, "Gimble", "InstantHit", "Laser", "Normal", 0, 20000, 0, 0.4, 0, 0, 1, 0, 1, 0.4, 0.0, 0.0, 1, 1, 120, 120, 0.1, "Normal", 1, 0, 300)
    AddWeaponResult(NewWeaponType, "Hit", "DamageHealth", "Target", 50, 50, "")
    setPenetration(NewWeaponType, 5, 1,
    {
    PlanetKillerArmour = 0, })
    setAccuracy(NewWeaponType, 1,
    {
    Fighter = 0.11,
    },
    {
    Corvette = 0.5,
    },
    {
    munition = 0.1, })
    setAngles(NewWeaponType, 90, -180, 180, -180, 180)
    setMiscValues(NewWeaponType, 0, 0)
    Now let's go through the changes.
    Gimble means that our weapon isn't turreted like the heavy ion beams, but can aim in all directions within a pre-defined cone of fire - we'll talk about that later. Since we don't want to start constructing a turret here, we'll be going with Gimble.
    Bullet has been replaced with InstantHit. Since we're using a laser, there's no bullet - our weapon travels at the speed of light, which translates to instantaneous hits at the distances we're talking about in this game.
    Laser refers to the graphics used for the weapon, in our case those pretty blue streaks of concentrated energy.
    Normal means that our ship will use this weapon as a normal weapon rather than a special attack weapon which has to be activated by the user.

    With those out of the way let's dive into that mess of numbers.
    The speed at which our weapon travels is essentially infinite - we also showed this by using InstantHit. Since there are no weapons that stand still in this game, 0 is used to denote infinite weapon speeds.
    The range for our weapon has been upped to 20000. That range is horribly unfair, but great for testing purposes.
    The 0 after that is for the weapon radius - this is only used with sphere weapons such as the EMP device, so we'll leave it at 0.
    Next up - weapon lifetime. 0.4 means that the beam will "live" for .4 seconds before fading. This was set to 0 with the original gun, because the bullet doesn't fade away.
    The next two values don't really apply to our weapon, so we'll leave them at 0.
    Again, the next value is something we won't play around with - leave it at 1.
    The next value is a boolean - it can be set to 0 (off) or 1 (on). Since our beam is an instant hit weapon, we don't need to lead the target - we point at it and fire. We want this thing turned off, so we set the value to 0.
    Another switch can be found at the next entry. This time we set it to "on", because we don't want to blow up friendlies when trying to defend ourselves. Setting this to 1 will mean that the ship will check for friendly ships in the line of fire before discharging the weapon.

    The next three numbers essentially control how fast and how often the weapon fires. With these three numbers you can do anything from regular firing intervals (like one shot every two seconds) to salvoes (shoot three times, pause, shoot three more times...). For now, we want a steady, sustained, high rate of fire - set the first value to 0.4 (meaning one shot every 0.4 seconds) and the next two to 0 (meaning no bursts, and no pauses between bursts).

    The rest of the values aren't really that important, we don't need to discuss them.

    Right, now the next lines deal with accuracy, we can leave that unchanged for now. 1.0 would mean 100% accuracy, 0.11 means 11% accuracy - you can play with those values if you like.

    This line
    setAngles(NewWeaponType, 90, -180, 180, -180, 180)
    is the last line we have to worry about in our weapons file. It basically tells the weapon how far it can rotate and thereby defines the cone of fire. Since we're using a Gimble weapon, only the first value is important. It tells us how many degrees the weapon can turn in either direction from its default direction.
    If set to 90 degrees like in this case the weapon can aim at anything that is on a half-sphere in front of it - 90 degrees in either direction. We don't want to give it a full 360 degree cone of fire, because it would start shooting through our ship, and that would look weird.

    That concludes the weapon development phase, now we have to put that weapon on Bentus!


    Part Eight - Arming Bentus

    Arming the ship consists of two parts. The first part is adding a hardpoint for the weapon. A hardpoint is kind of like a weapons mount. It's invisible, but it defines where the weapon goes on the ship.
    The second part is easier and involves assigning a weapon to the hardpoint.

    To add hardpoints we use a nifty little tool developed by pipakin called HardEd. See Part 1 of this tutorial for instructions on how to obtain and install HardEd.
    Start HardEd by double-clicking on the HardEd.exe file. A small empty window with a menu bar will appear. Click on "File", select "open", and browse to the kpr_bentus folder. Open the kpr_bentus.hod file.

    After a short pause HardEd will display the hardpoint tree for that ship. Currently, all we can see is a single entry called "Root". By clicking on the little + sign next to Root we can expand it, similar to the folder navigation menu in Windows explorer. Since Bentus doesn't have any hardpoints yet, this will be very basic:


    You will notice an entry called "children". Left-click on it once to highlight it, then select the "Options" menu from the menu bar and click on "add child".
    A child will be added to the children entry. It will have a generic nondescriptive name, probably New_Child01 or something like that.
    Left-click on the new entry once, and then do a slow double-click. You should now be able to rename this entry. The slow double-click will take a while getting used to, so don't give up if it doesn't work at first.
    We'll rename our entry Weapon_HullDefense1_Position. Now expand it by clicking on the + sign next to it.
    You will notice a bunch of sub-entries, some of which can be expanded again:


    Now what the heck was all of that about? Let's recap what we did.
    First, we created a child entry. Child in this case means that it is a part of its parent entry.
    Next we gave it a new name. Weapon_ shows that this hardpoint will be used to hold a weapon rather than a subsystem for example. HullDefense1 is what we call this one because it'll hold a point defense type of weapon. Of course you can call it whatever you want, however it makes sense to choose descriptive names so you know what the heck is going on later.
    Finally, _Position indicates that this entry will be used to determine where the weapon will go on the ship. The first two parts of the name are yours to choose, but the name must end in _Position.

    Click on the "Children" entry of Weapon_HullDefense1_Position. Once again, select options from the menu bar, and create three more children.
    Rename one of them Weapon_HullDefense1_Direction and the other two Weapon_HullDefense1_Rest and Weapon_HullDefense1_Muzzle.
    The naming is important here. The first two parts of the name should be the same as for the parent, and the third parts have to be _Rest, _Direction and _Muzzle. We'll go over that in a minute. For now, make sure your entry tree looks something like this:


    Return to the Weapon_HullDefense1_Position entry and expand the "Data" sub-entry. Left-click on "Position" once to highlight it. Then press "t" to open the position chooser.


    The chooser displays a wireframe model of the ship and offers both a top-down view (right side) and a frontal view (upper left corner). The red x marks where the hardpoint will be. If you move the mouse around you will see the x,y,z coordinates for the mouse cursor in the lower left part of the window.
    Left-clicking will move the red x. For now, try to place it on the left corner at the end of the left strut of Bentus, then click "ok":


    We have now placed the weapon, but it still doesn't know where it's pointing. That's what the children we created are for. Let's have a look at our offspring!

    First off, the _Muzzle thing doesn't seem to be important for us, you can simply ignore it. The other two children however, _Rest and _Direction, are quite vital. They determine which way the turret faces.

    The two children are basically just vectors. Don't worry if you haven't had any vector math (yet?), this is all very easy.
    A vector is basically just an arrow. Since HW2 is a three-dimensional RTS, our vectors are three-dimensional vectors as well.
    Now how does this work? I'm sure you know that points in 3-D space can be expressed as a set of three coordinates, labelled x, y and z. For example, (0,10,0) is a point that is 10 meters away from the origin (that would be the point where our coordinate axis intersect) in y-direction.
    Since we're talking about putting weapons on a ship, we are using coordinates that are linked to the ship. The origin is at the center of gravity (the "middle" of the ship). The directions are as follows:



    Z means fore and aft, measured from the center of the ship. If our ship is 500 meters long, an z coordinate of 250 means that we're at the bow, whereas -250 means we're at the stern of the ship.
    X corresponds with left and right, or port and starboard in nautical lingo. Positive x means port, negative means starboard. If our ship is 200 meters wide, an x of +100 means that we're on the port side, -100 means we're at the starboard side.



    Finally, y is linked to up and down. Positive y means up, negative means down - a y of -50 indicates that we're somewhere below the centerline of a ship, and +50 means we're topside.

    Now that we know all about HW2 ship coordinates, we can get back to our original problem. Using the position chooser tool we have assigned a position to our weapon - but we haven't really told the program yet how to actually attach the weapon. For all we know it could put it on that hardpoint upside-down!

    The _Direction vector makes sure that the turret is put on correctly. Mathematically speaking this vector is the normal vector for our turret. This means that it is kinda sticking out of the "roof" of our turret and pointing straight up.
    The other vector, _Rest, points in the same direction as the barrel of the turret when it is pointing in the default direction, i.e. it hasn't turned yet to fire at stuff.
    This can be illustrated using the Hiigaran battlecruiser forward kinetic turret:


    This can be a bit confusing, so I'll talk about this some more. Consider the forward kinetic turrets of the Hiigaran battlecruiser. There are two of them, one is mounted on top and one below at the bottom of the ship. What are their _Direction and _Rest values then?
    We'll start with the upper turret. It is facing straight ahead, so the _Rest vector has to point straight ahead as well. This means that both the x and y coordinates are 0 - the turret is not facing up or down at all, nor is it turned to either side. This leaves us with the z coordinate. Mathematically speaking, any value you put in here would be correct - 1 would yield the same result as 10, for example. We'll be using 10, because it's a nice number.
    The _Rest vector for that turret therefore is (0,0,10). If the turret were facing backwards, it would be (0,0,-10). To get a turret that is turned all the way to starboard, you would use this vector: (-10,0,0). To get one that is turned halfway to starboard, this vector would do the trick: (-10,0,10).

    So what does the _Direction vector look like? Well, the "roof" of that turret is facing straight up. "Up" means positive y, so our direction vector is (0,10,0).

    The lower turret faces the same way as the upper one, so its _Rest vector is (0,0,10) as well. It is however mounted "upside-down", meaning that the "roof" points straight down, so the _Direction vector is (0,-10,0).

    Now we can finally get back to Bentus. We placed that hardpoint at the left side of our ship. We don't really have a turret, and since we're still on the centerline height-wise, we'll have our turret's roof vector pointing straight up. Open the Hulldefenseweapon1_Direction entry by clicking on the + sign. Once again you'll see the familiar Data and Children subentries. Expand tha Data entry, and then expand the position entry. You'll see three values, all of which are set to 0. They correspond with the x,y and z coordinates of our vector from top to bottom - the first one is x, the last one is z.
    We want our _Direction vector to point straight up, which means a vector of (0,10,0). Go ahead and edit the second value, replacing the 0 with a 10. That entry should now look like this:



    Now we need to think about where our turret should point. In our .wepn file we gave it a 180 degree cone of fire. Since this weapon is located at the side of the ship, we would want it to point outwards at a right angle to the hull. If it were to point forward for example, the 180 degree angle would mean that it could fire through the ship on one side.
    This is where it gets a bit tricky. The right-hand side of the position picker shows the ship as seen from below, not from above. Therefore, left in the position picker actually means right.
    This turret is at the right side of the ship. Right means starboard, and that means negative x.
    Open the _Rest entry, expand Data and find the Position entry. Open it to find all three values set to 0.
    Change the first one to -10 (remember, the first value is x, and we want it to be negative, so we'll use -10. A value of 10 would mean that the weapon would point to port).

    Here's what it should look like in HardEd:



    As promised, we don't have to worry about the muzzle entry. Save your work and exit harded.

    Now for the second part - mounting a weapon on the hardpoint. This will be very easy, it only involves adding one line to the .ship file.
    Open Kpr_Bentus.ship. Add this line (I prefer at the end, but the exact location won't matter too much):
    StartShipWeaponConfig(NewShipType, "Hgn_BentusHullDefense", "Weapon_HullDefense1", "Weapon_HullDefense1")
    This tells the game to add a weapon of "Hgn_BentusHullDefense" type (which we previously developed) to the "Weapon_HullDefense1) hardpoint.

    Bentus is now armed, but she doesn't know what to do with her weapons yet. We need to set her up so that she will accept attack orders, similar to the way we added the move command.

    Add this line:
    addAbility(NewShipType, "CanAttack", 1, 1, 0, 0, 0.35, 1.2, "Capturer, Frigate, SmallCapitalShip, BigCapitalShip, Mothership, Utility, Corvette, Fighter", "MoveToTargetAndShoot")
    It tells Bentus what to attack, and how to attack it. Let's have a brief look at the values:

    <bIsActive[1]>: is the ability active by default? (0 = inactive, 1 = active)
    <iNumberOfShips[1]>: the number of ships in micro formations that ships form in combat. This is useful if you have squads of ships, for example a group of six fighters. A value of 2 would cause the fighters to break up into two groups of three fighters each, a value of 3 would cause them to split up in pairs in our example, and a value of 6 would mean single-ship attack formations.
    <bKamikaze[0]>: This value is obsolete, as Kamikaze attacks are not really supported by HW2.
    <bInterpolate[0]>: can the ship interpolate targets? Not quite sure what that means, I think it has something to do with the way the ship aims at or switches between targets.
    <fSplitDelay[0]>: the delay between formation splitting (in seconds).Not interesting in our case, since Bentus is only one ship.
    <fDistanceMultiplier[0.35]>: the distance multiplier from target before attack styles get control. I'm not entirely sure about this one either. I think it tells the ship when to start switching to attack maneuvers as it approaches the target
    <sAttackFamilies>: a comma-separated list of attack families, in order of highest to lowest attack priority. What ship types can it attack? We want Bentus to be able to shoot at anything, so we'll just list them all.
    <sAttackStyle>: the default method (style) that the ship will use to engage all targets. This governs how Bentus will behave when attacking something. There are several pre-defined maneuvers, a straightforward "move towards the target and blow the crap out of it" approach seems most fitting for our massive mothership. After all, having it perform inverse Immelman maneuvers around a fighter that is about 1/1000th its size would look bloody ridiculous...
    <tStyleException1> thru <tStyleExceptionN>: exceptions that override <sDefaultAttack> for the specified family. If you want the ship to behave differently towards certain targets, you can specify that here. For example, say you want a battlecruiser to stand still when engaging fighters, but to move around when engaging capital ships. This is where you would define those behaviour patterns.

    All done! Save the ship file and fire up HW2. Start a skirmish vs CPU, with yourself as keeper and the enemy as Vaygr. Move Bentus towards the enemy, set her to agressive and issue an attack order. If you followed the steps correctly, you should be rewarded with the sight of Bentus pounding the hell out of a bunch of resourcers with its single weapon.

    One weapon doesn't quite cut it though. Following the steps outlined above, let's add five more weapons. The second weapon hardpoint will be called Weapon_HullDefense2 and should be on the opposite side of the one we already created. The next pair should be approximately along the middle line of Bentus, and the final pair at the rounded part. Refer to this screenshot for position estimates:



    As you can see, there are a total of six weapon hardpoints, three per side. Place them using the position chooser as described earlier. You will also have to create the three children for each of them with corresponding names.
    The _Direction entry will be the same for all six hardpoints, but the _Rest values will differ somewhat. Let's think about that for a minute.

    The first entry was on the starboard side of the ship, with the weapon pointing in that same direction, so the Position entry for the _Rest child was (-10,0,0).
    Weapon_HullDefense2 is on the opposite side of the ship, i.e. it's at the port side and facing port. That means the _Rest vector should be (10,0,0).
    The same is true for Weapon_HullDefense3, whereas Weapon_HullDefense4 is on the same side as Weapon_HullDefense1, so both of those have the same _Rest vector of (-10,0,0).
    The last two weapons, called Weapon_HullDefense5 and 6, are sitting at a 45 degree angle. We want their weapons to point out at that angle as well, which means they should be turned halfway to port or starboard, respectively.
    Weapon_HullDefense5 is on the starboard side and pointing both port and forward, so its _Rest vector should be (10,0,10). In a similar fashion, Weapon_HullDefense6 is on the port side, pointing starboard and forward, which means the _Rest vector for this weapon is (-10,0,10).

    Your HardEd window should now look like this:


    All those new weapons have to be added to the ship file, so you will have to add these five lines:
    StartShipWeaponConfig(NewShipType, "Hgn_BentusHullDefense", "Weapon_HullDefense2", "Weapon_HullDefense2")
    StartShipWeaponConfig(NewShipType, "Hgn_BentusHullDefense", "Weapon_HullDefense3", "Weapon_HullDefense3")
    StartShipWeaponConfig(NewShipType, "Hgn_BentusHullDefense", "Weapon_HullDefense4", "Weapon_HullDefense4")
    StartShipWeaponConfig(NewShipType, "Hgn_BentusHullDefense", "Weapon_HullDefense5", "Weapon_HullDefense5")
    StartShipWeaponConfig(NewShipType, "Hgn_BentusHullDefense", "Weapon_HullDefense6", "Weapon_HullDefense6")
    Save the .hod file in HardEd and the .ship file in Notepad, and launch HW2 again. If everything went correctly, you should now see something like this:


    Incidentally, this was by far the hardest part of this tutorial. The next steps won't be that difficult. In the next section we'll be developing a build tree.


    Part Nine - Building Ships

    Before we dive into the building fun, we'll have to adjust something in our scripts folder.
    Open your Data\Scripts\Building and Research\Keeper folder. You will see four files:
    .
    If you do not see the file endings, e.g. if all you see is a file called "build" for example, then you have to adjust your windows explorer settings to display file extensions.
    In order to correct that, you have to do these three things:
    1. On the Tools menu in My Computer or Windows Explorer, click Folder Options.
    2. Click the View tab.
    3. Clear the "Hide extensions for known file types" check box.

    Ok, back to our files. Double-click on build.lua. Since you already assigned .lua files to notepad back when you opened the race.lua file, this should result in a notepad window opening. However, the file will look like this:
    Lua@  æ[¡°¹²AC @X:\Homeworld2\Data\Scripts\Building and Research\Keeper\build.lua 
    That's a complete mess! What you can see here is a compiled .lua file. This is what you get when you decompress the .big archive. Remember how we talked about having to decompile files? We didn't have to do that so far, because the archive we used already contained the decompiled files.
    Don't worry, you don't have to do anything complicated now either. The decompiled files are already in the directory, those are the ones with the .luadc file extension.
    This is pretty much how a folder would look if you had decompressed and decompiled it manually.

    Back to modding. Go ahead and delete the build.lua and research.lua files (the ones with the red arrows pointing at them in my screenshot). Then rename the remaining two files by simply removing the .luadc file extension.
    You should now have two files in that folder, called build.lua and research.lua. Since we're talking about build trees, go ahead and open the build.lua.
    Here's what it contains:
    Ship = 0
    SubSystem = 1
    build = {}
    Not much info there, eh? That does make sense, after all the keeper weren't supposed to be able to build anything. Well, let's compare it to the Hiigaran build file. Go into the Hiigaran build and research folder, and open the build.lua.luadc file with notepad.
    It's fairly large, I'll just post an exerpt:
    Ship = 0
    SubSystem = 1
    build =
    {
    {
    Type = SubSystem,
    ThingToBuild = "Hgn_C_Production_Fighter",
    RequiredResearch = "",
    RequiredShipSubSystems = "",
    DisplayPriority = 0,
    DisplayedName = "$7000",
    Description = "$7001", },

    {
    Type = Ship,
    ThingToBuild = "Hgn_Scout",
    RequiredResearch = "",
    RequiredShipSubSystems = "",
    DisplayPriority = 10,
    DisplayedName = "$7030",
    Description = "$7031", },
    {
    Type = Ship,
    ThingToBuild = "Hgn_Interceptor",
    RequiredResearch = "",
    RequiredShipSubSystems = "FighterProduction",
    DisplayPriority = 20,
    DisplayedName = "$7032",
    Description = "$7033", },

    {
    Type = Ship,
    ThingToBuild = "Hgn_MinelayerCorvette",
    RequiredResearch = "GraviticAttractionMines",
    RequiredShipSubSystems = "CorvetteProduction",
    DisplayPriority = 52,
    DisplayedName = "$7042",
    Description = "$7043", },
    Wow, lots of info there! Note that I cut out some parts because they weren't interesting. I also color-coded sections to make it easier to distinguish them.

    Let's take it from the top. The first two lines appear to be the same for all races, so we'll just ignore them. Instead, we'll look at the structure of this file.
    It is divided in multiple sections, each one dedicated to one buildable item, such as subsystems or ships. Each section contains these lines:
    Type
    ThingToBuild ,
    RequiredResearch ,
    RequiredShipSubSystems ,
    DisplayPriority = ,
    DisplayedName = ,
    Description = ,
    They are mostly quite easy to understand. Type tells us what kind of item we're building. This is either a subsystem or a ship.
    RequiredResearch and RequiredShipSubSystems show what requirements have to be met so that this item will be buildable.
    DisplayPriority is a little tricky. I think it has something to do with the way the list of ships in your build menu is organzied, e.g. making sure that the carrier is displayed above the shipyard, for example. The only important thing for us to know here is that no two items should ever have the same priority.
    DisplayedName and Description are the name of that ship type and the short description telling us what the ship is good against - basically the stuff you get when you hover over that little arrow icon in the build menu.
    You will notice that there is no real text here, but rather some weird number string. That is because all this info is stored in a large table somewhere, and $5676 tells the program where to look for that info.
    We don't have to mess with that table however - you can just put normal text inside those quotation marks.

    Now let's look at a few examples. The red part is a subsystem. Since we won't be using any of those, we don't have to spend time with it, I included it mainly for reference purposes.
    The blue section is the build entry for the Hiigaran Scout. The scout is obviously a ship, which is why Type is set to ship. You can build it right away, so there are no requirements at all.
    You do however need a fighter facility to build an interceptor. Looking at the green section we can see that the RequiredResearch field is still empty, which makes sense, because you don't have to research anything to get the interceptor. The RequiredShipSubSystem field now reads "FighterProduction", which is the name of the fighter production subsystem that is needed to contruct these ships.
    An example of required research would be the minelayer corvette, shown in black. The RequiredResearch field reads "GraviticAttractionMines", the name for that research. We will see it in the research.lua in our next chapter. The corvette also requires a corvette production facility, which is stated in the next line.

    That seems simple enough, doesn't it? Now we can start designing our own build menu. Before we do that, we should think about what ships we are going to build though.
    The keeper have the following ships:
    Fighter-class: Attack Drone
    Corvette-class: Mover
    Frigate-class: none
    Destroyer-class: Keeper Destroyer
    Battleship-class: Dreadnought
    Civilian-class: none.

    That last thing is going to be a problem - they have no resourcers! Not to worry though, we'll just steal some from the Hiigaran. However, they still wouldn't have a place to drop off the resources.
    Now we could add a resource dropoff point to Bentus, but I'm not quite sure how to do that, and I think you have to screw around with docking paths and other evil stuff for that. I'm going to ask around, otherwise we'll just use a resource controller.

    More to come eventually. In the meantime, here's a short tutorial on how to get the AI to actually build ships, written by Classicthunder. Thanks for letting me incorporate this!



    Step 1: Preparing the ships to be used in multiplayer.


    Okay now we are going to set up the kpr_mover, the kpr_capture_mover, the kpr_attackdroid, kpr_sajuuk, and the kpr_Destroyer for use in multiplayer.

    To do this we need to change the unit caps family and the display family for each craft.

    _____Fixing the unit cap.

    So open kpr_mover in the ships folder and change the below line

    Code:
    NewShipType.UnitCapsFamily = "SPMovers"
    to this.

    Code:
    NewShipType.UnitCapsFamily = "Corvette"
    There now the Mover has a usable max ship capacity number. If we hadn’t changed this line the mover would have a unit cap of 0.

    _____Fixing the Display Type

    The other line that will need to be changed sometimes is this one.

    Code:
    NewShipType.DisplayFamily
    This line tells what class the ship is under in the build manager. Example a ship set to “Capital” will show up under the Capitalship build menu. For the mover we can leave the line as NewShipType.DisplayFamily = “Corvette”.

    Now repeat this for all of the ships making it so that those lines look like this for each type of ship.

    For the Attackdroid:
    Code:
    NewShipType.DisplayFamily  = "Fighter"
    NewShipType.UnitCapsFamily = "Fighter"
    Capture Mover:
    Code:
    NewShipType.DisplayFamily  = "Corvette "
    NewShipType.UnitCapsFamily = "Corvette "
    Sajjuk:
    Code:
    NewShipType.DisplayFamily = "Capital"
    NewShipType.UnitCapsFamily = "Capital"
    Destroyer:
    Code:
    NewShipType.DisplayFamily = "Capital"
    NewShipType.UnitCapsFamily = "Capital"

    Step 2: Adding the Ships to the Build Manager.


    Okay now go to scripts\building and research\keeper and open up build.lua. It should look like this.

    -- LuaDC version 1.0.1
    -- 6/1/2006 2:57:06 PM
    -- LuaDC by Age2uN
    -- on error send source file (compiled lua) and this outputfile to Age2uN@gmx.net
    --
    Ship = 0
    SubSystem = 1
    build = {}


    Okay now lest fill it in with our ships. First move the second bracket down two rows and then indent it until the build.lua looks like this.

    -- LuaDC version 1.0.1
    -- 6/1/2006 2:57:06 PM
    -- LuaDC by Age2uN
    -- on error send source file (compiled lua) and this outputfile to Age2uN@gmx.net
    --
    Ship = 0
    SubSystem = 1
    build = {

    }

    Copy this into the gap between the brackets and then fill in where I have text for each ship.

    Code:
    Type = Ship, 
    ThingToBuild = "Ship Name Here ", 
    RequiredResearch = "", 
    RequiredShipSubSystems = "", 
    DisplayPriority =The lower the number the higher up it appers on the build manager, 
    DisplayedName = "Enter The Name that the Build Manager Should Show Here",
    Description = "<b>Description:</b> Add Text Here. \n\n<b>Prerequisites:</b> Add Text Here.", },
    Now open up the hiigaran\build.lua and copy out the recoursecontroller and the recoursecollector build info and add it into your keeper\build.lua.

    Great job our build.lua is complete and it should look something like this.

    Build.lua



    Step 3: Adding the Keeper ships into the classdef.lua:

    You should have downloaded Evillejedi’s ai and script files but if you haven’t you need them now. As soon as you get them open up the classdef.lua in the ai folder, now go through it and when ever you come to a class in which you ship fits nicely add it in. Remember to add commas after all of your ships.

    The final result should look something like this.

    Classdef.lua



    Step 4: Adding Keeper into the AI.


    Last but not least we need to work on the cpubuild.lua. Again this is the file Eviljedi’s that I asked you to download.

    Were about done open up cpubuild.lua and take a look over it. Looks pretty scary doesn’t it? Luckily you only have to add a few lines in function CreateBuildDefinitions.

    Now delete function CreateBuildDefinitions() including the end on the same indention level near the bottom.

    Now where that function used to be add in this block of text.

    Code:
    function CreateBuildDefinitions()
    
    	if (s_race == Race_Hiigaran) then
    	
    		kCollector = HGN_RESOURCECOLLECTOR
    		kRefinery  = HGN_RESOURCECONTROLLER
    		kScout = HGN_SCOUT
    		kInterceptor = HGN_INTERCEPTOR
    		kBomber = HGN_ATTACKBOMBER
    		kCarrier = HGN_CARRIER
    		kShipYard = HGN_SHIPYARD
    		kDestroyer = HGN_DESTROYER
    		kBattleCruiser = HGN_BATTLECRUISER
    		
    	elseif (s_race == Race_Vaygr) then
    	
    		kCollector = VGR_RESOURCECOLLECTOR
    		kRefinery  = VGR_RESOURCECONTROLLER
    		kScout = VGR_SCOUT
    		kInterceptor = VGR_INTERCEPTOR
    		kBomber = VGR_BOMBER
    		kCarrier = VGR_CARRIER
    		kShipYard = VGR_SHIPYARD
    		kDestroyer = VGR_DESTROYER
    		kBattleCruiser = VGR_BATTLECRUISER
    		
    	else
    	
    		kCollector = HGN_RESOURCECOLLECTOR
    		kRefinery  = HGN_RESOURCECONTROLLER
    		kScout = KPR_ATTACKDROID
    		kInterceptor = KPR_ATTACKDROID
    		kBomber = KPR_MOVER
    		kCarrier = KPR_DESTROYER
    		kShipYard = KPR_DESTROYER
    		kDestroyer = KPR_DESTROYER
    		kBattleCruiser = KPR_DESTROYER
    		
    	end
    	
    end
    You should notice we have a lot of ships being used for many different roles. So your next job is to make variants of the usable Keeper ships then add them in here. However, that can wait run your mod and watch as the Keeper race builds ships.

    Any suggestions or comments are very welcome, as are cries for help.

  2. #2
    Banned Jaen-ni-rin's Avatar
    Join Date
    Mar 2004
    Location
    Poland
    *Jaen thinks that it's an excellent idea !
    Keep it coming !!!

  3. #3
    Hey Moe,Will the Keeper race be able to play as the enemy in skirmish,like if i play as the Hiig race will the AI build Keeper ships to battle against me?

  4. #4
    If you did, could you tell me how, as I am trying to do the same.

  5. Homeworld Senior Member  #5
    Lord Emptiness Void's Avatar
    Join Date
    Jul 2004
    Location
    Romania
    great ideea moe!.. but hard ed doesn't seem to work for me (

  6. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #6
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    HardEd needs the .NET framework. Download it at microsoft.com.
    I added information about that to the first post, thanks!

    About the AI: I have no idea. I don't think it will be able to build stuff for now, however you could give the AI and yourself a sizeable starting fleet.
    I'll look into that once we get the keepers up and running, but for now this is more of a "you as keeper vs the CPU as Hiig/Vaygr" kind of thing.
    Of course you can play as Hiig against another human opponent who can be the keeper - but I'm afraid game balance is not something we'll be doing in this tutorial, so the game might be a bit unfair.

    First post has been updated with a new section on starting fleets.
    Last edited by Moe; 24th Sep 05 at 3:45 AM.

  7. #7
    Your Friendly Dictator Deionarra's Avatar
    Join Date
    Aug 2005
    Location
    London
    Omg you moron that's totally wrong!

    Sorry I couldn't help myself

    Very nicely writen tutorial i'm sure lots of people will find this helpful.

    On the subject of AI I would be happy to help show you how to get this to work for the keepers. Or I could write some stuff about it for you that you could include your tutorial.
    (Probably the first way as i'm sure you'd want to try it yourself to make sure it works before posting it )
    Last edited by Deionarra; 24th Sep 05 at 11:24 AM.
    Cake can change the nature of a man!

  8. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #8
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    That sounds great! I'll make sure to nag you about that later.

  9. #9
    Quote Originally Posted by Deionarra
    Omg you moron that's totally wrong!

    Sorry I couldn't help myself

    Very nicely writen tutorial i'm sure lots of people will find this helpful.

    On the subject of AI I would be happy to help show you how to get this to work for the keepers. Or I could write some stuff about it for you that you could include your tutorial.
    (Probably the first way as i'm sure you'd want to try it yourself to make sure it works before posting it )
    Hurray. I tries myself, but of no avail. The game just crashes. :/ it was to complicated.

  10. #10
    Apo Mekhanes Theos Progenitor's Avatar
    Join Date
    Mar 2004
    Location
    Virgo Cluster
    for the AI, you can just simply rip the AI out from a set race, and change the contents of it to get a new AI.

  11. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #11
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    That's my standard method of operation: rip off other people's work and adapt it to my own uses. So yeah, once this is done I'll probably get on that.

  12. #12
    thats what i did, but i thionk i did some thing wrong. don't know, to lazy to redo it and fix it

  13. #13
    Member
    Join Date
    Sep 2003
    Location
    Deep in thought.
    Getting new races to fly about and do battle is becoming a major thorn in my side, those with the know how should add their voices!
    "The superior man...does not set his mind either for anything, or against anything; what is right he will follow."
    -Confucius, The Confucian Analects

  14. #14
    Member Valkasherre's Avatar
    Join Date
    Sep 2005
    Location
    Australia, WA, Perth
    Hey Moe. I've done everything that you've said with only a few differences.
    1. I extracted the homeworld2.big file because the original data.zips didn't contain .hod files.
    2. I use a luadc to decomplie them,...
    with for eg.

    kpr_bentus
    LUADC File
    (which makes it modable. BUT when there are both .ship and .event files decompiled like this you cant give them the same name, and I wanted to know how you put them back to being a .ship and .event file while it maintains modding ease.)

    Everything works fine untill it stops loading. and goes into the "battleplay screen" It crashes and I cant figure out why.

    Some opinions would be good as to why it does this.

  15. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #15
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    First post updated with some weapons stuff.

    Valkasherre: The .zip I linked indeed lacks the .hod files, but since we'll only need one of them, I was going to supply it later on.
    If you add -luatrace next to the -overrideBigFile in your shortcut line, it'll create a text file with more debug info and tell you what exactly went wrong.
    It's kinda hard to tell what exactly happened in your case - I would suggest starting with the data.zip that I linked and applying the changes again, then see if it works.

  16. #16
    Your Friendly Dictator Deionarra's Avatar
    Join Date
    Aug 2005
    Location
    London
    This is comming along nicely

    Let me see if I can clarify a few things:
    Everything works fine untill it stops loading. and goes into the "battleplay screen" It crashes and I cant figure out why.
    There are two things that are not mentioned above that you need to do before it will work (i'm sure Moe was going to explain these in his next update ).

    1. Make sure you have the meg_bentus.hod file in your data/ship/kpr_bentus/ folder and rename it -> kpr_bentus.hod

    2. Add the following line to the kpr_bentus.ship file ->
    Code:
    addAbility(NewShipType,"CanBuildShips",1,"","");
    Put is above the line -> addAbility(NewShipType, "CanLaunch")

    Without this line the game will crash on start up because your fleet will not have a build capable ship and so you will automaticaly lose the game. Although rather than just losing the game automaticaly the game will actualy just crash to desktop as soon as it finishes loading.

    Hey Moe. I've done everything that you've said with only a few differences.
    1. I extracted the homeworld2.big file because the original data.zips didn't contain .hod files.
    2. I use a luadc to decomplie them,...
    with for eg.

    kpr_bentus
    LUADC File
    (which makes it modable. BUT when there are both .ship and .event files decompiled like this you cant give them the same name, and I wanted to know how you put them back to being a .ship and .event file while it maintains modding ease.)
    I'm not sure exactly what you are doing here so please excuse me if i've completely missed the point.

    You have extracted the files:

    meg_bentus.ship
    meg_bentus.events

    You use LuaDC to decompile them so you can edit them and it gives you the following:

    meg_bentus.ship.LuaDC
    meg_bentus.events.LuaDC

    Rename both these dy chaning the prefix from "meg_" to "kpr_" and delete the ".LuaDC" from both so you then get:

    kpr_bentus.ship
    kpr_bentus.events

    Put these in: data/ship/kpr_bentus/

    And just follow the instructions above.


    The .events file contains all the information regarding the ship's FX animations. These animations are basicaly a series of FX that are triggered with a set delay so that they run in a sequence (although often there may onlt be a single effect).
    These animations mainly include things such as damage, death animations and weapon muzzle FX as well as many other effects.

    If you look at the kpr_bentus.events file you will see that at the top there are 5 animations for the ship. The first one is it's death animation and the others are damage animations that are triggered depending on how much damage the ship has suffered.

    The rest of the file is basicaly taken up by all the FX that make up the death animation (in other words the massive chain reaction of explosions you get when the ship is destroyer) because it far longer for bentus than most other ships (if you look at the top at the death animation, animation 1, you will see that it lasts 45 seconds ). Also at the very bottom are the lines for the damage FX.
    If you want to play with .events files I suggest you start with a much simpler ship, one that will also have weapon muzzle FX to look at.


    I may be wrong here but I think that ThrusterMaxSpeed and the ThrusterAcceleration/BreakTime are to do with the ships perpendicular movement. In other words it's how the ship moves up, down, left or right without turning but facing forwards instead.

  17. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #17
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    Neat, thanks for the pointers. I forgot about the build-capability, I'll add that as well as the .events info.

  18. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #18
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    Bumping ( Loc) this because I added a new section and I'd be grateful if someone "in the know" could skim over it and tell me if I made any large errors?

  19. #19
    Question Man
    Guest
    Can some body help me? i carn't get the overide big file thing to work. i start form the short cut and i just quits stright to the desktop. is like a frigt with a computer.:fight:
    Thanx in advance

  20. #20
    Question Man
    Guest
    Dont warry guys i worked it out

    now die hillgrans :hover:

  21. #21
    Your Friendly Dictator Deionarra's Avatar
    Join Date
    Aug 2005
    Location
    London
    Only mistake I can see is this, (just a sily little mistake)

    Click on the "Children" entry of Weapon_HullDefense1_Position. Once again, select options from the menu bar, and create two more children.
    Rename one of them Weapon_HullDefense1_Direction and the other two Weapon_HullDefense1_Rest and Weapon_HullDefense1_Muzzle.
    That should read ",and create three more children." which is obviously what you ment to say given the following sentence. An obvious little mistake but I thought i'd point it out incase anyone got confused, a mistake caused by lack of sleep no doubt

    PS: I never actualy realised HardED could show you that wire frame view

  22. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #22
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    This is embarrasing. I SO CAN'T COUNT.
    Fixed, thank you.

  23. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #23
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    Loc will hate me, but once again, ing because I updated it. Did I miscount again somewhere?

  24. General Discussions Senior Member Modding Senior Member  #24
    Philosophizer Locutus's Avatar
    Join Date
    Jan 2005
    Location
    Chasing my heart through the Spaceways
    Nah, I couldn't hate you Moe. :luff: to all the staff.

    Oh, linkie to this thread added in the Newbie guide btw.

  25. #25
    Your Friendly Dictator Deionarra's Avatar
    Join Date
    Aug 2005
    Location
    London
    Looks like there are no mistakes this time and well writen as usual

    "Deionarra gives Moe a gold star" :thumb:

  26. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #26
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    Why thank you!

    Bump time, because I finished the hardpoint section. If you have followed the steps in the tutorial you should now have a fully functional Bentus that can move, hyperspace, and shoot the crap out of other ships.
    By the way, I think there was a little switching screwup with the coordinates, please hit refresh once to reload the corrected image.

  27. #27
    mongoose
    Guest
    I have a crash problem: after I have modded in the keeper race (the name first shows up as some number with a dollar sign until i changed it) and start a skirmish, the game simply shuts down when loading the Universe.

    Also I was wondering where that debug script from Luadc appears.

    A note about my experience: the only modding experience I have had is with Dark Reign 2, which I have modded fairly extensively. I have zero experience with any other game.

  28. #28
    Your Friendly Dictator Deionarra's Avatar
    Join Date
    Aug 2005
    Location
    London
    I have a crash problem: after I have modded in the keeper race
    How much of the tutorial have you actualy done when you tried to start it?

    The things that you must do to have it work are:

    1. Make the race playable
    2. Coppied bentus to use as your mothership and named all the files and folder correctly. This must be the .ship and .hod files.
    3. Give the ship the Build Ability.
    4. Made a new starting fleet script for the keepers including your new ship.

    All the steps to do these things are in the tutorial.


    I don't know for Luadc but if it's the -luatrace log file you are asking about then it can be found in.

    Homeworld2/Bin/Release/HW2.log

    It's invaluable for debuging any errors.

  29. #29
    mongoose
    Guest
    I redid all of that and the same problem occured, the logfile is gibberish as far as I can see. The only thing that caught my attention was the callstack:

    Call Stack:
    0x003519B6: dbFatalfAux ()
    0x0047962B: GSLobbySessionDesc::operator= ()
    0x0047ADFC: GSLobbySessionDesc::operator= ()

    By 'caught my attention' I do not mean that I understood it at all, could you please elaborate?
    Last edited by mongoose; 16th Oct 05 at 1:07 PM.

  30. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #30
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    Can you post your complete hw2.log from after a failed attempt to load the keepers please?

  31. #31
    Member
    Join Date
    Sep 2003
    Location
    Deep in thought.
    Eek! Good stuff Moe, now wheres the bit that includes getting the AI to actually use the new-fangled race?

  32. #32
    WOW, great work Moe, haven't visted the forums in a while, but looks great.

  33. #33
    bluvishnu
    Guest
    Moe, I had the same problem, this is exactly how the error log reads:
    Code:
    Homeworld2.exe caused a Breakpoint in module Debug.dll at 001b:003519b6.
    Error occurred at 10/16/2005 18:20:24.
    Homeworld2.exe, run by Owner.
    Microsoft Windows XP?.
    1 processor(s), type 586.
    512 MBytes physical memory.
    
    MiniDump saved to file 'C:\Program Files\Sierra\Homeworld2\Bin\Release\10-16-2005_18_20_24_MiniDump.dmp'
    
    Registers:
    EAX=00000000 CS=001b EIP=003519b6 EFLGS=00000202
    EBX=00000000 SS=0023 ESP=0012b934 EBP=0012c3ec
    ECX=7c014444 DS=0023 ESI=0000000c FS=003b
    EDX=070550f0 ES=0023 EDI=000003ed GS=0000
    Bytes at CS:EIP:
    cc 83 4d fc ff 8d 8d 5c fe ff ff e8 9b fc ff ff 
    
    Call Stack:
    0x003519B6: dbFatalfAux                                 ()
    0x0054BD5B: GSTracker::operator=                        ()
    0x0054BDF5: GSTracker::operator=                        ()
    0x003C46B5: lua_error                                   ()
    0x003C4749: lua_error                                   ()
    0x003C47EE: lua_error                                   ()
    0x003C481E: lua_call                                    ()
    0x0046B9FC: GSLobbySessionDesc::operator=               ()
    
    
    Stack dump:
    
    
    
    Module list: names, addresses, sizes, time stamps and file times:
    C:\Program Files\Sierra\Homeworld2\Bin\Release\Memory.dll, loaded at 0x00320000 - 33280 bytes - 3fe0ce01 - file date is 12/17/2003 13:43:30
    C:\Program Files\Sierra\Homeworld2\Bin\Release\Platform.dll, loaded at 0x00330000 - 98304 bytes - 3fe0ce5f - file date is 12/17/2003 13:45:04
    C:\Program Files\Sierra\Homeworld2\Bin\Release\Debug.dll, loaded at 0x00350000 - 10752 bytes - 3fe0cdfd - file date is 12/17/2003 13:43:26
    C:\Program Files\Sierra\Homeworld2\Bin\Release\Localizer.dll, loaded at 0x00360000 - 94208 bytes - 3fe0ce59 - file date is 12/17/2003 13:44:58
    C:\Program Files\Sierra\Homeworld2\Bin\Release\FileIO.dll, loaded at 0x00380000 - 155648 bytes - 3fe0ce52 - file date is 12/17/2003 13:44:50
    C:\Program Files\Sierra\Homeworld2\Bin\Release\ZLib.dll, loaded at 0x003b0000 - 49152 bytes - 3fe0ce3b - file date is 12/17/2003 13:44:28
    C:\Program Files\Sierra\Homeworld2\Bin\Release\lua.dll, loaded at 0x003c0000 - 73728 bytes - 3fe0ce66 - file date is 12/17/2003 13:45:12
    C:\Program Files\Sierra\Homeworld2\Bin\Release\luaconfig.dll, loaded at 0x003e0000 - 57344 bytes - 3fe0ce6b - file date is 12/17/2003 13:45:16
    C:\Program Files\Sierra\Homeworld2\Bin\Release\util.dll, loaded at 0x003f0000 - 36864 bytes - 3fe0ce7e - file date is 12/17/2003 13:45:34
    C:\Program Files\Sierra\Homeworld2\Bin\Release\Homeworld2.exe, loaded at 0x00400000 - 5562368 bytes - 3fe0d29b - file date is 12/17/2003 14:39:04
    C:\Program Files\Sierra\Homeworld2\Bin\Release\divxmedialib.dll, loaded at 0x00970000 - 86016 bytes - 3f3bc007 - file date is 8/14/2003 18:08:56
    C:\Program Files\Sierra\Homeworld2\Bin\Release\DivxDecoder.dll, loaded at 0x00990000 - 397312 bytes - 3f3bc002 - file date is 8/14/2003 18:08:56
    C:\Program Files\Sierra\Homeworld2\Bin\Release\FileParser.dll, loaded at 0x00a00000 - 86016 bytes - 3f3bc005 - file date is 8/14/2003 18:08:56
    C:\Program Files\Sierra\Homeworld2\Bin\Release\hw2box.dll, loaded at 0x00a20000 -  9728 bytes - 3fe0ce78 - file date is 12/17/2003 13:45:28
    C:\Program Files\Sierra\Homeworld2\Bin\Release\objects.dll, loaded at 0x00a30000 - 1093632 bytes - 3fe0cfaa - file date is 12/17/2003 13:50:36
    C:\Program Files\Sierra\Homeworld2\Bin\Release\console.dll, loaded at 0x00be0000 -  5632 bytes - 3fe0cf2d - file date is 12/17/2003 13:48:30
    C:\WINDOWS\system32\CmdLineExt03.dll, loaded at 0x01780000 - 43520 bytes - 3fcb7916 - file date is 10/15/2005 02:16:02
    C:\Program Files\Sierra\Homeworld2\Bin\Release\GL.dll, loaded at 0x02870000 - 294912 bytes - 3fe0cfbd - file date is 12/17/2003 13:50:54
    C:\PROGRA~1\Sierra\HOMEWO~1\Bin\Release\seFDAudio.dll, loaded at 0x04e30000 - 40960 bytes - 3fe0cee8 - file date is 12/17/2003 13:47:20
    C:\Program Files\Sierra\Homeworld2\Bin\Release\gslobby.dll, loaded at 0x10000000 - 135168 bytes - 3fe0cf28 - file date is 12/17/2003 13:48:24
    C:\WINDOWS\system32\xpsp2res.dll   , loaded at 0x20000000 - 2897920 bytes - 411096b9 - file date is 8/4/2004 03:56:36
    C:\WINDOWS\system32\dxdiagn.dll    , loaded at 0x4f680000 - 2113536 bytes - 41109696 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\dbghelp.dll    , loaded at 0x59a60000 - 640000 bytes - 4110969a - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\uxtheme.dll    , loaded at 0x5ad70000 - 218624 bytes - 411096bb - file date is 8/4/2004 03:56:46
    C:\WINDOWS\system32\NETAPI32.dll   , loaded at 0x5b860000 - 332288 bytes - 411096ac - file date is 8/4/2004 03:56:44
    C:\WINDOWS\system32\comctl32.dll   , loaded at 0x5d090000 - 611328 bytes - 411096af - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\opengl32.dll   , loaded at 0x5ed00000 - 713728 bytes - 411096f8 - file date is 8/4/2004 03:56:44
    C:\WINDOWS\system32\mslbui.dll     , loaded at 0x605d0000 - 25088 bytes - 4110972f - file date is 8/4/2004 03:56:44
    C:\Program Files\Microsoft Hardware\Mouse\POINT32.dll, loaded at 0x61210000 - 57344 bytes - 3cb5da47 - file date is 4/11/2002 14:47:52
    C:\Program Files\Microsoft Hardware\Mouse\MSH_ZWF.dll, loaded at 0x61220000 - 69632 bytes - 3cb5da47 - file date is 4/11/2002 14:47:52
    C:\WINDOWS\system32\GLU32.dll      , loaded at 0x68b20000 - 122880 bytes - 41109697 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\atioglxx.dll   , loaded at 0x69000000 - 6664192 bytes - 417efff6 - file date is 10/26/2004 21:55:08
    C:\WINDOWS\system32\WS2HELP.dll    , loaded at 0x71aa0000 - 19968 bytes - 411096f3 - file date is 8/4/2004 03:56:46
    C:\WINDOWS\system32\WS2_32.dll     , loaded at 0x71ab0000 - 82944 bytes - 411096f2 - file date is 8/4/2004 03:56:46
    C:\WINDOWS\system32\WSOCK32.dll    , loaded at 0x71ad0000 - 22528 bytes - 411096ff - file date is 8/4/2004 03:56:46
    C:\WINDOWS\system32\msacm32.drv    , loaded at 0x72d10000 - 20480 bytes - 3b7dfe2a - file date is 8/29/2002 08:00:00
    C:\WINDOWS\system32\wdmaud.drv     , loaded at 0x72d20000 - 23552 bytes - 411096c6 - file date is 8/4/2004 03:56:58
    C:\WINDOWS\system32\DDRAW.dll      , loaded at 0x73760000 - 266240 bytes - 411096a0 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\DCIMAN32.dll   , loaded at 0x73bc0000 -  8704 bytes - 4110969f - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\KsUser.dll     , loaded at 0x73ee0000 -  4096 bytes - 411096ad - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\dsound.dll     , loaded at 0x73f10000 - 367616 bytes - 411096d4 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\MSCTF.dll      , loaded at 0x74720000 - 294400 bytes - 411096ea - file date is 8/4/2004 03:56:42
    C:\WINDOWS\System32\wbem\wbemsvc.dll, loaded at 0x74ed0000 - 43520 bytes - 411096c3 - file date is 8/4/2004 03:56:46
    C:\WINDOWS\System32\wbem\wbemprox.dll, loaded at 0x74ef0000 - 18944 bytes - 411096c2 - file date is 8/4/2004 03:56:46
    C:\WINDOWS\System32\wbem\wbemcomn.dll, loaded at 0x75290000 - 214528 bytes - 411096bc - file date is 8/4/2004 03:56:46
    C:\WINDOWS\System32\wbem\fastprox.dll, loaded at 0x75690000 - 472064 bytes - 41109695 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\MSVCP60.dll    , loaded at 0x76080000 - 413696 bytes - 41109751 - file date is 8/4/2004 03:56:44
    C:\WINDOWS\system32\NTDSAPI.dll    , loaded at 0x767a0000 - 67072 bytes - 411096c9 - file date is 8/4/2004 03:56:44
    C:\WINDOWS\system32\winmm.dll      , loaded at 0x76b40000 - 176128 bytes - 411096d6 - file date is 8/4/2004 03:56:46
    C:\WINDOWS\system32\WINTRUST.dll   , loaded at 0x76c30000 - 176640 bytes - 411096b9 - file date is 8/4/2004 03:56:46
    C:\WINDOWS\system32\imagehlp.dll   , loaded at 0x76c90000 - 144384 bytes - 411096a9 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\DNSAPI.dll     , loaded at 0x76f20000 - 148480 bytes - 411096bd - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\WLDAP32.dll    , loaded at 0x76f60000 - 172032 bytes - 411096bb - file date is 8/4/2004 03:56:46
    C:\WINDOWS\system32\CLBCATQ.DLL    , loaded at 0x76fd0000 - 501248 bytes - 411096a2 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\COMRes.dll     , loaded at 0x77050000 - 792064 bytes - 411096b4 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\oleaut32.dll   , loaded at 0x77120000 - 553472 bytes - 411096f3 - file date is 8/4/2004 03:56:44
    C:\WINDOWS\system32\WININET.dll    , loaded at 0x771b0000 - 658432 bytes - 42c74952 - file date is 7/2/2005 22:11:30
    C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll, loaded at 0x773d0000 - 1050624 bytes - 4110968c - file date is 8/4/2004 03:57:00
    C:\WINDOWS\system32\ole32.dll      , loaded at 0x774e0000 - 1285120 bytes - 427139fe - file date is 4/28/2005 15:31:12
    C:\WINDOWS\system32\CRYPT32.dll    , loaded at 0x77a80000 - 597504 bytes - 41109691 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\MSASN1.dll     , loaded at 0x77b20000 - 57344 bytes - 411096e3 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\midimap.dll    , loaded at 0x77bd0000 - 18944 bytes - 411096a9 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\MSACM32.dll    , loaded at 0x77be0000 - 71680 bytes - 411096cf - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\version.dll    , loaded at 0x77c00000 - 18944 bytes - 411096b7 - file date is 8/4/2004 03:56:46
    C:\WINDOWS\system32\msvcrt.dll     , loaded at 0x77c10000 - 343040 bytes - 41109752 - file date is 8/4/2004 03:56:44
    C:\WINDOWS\system32\USER32.dll     , loaded at 0x77d40000 - 577024 bytes - 42260159 - file date is 3/2/2005 14:09:30
    C:\WINDOWS\system32\ADVAPI32.dll   , loaded at 0x77dd0000 - 616960 bytes - 411096a7 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\RPCRT4.dll     , loaded at 0x77e70000 - 581120 bytes - 411096ae - file date is 8/4/2004 03:56:44
    C:\WINDOWS\system32\GDI32.dll      , loaded at 0x77f10000 - 278016 bytes - 41109697 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\SHLWAPI.dll    , loaded at 0x77f60000 - 473600 bytes - 42c74951 - file date is 7/2/2005 22:11:30
    C:\WINDOWS\system32\Secur32.dll    , loaded at 0x77fe0000 - 55808 bytes - 411096c1 - file date is 8/4/2004 03:56:44
    C:\Program Files\Sierra\Homeworld2\Bin\Release\MSVCR70.dll, loaded at 0x7c000000 - 344064 bytes - 3c36e574 - file date is 8/14/2003 18:08:58
    C:\WINDOWS\system32\kernel32.dll   , loaded at 0x7c800000 - 983552 bytes - 411096b4 - file date is 8/4/2004 03:56:42
    C:\WINDOWS\system32\ntdll.dll      , loaded at 0x7c900000 - 708096 bytes - 411096b4 - file date is 8/4/2004 03:56:36
    C:\WINDOWS\system32\SHELL32.dll    , loaded at 0x7c9c0000 - 8450048 bytes - 4223a515 - file date is 2/28/2005 19:11:18
    Last edited by Locutus; 16th Oct 05 at 3:52 PM.

  34. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #34
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    Ok, time to go bug hunting.
    Please take your "ships" folder, and move (don't copy) it someplace outside the Data directory.

    Then try to launch the game.

    If it still crashes, move (don't copy) the weapons folder out of the data directory.


    Please let me know if any of that actually got you past the universe part. There may be a typo or something somewhere (I'm suspecting Bentus at this part) which will cause the game to crash.

  35. #35
    bluvishnu
    Guest
    Here's what happened for me:

    I removed "ship" from "data" and the game crashed at universe, whether attempting to play as Keeper or Hiigaran or Vaygr.

    I removed "weapon" from "data" in addition to moving "ship" from "data" and the game crashed at universe, again playing as any race.

    The only way the game didn't crash was if all three folders (obviously) were removed. Hope this helps.

  36. #36
    Your Friendly Dictator Deionarra's Avatar
    Join Date
    Aug 2005
    Location
    London
    You should forget trying to add weapons to the ship until you have done Part 2 -> Part 7 of the tutorial.
    If you follow these parts correctly the game will load and you should be able to go the keepers and have bentus as your ship.

    Make sure your folder Homeworld2/data/Ship/Kpr_Bentus contains the 3 files:

    Kpr_Bentus.events
    Kpr_Bentus.ship
    Kpr_Bentus.hod

    You can try adding the Kpr_Bentus to the Hiigaran starting fleet and remove your edited Race and Keeper Starting fleet files to test if the problem is with your ship files.


    Eek! Good stuff Moe, now wheres the bit that includes getting the AI to actually use the new-fangled race?
    I promissed i'd do a bit on AI when the time comes as I have a couple of custom races with working AI in my mod.
    It's not time for that yet though and i'll need to re-trace my steps a bit to make sure I can write it in a way that people can actualy follow. So much of what I did was just trial and error, looking over error logs and fixing it bit by bit.

  37. #37
    bluvishnu
    Guest
    I'm not trying to be rude, but I tried all these things on at least 3 different occasions (starting from scratch each time), and followed the directions exactly as they were described. I am new to this, but I have a basic understanding of what should or should not work, so I can assume that I am at least somewhat competent in this respect. If I correctly understand what you are saying, you would not add the "weapon" folder to "data" but as far as my progress allowed, I never even made it to the weapons section, I stopped at part 7 every time, thus, the presence of the "weapon" folder should be inconsequential. On every step from 1 - 7, the game crashed at the "universe" portion of map loading. As Moe suggested, the problem may very well lie in a typo or some miswording. I'm sure source code can be very touchy in that way. I will definitely try adding the Bentus to the Hiigaran fleet, that's an excellent troubleshooting recommendation. Hopefully I'll come back to the boards with good news...

  38. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #38
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    Ok, wait, even better yet, try this.
    Nuke the ship and weapons folders.
    Then add "Meg_Bentus", not Kpr_Bentus, to the Hiigaran starting fleet.

    Did you manage to launch the game successfully at any point during the tutorial?

  39. #39
    bluvishnu
    Guest
    Well, I tried both Deionarra's and Moe's suggestions, and neither one worked; both yielded crashes at the "universe" portion of loading the map.

    Also, no, I never got the game to load throughout the tutorial. I never went past the 6th step, and usually tested every step a couple times before proceeding, thinking that maybe it wouldn't work until there was sufficient correct data.

    By this point, it probably just sounds like I'm an incompetent modder with no accountability and no hope of success, but please, don't give up on me just yet.

  40. #40
    mongoose
    Guest
    My problem is the exact same in every detail as bluvishus, except for the fact that I stopped the teutorial before step six. Anyways, here is my logfile:

    Code:
    Homeworld2.exe caused a Breakpoint in module Debug.dll at 001b:003519b6.
    Error occurred at 10/16/2005 15:03:20.
    Homeworld2.exe, run by David.
    Microsoft Windows XP?.
    1 processor(s), type 586.
    512 MBytes physical memory.
    
    MiniDump saved to file 'C:\Program Files\Homeworld2\Bin\Release\10-16-2005_15_03_20_MiniDump.dmp'
    
    Registers:
    EAX=00000000 CS=001b EIP=003519b6 EFLGS=00000202
    EBX=00000000 SS=0023 ESP=0012bac0 EBP=0012c578
    ECX=7c014444 DS=0023 ESI=00000007 FS=003b
    EDX=0e605060 ES=0023 EDI=000003ec GS=0000
    Bytes at CS:EIP:
    cc 83 4d fc ff 8d 8d 5c fe ff ff e8 9b fc ff ff 
    
    Call Stack:
    0x003519B6: dbFatalfAux                                 ()
    0x0047962B: GSLobbySessionDesc::operator=               ()
    0x0047ADFC: GSLobbySessionDesc::operator=               ()
    
    
    Stack dump:
    
    
    
    Module list: names, addresses, sizes, time stamps and file times:
    C:\Program Files\Homeworld2\Bin\Release\Memory.dll, loaded at 0x00320000 - 33280 bytes - 3fe0ce01 - file date is 12/17/2003 13:43:30
    C:\Program Files\Homeworld2\Bin\Release\Platform.dll, loaded at 0x00330000 - 98304 bytes - 3fe0ce5f - file date is 12/17/2003 13:45:04
    C:\Program Files\Homeworld2\Bin\Release\Debug.dll, loaded at 0x00350000 - 10752 bytes - 3fe0cdfd - file date is 12/17/2003 13:43:26
    C:\Program Files\Homeworld2\Bin\Release\Localizer.dll, loaded at 0x00360000 - 94208 bytes - 3fe0ce59 - file date is 12/17/2003 13:44:58
    C:\Program Files\Homeworld2\Bin\Release\FileIO.dll, loaded at 0x00380000 - 155648 bytes - 3fe0ce52 - file date is 12/17/2003 13:44:50
    C:\Program Files\Homeworld2\Bin\Release\ZLib.dll, loaded at 0x003b0000 - 49152 bytes - 3fe0ce3b - file date is 12/17/2003 13:44:28
    C:\Program Files\Homeworld2\Bin\Release\lua.dll, loaded at 0x003c0000 - 73728 bytes - 3fe0ce66 - file date is 12/17/2003 13:45:12
    C:\Program Files\Homeworld2\Bin\Release\luaconfig.dll, loaded at 0x003e0000 - 57344 bytes - 3fe0ce6b - file date is 12/17/2003 13:45:16
    C:\Program Files\Homeworld2\Bin\Release\util.dll, loaded at 0x003f0000 - 36864 bytes - 3fe0ce7e - file date is 12/17/2003 13:45:34
    C:\Program Files\Homeworld2\Bin\Release\Homeworld2.exe, loaded at 0x00400000 - 5562368 bytes - 3fe0d29b - file date is 12/17/2003 14:39:04
    C:\Program Files\Homeworld2\Bin\Release\divxmedialib.dll, loaded at 0x00970000 - 86016 bytes - 3f3bc007 - file date is 8/14/2003 18:08:56
    C:\Program Files\Homeworld2\Bin\Release\DivxDecoder.dll, loaded at 0x00990000 - 397312 bytes - 3f3bc002 - file date is 8/14/2003 18:08:56
    C:\Program Files\Homeworld2\Bin\Release\FileParser.dll, loaded at 0x00a00000 - 86016 bytes - 3f3bc005 - file date is 8/14/2003 18:08:56
    C:\Program Files\Homeworld2\Bin\Release\hw2box.dll, loaded at 0x00a20000 -  9728 bytes - 3fe0ce78 - file date is 12/17/2003 13:45:28
    C:\Program Files\Homeworld2\Bin\Release\objects.dll, loaded at 0x00a30000 - 1093632 bytes - 3fe0cfaa - file date is 12/17/2003 13:50:36
    C:\Program Files\Homeworld2\Bin\Release\console.dll, loaded at 0x00be0000 -  5632 bytes - 3fe0cf2d - file date is 12/17/2003 13:48:30
    C:\WINDOWS\system32\CmdLineExt03.dll, loaded at 0x01780000 - 43520 bytes - 3fcb7916 - file date is 10/16/2005 15:03:02
    C:\Program Files\Stardock\ObjectDock\DockShellHook.dll, loaded at 0x01970000 - 20480 bytes - 41e41b66 - file date is 1/11/2005 14:31:02
    C:\Program Files\Homeworld2\Bin\Release\GL.dll, loaded at 0x02810000 - 294912 bytes - 3fe0cfbd - file date is 12/17/2003 13:50:54
    C:\Program Files\Homeworld2\Bin\Release\seFDAudio.dll, loaded at 0x0cdd0000 - 40960 bytes - 3fe0cee8 - file date is 12/17/2003 13:47:20
    C:\Program Files\Homeworld2\Bin\Release\gslobby.dll, loaded at 0x10000000 - 135168 bytes - 3fe0cf28 - file date is 12/17/2003 13:48:24
    C:\WINDOWS\system32\xpsp2res.dll   , loaded at 0x20000000 - 2897920 bytes - 411096b9 - file date is 8/4/2004 02:56:36
    C:\WINDOWS\system32\dxdiagn.dll    , loaded at 0x4f680000 - 2113536 bytes - 41109696 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\dbghelp.dll    , loaded at 0x59a60000 - 640000 bytes - 4110969a - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\uxtheme.dll    , loaded at 0x5ad70000 - 218624 bytes - 411096bb - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\NETAPI32.dll   , loaded at 0x5b860000 - 332288 bytes - 411096ac - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\comctl32.dll   , loaded at 0x5d090000 - 611328 bytes - 411096af - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\opengl32.dll   , loaded at 0x5ed00000 - 713728 bytes - 411096f8 - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\GLU32.dll      , loaded at 0x68b20000 - 122880 bytes - 41109697 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\atioglxx.dll   , loaded at 0x69000000 - 6713344 bytes - 421bf0b4 - file date is 2/22/2005 19:55:56
    C:\WINDOWS\system32\WS2HELP.dll    , loaded at 0x71aa0000 - 19968 bytes - 411096f3 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\WS2_32.dll     , loaded at 0x71ab0000 - 82944 bytes - 411096f2 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\WSOCK32.dll    , loaded at 0x71ad0000 - 22528 bytes - 411096ff - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\msacm32.drv    , loaded at 0x72d10000 - 20480 bytes - 3b7dfe2a - file date is 8/18/2001 07:00:00
    C:\WINDOWS\system32\wdmaud.drv     , loaded at 0x72d20000 - 23552 bytes - 411096c6 - file date is 8/4/2004 02:56:58
    C:\WINDOWS\system32\DDRAW.dll      , loaded at 0x73760000 - 266240 bytes - 411096a0 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\DCIMAN32.dll   , loaded at 0x73bc0000 -  8704 bytes - 4110969f - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\KsUser.dll     , loaded at 0x73ee0000 -  4096 bytes - 411096ad - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\dsound.dll     , loaded at 0x73f10000 - 367616 bytes - 411096d4 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\System32\wbem\wbemsvc.dll, loaded at 0x74ed0000 - 43520 bytes - 411096c3 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\System32\wbem\wbemprox.dll, loaded at 0x74ef0000 - 18944 bytes - 411096c2 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\System32\wbem\wbemcomn.dll, loaded at 0x75290000 - 214528 bytes - 411096bc - file date is 8/4/2004 02:56:46
    C:\WINDOWS\System32\wbem\fastprox.dll, loaded at 0x75690000 - 472064 bytes - 41109695 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\MSVCP60.dll    , loaded at 0x76080000 - 413696 bytes - 41109751 - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\NTDSAPI.dll    , loaded at 0x767a0000 - 67072 bytes - 411096c9 - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\winmm.dll      , loaded at 0x76b40000 - 176128 bytes - 411096d6 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\WINTRUST.dll   , loaded at 0x76c30000 - 176640 bytes - 411096b9 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\imagehlp.dll   , loaded at 0x76c90000 - 144384 bytes - 411096a9 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\DNSAPI.dll     , loaded at 0x76f20000 - 148480 bytes - 411096bd - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\WLDAP32.dll    , loaded at 0x76f60000 - 172032 bytes - 411096bb - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\CLBCATQ.DLL    , loaded at 0x76fd0000 - 498688 bytes - 42e5be90 - file date is 7/25/2005 23:39:44
    C:\WINDOWS\system32\COMRes.dll     , loaded at 0x77050000 - 792064 bytes - 411096b4 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\oleaut32.dll   , loaded at 0x77120000 - 553472 bytes - 411096f3 - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\WININET.dll    , loaded at 0x771b0000 - 658432 bytes - 4318e5a6 - file date is 9/2/2005 18:52:06
    C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll, loaded at 0x773d0000 - 1050624 bytes - 4110968c - file date is 8/4/2004 02:57:00
    C:\WINDOWS\system32\ole32.dll      , loaded at 0x774e0000 - 1285120 bytes - 42e5be93 - file date is 7/25/2005 23:39:48
    C:\WINDOWS\system32\CRYPT32.dll    , loaded at 0x77a80000 - 597504 bytes - 41109691 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\MSASN1.dll     , loaded at 0x77b20000 - 57344 bytes - 411096e3 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\midimap.dll    , loaded at 0x77bd0000 - 18944 bytes - 411096a9 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\MSACM32.dll    , loaded at 0x77be0000 - 71680 bytes - 411096cf - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\version.dll    , loaded at 0x77c00000 - 18944 bytes - 411096b7 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\msvcrt.dll     , loaded at 0x77c10000 - 343040 bytes - 41109752 - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\USER32.dll     , loaded at 0x77d40000 - 577024 bytes - 42260159 - file date is 3/2/2005 13:09:30
    C:\WINDOWS\system32\ADVAPI32.dll   , loaded at 0x77dd0000 - 616960 bytes - 411096a7 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\RPCRT4.dll     , loaded at 0x77e70000 - 581120 bytes - 411096ae - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\GDI32.dll      , loaded at 0x77f10000 - 278016 bytes - 41109697 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\SHLWAPI.dll    , loaded at 0x77f60000 - 473600 bytes - 4318e5a5 - file date is 9/2/2005 18:52:06
    C:\WINDOWS\system32\Secur32.dll    , loaded at 0x77fe0000 - 55808 bytes - 411096c1 - file date is 8/4/2004 02:56:44
    C:\Program Files\Homeworld2\Bin\Release\MSVCR70.dll, loaded at 0x7c000000 - 344064 bytes - 3c36e574 - file date is 8/14/2003 18:08:58
    C:\WINDOWS\system32\kernel32.dll   , loaded at 0x7c800000 - 983552 bytes - 411096b4 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\ntdll.dll      , loaded at 0x7c900000 - 708096 bytes - 411096b4 - file date is 8/4/2004 02:56:36
    C:\WINDOWS\system32\SHELL32.dll    , loaded at 0x7c9c0000 - 8450560 bytes - 433370f6 - file date is 9/22/2005 22:05:30
    Last edited by Locutus; 17th Oct 05 at 3:39 PM. Reason: CODE TAGS!

  41. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #41
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    Ok, very stupid question, but you guys are using Homeworld 2 version 1.1, right? You did patch your game?

    Ok, next step. Take out the scripts folder as well. The game should launch now because all custom content has been removed.
    Put the weapons folder back in. See if it works. If it does, put the ships folder back in. See if that works.

  42. #42
    mongoose
    Guest
    I'm pretty sure i'm running version 1.1, but i'll reinstall it, the game will work if I take out all the custom folders.

    *edit: its too hard to find a 1.1 update to reinstall with, sufice it to say that the version works with 1.1 multiplayer games

    *edit2: This is very strange and makes me think that the problem is with making hmw2 accept modding correctly: I erased all the modified data and copied over the data folder with my pristine stored one. Then I coped in the scripts folder and gave the hiigaran starting fleet 2 carriers instead of one.
    The game promptly crashed when loading the universe.

    How do you get custom avatars by the way? YOU DON'T ASK! THEY STAFF GIVES THEM OUT IF THEY ARE EARNED!

    *edit 3: the game still crashes whe loading universe even after I changed the hiigaran starting fleet back to its origional form.

    *edit 4: the newest logfile is slightly different:
    Code:
    ECX=7c014444 DS=0023 ESI=0000000c FS=003b
    EDX=0e6050f0 ES=0023 EDI=000003ed GS=0000
    Bytes at CS:EIP:
    cc 83 4d fc ff 8d 8d 5c fe ff ff e8 9b fc ff ff 
    
    Call Stack:
    0x003519B6: dbFatalfAux                                 ()
    0x0054BD5B: GSTracker::operator=                        ()
    0x0054BDF5: GSTracker::operator=                        ()
    0x003C46B5: lua_error                                   ()
    0x003C4749: lua_error                                   ()
    0x003C47EE: lua_error                                   ()
    0x003C481E: lua_call                                    ()
    0x0046B9FC: GSLobbySessionDesc::operator=               ()
    
    
    Stack dump:
    
    
    
    Module list: names, addresses, sizes, time stamps and file times:
    C:\Program Files\Homeworld2\Bin\Release\Memory.dll, loaded at 0x00320000 - 33280 bytes - 3fe0ce01 - file date is 12/17/2003 13:43:30
    C:\Program Files\Homeworld2\Bin\Release\Platform.dll, loaded at 0x00330000 - 98304 bytes - 3fe0ce5f - file date is 12/17/2003 13:45:04
    C:\Program Files\Homeworld2\Bin\Release\Debug.dll, loaded at 0x00350000 - 10752 bytes - 3fe0cdfd - file date is 12/17/2003 13:43:26
    C:\Program Files\Homeworld2\Bin\Release\Localizer.dll, loaded at 0x00360000 - 94208 bytes - 3fe0ce59 - file date is 12/17/2003 13:44:58
    C:\Program Files\Homeworld2\Bin\Release\FileIO.dll, loaded at 0x00380000 - 155648 bytes - 3fe0ce52 - file date is 12/17/2003 13:44:50
    C:\Program Files\Homeworld2\Bin\Release\ZLib.dll, loaded at 0x003b0000 - 49152 bytes - 3fe0ce3b - file date is 12/17/2003 13:44:28
    C:\Program Files\Homeworld2\Bin\Release\lua.dll, loaded at 0x003c0000 - 73728 bytes - 3fe0ce66 - file date is 12/17/2003 13:45:12
    C:\Program Files\Homeworld2\Bin\Release\luaconfig.dll, loaded at 0x003e0000 - 57344 bytes - 3fe0ce6b - file date is 12/17/2003 13:45:16
    C:\Program Files\Homeworld2\Bin\Release\util.dll, loaded at 0x003f0000 - 36864 bytes - 3fe0ce7e - file date is 12/17/2003 13:45:34
    C:\Program Files\Homeworld2\Bin\Release\Homeworld2.exe, loaded at 0x00400000 - 5562368 bytes - 3fe0d29b - file date is 12/17/2003 14:39:04
    C:\Program Files\Homeworld2\Bin\Release\divxmedialib.dll, loaded at 0x00970000 - 86016 bytes - 3f3bc007 - file date is 8/14/2003 18:08:56
    C:\Program Files\Homeworld2\Bin\Release\DivxDecoder.dll, loaded at 0x00990000 - 397312 bytes - 3f3bc002 - file date is 8/14/2003 18:08:56
    C:\Program Files\Homeworld2\Bin\Release\FileParser.dll, loaded at 0x00a00000 - 86016 bytes - 3f3bc005 - file date is 8/14/2003 18:08:56
    C:\Program Files\Homeworld2\Bin\Release\hw2box.dll, loaded at 0x00a20000 -  9728 bytes - 3fe0ce78 - file date is 12/17/2003 13:45:28
    C:\Program Files\Homeworld2\Bin\Release\objects.dll, loaded at 0x00a30000 - 1093632 bytes - 3fe0cfaa - file date is 12/17/2003 13:50:36
    C:\Program Files\Homeworld2\Bin\Release\console.dll, loaded at 0x00be0000 -  5632 bytes - 3fe0cf2d - file date is 12/17/2003 13:48:30
    C:\WINDOWS\system32\CmdLineExt03.dll, loaded at 0x01780000 - 43520 bytes - 3fcb7916 - file date is 10/17/2005 16:56:22
    C:\Program Files\Stardock\ObjectDock\DockShellHook.dll, loaded at 0x01970000 - 20480 bytes - 41e41b66 - file date is 1/11/2005 14:31:02
    C:\Program Files\Homeworld2\Bin\Release\GL.dll, loaded at 0x02810000 - 294912 bytes - 3fe0cfbd - file date is 12/17/2003 13:50:54
    C:\Program Files\Homeworld2\Bin\Release\seFDAudio.dll, loaded at 0x0cdd0000 - 40960 bytes - 3fe0cee8 - file date is 12/17/2003 13:47:20
    C:\Program Files\Homeworld2\Bin\Release\gslobby.dll, loaded at 0x10000000 - 135168 bytes - 3fe0cf28 - file date is 12/17/2003 13:48:24
    C:\WINDOWS\system32\xpsp2res.dll   , loaded at 0x20000000 - 2897920 bytes - 411096b9 - file date is 8/4/2004 02:56:36
    C:\WINDOWS\system32\dxdiagn.dll    , loaded at 0x4f680000 - 2113536 bytes - 41109696 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\dbghelp.dll    , loaded at 0x59a60000 - 640000 bytes - 4110969a - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\uxtheme.dll    , loaded at 0x5ad70000 - 218624 bytes - 411096bb - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\NETAPI32.dll   , loaded at 0x5b860000 - 332288 bytes - 411096ac - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\comctl32.dll   , loaded at 0x5d090000 - 611328 bytes - 411096af - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\opengl32.dll   , loaded at 0x5ed00000 - 713728 bytes - 411096f8 - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\GLU32.dll      , loaded at 0x68b20000 - 122880 bytes - 41109697 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\atioglxx.dll   , loaded at 0x69000000 - 6713344 bytes - 421bf0b4 - file date is 2/22/2005 19:55:56
    C:\WINDOWS\system32\WS2HELP.dll    , loaded at 0x71aa0000 - 19968 bytes - 411096f3 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\WS2_32.dll     , loaded at 0x71ab0000 - 82944 bytes - 411096f2 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\WSOCK32.dll    , loaded at 0x71ad0000 - 22528 bytes - 411096ff - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\msacm32.drv    , loaded at 0x72d10000 - 20480 bytes - 3b7dfe2a - file date is 8/18/2001 07:00:00
    C:\WINDOWS\system32\wdmaud.drv     , loaded at 0x72d20000 - 23552 bytes - 411096c6 - file date is 8/4/2004 02:56:58
    C:\WINDOWS\system32\DDRAW.dll      , loaded at 0x73760000 - 266240 bytes - 411096a0 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\DCIMAN32.dll   , loaded at 0x73bc0000 -  8704 bytes - 4110969f - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\KsUser.dll     , loaded at 0x73ee0000 -  4096 bytes - 411096ad - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\dsound.dll     , loaded at 0x73f10000 - 367616 bytes - 411096d4 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\System32\wbem\wbemsvc.dll, loaded at 0x74ed0000 - 43520 bytes - 411096c3 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\System32\wbem\wbemprox.dll, loaded at 0x74ef0000 - 18944 bytes - 411096c2 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\System32\wbem\wbemcomn.dll, loaded at 0x75290000 - 214528 bytes - 411096bc - file date is 8/4/2004 02:56:46
    C:\WINDOWS\System32\wbem\fastprox.dll, loaded at 0x75690000 - 472064 bytes - 41109695 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\MSVCP60.dll    , loaded at 0x76080000 - 413696 bytes - 41109751 - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\NTDSAPI.dll    , loaded at 0x767a0000 - 67072 bytes - 411096c9 - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\winmm.dll      , loaded at 0x76b40000 - 176128 bytes - 411096d6 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\WINTRUST.dll   , loaded at 0x76c30000 - 176640 bytes - 411096b9 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\imagehlp.dll   , loaded at 0x76c90000 - 144384 bytes - 411096a9 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\DNSAPI.dll     , loaded at 0x76f20000 - 148480 bytes - 411096bd - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\WLDAP32.dll    , loaded at 0x76f60000 - 172032 bytes - 411096bb - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\CLBCATQ.DLL    , loaded at 0x76fd0000 - 498688 bytes - 42e5be90 - file date is 7/25/2005 23:39:44
    C:\WINDOWS\system32\COMRes.dll     , loaded at 0x77050000 - 792064 bytes - 411096b4 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\oleaut32.dll   , loaded at 0x77120000 - 553472 bytes - 411096f3 - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\WININET.dll    , loaded at 0x771b0000 - 658432 bytes - 4318e5a6 - file date is 9/2/2005 18:52:06
    C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll, loaded at 0x773d0000 - 1050624 bytes - 4110968c - file date is 8/4/2004 02:57:00
    C:\WINDOWS\system32\ole32.dll      , loaded at 0x774e0000 - 1285120 bytes - 42e5be93 - file date is 7/25/2005 23:39:48
    C:\WINDOWS\system32\CRYPT32.dll    , loaded at 0x77a80000 - 597504 bytes - 41109691 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\MSASN1.dll     , loaded at 0x77b20000 - 57344 bytes - 411096e3 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\midimap.dll    , loaded at 0x77bd0000 - 18944 bytes - 411096a9 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\MSACM32.dll    , loaded at 0x77be0000 - 71680 bytes - 411096cf - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\version.dll    , loaded at 0x77c00000 - 18944 bytes - 411096b7 - file date is 8/4/2004 02:56:46
    C:\WINDOWS\system32\msvcrt.dll     , loaded at 0x77c10000 - 343040 bytes - 41109752 - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\USER32.dll     , loaded at 0x77d40000 - 577024 bytes - 42260159 - file date is 3/2/2005 13:09:30
    C:\WINDOWS\system32\ADVAPI32.dll   , loaded at 0x77dd0000 - 616960 bytes - 411096a7 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\RPCRT4.dll     , loaded at 0x77e70000 - 581120 bytes - 411096ae - file date is 8/4/2004 02:56:44
    C:\WINDOWS\system32\GDI32.dll      , loaded at 0x77f10000 - 278016 bytes - 41109697 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\SHLWAPI.dll    , loaded at 0x77f60000 - 473600 bytes - 4318e5a5 - file date is 9/2/2005 18:52:06
    C:\WINDOWS\system32\Secur32.dll    , loaded at 0x77fe0000 - 55808 bytes - 411096c1 - file date is 8/4/2004 02:56:44
    C:\Program Files\Homeworld2\Bin\Release\MSVCR70.dll, loaded at 0x7c000000 - 344064 bytes - 3c36e574 - file date is 8/14/2003 18:08:58
    C:\WINDOWS\system32\kernel32.dll   , loaded at 0x7c800000 - 983552 bytes - 411096b4 - file date is 8/4/2004 02:56:42
    C:\WINDOWS\system32\ntdll.dll      , loaded at 0x7c900000 - 708096 bytes - 411096b4 - file date is 8/4/2004 02:56:36
    C:\WINDOWS\system32\SHELL32.dll    , loaded at 0x7c9c0000 - 8450560 bytes - 433370f6 - file date is 9/22/2005 22:05:30
    
    *edit 5: Eurika!!!(?) I may have found a logfile that means something!! (to somebody who knows something of course):
    
    Mon Oct 17 16:56:29 2005
     Loaded Archive: 'Homeworld2.big' 
     UTIL -- filepath failure, path doesn't exists 'C:\Program Files\Homeworld2\data\locale\english' 
     Loaded Archive: 'english.big' 
     Uing ..profiles\ for profiles folder 
     GAME -- Using player profile mongoose 
     Changing from a 32 bit colour depth in winNT (5.1 build 2600), Service Pack 2 
     Using ATI Technologies Inc.'s 1.3.4955 WinXP Release RADEON 9200SE DDR x86/MMX/3DNow!/SSE renderer (Suspected driver is atioglxx.dll 6.14.10.4955) 
     Loaded Archive: 'englishSpeech.big' 
     Loaded Archive: 'Music.big' 
     SOUND -- created destination [ fdaudio ], handle [ 4 ] with [ 48 ] channels created 
     SOUND -- created destination [ fda streamer ], handle [ 5 ] with [ 8 ] channels created 
     Build name: The Dust Wars  - AutoBuild3569 - Ordered by smmatte 
     Built by  : mrbuild 
     Data path : C:\Program Files\Homeworld2\data 
     Could not initialize all fragment programs.  Please use the '-fragment_program 0' command line parameter 
     Resetting fp control word. 
     CmdLine: -overrideBigFile -luatrace 
     Starting Level: data:LevelData\Multiplayer\Deathmatch\2P_HOSTILITIES_END.LEVEL 
     LUA 'data:scripts\Formations\hgn_mothership_parade.lua' -- parameter: <expression> expected;
      last token read: `,' at line 7 in string "" 
     loadStaticParadeData: Error loading script (data:scripts\Formations\hgn_mothership_parade.lua)! -- FATAL EXIT -- parademanager/106:! --stack trace-- 0x0054BD5B: GSTracker::operator=                        () 0x0054BDF5: GSTracker::operator=                        () 0x003C46B5: lua_error                                   () 0x003C4749: lua_error                                   () 0x003C47EE: lua_error                                   () 0x003C481E: lua_call                                    () 0x0046B9FC: GSLobbySessionDesc::operator=               ()

    Note the suspicious hgn_mothership_parade.lua file which is malfunctioning!! Now, of course, nobody edited that file, which means it was corrupted from the outset. (goes about tossing the corrupted file's folder)

    *edit 6: There was one more corrupted folder, the attack folder, which when removed allowed hmw2 to load without flaw, or atleast without a fatal flaw.
    Last edited by Locutus; 17th Oct 05 at 3:37 PM. Reason: Code Tags! USE THEM!! ;)

  43. #43
    Member
    Join Date
    Sep 2003
    Location
    Deep in thought.
    Wrong file, we need hw2.log dump. but it doesn't matter, because th dump clearly points to an error in one of the script files. look for a typo or a mistake in the files you've edited.

    As for Avatars/titles, I've surmised you either have to be an oldie (pre-DoW) or a major contributor to the community... usually both. In light of that, I dunno why I have one.

  44. #44
    mongoose
    Guest
    HOORAY!!! I succesfully modded hmw2 for the first time: after I removed the offending folders, I changed the hiigaran startingfleets to have 2 carriers and it worked smoothly.

    (becomes jealous of avatar)

    HOORAY!!! I succesfully modded hmw2 for the first time: after I removed the offending folders, I changed the hiigaran startingfleets to have 2 carriers and it worked smoothly.

    (becomes jealous of avatar )

  45. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #45
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    Wait, I think we have it.
    Ok, delete all files and folders from your Data\scripts folder except these:

    Building and Research
    startingfleets
    unitcaps

    race.lua


    Seems like some of the decompiled functions seem to disagree with others, by nuking them you should be back in business.
    After deleting those files you can put everything else back in and it should work.

  46. #46
    heliothis
    Guest
    Good stuff Moe. I unstalled PDS just to do this. Btw, how difficult would it be to model the progenitor ship from the pictures in game? Would it be just a matter of putting together pre-existing debris? Or does the staff actually have the model created already?

  47. #47
    Your Friendly Dictator Deionarra's Avatar
    Join Date
    Aug 2005
    Location
    London
    HOORAY!!! I succesfully modded hmw2 for the first time: after I removed the offending folders,
    I realy should have thought to mention this earlier :/

    As a general rule you shouldn't have any files or folders that have been unpaked from one of the .big files in your data folder unless you have made some changes to them.

    Glad you managed to figure it out though
    By this point, it probably just sounds like I'm an incompetent modder with no accountability and no hope of success, but please, don't give up on me just yet.
    I won't give up if you don't .. if you have lots of extra files and folders that you unpacked from the .big then move them out of your data directory like mongoose did.

    Btw, how difficult would it be to model the progenitor ship from the pictures in game? Would it be just a matter of putting together pre-existing debris? Or does the staff actually have the model created already?
    I recall someone did this, or was doing this, ages ago but I don't know if they ever finished it or if it was ever released.

    As for Avatars/titles, I've surmised you either have to be an oldie (pre-DoW) or a major contributor to the community... usually both. In light of that, I dunno why I have one.
    Although if you keep losing your profile and having to make a new one every time you take a little break from the forums it doesn't work like that, even if you've been around helping people out ever since the mysteries of the original Homeworld.big were first unraveled.

  48. #48
    bluvishnu
    Guest
    And the Bentus is live! Man, talk about some crazy stuff. I suppose the only thing to do now is continue with the tutorial. I knew I was making progress when the game crashed AFTER it had completely loaded the level!

    EDIT: Well poo, I can't get the weapon to work. Whenever I go to play the game after I've added the weapon, it crashes to the desktop after fully loading the level. And I got so excited when I first saw that ship too.
    Last edited by bluvishnu; 17th Oct 05 at 10:43 PM.

  49. Child's Play Donor Technical Help Senior Member General Discussions Senior Member Boardwars Senior Member  #49
    Gimme your lunch Moeney! Moe's Avatar
    Join Date
    Oct 2003
    Location
    #homeworld
    well, glad to see we're making progress here. I'll update the first post to include the folder info soon (tm).

    Vishnu: right, try removing "Kpr_Bentus" from your Data\Ship folder (as usual, make sure you back it up somewhere), see if the game loads. If it does, there's a problem with the .hod or the .ship file, if it doesn't then something is wrong with the weapons file.

    Btw, how difficult would it be to model the progenitor ship from the pictures in game? Would it be just a matter of putting together pre-existing debris?
    I honestly have no idea. I suck at modelling.

  50. #50
    Member Valkasherre's Avatar
    Join Date
    Sep 2005
    Location
    Australia, WA, Perth
    Well I can say that Moe has been a great mentor in helping me modding new ships/weapons/and adding new races... currently I'm working on my 1st race other than the Keepers which are called the Wraythe (ok from stargate:atlantis) but I admit I a Fan..atic.

    Keep it real peeps :mrpantha:

Page 1 of 17 1234567891011 ... LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •