A random sentence for a random mind.

[Released] Unreal HD Skins [UT] [227]

For discussion and promotion of Unreal Engine single-player campaigns, mapping projects and total conversions.

Moderators: Semfry, ividyon

gopostal
Skaarj Lord Skaarj Lord
Posts: 152
Joined: 01 Aug 2008, 06:35

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 09 Sep 2016, 16:26

Once you get your replacement code done just share it with a couple of people here and we will point out any extra checks you might need to make. As for default skins, you ought to strongly consider not replacing anything that's not default or at least having the option not to do so. Lots of mappers use custom skins from inside their maps and those should remain as intended.

This is a great project but your final implementation will have to be done quite carefully. Do your replacements with a surgical scalpel and not a hammer. By respecting unique work within map projects you'll get much wider usage and acceptance.

User avatar Lightning Hunter
Skaarj Elder Skaarj Elder
Posts: 1291
Joined: 11 Nov 2007, 22:12
Location: Pervert.

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 09 Sep 2016, 20:06

gopostal wrote:Once you get your replacement code done just share it with a couple of people here and we will point out any extra checks you might need to make. As for default skins, you ought to strongly consider not replacing anything that's not default or at least having the option not to do so. Lots of mappers use custom skins from inside their maps and those should remain as intended.


Buddy, don't worry so much (many of your posts both here and at OldUnreal have shown a lot of concern). You are talking to a perfectionist that would never release a project without first testing every possible aspect of it. Haven't you seen me around here long enough to respect the effort I put in my projects? None of my projects to date have needed a version 2 for bug fixing (RTNPUE still stands strong as version1). I always test each project extensively through my own testing, and through beta testers. I would never release it without first checking custom maps to make sure the skins appear as intended. RTNPUE has 75+ custom skins, and believe me - I will make sure they all work. Other packs to be tested include ONP, Xidia, Deja Vu, Illhaven, Shrakitha, and more.

This is a great project but your final implementation will have to be done quite carefully. Do your replacements with a surgical scalpel and not a hammer. By respecting unique work within map projects you'll get much wider usage and acceptance.


If I was going to release this project in a hurry, it would already be out. Like I said, I do not make half-assed releases. Keeping support for custom maps is my top priority, and always has been. I probably play more custom maps here than anyone else (I have even considered doing high-res skins for some of the custom packs much later in the future). If you really want to make sure everything works well, why don't you sign up to be a beta tester? I will need some later.

Also, here is the current code. All the completed skins are now included (except the RTNPUE skins, which I have decided to include in an HD version of RTNPUE instead). I have already checked multiple custom skins, and so far it appears that custom skins used in both MultiSkins[0] and in the Skins field will take priority over the HD skins. No custom content is replaced as far as I can tell (but more testing will be done later).

Code: Select all

#exec OBJ LOAD FILE="HDSkins2.utx"

//=============================================================================
// HDSkinNotify.
//=============================================================================
class HDSkinsNotify expands SpawnNotify;

//============================================================
simulated function PostBeginPlay()
{
   local Actor A;

   foreach AllActors( Class'Actor', A )
      ModifyThing(A);

   Super.PostBeginPlay();
}


//============================================================
event Actor SpawnNotification( actor A )
{
   ModifyThing(A);

   return A;
}


