For direct access use https://forums.oldunreal.com
It's been quite a while since oldunreal had an overhaul, but we are moving to another server which require some updates and changes. The biggest change is the migration of our old reliable YaBB forum to phpBB. This system expects you to login with your username and old password known from YaBB.
If you experience any problems there is also the usual "password forgotten" function. Don't forget to clear your browser cache!
If you have any further concerns feel free to contact me: Smirftsch@oldunreal.com

[RELEASED] Unreal HD Skins [UT] [227]

URP - the Unreal Retexturing Project: for those who are interested in High-Resolution Textures for Unreal & UnrealTournament or may want to take part in creating them

Moderator: ahaigh01

Post Reply
User avatar
Lightning_Hunter
OldUnreal Member
Posts: 279
Joined: Tue Mar 04, 2003 9:30 pm

[RELEASED] Unreal HD Skins [UT] [227]

Post by Lightning_Hunter »

Developer: Lightning Hunter
Status:  RELEASED!

[img]http://i6.photobucket.com/albums/y226/l_hunter8/HDSkinsLogo.jpg[/img]

__________________________________________________________________________

[img]http://i6.photobucket.com/albums/y226/l_hunter8/TitanHD.jpg[/img][img]http://i6.photobucket.com/albums/y226/l_hunter8/Eightball.jpg[/img]
[img]http://i6.photobucket.com/albums/y226/l_hunter8/SkaarjLord_1.jpg[/img][img]http://i6.photobucket.com/albums/y226/l_hunter8/SkaarjWarrior.jpg[/img]
[img]http://i6.photobucket.com/albums/y226/l_hunter8/NaliSkaarj.jpg[/img][img]http://i6.photobucket.com/albums/y226/l_hunter8/GasBag1.jpg[/img]
[img]http://i6.photobucket.com/albums/y226/l_hunter8/Berserker.jpg[/img][img]http://i6.photobucket.com/albums/y226/l_hunter8/BiterFish.jpg[/img]
[img]http://i6.photobucket.com/albums/y226/l_hunter8/ToxinSuit.jpg[/img][img]http://i6.photobucket.com/albums/y226/l_hunter8/BootsHD.jpg[/img]
[img]http://i6.photobucket.com/albums/y226/l_hunter8/DPistolHD_1.jpg[/img][img]http://i6.photobucket.com/albums/y226/l_hunter8/GLHD2.jpg[/img]
[img]http://i6.photobucket.com/albums/y226/l_hunter8/CarPickup1.jpg[/img][img]http://i6.photobucket.com/albums/y226/l_hunter8/RazorHD.jpg[/img]
[img]http://i6.photobucket.com/albums/y226/l_hunter8/StingerPick2HD.jpg[/img][img]http://i6.photobucket.com/albums/y226/l_hunter8/SteelBox.jpg[/img]
[img]http://i6.photobucket.com/albums/y226/l_hunter8/SkaarjAssassin.jpg[/img][img]http://i6.photobucket.com/albums/y226/l_hunter8/IceSkaarjNew2.jpg[/img][img]http://i6.photobucket.com/albums/y226/l_hunter8/SkaarjNippleless.jpg[/img]

Synopsis:
An Unreal227/UT99 High-resolution skins mutator.

Features:
This mutator replaces those old, blurry Unreal/RTNP skins with detailed, high-res versions. My primary goal with this project was to keep the skins looking as faithful as possible, while removing the obvious outdated "pixelation" of the original skins.  In order to achieve this, each skin has been manually reworked. There has been no simple filters or cheesy sharpening techniques used during the skinning process. Each part of every skin has been manually air-brushed and blended.  Hundreds of layers were created to apply overlay detail textures, better looking shadows, better highlights, and more.  The end result is faithful skins that look almost the same from a distance, but far more detailed up-close.  In the case of bigger meshes like the Titan, detail is evident even when viewed from a distance.  Most skins have been increased from the original dimensions of 128x128/256x256 to 2048x2048/4096x4096.

The following skins are replaced for Unreal and RTNP:
-All Monsters/ScriptedPawns/Creatures
-All Inventory
-All Decorations (except the Robot)
-All Gibs
-All Projectiles, except those with animated textures or special effects
-The Gina Skin by Ahaigh (all other player skins are incomplete at this point)

