Announcement

Collapse
No announcement yet.

XS Vehicles

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #16
    I experienced some bugs with the Behemoth as well. Strangely enough, those bugs were quite similar to those I experienced when the vehicle was still called UberCore:

    Settings:

    I used the Vehicle set replacement mutator and created a custom set that replaced stock vehicles with a mix of final XS Vehicles and prototypes, the Behemoth was meant to replace the Leviathan. I then selected this set for the red team and the all Necris set for blue.

    What happened:

    The first round in OnyxCoast went very well and everything worked as expected, great fun and the enemy team recieved a nice pounding! Then round two began and things started to get weird.
    First off, the enemy Power Core (wich was ours during the first round, because of the automated base switch) was invisible. It was simply not there, but its collision volume was and could still be shot. I made a mental note and continued to play, toying around with the other vehicles, which was great fun as well. I experimented a bit too much though, and so I lost the round.

    So then round three started, with me being back at the Levi base. The Power Core was still gone and when I climbed into the Behemoth, it didn't drain the core. It handled just like a normal tank. It was destroyed a couple of times during the following battle (never made it to the core, **** those Darkwalkers), without any effect on the Power Core's health. The core icon still jumped to the vehicle's position, though, but once it got destroyed, it jumped back to the position where the power core used to be. During that round, the node buster was just a strong gun that, if I remember correctly, didn't even penetrate node shields, but I might be wrong on that point, maybe I just missed it. It was quite a distance and not every tracer fired at it was a hit as well, due to the spread. But I was able to destroy a regularily attackable node with the Node Buster a couple of times, but the vehicle wasn't healed upon its destruction, also probably due to the missing link to the Power Core.

    That's about it, I will run a couple more tests with different settings and see what happens.

    By the way, any news about the plans for the other vehicle concepts? Have the contents of the final XS been narrowed down to the stuff in this thread or can we expect some of the other experiments and codeless models to find a place in it as well at some point? Some concepts, especially the Quantum Bender, Grappler, Colossus and Epsilon, were just too cool to go to the trash can, imo.

    Comment


      #17
      Originally posted by Thanubis
      Would you be willing to release the source code for your replacement mutator? I'd like to see it converted into a better (than the default) weapon replacement mutator.
      Yeah, sure, there's no way to keep it closed-source, since you can decompile uscript packages anyway. I will post a separate thread for a standalone version of the mutator, with a link to both the source and uncooked .upk. Converting it into a weapon replacement mutator would be hell of a work, though, not to mention that the source itself is pretty complicated.

      EDIT: You don't have to ask me in the original topic anymore, I guess

      Comment


        #18
        Could you post a video of the vehicles in action?

        Comment


          #19
          Originally posted by Doc Shock View Post
          I experienced some bugs with the Behemoth as well.
          It obviously still needs looking at. The whole thing was released under some serious deadline pressure, so it didn't quite get the amount of playtesting we preferred.

          Originally posted by Doc Shock View Post
          the node buster was just a strong gun that, if I remember correctly, didn't even penetrate node shields, but I might be wrong on that point, maybe I just missed it. It was quite a distance and not every tracer fired at it was a hit as well, due to the spread.
          The nodebusting is not tied to the core draining. In other words, if the Behemoth cannot find your powercore, such as when another Behemoth already drained the core (or you use it in Greed or VCTF), the nodebuster projectile is not affected. It still busts nodes normally. You just don't get the energy from the busted node since you don't have a core to put it in.

          I think I'll remove the spread. It looks nice but it doesn't really add anything else, and undermines the tracer mechanic.

          Originally posted by Doc Shock View Post
          any news about the plans for the other vehicle concepts?
          I'll answer this one in the XS Vehicles discussion thread.

          Comment


            #20
            [QUOTE=Thanubis;26821676]I'll have to see if I can bind that action to my Dual Shock 2.

            Originally posted by Thanubis
            The Nightshade is also a hovercraft (although some people don't seem to realize that). I think it moves close to the same speed as the Manticore, but doesn't have trouble climbing hills.
            Both hover, but they are not the same. The Nightshade uses a different type of propulsion, probably magnetic antigrav. The Nightshade cannot jump, for instance.

            The Manticore is very similar to the Manta. Both are affected by steep slopes. The Manta, however, has so much thrust behind it that it hardly slows down where the Manticore struggles.

            I could have made it fast, steady and nimble, but then it'd just be another Manta or Nightshade. Its weapons don't exactly require skill, so I wanted it to require skillful handling instead. It is actually pretty maneuverable if you use the stabilizers well. It can reverse directions very quickly (briefly use the stabilizers), it has decent top speed and it can make huge jumps (don't spend all your heat in one go and use the stabilizers to slow falls).

            Originally posted by Superking17 View Post
            Could you post a video of the vehicles in action?
            Not me, but if anyone makes a cool vid I'd gladly link to it in the top post.

            Comment


              #21
              I can say that most likely there will be a video highlighting some of the features of these vehicles, just not now.

              Comment


                #22
                Originally posted by Xyx View Post
                Exactly what is wrong with "Behemoth"? You're telling me that there is a problem, but you're not telling me what the problem is. Am I supposed to read your mind now?
                I said: "I'd change its name, If you say <I've killed a Behemot!>, it can be a Super Titan (Juggernout evolution in...) or this." Readt the whole phrase before quoting. You are suposed to read my post!

                And, maybe I'm too brave, but I'd change also the names between Phoenix and Cyclops. Why? The hole of the Phoenix could be the eye.

                Comment


                  #23
                  I have a serious problem with your vehicles.
                  Everytime I start a game with the vehicle swapping mut the game crashs to the desktop.
                  I looked in the launch log and there seemed to be a problem with the basilisk...certain packages could not be found for its weapons.
                  When I was testing this I had installed everything in my UT3 folder under "my documents" (vehicles first, then prototypes).
                  I removed the files and installed them in my directory where ut3 is really installed and I get the same crash. BUT the log file gives no information why the game crashed :O

                  Any idea what the problem is ?

                  Comment


                    #24
                    Originally posted by Whom massacre you View Post
                    I said: "I'd change its name, If you say <I've killed a Behemot!>, it can be a Super Titan (Juggernout evolution in...) or this." Readt the whole phrase before quoting. You are suposed to read my post!
                    I did read the whole post, it just didn't make a lot of sense. I see you slightly improved the spelling and grammar in the meantime, and it makes a little bit of sense now.

                    We totally forgot about the Titan upgrade also being called "Behemoth". The Behemoth is a giant biblical land critter and forms a set with the Leviathan (giant sea critter) and the Ziz (giant sky critter). Since it is our super vehicle, we wanted it to be part of the same set as the Leviathan. The Titan mutator is not an important part of the game or the Unreal universe in my book anyway.

                    Originally posted by Whom massacre you View Post
                    I'd change also the names between Phoenix and Cyclops. Why? The hole of the Phoenix could be the eye.
                    The Cyclops was originally planned to have a custom model with an "eye" in the center. That may or may not still happen.

                    Comment


                      #25
                      Originally posted by Dark_Slayer View Post
                      I have a serious problem with your vehicles.
                      The files should be in this path:

                      My Documents\My Games\Unreal Tournament 3\UTGame\Published\CookedPC\XS

                      Don't place anything in your Unreal Tournament 3 installation folder.

                      If you're missing a package, we'll need to know which package. Please post or PM me the relevant lines from your log.

                      You could also try summoning the vehicles through the console commands:

                      summon xs_basilisk.basilisk
                      summon xs_behemoth.behemoth
                      summon xs_cyclops.cyclops
                      summon xs_harpy.harpy
                      summon xs_manticore.manticore
                      summon xs_phoenix.phoenix


                      Please let me know which ones give you trouble.

                      Comment


                        #26
                        The Cyclops shockwave can't damage enemy core, but yes nodes.

                        Comment


                          #27
                          It certainly does damage enemy cores. I just sliced up a core with it to make sure. However, it depends on your aim. The lines that make up the shockwave are the lines along which damage is dealt, so if the lines happen to fall in between the "damageable" parts of the core, then the core will not take damage. Simply adjust your aim slightly, and you should deal between 4 and 8 core damage.

                          Comment


                            #28
                            Originally posted by Xyx View Post
                            The files should be in this path:

                            My Documents\My Games\Unreal Tournament 3\UTGame\Published\CookedPC\XS

                            Don't place anything in your Unreal Tournament 3 installation folder.

                            If you're missing a package, we'll need to know which package. Please post or PM me the relevant lines from your log.

                            You could also try summoning the vehicles through the console commands:

                            summon xs_basilisk.basilisk
                            summon xs_behemoth.behemoth
                            summon xs_cyclops.cyclops
                            summon xs_harpy.harpy
                            summon xs_manticore.manticore
                            summon xs_phoenix.phoenix


                            Please let me know which ones give you trouble.

                            Hi, I installed everything now again in the right directory and it crashed again.
                            Here is a part of the log:


                            Log: Ambient1 | Ambient1
                            ScriptLog: Retrieving Profile Settings for UI PlayerIndex 0
                            Log: Changing subtitle setting, new value: 1
                            ScriptLog: UTPlayerController - Setting netspeed to 10000
                            Log: FSTUNClient resolved stunserver.org (132.177.123.13)
                            Log: FSTUNClient starting test 1...
                            Log: FSTUNClient test complete, NAT is open.
                            ScriptLog: Login change...requerying profile data
                            ScriptLog: Setting image img_Krall01 to visible
                            ScriptLog: UTPlayerController::OnReadProfileSettingsComplete( ) - bWasSuccessful: True, ControllerId: 0
                            ScriptLog: Retrieving Profile Settings for UI PlayerIndex 0
                            Log: Changing subtitle setting, new value: 0
                            ScriptLog: UTPlayerController - Setting netspeed to 10000
                            ScriptLog: Retrieving Profile Settings for UI PlayerIndex 0
                            Log: Changing subtitle setting, new value: 0
                            ScriptLog: UTPlayerController - Setting netspeed to 10000
                            ScriptLog: Settings_0::ConditionalSaveProfile - Saving player profile.
                            Error: Can't write profile as an async profile task is already in progress for player (0)
                            ScriptLog: Setting image img_Krall01 to visible
                            ScriptLog: UTUITabPage::OnGameModeChanged() - Current Game Mode: UTGame.UTDeathmatch
                            ScriptLog: UTUITabPage::OnGameModeChanged() - Current Game Mode: UTGame.UTTeamGame
                            ScriptLog: UTUITabPage::OnGameModeChanged() - Current Game Mode: UTGame.UTDeathmatch
                            ScriptLog: UTUITabPage::OnGameModeChanged() - Current Game Mode: UTGame.UTTeamGame
                            ScriptLog: UTUITabPage::OnGameModeChanged() - Current Game Mode: UTGame.UTDeathmatch
                            ScriptLog: UTUITabPage::OnGameModeChanged() - Current Game Mode: UTGameContent.UTCTFGame_Content
                            ScriptLog: UTUITabPage::OnGameModeChanged() - Current Game Mode: UTGameContent.UTVehicleCTFGame_Content
                            ScriptLog: UTUITabPage::OnGameModeChanged() - Current Game Mode: UTGameContent.UTVehicleCTFGame_Content
                            Log: GConfig::LoadFile associated file: ..\UTGame\Config\UTXS_Vehicles_Sets.ini
                            ScriptLog: Cut down URL ?MaxPlayers=16?MinNetPlayers=0?NumPublicConnection s=16?NumPrivateConnections=0?NumOpenPublicConnecti ons=0?NumOpenPrivateConnections=0?bShouldAdvertise =True?bIsLanMatch=False?bUsesStats=True?bAllowJoin InProgress=True?bAllowInvites=True?bUsesPresence=T rue?bAllowJoinViaPresence=True?bUsesArbitration=Fa lse?bIsDedicated=False?bIsListPlay=False?OwningPla yerName=?AverageSkillRating=1000.000000?EngineVers ion=0?MinNetVersion=0?ServerIP=
                            ScriptLog: Cut down URL ?MaxPlayers=16?MinNetPlayers=0?NumPublicConnection s=16?NumPrivateConnections=0?NumOpenPublicConnecti ons=0?NumOpenPrivateConnections=0?bShouldAdvertise =True?bIsLanMatch=False?bUsesStats=True?bAllowJoin InProgress=True?bAllowInvites=True?bUsesPresence=T rue?bAllowJoinViaPresence=True?bUsesArbitration=Fa lse?bIsDedicated=False?bIsListPlay=False?OwningPla yerName=?EngineVersion=0?MinNetVersion=0?ServerIP=
                            ScriptLog: Cut down URL ?MaxPlayers=16?MinNetPlayers=0?NumPublicConnection s=16?NumPrivateConnections=0?NumOpenPublicConnecti ons=0?NumOpenPrivateConnections=0?bShouldAdvertise =True?bIsLanMatch=False?bUsesStats=True?bAllowJoin InProgress=True?bAllowInvites=True?bUsesPresence=T rue?bAllowJoinViaPresence=True?bUsesArbitration=Fa lse?bIsDedicated=False?bIsListPlay=False?OwningPla yerName=?MinNetVersion=0?ServerIP=
                            ScriptLog: Cut down URL ?MaxPlayers=16?MinNetPlayers=0?NumPublicConnection s=16?NumPrivateConnections=0?NumOpenPublicConnecti ons=0?NumOpenPrivateConnections=0?bShouldAdvertise =True?bIsLanMatch=False?bUsesStats=True?bAllowJoin InProgress=True?bAllowInvites=True?bUsesPresence=T rue?bAllowJoinViaPresence=True?bUsesArbitration=Fa lse?bIsDedicated=False?bIsListPlay=False?OwningPla yerName=?ServerIP=
                            ScriptLog: Cut down URL ?MaxPlayers=16?MinNetPlayers=0?NumPublicConnection s=16?NumPrivateConnections=0?NumOpenPublicConnecti ons=0?NumOpenPrivateConnections=0?bShouldAdvertise =True?bIsLanMatch=False?bUsesStats=True?bAllowJoin InProgress=True?bAllowInvites=True?bUsesPresence=T rue?bAllowJoinViaPresence=True?bUsesArbitration=Fa lse?bIsDedicated=False?bIsListPlay=False?OwningPla yerName=
                            ScriptLog: UTUIFrontEnd: Starting game with no splitscreen: Removing all but 1 LocalPlayer.
                            ScriptLog: UTUIFrontEnd: Starting Game...open vCTF-Suspense?game=UTGameContent.UTVehicleCTFGame_Conte nt?MaxPlayers=16?MinNetPlayers=0?NumPublicConnecti ons=16?NumPrivateConnections=0?NumOpenPublicConnec tions=0?NumOpenPrivateConnections=0?bShouldAdverti se=True?bIsLanMatch=False?bUsesStats=True?bAllowJo inInProgress=True?bAllowInvites=True?bUsesPresence =True?bAllowJoinViaPresence=True?bUsesArbitration= False?bIsDedicated=False?bIsListPlay=False?OwningP layerName=?GameMode=3?Difficulty=1?PureServer=1?Lo ckedServer=0?Campaign=0?ForceRespawn=0?GoalScore=3 ?TimeLimit=20?ServerDescription=?NumPlay=1?mutator =XS_Vehicles.XSVehicles_Mutator?name=Nihilius?alia s=Nihilius
                            Log: Browse: vCTF-Suspense?name=Nihilius?team=255?Class=?game=UTGame Content.UTVehicleCTFGame_Content?MaxPlayers=16?Min NetPlayers=0?NumPublicConnections=16?NumPrivateCon nections=0?NumOpenPublicConnections=0?NumOpenPriva teConnections=0?bShouldAdvertise=True?bIsLanMatch= False?bUsesStats=True?bAllowJoinInProgress=True?bA llowInvites=True?bUsesPresence=True?bAllowJoinViaP resence=True?bUsesArbitration=False?bIsDedicated=F alse?bIsListPlay=False?OwningPlayerName=?GameMode= 3?Difficulty=1?PureServer=1?LockedServer=0?Campaig n=0?ForceRespawn=0?GoalScore=3?TimeLimit=20?Server Description=?NumPlay=1?mutator=XS_Vehicles.XSVehic les_Mutator?alias=Nihilius
                            Log: Award progress has now been fully reenabled!
                            Log: LoadMap: vCTF-Suspense?name=Nihilius?team=255?Class=?game=UTGame Content.UTVehicleCTFGame_Content?MaxPlayers=16?Min NetPlayers=0?NumPublicConnections=16?NumPrivateCon nections=0?NumOpenPublicConnections=0?NumOpenPriva teConnections=0?bShouldAdvertise=True?bIsLanMatch= False?bUsesStats=True?bAllowJoinInProgress=True?bA llowInvites=True?bUsesPresence=True?bAllowJoinViaP resence=True?bUsesArbitration=False?bIsDedicated=F alse?bIsListPlay=False?OwningPlayerName=?GameMode= 3?Difficulty=1?PureServer=1?LockedServer=0?Campaig n=0?ForceRespawn=0?GoalScore=3?TimeLimit=20?Server Description=?NumPlay=1?mutator=XS_Vehicles.XSVehic les_Mutator?alias=Nihilius
                            ScriptLog: Desc: Vehicle CTF
                            Log: Starting memory preloaded movie...UT_loadmovie15 ()
                            Log: Waiting for memory preloaded movie to finish loading ...
                            Log: Playing movie [UT_loadmovie15]
                            Log: Got memory preloaded movie event!!!
                            Log: Unmute bink movie
                            Log: ClearAllAnimSetLinkupCaches - Took 32.11ms
                            ScriptLog: Setting image img_Krall01 to visible
                            ScriptLog: Clearing online delegates for UTEntryPlayerController_0 (Player:LocalPlayer_0)
                            Log: Virtual memory allocation size: 204.73 MByte (214675456 Bytes)
                            Log: Physical memory allocation size: 0.00 MByte (0 Bytes)
                            Log: Game class is 'UTVehicleCTFGame_Content'
                            Log: Primary PhysX scene will be in software.
                            Log: Creating Primary PhysX Scene.
                            Log: Novodex Terrain Creation (Terrain_1): 11.770003 ms
                            PerfWarning: InstanceGeom: 28.497849 ms - 1242 Convex, Terrain 11.739198 ms, PerTriSM 0.000000 ms, InitArticulated 0.000000 ms, BodyInst Alloc 6.186910 ms, InitBody 62.547974 ms
                            PerfWarning: NxActor Creation: 53.962614 ms
                            Log: Fixing up vCTF-Suspense...
                            Log: Bringing World vCTF-Suspense.TheWorld up for play (0) at 2009.09.05-15.07.42
                            ScriptLog: Mutators XS_Vehicles.XSVehicles_Mutator
                            ScriptLog: XS (XSVehicles_Mutator_0): Per-map set assignment function activated for map vCTF-Suspense with a link setup: none
                            ScriptLog: XS (XSVehicles_Mutator_0): No red-team set specified for the map, falling back to the replacements from the mutator's UI.
                            ScriptLog: XS (XSVehicles_Mutator_0): No blue-team set specified for the map, falling back to the replacements from the mutator's UI.
                            ScriptLog: XS (XSVehicles_Mutator_0): No neutral set specified for the map, falling back to the replacements from the mutator's UI.
                            ScriptLog: XS (XSVehicles_Mutator_0): Kismet modifying function activated for map vCTF-Suspense with a link setup: none
                            ScriptLog: XS (XSVehicles_Mutator_0): No set specified for the map's Kismet sequences, falling back to the replacements from the mutator's UI.
                            ScriptLog: XS (XSVehicles_Mutator_0): A vehicle of class XS_Basilisk.Basilisk replaces UTGameContent.UTVehicle_Hellbender_Content in factory UTVehicleFactory_HellBender_6 for the Red team.
                            ScriptLog: XS (XSVehicles_Mutator_0): A vehicle of class XS_Basilisk.Basilisk replaces UTGameContent.UTVehicle_Hellbender_Content in factory UTVehicleFactory_HellBender_6 for the Blue team.
                            ScriptLog: XS (XSVehicles_Mutator_0): A vehicle of class XS_Harpy.Harpy replaces UTGameContent.UTVehicle_Raptor_Content in factory UTVehicleFactory_Raptor_4 for the Red team.
                            ScriptLog: XS (XSVehicles_Mutator_0): A vehicle of class XS_Harpy.Harpy replaces UTGameContent.UTVehicle_Raptor_Content in factory UTVehicleFactory_Raptor_4 for the Blue team.
                            ScriptLog: XS (XSVehicles_Mutator_0): A vehicle of class XS_Basilisk.Basilisk replaces UTGameContent.UTVehicle_Hellbender_Content in factory UTVehicleFactory_HellBender_7 for the Red team.
                            ScriptLog: XS (XSVehicles_Mutator_0): A vehicle of class XS_Basilisk.Basilisk replaces UTGameContent.UTVehicle_Hellbender_Content in factory UTVehicleFactory_HellBender_7 for the Blue team.
                            ScriptLog: XS (XSVehicles_Mutator_0): A vehicle of class XS_Harpy.Harpy replaces UTGameContent.UTVehicle_Raptor_Content in factory UTVehicleFactory_Raptor_5 for the Red team.
                            ScriptLog: XS (XSVehicles_Mutator_0): A vehicle of class XS_Harpy.Harpy replaces UTGameContent.UTVehicle_Raptor_Content in factory UTVehicleFactory_Raptor_5 for the Blue team.
                            ScriptLog: MinNetPlayers: 0
                            ScriptLog: Destroying WebServer
                            Log: Bringing up level for play took: 1.165584
                            ScriptLog: UTPlayerController::OnReadProfileSettingsComplete( ) - bWasSuccessful: True, ControllerId: 0
                            Log: UTPlayerController_0 got player LocalPlayer_0
                            ScriptLog: UTPlayerController::ClientSetOnlineStatus() - Setting online status for ControllerId: 0
                            Log: ########### Finished loading level: 13.288106 seconds
                            Log: GConfig::LoadFile associated file: ..\UTGame\Config\UTXS_Tutorial.ini
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Log: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Log: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Log: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Log: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Log: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Log: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Log: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Log: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Log: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Log: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Log: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Log: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Log: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Warning: Failed to load 'UTGameContent': Can't find file for package 'UTGameContent'
                            Lo
                            I hope it can help, because I really want to try your amazing work !


                            EDIT:
                            Summon commands don't work and result in a crash

                            Comment


                              #29
                              UTGameContent is one of Epic's packages. Looks like that is giving you trouble. Can you run UT3 without any of our mutators? If so, what happens if you summon the Cyclops (which uses no custom art content)?

                              Comment


                                #30
                                UT3 without your muts works perfectly fine.
                                I tried to summon the Cyclops but the game crashed again...

                                Comment

                                Working...
                                X