//============================================================
function ModifyThing( Actor A )
{
//........Scripted Pawns..............

//Skaarj Warrior
      if( A.Mesh == LodMesh'UnrealShare.Skaarjw' )
      {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDSkaarjw1';
         else if( A.Skin == Texture'SkaarjL' )
            A.Skin = Texture'HDSkins2.HDSkaarjL';
         else if( A.Skin == Texture'Skaarjw2' )
            A.Skin = Texture'HDSkins2.HDSkaarjw2';
         else if( A.Skin == Texture'Skaarjw3' )
            A.Skin = Texture'HDSkins2.HDSkaarjw3';
         else if( A.Skin == Texture'Skaarjw4' )
            A.Skin = Texture'HDSkins2.HDSkaarjw4';
         else if( A.Skin == Texture'Skaarjw5' )
            A.Skin = Texture'HDSkins2.HDSkaarjw5';
}
//Skaarj Trooper
      if( A.Mesh == LodMesh'UnrealI.sktrooper' )
         {
      if( A.Skin == Texture'sktrooper1' )
            A.Skin = Texture'HDSkins2.HDsktrooper1';
         else if( A.Skin == None ) //Replaces pre-placed Carcass skins
            A.Skin = Texture'HDSkins2.HDsktrooper1';
         else if( A.Skin == Texture'sktrooper2' )
            A.Skin = Texture'HDSkins2.HDsktrooper2';
         else if( A.Skin == Texture'sktrooper3' )
            A.Skin = Texture'HDSkins2.HDsktrooper3';
   }
//Skaarj Warlord
      if( A.Mesh == LodMesh'UnrealI.WarlordM' )
         {
         if( A.MultiSkins[0] == None )
            A.MultiSkins[0] = Texture'HDSkins2.HDJWarlord1';
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJWarlord1';
   }
//Skaarj Queen
      if( A.Mesh == LodMesh'UnrealI.SkQueen' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJQueen1';
   }
//Pupae
      if( A.Mesh == LodMesh'UnrealI.Pupae1' )
         {
         if( A.MultiSkins[0] == None )
            A.MultiSkins[0] = Texture'HDSkins2.HDJPupae1';
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJPupae1';
   }
//Gasbag
      if( A.Mesh == LodMesh'UnrealI.GasbagM' )
         {
         if( A.MultiSkins[5] == None )
            A.MultiSkins[5] = Texture'HDSkins2.HDGasbag1';
         if( A.MultiSkins[6] == None )
            A.MultiSkins[6] = Texture'HDSkins2.HDGasbag2';
   }
//Titan
      if( A.Mesh == LodMesh'UnrealI.Titan1' )
{
            A.Mesh = LodMesh'HDSkins.TitanX';
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJTitan1';
         else if( A.Skin == Texture'JTitan2' )
            A.Skin = Texture'HDSkins2.HDJTitan2';
   }
//Brute
      if( A.Mesh == LodMesh'UnrealShare.Brute1' )
      {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJBrute1';
         else if( A.Skin == Texture'Brute2' )
            A.Skin = Texture'HDSkins2.HDBrute2';
         else if( A.Skin == Texture'Brute3' )
            A.Skin = Texture'HDSkins2.HDBrute3';
   }
//Krall
      if( A.Mesh == LodMesh'UnrealI.KrallM' )
      {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJKrall';
         else if( A.Skin == Texture'EKrall' )
            A.Skin = Texture'HDSkins2.HDEKrall';
   }
//Mercenary
      if( A.Mesh == LodMesh'UnrealI.Merc' )
      {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJMerc1';
         else if( A.Skin == Texture'JMerc2' )
            A.Skin = Texture'HDSkins2.HDJMerc2';
   }
//Devilfish
      if( A.Mesh == LodMesh'UnrealShare.fish' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJFish1';
   }
//Squid
      if( A.Mesh == LodMesh'UnrealI.Squid1' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJSquid1';
   }
//Fly
      if( A.Mesh == LodMesh'UnrealShare.FlyM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJFly1';
   }
//Manta
      if( A.Mesh == LodMesh'UnrealShare.Manta1' )
      {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJManta1';
         else if( A.Skin == Texture'JManta2' )
            A.Skin = Texture'HDSkins2.HDJManta2';
   }
//Tentacle
      if( A.Mesh == LodMesh'UnrealShare.Tentacle1' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTentacle1';
   }
//Slith
      if( A.Mesh == LodMesh'UnrealShare.Slith1' )
      {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJSlith1';
   }
//Cow
      if( A.Mesh == LodMesh'UnrealShare.NaliCow' )
      {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJCow1';
   }
//Nali
      if( A.Mesh == LodMesh'UnrealShare.Nali1' )
      {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJNali1';
         else if( A.Skin == Texture'JNali2' )
            A.Skin = Texture'HDSkins2.HDJNali2';
   }
//Crucified Nali
      if( A.Mesh == LodMesh'UnrealShare.CrossNali' )
      {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJNali1';
         else if( A.Skin == Texture'JNali2' )
            A.Skin = Texture'HDSkins2.HDJNali2';
   }
//Predator
      if( A.Mesh == LodMesh'Upak.Predator' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJPredator1';
         if( A.MultiSkins[2] == None )
            A.MultiSkins[2] = Texture'HDSkins2.HDJPredator2';
         else if( A.MultiSkins[1] == Texture'JGPredator1' )
            A.MultiSkins[1] = Texture'HDSkins2.HDJGPredator1';
         if( A.MultiSkins[2] == Texture'JGPredator2' )
            A.MultiSkins[2] = Texture'HDSkins2.HDJGPredator2';
   }
//Spinner
      if( A.Mesh == LodMesh'Upak.Spinner' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJSpinner1';
         if( A.MultiSkins[2] == None )
            A.MultiSkins[2] = Texture'HDSkins2.HDJSpinner2';
   }


//........Flock Pawns..............

//Nali Rabbit
      if( A.Mesh == LodMesh'UnrealShare.Rabbit' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJRabbit1';
   }
//Bird
      if( A.Mesh == LodMesh'UnrealShare.Bird' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJBird11';
   }

//........Player Skins.............

//Female One (Gina)
      if( A.Mesh == LodMesh'UnrealShare.Female1' )
      {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDgina';
         else if( A.Skin == Texture'Gina' )
            A.Skin = Texture'HDSkins2.HDgina';
   }


//........Player Carcasses.........

//Female One Body
      if( A.Mesh == LodMesh'UnrealShare.Fem1body' )
      {
//This fixes the longstanding incorrect skin bug in Unreal
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDgina';
//Just in case someone set the correct Gina skin in a map
         else if( A.Skin == Texture'Gina' )
            A.Skin = Texture'HDSkins2.HDgina';
   }
//Female Two Body (No high-res skin yet; merely fixes bug)
      if( A.Mesh == LodMesh'UnrealShare.Fem2Body' )
      {
//This fixes the longstanding incorrect skin bug in Unreal
         if( A.Skin == None )
            A.Skin = Texture'UnrealShare.Skins.Sonya';
   }

//........Decorations.........

//Tree1
      if( A.Mesh == LodMesh'UnrealShare.Tree1M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTree11';
   }
//Tree2
      if( A.Mesh == LodMesh'UnrealShare.Tree2M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTree21';
   }
//Tree3
      if( A.Mesh == LodMesh'UnrealShare.Tree3M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTree31';
   }
//Tree4
      if( A.Mesh == LodMesh'UnrealShare.Tree4M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTree41';
   }
//Tree5
      if( A.Mesh == LodMesh'UnrealShare.Tree5M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTree51';
   }
//Tree6
      if( A.Mesh == LodMesh'UnrealShare.Tree6M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTree61';
   }
//Tree7
      if( A.Mesh == LodMesh'UnrealShare.Tree7M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTree71';
   }
//Tree8
      if( A.Mesh == LodMesh'UnrealShare.Tree8M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTree81';
   }
//Tree9
      if( A.Mesh == LodMesh'UnrealShare.Tree9M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTree91';
   }
//Tree10
      if( A.Mesh == LodMesh'UnrealShare.Tree10M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTree101';
   }
//Tree11
      if( A.Mesh == LodMesh'UnrealShare.Tree11M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTree111';
   }
//Tree12
      if( A.Mesh == LodMesh'UnrealShare.Tree12M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTree121';
   }
//Plant1
      if( A.Mesh == LodMesh'UnrealShare.Plant1M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJPlant11';
   }
//Plant2
      if( A.Mesh == LodMesh'UnrealShare.Plant2M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJPlant21';
   }
//Plant3
      if( A.Mesh == LodMesh'UnrealShare.Plant3M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJPlant31';
   }
//Plant4
      if( A.Mesh == LodMesh'UnrealShare.Plant4M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJPlant41';
   }
//Plant5
      if( A.Mesh == LodMesh'UnrealShare.Plant5M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJPlant41';
   }
//Plant6
      if( A.Mesh == LodMesh'UnrealShare.Plant6M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJPlant61';
   }
//Plant7
      if( A.Mesh == LodMesh'UnrealShare.Plant7M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJPlant61';
   }
//SeaWeed
      if( A.Mesh == Mesh'UnrealShare.SeaWeedM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJSeaWeed1';
   }
//Wooden Box
      if( A.Mesh == LodMesh'UnrealShare.WoodenBoxM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJWoodenBox1';
   }
//Steel Box
      if( A.Mesh == LodMesh'UnrealShare.SteelBoxM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJSteelBox1';
   }
//Barrel
      if( A.Mesh == LodMesh'UnrealShare.BarrelM' )
         {
         if( A.Skin == Texture'JBarrel1' )
            A.Skin = Texture'HDSkins2.HDJBarrel1';
   }
//Steel Barrel
      if( A.Mesh == LodMesh'UnrealShare.steelbarrelM' )
         {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJSteelBarrel1';
         else if( A.Skin == Texture'Jsteelbarrel2' )
            A.Skin = Texture'HDSkins2.HDJSteelBarrel2';
   }
//Sludge Barrel
      if( A.Mesh == LodMesh'UnrealI.sbarrel' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJsbarrel1';
   }
//Book
      if( A.Mesh == LodMesh'UnrealShare.BookM' )
         {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJBook1';
         else if( A.Skin == Texture'JBook2' )
            A.Skin = Texture'HDSkins2.HDJBook2';
         else if( A.Skin == Texture'JBook3' )
            A.Skin = Texture'HDSkins2.HDJBook3';
         else if( A.Skin == Texture'JBook4' )
            A.Skin = Texture'HDSkins2.HDJBook4';
   }
//Boulder
      if( A.Mesh == LodMesh'UnrealShare.BoulderM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJBoulder1';
   }
//Boulder1M (In case a custom mapper uses it; not used in Unreal anywhere)
      if( A.Mesh == LodMesh'UnrealShare.Boulder1M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJBoulder1';
   }
//TBoulder (thrown by Titans)
      if( A.Mesh == LodMesh'UnrealI.TBoulder' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJBoulder1';
   }
//Chest
      if( A.Mesh == LodMesh'UnrealShare.ChestM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJChest1';
   }
//Sign
      if( A.Mesh == LodMesh'UnrealShare.Sign1M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJSign11';
   }
//Flag 1
      if( A.Mesh == LodMesh'UnrealI.Flag1M' )
         {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJFlag11';
         else if( A.Skin == Texture'JFlag12' )
            A.Skin = Texture'HDSkins2.HDJFlag12';
   }
//Flag 2
      if( A.Mesh == LodMesh'UnrealI.Flag2M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJFlag21';
   }
//Flag 3
      if( A.Mesh == LodMesh'UnrealI.Flag3M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJFlag31';
   }
//Tapestry1
      if( A.Mesh == LodMesh'UnrealI.Tap' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTap1';
   }
//Moon One
      if( A.Mesh == Mesh'UnrealI.Moon1' )
         {
         if( A.Skin == Texture'JMoon1' )
            A.Skin = Texture'HDSkins2.HDJMoon1';
//Moon Two
         else if( A.Skin == Texture'MoonTwo' )
            A.Skin = Texture'HDSkins2.HDMoonTwo';
   }
//Moon Three
      if( A.Mesh == Mesh'UnrealI.Moon3M' )
         {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJMoon3';
   }
//Monk Statue
      if( A.Mesh == LodMesh'UnrealShare.MonkStatueM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJMonkStatue1';
   }
//Monk Statue
      if( A.Mesh == LodMesh'UnrealShare.NaliStatueM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJNaliStatue1';
   }
//Lantern
      if( A.Mesh == LodMesh'UnrealShare.LanternM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJLantern1';
   }
//Knife (Uses same skin as Lantern for some reason)
      if( A.Mesh == Mesh'UnrealShare.KnifeM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJLantern1';
   }
//Lantern2
      if( A.Mesh == LodMesh'UnrealShare.Lantern2M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJLantern1';
   }
//Lamp1
      if( A.Mesh == LodMesh'UnrealI.Lamp1M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJLamp11';
   }
//Lamp4
      if( A.Mesh == LodMesh'UnrealI.Lamp4M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJLamp41';
   }
//Sconce
      if( A.Mesh == Mesh'UnrealShare.sconceM' )
         {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJsconce1';
   }
//Table1
      if( A.Mesh == LodMesh'UnrealI.Table1' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJTable11';
   }
//Chair
      if( A.Mesh == LodMesh'UnrealI.Chair1' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJChair11';
   }
//Pottery0
      if( A.Mesh == LodMesh'UnrealShare.Pottery0M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJPottery01';
   }
//Pottery1
      if( A.Mesh == LodMesh'UnrealShare.Pottery1M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJPottery11';
   }
//Pottery2
      if( A.Mesh == LodMesh'UnrealShare.Pottery2M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJPottery21';
   }
//Vase1
      if( A.Mesh == LodMesh'UnrealShare.vaseM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJVase1';
   }
//Urn
      if( A.Mesh == LodMesh'UnrealShare.UrnM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJUrn1';
   }
//Escape Pod
      if( A.Mesh == LodMesh'UnrealI.Escapep' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJEscapep1';
   }
//Cryopod
      if( A.Mesh == LodMesh'UnrealI.CryopodM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJCryopod1';
   }
//Fan
      if( A.Mesh == LodMesh'UnrealShare.Fan2M' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJFan21';
   }
//Dice
      if( A.Mesh == Mesh'UnrealI.DiceM' )
         {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJDice1';
   }
//Wire
      if( A.Mesh == LodMesh'UnrealShare.WireM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJWire1';
   }
//Candle
      if( A.Mesh == LodMesh'UnrealShare.CandleM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJCandle1';
   }
//Candle2
      if( A.Mesh == LodMesh'UnrealShare.Candl2' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJCandl21';
   }
//UMS Dropbox
      if( A.Mesh == LodMesh'UPak.dropbox' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJdropbox1';
   }


//..........Inventory.............

//Dispersion Pistol
      if( A.Mesh == LodMesh'UnrealShare.DPistolPick' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDDPistol1';
   }
//Clip
      if( A.Mesh == LodMesh'UnrealShare.ClipM' )
         {
         if( A.MultiSkins[2] == None )
            A.MultiSkins[2] = Texture'HDSkins2.HDJClip1';
   }
//Amplifier
      if( A.Mesh == LodMesh'UnrealShare.AmplifierM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJAmplifier1';
   }
//Flare
      if( A.Mesh == LodMesh'UnrealShare.FlareM' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJMisc1';
   }
//Flare
      if( A.Mesh == LodMesh'UnrealShare.Flashl' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJFlashl1';
   }
//Bandage
      if( A.Mesh == LodMesh'UnrealShare.bandage' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJband1';
   }
//Health
      if( A.Mesh == LodMesh'UnrealShare.HealthM' )
         {
         if( A.Skin == None )
            A.Skin = Texture'HDSkins2.HDJHealth1';
   }
//Nali Fruit
      if( A.Mesh == LodMesh'UnrealShare.NaliFruitMesh' )
         {
         if( A.MultiSkins[1] == None )
            A.MultiSkins[1] = Texture'HDSkins2.HDJNaliFruit1';
   }
}