See the readme file for more credits and installation insructions!  I also recommend getting [url=http://www.uttexture.com/index.htm]DieHard's S3TC textures[/url], which look great when combined with these Skins.


[url=http://www.moddb.com/mods/high-resolution-unreal-skins]DOWNLOAD[/url]
[url=http://www.moddb.com/mods/high-resolution-unreal-skins][img]http://i6.photobucket.com/albums/y226/l_hunter8/HDSkinsIcon.jpg[/img][/url]


ALSO TRY THIS: [url=http://www.moddb.com/mods/rtnp-the-ultimate-edition]Return To Na Pali: Ultimate Edition v1.1 HD[/url]
For those of you who enjoyed RTNP:UE (or haven't played it yet), a new HD version has been released! This version of RTNP:UE replaces all the beta and custom skins with HD counterparts. Playing this in conjunction with UnrealHD will complete the experience! Read more about it at the [url=http://www.moddb.com/mods/rtnp-the-ultimate-edition]Moddb[/url] page.
Last edited by Lightning_Hunter on Fri Jan 13, 2017 6:40 am, edited 1 time in total.
For High-Res Unreal skins, click here.
Image
User avatar
Lightning_Hunter
OldUnreal Member
Posts: 279
Joined: Tue Mar 04, 2003 9:30 pm

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

Post by Lightning_Hunter »

Hey sn260591, how do I modify your mutator to add more groups?  I was trying to replace PlayerPawns, but it's not working.  Here is the current code with all my additions.  The new PlayerPawns are defined at the bottom, with the group added near the top.  Also, am I reading correctly that there is a data limit of 32?  This will not work for decorations or inventory, as there are more than 32 of them.  You will also notice that I modified the 'weapon' group to be all 'inventory'.

Edit: Also, the new boulder skin does not replace the Titan projectiles. Does a new group for projectile need to be added for this?

Code: Select all

class HDSkins_mutator expands Mutator;

#exec OBJ LOAD FILE=TitanX.u PACKAGE=HDSkins

struct STex
{
      var string      Old[8];
      var string      New[8];
};

struct SData
{
      var string      Mesh;
      var string      MeshNew;
      var bool      bMultiSkins;
      var int      TexNum;
      var STex      Tex[6];
};

var struct SGroup
{
      var int DataNum;
      var SData Data[32];
} Group[4];

function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
{
      local int g, i, j, m;
      local bool bDone;

      if (Other.Mesh == None)
            return true;

      if (Other.IsA('ScriptedPawn') || Other.IsA('Carcass') || Other.IsA('FlockPawn'))
            g = 0;
      else if (Other.IsA('Decoration'))
            g = 1;
      else if (Other.IsA('Inventory'))
            g = 2;
      else if (Other.IsA('PlayerPawn'))
            g = 3;
      else
            return true;

      for (i = 0; i < Group[g].DataNum; i++)
      {
            if (string(Other.Mesh) ~= Group[g].Data[i].Mesh)
            {
                  if (Group[g].Data[i].MeshNew != "")
                        Other.Mesh = mesh(DynamicLoadObject(Group[g].Data[i].MeshNew, Class'Mesh'));

                  for (j = 0; j < Group[g].Data[i].TexNum; j++)
                  {
                        if (!(Group[g].Data[i].bMultiSkins))
                        {
                              if (string(Other.Skin) ~= Group[g].Data[i].Tex[j].Old[0])
                              {
                                    Other.Skin = texture(DynamicLoadObject(Group[g].Data[i].Tex[j].New[0], Class'Texture'));
                                    return true;
                              }
                        }
                        else
                        {
                              for (m = 0; m < 8; m++)
                              {
                                    if (Group[g].Data[i].Tex[j].New[m] != "")
                                    {
                                          if (string(Other.MultiSkins[m]) ~= Group[g].Data[i].Tex[j].Old[m])
                                          {
                                                Other.MultiSkins[m] = texture(DynamicLoadObject(Group[g].Data[i].Tex[j].New[m], Class'Texture'));
                                                bDone = True;
                                          }
                                    }
                              }

                              if (bDone)
                                    return true;
                        }
                  }
            }
      }

      return true;
}

function PreBeginPlay()
{
//ScriptedPawn and Carcass----------------------------------------------------------------------------------
      Group[0].DataNum = 21;

      //SkaarjWarrior Group
      Group[0].Data[0].Mesh = "UnrealShare.Skaarjw";
      Group[0].Data[0].TexNum = 6;
      //Skaarj Warrior
      Group[0].Data[0].Tex[0].Old[0] = "None";
      Group[0].Data[0].Tex[0].New[0] = "HDSkins2.HDSkaarjw1";
      //Skaarj Berserker
      Group[0].Data[0].Tex[1].Old[0] = "UnrealI.Skins.Skaarjw2";
      Group[0].Data[0].Tex[1].New[0] = "HDskins2.HDSkaarjw2";
      //Ice Skaarj
      Group[0].Data[0].Tex[2].Old[0] = "UnrealI.Skins.Skaarjw3";
      Group[0].Data[0].Tex[2].New[0] = "HDskins2.HDSkaarjw3";
      //Skaarj Scout
      Group[0].Data[0].Tex[3].Old[0] = "UnrealShare.Skins.Skaarjw4";
      Group[0].Data[0].Tex[3].New[0] = "HDskins2.HDSkaarjw4";
      //Skaarj Assassin
      Group[0].Data[0].Tex[4].Old[0] = "UnrealI.Skins.Skaarjw5";
      Group[0].Data[0].Tex[4].New[0] = "HDskins2.HDSkaarjw5";
      //Skaarj Lord
      Group[0].Data[0].Tex[5].Old[0] = "UnrealI.Skins.SkaarjL";
      Group[0].Data[0].Tex[5].New[0] = "HDskins2.HDSkaarjL";

      //SkaarjTrooper Group
      Group[0].Data[1].Mesh = "UnrealI.sktrooper";
      Group[0].Data[1].TexNum = 3;
      //Skaarj Trooper
      Group[0].Data[1].Tex[0].Old[0] = "UnrealI.Skins.sktrooper1";
      Group[0].Data[1].Tex[0].New[0] = "HDSkins2.HDsktrooper1";
      //Skaarj Gunner
      Group[0].Data[1].Tex[1].Old[0] = "UnrealI.Skins.sktrooper2";
      Group[0].Data[1].Tex[1].New[0] = "HDskins2.HDsktrooper2";
      //Skaarj Officer
      Group[0].Data[1].Tex[2].Old[0] = "UnrealI.Skins.sktrooper3";
      Group[0].Data[1].Tex[2].New[0] = "HDskins2.HDsktrooper3";

      //Warlord Group
      Group[0].Data[2].Mesh = "UnrealI.WarlordM";
      Group[0].Data[2].bMultiSkins = True;
      Group[0].Data[2].TexNum = 1;
      //Warlord
      Group[0].Data[2].Tex[0].Old[1] = "None";
      Group[0].Data[2].Tex[0].New[1] = "HDSkins2.HDJWarlord1";

      //Skaarj Queen Group
      Group[0].Data[3].Mesh = "UnrealI.SkQueen";
      Group[0].Data[3].bMultiSkins = True;
      Group[0].Data[3].TexNum = 1;
      //Skaarj Queen
      Group[0].Data[3].Tex[0].Old[1] = "None";
      Group[0].Data[3].Tex[0].New[1] = "HDSkins2.HDJQueen1";

      //Pupae Group
      Group[0].Data[4].Mesh = "UnrealI.Pupae1";
      Group[0].Data[4].bMultiSkins = True;
      Group[0].Data[4].TexNum = 1;
      //Pupae
      Group[0].Data[4].Tex[0].Old[1] = "None";
      Group[0].Data[4].Tex[0].New[1] = "HDSkins2.HDJPupae1";

      //Titan Group
      Group[0].Data[5].Mesh = "UnrealI.Titan1";
      Group[0].Data[5].MeshNew = "HDSkins.TitanX";
      Group[0].Data[5].TexNum = 2;
      //Titan
      Group[0].Data[5].Tex[0].Old[0] = "None";
      Group[0].Data[5].Tex[0].New[0] = "HDSkins2.HDJTitan1";
      //Stone Titan
      Group[0].Data[5].Tex[1].Old[0] = "UnrealI.Skins.JTitan2";
      Group[0].Data[5].Tex[1].New[0] = "HDSkins2.HDJTitan2";

      //Brute Group
      Group[0].Data[6].Mesh = "UnrealShare.Brute1";
      Group[0].Data[6].TexNum = 3;
      //Brute
      Group[0].Data[6].Tex[0].Old[0] = "None";
      Group[0].Data[6].Tex[0].New[0] = "HDSkins2.HDBrute1";
      //Behemoth
      Group[0].Data[6].Tex[1].Old[0] = "UnrealI.Skins.Brute2";
      Group[0].Data[6].Tex[1].New[0] = "HDskins2.HDBrute2";
      //Lesser Brute
      Group[0].Data[6].Tex[2].Old[0] = "UnrealShare.Skins.Brute3";
      Group[0].Data[6].Tex[2].New[0] = "HDskins2.HDBrute3";

      //Krall Group
      Group[0].Data[7].Mesh = "UnrealI.KrallM";
      Group[0].Data[7].TexNum = 2;
      //Krall
      Group[0].Data[7].Tex[0].Old[0] = "None";
      Group[0].Data[7].Tex[0].New[0] = "HDSkins2.HDJKrall";
      //Krall Elite
      Group[0].Data[7].Tex[1].Old[0] = "UnrealI.Skins.EKrall";
      Group[0].Data[7].Tex[1].New[0] = "HDSkins2.HDEKrall";

      //Mercenary Group
      Group[0].Data[8].Mesh = "UnrealI.Merc";
      Group[0].Data[8].TexNum = 2;
      //Mercenary
      Group[0].Data[8].Tex[0].Old[0] = "None";
      Group[0].Data[8].Tex[0].New[0] = "HDSkins2.HDJMerc1";
      //Mercenary Elite
      Group[0].Data[8].Tex[1].Old[0] = "UnrealI.Skins.JMerc2";
      Group[0].Data[8].Tex[1].New[0] = "HDSkins2.HDJMerc2";

      //Gasbag Group
      Group[0].Data[9].Mesh = "UnrealI.GasbagM";
      Group[0].Data[9].bMultiSkins = True;
      Group[0].Data[9].TexNum = 1;
      //Gasbag
      Group[0].Data[9].Tex[0].Old[5] = "None";
      Group[0].Data[9].Tex[0].New[5] = "HDSkins2.HDGasbag1";
      Group[0].Data[9].Tex[0].Old[6] = "None";
      Group[0].Data[9].Tex[0].New[6] = "HDSkins2.HDGasbag2";

      //Devilfish Group
      Group[0].Data[10].Mesh = "UnrealShare.fish";
      Group[0].Data[10].bMultiSkins = True;
      Group[0].Data[10].TexNum = 1;
      //Devilfish
      Group[0].Data[10].Tex[0].Old[1] = "None";
      Group[0].Data[10].Tex[0].New[1] = "HDSkins2.HDJFish1";

      //Squid Group
      Group[0].Data[11].Mesh = "UnrealI.Squid1";
      Group[0].Data[11].bMultiSkins = True;
      Group[0].Data[11].TexNum = 1;
      //Squid
      Group[0].Data[11].Tex[0].Old[1] = "None";
      Group[0].Data[11].Tex[0].New[1] = "HDSkins2.HDJSquid1";

      //Fly Group
      Group[0].Data[12].Mesh = "UnrealShare.FlyM";
      Group[0].Data[12].bMultiSkins = True;
      Group[0].Data[12].TexNum = 1;
      //Fly
      Group[0].Data[12].Tex[0].Old[1] = "None";
      Group[0].Data[12].Tex[0].New[1] = "HDSkins2.HDJFly1";

      //Manta Group
      Group[0].Data[13].Mesh = "UnrealShare.Manta1";
      Group[0].Data[13].TexNum = 2;
      //Manta
      Group[0].Data[13].Tex[0].Old[0] = "None";
      Group[0].Data[13].Tex[0].New[0] = "HDSkins2.HDJManta1";
      //Cave Manta
      Group[0].Data[13].Tex[1].Old[0] = "UnrealShare.Skins.JManta2";
      Group[0].Data[13].Tex[1].New[0] = "HDSkins2.HDJManta2";

      //Tentacle Group
      Group[0].Data[14].Mesh = "UnrealShare.Tentacle1";
      Group[0].Data[14].bMultiSkins = True;
      Group[0].Data[14].TexNum = 1;
      //Tentacle
      Group[0].Data[14].Tex[0].Old[1] = "None";
      Group[0].Data[14].Tex[0].New[1] = "HDSkins2.HDJTentacle1";

      //Slith Group
      Group[0].Data[15].Mesh = "UnrealShare.Slith1";
      Group[0].Data[15].TexNum = 1;
      //Slith
      Group[0].Data[15].Tex[0].Old[0] = "None";
      Group[0].Data[15].Tex[0].New[0] = "HDSkins2.HDJSlith1";

      //Cow Group
      Group[0].Data[16].Mesh = "UnrealShare.NaliCow";
      Group[0].Data[16].TexNum = 1;
      //Cow
      Group[0].Data[16].Tex[0].Old[0] = "None";
      Group[0].Data[16].Tex[0].New[0] = "HDSkins2.HDJCow1";

      //Nali Group
      Group[0].Data[17].Mesh = "UnrealShare.Nali1";
      Group[0].Data[17].TexNum = 2;
      //Nali
      Group[0].Data[17].Tex[0].Old[0] = "None";
      Group[0].Data[17].Tex[0].New[0] = "HDSkins2.HDJNali1";
      //Nali Priest
      Group[0].Data[17].Tex[1].Old[0] = "UnrealShare.Skins.JNali2";
      Group[0].Data[17].Tex[1].New[0] = "HDSkins2.HDJNali2";

      //Predator Group
      Group[0].Data[18].Mesh = "Upak.Predator";
      Group[0].Data[18].bMultiSkins = True;
      Group[0].Data[18].TexNum = 1;
      //Predator
      Group[0].Data[18].Tex[0].Old[1] = "None";
      Group[0].Data[18].Tex[0].New[1] = "HDSkins2.HDJPredator1";
      Group[0].Data[18].Tex[0].Old[2] = "None";
      Group[0].Data[18].Tex[0].New[2] = "HDSkins2.HDJPredator2";

      //Spinner Group
      Group[0].Data[19].Mesh = "Upak.Spinner";
      Group[0].Data[19].bMultiSkins = True;
      Group[0].Data[19].TexNum = 1;
      //Spinner
      Group[0].Data[19].Tex[0].Old[1] = "None";
      Group[0].Data[19].Tex[0].New[1] = "HDSkins2.HDJSpinner1";
      Group[0].Data[19].Tex[0].Old[2] = "None";
      Group[0].Data[19].Tex[0].New[2] = "HDSkins2.HDJSpinner2";

      //Crucified Nali
      Group[0].Data[20].Mesh = "UnrealShare.CrossNali";
      Group[0].Data[20].TexNum = 1;
      //Nali
      Group[0].Data[20].Tex[0].Old[0] = "None";
      Group[0].Data[20].Tex[0].New[0] = "HDSkins2.HDJNali1";

//Decorations----------------------------------------------------------------------------------------------
      Group[1].DataNum = 23;

  //Trees

      //Tree1 Group
      Group[1].Data[0].Mesh = "UnrealShare.Tree1M";
      Group[1].Data[0].bMultiSkins = True;
      Group[1].Data[0].TexNum = 1;
      //Tree1
      Group[1].Data[0].Tex[0].Old[1] = "None";
      Group[1].Data[0].Tex[0].New[1] = "HDSkins2.HDJTree11";

      //Tree2 Group
      Group[1].Data[1].Mesh = "UnrealShare.Tree2M";
      Group[1].Data[1].bMultiSkins = True;
      Group[1].Data[1].TexNum = 1;
      //Tree2
      Group[1].Data[1].Tex[0].Old[1] = "None";
      Group[1].Data[1].Tex[0].New[1] = "HDSkins2.HDJTree21";

      //Tree3 Group
      Group[1].Data[2].Mesh = "UnrealShare.Tree3M";
      Group[1].Data[2].bMultiSkins = True;
      Group[1].Data[2].TexNum = 1;
      //Tree3
      Group[1].Data[2].Tex[0].Old[1] = "None";
      Group[1].Data[2].Tex[0].New[1] = "HDSkins2.HDJTree31";

      //Tree4 Group
      Group[1].Data[3].Mesh = "UnrealShare.Tree4M";
      Group[1].Data[3].bMultiSkins = True;
      Group[1].Data[3].TexNum = 1;
      //Tree4
      Group[1].Data[3].Tex[0].Old[1] = "None";
      Group[1].Data[3].Tex[0].New[1] = "HDSkins2.HDJTree41";

      //Tree5 Group
      Group[1].Data[4].Mesh = "UnrealShare.Tree5M";
      Group[1].Data[4].bMultiSkins = True;
      Group[1].Data[4].TexNum = 1;
      //Tree5
      Group[1].Data[4].Tex[0].Old[1] = "None";
      Group[1].Data[4].Tex[0].New[1] = "HDSkins2.HDJTree51";

      //Tree6 Group
      Group[1].Data[5].Mesh = "UnrealShare.Tree6M";
      Group[1].Data[5].bMultiSkins = True;
      Group[1].Data[5].TexNum = 1;
      //Tree6
      Group[1].Data[5].Tex[0].Old[1] = "None";
      Group[1].Data[5].Tex[0].New[1] = "HDSkins2.HDJTree61";

      //Tree7 Group
      Group[1].Data[6].Mesh = "UnrealShare.Tree7M";
      Group[1].Data[6].bMultiSkins = True;
      Group[1].Data[6].TexNum = 1;
      //Tree7
      Group[1].Data[6].Tex[0].Old[1] = "None";
      Group[1].Data[6].Tex[0].New[1] = "HDSkins2.HDJTree71";

      //Tree8 Group
      Group[1].Data[7].Mesh = "UnrealShare.Tree8M";
      Group[1].Data[7].bMultiSkins = True;
      Group[1].Data[7].TexNum = 1;
      //Tree8
      Group[1].Data[7].Tex[0].Old[1] = "None";
      Group[1].Data[7].Tex[0].New[1] = "HDSkins2.HDJTree81";

      //Tree9 Group
      Group[1].Data[8].Mesh = "UnrealShare.Tree9M";
      Group[1].Data[8].bMultiSkins = True;
      Group[1].Data[8].TexNum = 1;
      //Tree9
      Group[1].Data[8].Tex[0].Old[1] = "None";
      Group[1].Data[8].Tex[0].New[1] = "HDSkins2.HDJTree91";

      //Tree10 Group
      Group[1].Data[9].Mesh = "UnrealShare.Tree10M";
      Group[1].Data[9].bMultiSkins = True;
      Group[1].Data[9].TexNum = 1;
      //Tree10
      Group[1].Data[9].Tex[0].Old[1] = "None";
      Group[1].Data[9].Tex[0].New[1] = "HDSkins2.HDJTree101";

      //Tree11 Group
      Group[1].Data[10].Mesh = "UnrealShare.Tree11M";
      Group[1].Data[10].bMultiSkins = True;
      Group[1].Data[10].TexNum = 1;
      //Tree11
      Group[1].Data[10].Tex[0].Old[1] = "None";
      Group[1].Data[10].Tex[0].New[1] = "HDSkins2.HDJTree111";

      //Tree12 Group
      Group[1].Data[11].Mesh = "UnrealShare.Tree12M";
      Group[1].Data[11].bMultiSkins = True;
      Group[1].Data[11].TexNum = 1;
      //Tree12
      Group[1].Data[11].Tex[0].Old[1] = "None";
      Group[1].Data[11].Tex[0].New[1] = "HDSkins2.HDJTree121";

  //Plants

      //Plant1 Group
      Group[1].Data[12].Mesh = "UnrealShare.Plant1M";
      Group[1].Data[12].bMultiSkins = True;
      Group[1].Data[12].TexNum = 1;
      //Plant1
      Group[1].Data[12].Tex[0].Old[1] = "None";
      Group[1].Data[12].Tex[0].New[1] = "HDSkins2.HDJPlant11";

      //Plant2 Group
      Group[1].Data[13].Mesh = "UnrealShare.Plant2M";
      Group[1].Data[13].bMultiSkins = True;
      Group[1].Data[13].TexNum = 1;
      //Plant2
      Group[1].Data[13].Tex[0].Old[1] = "None";
      Group[1].Data[13].Tex[0].New[1] = "HDSkins2.HDJPlant21";

      //Plant3 Group
      Group[1].Data[14].Mesh = "UnrealShare.Plant3M";
      Group[1].Data[14].bMultiSkins = True;
      Group[1].Data[14].TexNum = 1;
      //Plant3
      Group[1].Data[14].Tex[0].Old[1] = "None";
      Group[1].Data[14].Tex[0].New[1] = "HDSkins2.HDJPlant31";

      //Plant4 Group
      Group[1].Data[15].Mesh = "UnrealShare.Plant4M";
      Group[1].Data[15].bMultiSkins = True;
      Group[1].Data[15].TexNum = 1;
      //Plant4
      Group[1].Data[15].Tex[0].Old[1] = "None";
      Group[1].Data[15].Tex[0].New[1] = "HDSkins2.HDJPlant41";

      //Plant5 Group
      Group[1].Data[16].Mesh = "UnrealShare.Plant5M";
      Group[1].Data[16].bMultiSkins = True;
      Group[1].Data[16].TexNum = 1;
      //Plant4
      Group[1].Data[16].Tex[0].Old[1] = "None";
      Group[1].Data[16].Tex[0].New[1] = "HDSkins2.HDJPlant41";

      //Plant6 Group
      Group[1].Data[17].Mesh = "UnrealShare.Plant6M";
      Group[1].Data[17].bMultiSkins = True;
      Group[1].Data[17].TexNum = 1;
      //Plant6
      Group[1].Data[17].Tex[0].Old[1] = "None";
      Group[1].Data[17].Tex[0].New[1] = "HDSkins2.HDJPlant61";

      //Plant7 Group
      Group[1].Data[18].Mesh = "UnrealShare.Plant7M";
      Group[1].Data[18].bMultiSkins = True;
      Group[1].Data[18].TexNum = 1;
      //Plant7
      Group[1].Data[18].Tex[0].Old[1] = "None";
      Group[1].Data[18].Tex[0].New[1] = "HDSkins2.HDJPlant61";

  //Decorations

      //Barrel Group
      Group[1].Data[19].Mesh = "UnrealShare.BarrelM";
      Group[1].Data[19].TexNum = 1;
      //Barrel
      Group[1].Data[19].Tex[0].Old[0] = "UnrealShare.Skins.JBarrel1";
      Group[1].Data[19].Tex[0].New[0] = "HDSkins2.HDJBarrel1";

      //Wooden Box Group
      Group[1].Data[20].Mesh = "UnrealShare.WoodenBoxM";
      Group[1].Data[20].bMultiSkins = True;
      Group[1].Data[20].TexNum = 1;
      //Wooden Box
      Group[1].Data[20].Tex[0].Old[1] = "None";
      Group[1].Data[20].Tex[0].New[1] = "HDSkins2.HDJWoodenBox1";

      //Steel Box Group
      Group[1].Data[21].Mesh = "UnrealShare.SteelBoxM";
      Group[1].Data[21].bMultiSkins = True;
      Group[1].Data[21].TexNum = 1;
      //Steel Box
      Group[1].Data[21].Tex[0].Old[1] = "None";
      Group[1].Data[21].Tex[0].New[1] = "HDSkins2.HDJSteelBox1";

      //Steel Barrel Group
      Group[1].Data[22].Mesh = "UnrealShare.steelbarrelM";
      Group[1].Data[22].TexNum = 2;
      //Steel Barrel
      Group[1].Data[22].Tex[0].Old[0] = "None";
      Group[1].Data[22].Tex[0].New[0] = "HDSkins2.HDJSteelBarrel1";
      //Tarydium Barrel
      Group[1].Data[22].Tex[1].Old[0] = "UnrealShare.Skins.Jsteelbarrel2";
      Group[1].Data[22].Tex[1].New[0] = "HDSkins2.HDJSteelBarrel2";

//Inventory------------------------------------------------------------------------------------
      Group[2].DataNum = 2;

      //Dispersion Pistol Group
      Group[2].Data[0].Mesh = "UnrealShare.DPistolPick";
      Group[2].Data[0].bMultiSkins = True;
      Group[2].Data[0].TexNum = 1;
      //Dispersion Pistol
      Group[2].Data[0].Tex[0].Old[1] = "None";
      Group[2].Data[0].Tex[0].New[1] = "HDSkins2.HDDPistol1";

      //Amplifier Group
      Group[2].Data[1].Mesh = "UnrealShare.AmplifierM";
      Group[2].Data[1].bMultiSkins = True;
      Group[2].Data[1].TexNum = 1;
      //Amplifier
      Group[2].Data[1].Tex[0].Old[1] = "None";
      Group[2].Data[1].Tex[0].New[1] = "HDSkins2.HDDPistol1";

//Player Skins and Carcasses--------------------------------------------------------------------------
      Group[3].DataNum = 2;

      //Female One Group
      Group[3].Data[0].Mesh = "UnrealShare.Female1";
      Group[3].Data[0].TexNum = 2;
      //Gina Default Skin (fixes bug in Unreal)
      Group[3].Data[0].Tex[0].Old[0] = "None";
      Group[3].Data[0].Tex[0].New[0] = "HDSkins2.HDgina";
      //Gina Skin (Just in case someone set the correct skin)
      Group[3].Data[0].Tex[1].Old[0] = "UnrealShare.Skins.Gina";
      Group[3].Data[0].Tex[1].New[0] = "HDSkins2.HDgina";

      //Female One Carcass Group
      Group[3].Data[1].Mesh = "UnrealShare.Fem1body";
      Group[3].Data[1].TexNum = 2;
      //Gina Carcass Default Skin (fixes bug in Unreal)
      Group[3].Data[1].Tex[0].Old[0] = "None";
      Group[3].Data[1].Tex[0].New[0] = "HDSkins2.HDgina";
      //Gina Carcass Skin (Just in case someone set the correct skin)
      Group[3].Data[1].Tex[1].Old[0] = "UnrealShare.Skins.Gina";
      Group[3].Data[1].Tex[1].New[0] = "HDSkins2.HDgina";
}
Last edited by Lightning_Hunter on Wed May 18, 2016 2:54 am, edited 1 time in total.
For High-Res Unreal skins, click here.
Image
sn260591
OldUnreal Member
Posts: 116
Joined: Wed Aug 17, 2011 2:54 am

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

Post by sn260591 »

I was trying to replace PlayerPawns, but it's not working. Here is the current code with all my additions. The new PlayerPawns are defined at the bottom, with the group added near the top.
I checked it in single player - the texture is replaced.
Also, am I reading correctly that there is a data limit of 32? This will not work for decorations or inventory, as there are more than 32 of them.
This is not the limit, you can put a larger value.
Does a new group for projectile need to be added for this?
Yes, apparently, it is necessary to create new group.
User avatar
[]KAOS[]Casey
OldUnreal Member
Posts: 4497
Joined: Sun Aug 07, 2011 4:22 am
Location: over there

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

Post by []KAOS[]Casey »

Difficulty:

Projectiles have bGameRelevant = true and therefore won't be mutated by mutators.

You'll probably have to use class'PROJECTILENAME'.default.Skin/texture/multiskins[x] = whatever.
User avatar
Lightning_Hunter
OldUnreal Member
Posts: 279
Joined: Tue Mar 04, 2003 9:30 pm

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

Post by Lightning_Hunter »

I checked it in single player - the texture is replaced.
Did you use my code from above, or did you modify the script yourself?  I can't seem to get my code above to work.  The Gina skin remains the default, and I've checked the texture name and everything else 10 times.  I simply added the line,

Code: Select all

else if (Other.IsA('PlayerPawn'))
            g = 3;
I also changed the Group[3]; code to be a number 4, which I assumed was necessary:

Code: Select all

var struct SGroup
{
      var int DataNum;
      var SData Data[32];
} Group[4];
Difficulty:

Projectiles have bGameRelevant = true and therefore won't be mutated by mutators.

You'll probably have to use class'PROJECTILENAME'.default.Skin/texture/multiskins[x] = whatever.
This will start to get iffy, because the UT Oldskool mod replaces the projectile classes with new classes.  Furthermore, the Limbo difficulty mutator of mine replaces those classes yet again.  Is there a way to replace the projectiles by just checking for the mesh, rather than the class?  This way, the projectile class can be named anything and still be replaced as long as the mesh is "boulder1" for example.
Last edited by Lightning_Hunter on Wed May 18, 2016 8:45 pm, edited 1 time in total.
For High-Res Unreal skins, click here.
Image
User avatar
[]KAOS[]Casey
OldUnreal Member
Posts: 4497
Joined: Sun Aug 07, 2011 4:22 am
Location: over there

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

Post by []KAOS[]Casey »

Only way to do that reliably is to use SpawnNotify and not mutator

for what it's worth, 227 also reimplements spawnnotify
User avatar
gopostal
OldUnreal Member
Posts: 1005
Joined: Thu Jul 31, 2008 9:29 pm

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

Post by gopostal »

SpawnNotify is the only way to do this. And you better pre-plan how to deal with mods that are going to cause issues.

To be honest this is flirting very hard with becoming over-ambitious. Monster skins is cool but you ought to do those damn near perfect then call it a mutator. Adding the kitchen sink and trying to reskin the entire game is going to be rife with heartache and aggravation. I can see a ton of coming mod conflicts. The monsters are great, don't kill the project by making it messy. At the very least subdivide it and release the work done already on the pawns.
I don't want to give the end away
but we're all going to die one day
User avatar
[]KAOS[]Casey
OldUnreal Member
Posts: 4497
Joined: Sun Aug 07, 2011 4:22 am
Location: over there

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

Post by []KAOS[]Casey »

Only real way to work around it is make texture merged packages, but that would hit anticheat detectors. Hack hell is pretty much the only way to go sadly.
User avatar
Lightning_Hunter
OldUnreal Member
Posts: 279
Joined: Tue Mar 04, 2003 9:30 pm

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

Post by Lightning_Hunter »

SpawnNotify is the only way to do this. And you better pre-plan how to deal with mods that are going to cause issues.

To be honest this is flirting very hard with becoming over-ambitious. Monster skins is cool but you ought to do those damn near perfect then call it a mutator. Adding the kitchen sink and trying to reskin the entire game is going to be rife with heartache and aggravation. I can see a ton of coming mod conflicts. The monsters are great, don't kill the project by making it messy. At the very least subdivide it and release the work done already on the pawns.
Don't worry. I am very thorough with my projects, and would never allow anything to conflict with other mods. Also, I never bite off more than I can chew when it comes to the scale of my projects. To date, I have released every major project I ever worked on for Unreal, and none of them took more than 12 months max. I also take pride in making sure they are polished off (there will be beta testers with this before a release). You might be familiar with my track record already (mapper for the Deja Vu Map pack, Author of the RTNP Ultimate Edition, the Limbo difficulty mod, UT Classic Map Packs, and countless other tiny projects).

The Monster skins for this mod are already 100% complete to my satisfaction. A handful of decorations have already been completed by Ahaigh, so I've been working on implementing those skins (I finished 90% of it this week). I plan to at least complete the major decorations next. If I get tired of working on skins, then I will just release the project with what I've got. If someone steps up to the plate and decides to work on the weapons, then great. If not, then I will likely leave them out for the first release, and possibly work on them later. For the record, I do not plan on doing every single skin in the game.

After our discussion today, I've already pretty much decided to leave out projectile skins. It was just a quick thought anyway, since the boulder is obviously low-res when the Titans throw it. Unless someone figures out a simple hack that is sure not to cause conflicts with other mods, then I won't add the boulder skin with the Titan projectiles.
For High-Res Unreal skins, click here.
Image
sn260591
OldUnreal Member
Posts: 116
Joined: Wed Aug 17, 2011 2:54 am

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

Post by sn260591 »

I can't seem to get my code above to work.  The Gina skin remains the default, and I've checked the texture name and everything else 10 times.
Hmm, I once again checked mutator in Unreal227, and it really does not work. The texture is replaced only if the Skin parameter is empty in User.ini.
To edit the properties of the players need to use ModifyPlayer function in ut99, but Unreal227 not have this function.
Last edited by sn260591 on Thu May 19, 2016 1:49 pm, edited 1 time in total.
User avatar
han
Global Moderator
Posts: 686
Joined: Wed Dec 10, 2014 12:38 am

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

Post by han »

One idea for an ugly hack would be to use Mutators MutatedDefaultWeapon() function and iterate over all PlayerPawns (using Level.PawnList) and modify the skins.
Last edited by han on Thu May 19, 2016 2:16 pm, edited 1 time in total.
HX on Mod DB. Revision on Steam. Löffels on Patreon.
User avatar
Lightning_Hunter
OldUnreal Member
Posts: 279
Joined: Tue Mar 04, 2003 9:30 pm

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

Post by Lightning_Hunter »

That's a shame that it requires a hack to get the player skins replaced... I may just leave the high-res Gina skin out of the mod if that's the case. The other skins are not done, nor do I have plans to do them at this time.
For High-Res Unreal skins, click here.
Image
User avatar
gopostal
OldUnreal Member
Posts: 1005
Joined: Thu Jul 31, 2008 9:29 pm

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

Post by gopostal »

If all else fails you could copy the way I did it in goCostume. It's not as pretty or elegant but it works just fine online.
I don't want to give the end away
but we're all going to die one day
User avatar
Lightning_Hunter
OldUnreal Member
Posts: 279
Joined: Tue Mar 04, 2003 9:30 pm

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

Post by Lightning_Hunter »

If all else fails you could copy the way I did it in goCostume. It's not as pretty or elegant but it works just fine online.
I might take a look at it sometime.  At the very least, the Gina skin works on the carcasses; just not the player skins.

For the life of me, I can't figure out why the Knife texture won't be replaced.  The code appears fine, and the Knife is just a decoration after all.  Here is the code for it:

Code: Select all

      //Knife Group
      Group[1].Data[34].Mesh = "UnrealShare.KnifeM";
      Group[1].Data[34].bMultiSkins = True;
      Group[1].Data[34].TexNum = 1;
      //Knife
      Group[1].Data[34].Tex[0].Old[1] = "None";
      Group[1].Data[34].Tex[0].New[1] = "HDSkins2.HDJLantern1";
This is the same code I've been using for all decors that have the texture set to multiskin 1, and it's not working.  Strange.

Edit #2: Ahhhh. I had to change "var SData Data[32];" to something higher (I picked 64), otherwise the skins were maxed out at 32. Strangely enough, the last skin in the group would always load, even if it was higher than 32!
Last edited by Lightning_Hunter on Fri May 20, 2016 7:45 am, edited 1 time in total.
For High-Res Unreal skins, click here.
Image
User avatar
Lightning_Hunter
OldUnreal Member
Posts: 279
Joined: Tue Mar 04, 2003 9:30 pm

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

Post by Lightning_Hunter »

Here is some more content for people to check out. I have added these items to the completed skins list.

New Steel crate skin by me. The Wooden Crate, Barrel, and steel barrel skins also shown in this screenshot were created by Ahaigh:
[img]http://i6.photobucket.com/albums/y226/l_hunter8/SteelBox.jpg[/img]

Table & Chair Skin by me. The Knife skin was created by Ahaigh. The candles aren't done yet:
[img]http://i6.photobucket.com/albums/y226/l_hunter8/TableampChair.jpg[/img]

Amplifier Skin by Ahaigh, but modified by me:
[img]http://i6.photobucket.com/albums/y226/l_hunter8/Amplifier.jpg[/img]

Nali Fruit and Bandage skin by Ahaigh but heavily modified by me:
[img]http://i6.photobucket.com/albums/y226/l_hunter8/NaliFruitampBandage.jpg[/img]

Sludge Barrel by me:
[img]http://i6.photobucket.com/albums/y226/l_hunter8/SludgeBarrel2.jpg[/img]
For High-Res Unreal skins, click here.
Image
User avatar
Hellkeeper
Global Moderator
Posts: 3257
Joined: Wed May 21, 2008 8:24 pm
Location: France
Contact:

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

Post by Hellkeeper »

Wow, the crate and furniture are definitely the best so far, very nice!
You must construct additional pylons.
User avatar
Lightning_Hunter
OldUnreal Member
Posts: 279
Joined: Tue Mar 04, 2003 9:30 pm

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

Post by Lightning_Hunter »

Not a huge deal, but here is the pottery:

[img]http://i6.photobucket.com/albums/y226/l_hunter8/Pottery-1.jpg[/img]

[img]http://i6.photobucket.com/albums/y226/l_hunter8/Pottery-2.jpg[/img]
Last edited by Lightning_Hunter on Mon May 23, 2016 1:32 am, edited 1 time in total.
For High-Res Unreal skins, click here.
Image
User avatar
Krull0r
Global Moderator
Posts: 543
Joined: Sun Jul 01, 2007 4:07 pm

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

Post by Krull0r »

Looks awesome!

So... I don't need to create new models and skins for the decorations for my 227 map project :)

When everything is done I like to use your skins and implement them in to my 227 map pack :)

Image
User avatar
Hellkeeper
Global Moderator
Posts: 3257
Joined: Wed May 21, 2008 8:24 pm
Location: France
Contact:

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

Post by Hellkeeper »

Smirftsch wanted some high-res textures and models for the game's meshes, I'm sure he'll be interested in all of this. If someone goes as far as building better models and use your skins, then maybe you can get this included in 227 and everybody will be happy. :)
You must construct additional pylons.
User avatar
Skywolf
OldUnreal Member
Posts: 880
Joined: Sun Aug 02, 2009 12:20 pm

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

Post by Skywolf »

If the better models are just for static objects I can give it a shot. Animated things are a problem as every animation has to be re-made from scratch which on itself is a huge task but these also have to look as feel like the original. Making it a huge hassle.

Not sure what to do with sludge barrels though as those have a small animation. I can try to create a skeletal animation for it as it doesn't have to look indentical to the original but you can also just slap a particle emitter on it and it would probably look alot better while being less of a hassle.
I hate it when people ask me what my favorite game is. Just try to explain you're not talking about Unreal Tournament ::).
User avatar
Krull0r
Global Moderator
Posts: 543
Joined: Sun Jul 01, 2007 4:07 pm

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

Post by Krull0r »

I can try to create a better mesh for a skaarjwarrior and animate him.

But I'm still learning blender and creating animated meshes for unreal will be a good task for me.
I hope I can find time for this project =}
Image
User avatar
Skywolf
OldUnreal Member
Posts: 880
Joined: Sun Aug 02, 2009 12:20 pm

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

Post by Skywolf »

Attempt at making an actual round barrel :P
[img][/img]
Uses the original texture so unless the HD texture is too different it should work fine. Would like to test though.


Question though. This model is imported as .obj staticmesh. Is it possible to get detail textures to work on this aswell? Or do I have to jump through a few extra hoops and make it a .3d file for that?
I hate it when people ask me what my favorite game is. Just try to explain you're not talking about Unreal Tournament ::).
User avatar
Lightning_Hunter
OldUnreal Member
Posts: 279
Joined: Tue Mar 04, 2003 9:30 pm

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

Post by Lightning_Hunter »

Attempt at making an actual round barrel :P
[img][/img]
Uses the original texture so unless the HD texture is too different it should work fine. Would like to test though.


Question though. This model is imported as .obj staticmesh. Is it possible to get detail textures to work on this aswell? Or do I have to jump through a few extra hoops and make it a .3d file for that?
That barrel looks great! If there is going to be a mass remodeling project, let me know so I can send the new textures to you. There are some minor differences, since some of the original Unreal textures had alignment issues. I fixed these alignment issues with the new skins.

My only request is that these models not be too poly dense. With all these high-res textures and models, I could see the game slowing down on many systems. The UT99 engine is not optimized for such things after all.
For High-Res Unreal skins, click here.
Image
User avatar
Krull0r
Global Moderator
Posts: 543
Joined: Sun Jul 01, 2007 4:07 pm

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

Post by Krull0r »

Here are some screenshots of the trees I made for the 227 map project.
They also use the original uv maps und the same skin from the original unreal.


https://www.dropbox.com/s/0385ze5s40hzy ... 1.jpg?dl=0

https://www.dropbox.com/s/1dyyg9w1sah7o ... 2.jpg?dl=0

https://www.dropbox.com/s/9t97yy5osh0l6 ... 3.jpg?dl=0

https://www.dropbox.com/s/ey9agty7168jo ... 6.jpg?dl=0



Image
User avatar
Lightning_Hunter
OldUnreal Member
Posts: 279
Joined: Tue Mar 04, 2003 9:30 pm

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

Post by Lightning_Hunter »

Here are some screenshots of the trees I made for the 227 map project.
They also use the original uv maps und the same skin from the original unreal.


https://www.dropbox.com/s/0385ze5s40hzy ... 1.jpg?dl=0

https://www.dropbox.com/s/1dyyg9w1sah7o ... 2.jpg?dl=0

https://www.dropbox.com/s/9t97yy5osh0l6 ... 3.jpg?dl=0

https://www.dropbox.com/s/ey9agty7168jo ... 6.jpg?dl=0


Those trees look awesome, but the only problem is with them bending in different directions.  In some user-made levels, the trees are intended to fit in a very specific place.  The new orientation could possibly put some trees inside a wall or in an awkward position.  Nonetheless, I do wish the trees could get a better model.  Ahaigh's tree skins look pretty sweet, and I enhanced them further for my upcoming pack.
Last edited by Lightning_Hunter on Tue May 24, 2016 6:40 pm, edited 1 time in total.
For High-Res Unreal skins, click here.
Image
Post Reply

Return to “High-Res Textures for Unreal & UnrealTournament”