By the way, there are some major advantages to this code over the previous mutator code I used. The most obvious advantage is no lag. The other advantage is that boulders thrown by Titans are replaced by HD skins now, and the player skins are also replaced (only Gina has an HD skin at the moment). Also, I took this opportunity to fix a longstanding bug in Unreal in which the Fem1body and Fem2body meshes had the incorrect skins (Vortex Rikers has a messed up skin right near the start in the ventilation shafts).
For High-Res Unreal skins, click here.
For the RTNP "Ultimate Edition" HD, click here.

Image

User avatar Buff Skeleton
>:E >:E
Posts: 4173
Joined: 15 Dec 2007, 00:46

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 09 Sep 2016, 23:07

If you want to reeeeeally optimize the if/else checks to minimize them, order them by most statistically common actors. I.e. first you check to see if Actor A is a projectile, because those are going to be spawned more than anything else. Next you check if it's a Pawn. Then Inventory, then Decoration, etc. And within each group, you order by most common projectiles, then most common pawns, etc.

I'm not 100% sure what will appear most often all of the time, and it depends on the map / mod too, but generally in a game where you have guns that shoot gun things, you will end up having more projectiles generated in a game session than any other actor by far (if we're not counting Effects, at least -- high-detail mods often spawn a shit ton of them for even a single projectile, so those would probably be even more numerous). Except maybe gibs, but that's usually only true if someone has MoreGore enabled or is playing a mod with tons of enemies all the time.

All that said, splitting hairs over fine tuning the code isn't really necessary. Whatever was eating up the performance was likely just some kind of really inefficient read/write operation, whereas the checks you're doing now are simple and easy to calculate, even if there are a lot of them. It's not even clear that the old code would have caused problems on other machines -- maybe your install or hardware is struggling in a way others wouldn't, though that's moot. You are, after all, making this effort for your own sake, so it's important that it runs well for you more than anything else.

The engine can evaluate that entire function in tens of milliseconds and never notice it processing, and it can do that for far more complicated logic as well. It's good to aim for optimization, but you're probably as close as you can get already for this style of mutator. The main thing is to ensure it works as intended in as many possible scenarios as you can come up with when testing.
Image

User avatar Lightning Hunter
Skaarj Elder Skaarj Elder
Posts: 1291
Joined: 11 Nov 2007, 22:12
Location: Pervert.

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 12 Sep 2016, 23:23

I have some good news. I have been staying silent on my current work until I could verify there would be no lag or problems in-game with the new mutator code. Everything looks stable, so I think I can safely announce that I have created high-res skins for all the gibs. There are around 100 gibs in Unreal using about 30 skins. I just now tested the mutator running all the HD skins on Waffnuffly's Deja Vu map (which is very laggy in general on old systems). I also enabled DieHard's ExtremeEnd S3TC textures, and about 5 other mutators that I regularly run while playing SP (Limbo Mutator, Gore mods, and more). On my 3 year old computer, everything ran with no lag. I think that's a pretty successful test. Most of the gib skins are 1024x1024. I decided not to make them too big, since a lot of gibs can be spawned in Unreal. The boss skins (like the Titan) are 4096x4096.

The only issue I initially came across was the game crashing with a "ran out of virtual memory" error, but I eventually traced this to CacheSizeMegs being set to 1024 (I have no idea when I set it so high). I reduced it to 256, and the game hasn't crashed since. Evidently, reducing the amount of cache the game uses actually improves performance. It might just be an odd quirk on my system, but it is now resolved (maybe this solution will help other people resolve this error).

Anyway, a few screens:

Image

Image
For High-Res Unreal skins, click here.
For the RTNP "Ultimate Edition" HD, click here.

Image

User avatar Lightning Hunter
Skaarj Elder Skaarj Elder
Posts: 1291
Joined: 11 Nov 2007, 22:12
Location: Pervert.

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 14 Sep 2016, 01:44

I was never all that great at weapon skins (always been better at monster skins), but here is my attempt at the Automag. What do you all think?

Image

Old:
Image
For High-Res Unreal skins, click here.
For the RTNP "Ultimate Edition" HD, click here.

Image

User avatar Tarydax
Skaarj Elder Skaarj Elder
Posts: 1052
Joined: 11 Apr 2009, 04:10

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 14 Sep 2016, 02:06

That looks exactly like what i would expect an HD automag skin to look like. Very nice work.
Image

User avatar Lightning Hunter
Skaarj Elder Skaarj Elder
Posts: 1291
Joined: 11 Nov 2007, 22:12
Location: Pervert.

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 14 Sep 2016, 08:25

Thanks, Teridax.

I just now skinned the Stinger in less than 2 hours, which I think beats my own personal best record. :P

Image

Old Stinger:
Image

Pickup:
Image

Image
For High-Res Unreal skins, click here.
For the RTNP "Ultimate Edition" HD, click here.

Image

User avatar Lightning Hunter
Skaarj Elder Skaarj Elder
Posts: 1291
Joined: 11 Nov 2007, 22:12
Location: Pervert.

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 17 Sep 2016, 08:59

Completed the Razor Jack and GES Bio Rifle:

Image
Old:
Image

Image
Old:
Image
For High-Res Unreal skins, click here.
For the RTNP "Ultimate Edition" HD, click here.

Image

User avatar Lightning Hunter
Skaarj Elder Skaarj Elder
Posts: 1291
Joined: 11 Nov 2007, 22:12
Location: Pervert.

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 18 Sep 2016, 09:51

Bleh, the Rifle was the most annoying model to work with so far. The skin is pretty stretched over certain parts, and the model is kind of warped. I had to tweak it for hours to look right.

Image

Image
For High-Res Unreal skins, click here.
For the RTNP "Ultimate Edition" HD, click here.

Image

User avatar Sat42
Skaarj Warlord Skaarj Warlord
Posts: 865
Joined: 14 Jul 2013, 16:42
Contact:

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 18 Sep 2016, 13:50

Lovely rework of the textures as usual, Lightning Hunter! I like the Razor Jack and the gibs in particular :D
Nali: Magic or Telekinesis
Waffnuffly wrote:It's tarydium-doped smoothies. Drunk by the player, I mean. The player is tripping balls. The whole game actually takes place in a large city and the player thinks he's on an alien world.

User avatar Lightning Hunter
Skaarj Elder Skaarj Elder
Posts: 1291
Joined: 11 Nov 2007, 22:12
Location: Pervert.

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 19 Sep 2016, 07:31

Thanks Sat.

Here is the Minigun:
Image

Old:
Image
For High-Res Unreal skins, click here.
For the RTNP "Ultimate Edition" HD, click here.

Image

User avatar Lightning Hunter
Skaarj Elder Skaarj Elder
Posts: 1291
Joined: 11 Nov 2007, 22:12
Location: Pervert.

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 20 Sep 2016, 08:45

I never did like the original ASMD skin much. I always felt it was very blurry and low quality. It is hard to even tell what the red stuff is. I made the assumption that it is some kind of acid/fluid coming from the ASMD, and ran with that idea. Here is the result:

Image

Image
For High-Res Unreal skins, click here.
For the RTNP "Ultimate Edition" HD, click here.

Image

User avatar Lightning Hunter
Skaarj Elder Skaarj Elder
Posts: 1291
Joined: 11 Nov 2007, 22:12
Location: Pervert.

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 21 Sep 2016, 08:22

Here is the Flak cannon. I based this skin on a version created by J-Rts. I scrapped some parts created by him to make it more faithful to the original. In the end, I did about 5-6 hours of work on it (longer than doing the Stinger skin from scratch, ironically). The skin by J-Rts is still a good skin however, and I posted a screenshot below so people can see his original.
Image

Old:
Image

Here is the version created by J-Rts that I based some parts on:
Image
For High-Res Unreal skins, click here.
For the RTNP "Ultimate Edition" HD, click here.

Image

User avatar Lightning Hunter
Skaarj Elder Skaarj Elder
Posts: 1291
Joined: 11 Nov 2007, 22:12
Location: Pervert.

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 26 Sep 2016, 09:33

It took way too long for me to tweak this one, but I think I finally have a good faithful rendition of the Eightball Gun. Ahaigh over at OldUnreal made the original HD skin for this model, and I modified it to look more faithful to the original. This particular mesh was a nightmare to work with...

Image

Old:
Image

The original HD version by Ahaigh01:
Image


And for fun, the pickup model:
Image
For High-Res Unreal skins, click here.
For the RTNP "Ultimate Edition" HD, click here.

Image

User avatar Lightning Hunter
Skaarj Elder Skaarj Elder
Posts: 1291
Joined: 11 Nov 2007, 22:12
Location: Pervert.

Subject: Re: High-Res Skin Project / Request for Skinners!

Post Posted: 27 Sep 2016, 09:59

Surprise:

Image

old:
Image

Pickup:

Image

Image
For High-Res Unreal skins, click here.
For the RTNP "Ultimate Edition" HD, click here.

Image

Previous Next

Who is online

Users browsing this forum: No registered users and 57 guests

Copyright © 2001-2024 UnrealSP.org

Powered by phpBB® Forum Software © phpBB Limited