Sprite Edits

Search and find cool skins and models, or introduce your own ones!
Post Reply
User avatar
ANUBITEK
Adept
Posts: 261
Joined: Sun Dec 28, 2014 1:10 am
Location: Anubitek

Sprite Edits

Post by ANUBITEK »

EDIT:
Standing and walking directional sprites of Fei Fong Wong from XenoGears available now! I got a little busy with life so the running and jumping sprites still need to be ripped, but I shall get those out as soon as possible. I'll post screens of the sprites when I also have something to show them off. Ultimately these sprites are intended as place holders for my own mod, but I thought I'd share them because why not.
Attachments

[The extension utx has been deactivated and can no longer be displayed.]

Last edited by ANUBITEK on Sat Sep 16, 2017 10:17 am, edited 3 times in total.
<<| http://uncodex.ut-files.com/ |>>

Code reference for UGold, UT99, Unreal2, UT2k3, UT3
Additional Beyond Unreal Wiki Links
wiki.beyondunreal.com/Legacy:Console_Bar
wiki.beyondunreal.com/Exec_commands#Load
wiki.beyondunreal.com/Legacy:Exec_Directive#Loading_Other_Packages
wiki.beyondunreal.com/Legacy:Config_Vars_And_.Ini_Files
wiki.beyondunreal.com/Legacy:INT_File
JackGriffin
Godlike
Posts: 3774
Joined: Fri Jan 14, 2011 1:53 pm
Personal rank: -Retired-

Re: Texture test pls?

Post by JackGriffin »

Just tested, not going to take the time to screenshot and convert. It works fine. BTW, you can google whatever you are looking for and add the term "sprite sheet" to get a sheet of animation frames to use. I did that for multiple animated textures I've made and it turns out well.
So long, and thanks for all the fish
User avatar
ANUBITEK
Adept
Posts: 261
Joined: Sun Dec 28, 2014 1:10 am
Location: Anubitek

Re: Texture test pls?

Post by ANUBITEK »

Thanks mate, I appreciate it. I'll upload the end result because I bet people would like to see this when it is finished. However, and this may sound rude. . . But go on Google and look for XenoGears sprite sheets. The majority of them are incomplete because sprite rips from the game are apparently pretty difficult to do through emulation and using this tool, that I forget the name of, per screen. Apparently it is like:
> For each frame of gameplay take a screenshot
> Pause the game
> Shrink ePSXe
> Pull up the tool
> Change color palette until it looks right
> Save and put all of the sprites together (because they come in pieces per sprite, per sheet so you'd have like 30 sets of legs here and 20 sets of heads there)
> Repeat.

I would definitely have done that by now if I had found Fei's full sprite sheet online. However Google also personalizes search results so I could just be not seeing results that actually have a full Fei Fong Wong sprite sheet. That being said, it is kinda pointless now as I have the running/walking/idle/jumping animations of at least 2 directions already ripped with only needing to do 3 more. Plus the sprites are just placeholders until I can pay a sprite artist to make new sprites as these are just to be used as a template.
<<| http://uncodex.ut-files.com/ |>>

Code reference for UGold, UT99, Unreal2, UT2k3, UT3
Additional Beyond Unreal Wiki Links
wiki.beyondunreal.com/Legacy:Console_Bar
wiki.beyondunreal.com/Exec_commands#Load
wiki.beyondunreal.com/Legacy:Exec_Directive#Loading_Other_Packages
wiki.beyondunreal.com/Legacy:Config_Vars_And_.Ini_Files
wiki.beyondunreal.com/Legacy:INT_File
JackGriffin
Godlike
Posts: 3774
Joined: Fri Jan 14, 2011 1:53 pm
Personal rank: -Retired-

Re: [in progress] Fei Sprites

Post by JackGriffin »

Never apologize for adding information brother. I knew you had already seen sprite sheets seeing your choice in what to use ;) I mentioned that more for google searches that ran into this thread. BTW your texture looks not so good in-game. It really needs better res even at half scale.
So long, and thanks for all the fish
User avatar
Gustavo6046
Godlike
Posts: 1462
Joined: Mon Jun 01, 2015 7:08 pm
Personal rank: Resident Wallaby
Location: Porto Alegre, Brazil
Contact:

Re: Texture test pls?

Post by Gustavo6046 »

LannFyre wrote:([...] you'd have like 30 sets of legs here and 20 sets of heads there)
WRONG! Since each head had 2 legs and 2 arms and 1 body, if you have 20 sets of head, you'd need 40 sets of legs and arms & 20 set of body.

Do the math dawg! ;)
"Everyone is an idea man. Everybody thinks they have a revolutionary new game concept that no one else has ever thought of. Having cool ideas will rarely get you anywhere in the games industry. You have to be able to implement your ideas or provide some useful skill. Never join a project whose idea man or leader has no obvious development skills. Never join a project that only has a web designer. You have your own ideas. Focus on them carefully and in small chunks and you will be able to develop cool projects."

Weapon of Destruction
User avatar
papercoffee
Godlike
Posts: 10443
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

Re: [in progress] Fei Sprites

Post by papercoffee »

Gustavo6046 wrote:
LannFyre wrote:([...] you'd have like 30 sets of legs here and 20 sets of heads there)
WRONG! Since each head had 2 legs and 2 arms and 1 body, if you have 20 sets of head, you'd need 40 sets of legs and arms & 20 set of body.

Do the math dawg! ;)
Do the research dawg! :wth:

That's not how sprites work. Believe me, I know what I'm saying.
User avatar
Gustavo6046
Godlike
Posts: 1462
Joined: Mon Jun 01, 2015 7:08 pm
Personal rank: Resident Wallaby
Location: Porto Alegre, Brazil
Contact:

Re: [in progress] Fei Sprites

Post by Gustavo6046 »

papercoffee wrote: Do the research dawg! :wth:

That's not how sprites work. Believe me, I know what I'm saying.
Do the mercy dawg! 8) You are getting too hot angry, you will OVERHEAT!

Anyway, back to the serious. I know that atleast in Doom the sprites aren't divided, they are one only and they are rotational -- the same effect I am trying to achieve:

Code: Select all

//=============================================================================
// RotationalSpriteActor.
//=============================================================================
class RotationalSpriteActor expands Actor;

var(Sprites)	Texture	FrontSprite, FrontRightSprite, RightSprite, RearRightSprite, RearSprite, RearLeftSprite, LeftSprite, FrontLeftSprite;
var				byte	ClientSpriteNum;

function PreBeginPlay()
{
	DrawType = DT_Sprite;
}

replication
{
	reliable if (role == ROLE_Authority)
		FrontSprite, FrontRightSprite, RightSprite, RearRightSprite, RearSprite, RearLeftSprite, LeftSprite, FrontLeftSprite;
	unreliable if (role == ROLE_Authority)
		ClientSpriteNum;
}

function Tick(float Delta)
{
	local Rotator ViewAngle;

	Super.Tick(Delta);
	//do the math

	//placeholder

	//end math estimation of life B-)

	ClientSpriteNum = (ViewAngle.Roll * 8) / 360

	switch ClientSpriteNum:
		case 1:
			Sprite = FrontSprite;
		case 2:
			Sprite = FrontRightSprite;
		case 3:
			Sprite = RightSprite;
		case 4:
			Sprite = RearRightSprite;
		case 5:
			Sprite = RearSprite;
		case 6:
			Sprite = HearLeftSprite;
		case 7:
			Sprite = LeftSprite;
		case 8:
			Sprite = FrontLeftSprite;
		default:
			log('Invalid ClientSpriteNum: ' + string(ClientSpriteNum) + ' Destroying actor...');
			Destroy();
}

"Everyone is an idea man. Everybody thinks they have a revolutionary new game concept that no one else has ever thought of. Having cool ideas will rarely get you anywhere in the games industry. You have to be able to implement your ideas or provide some useful skill. Never join a project whose idea man or leader has no obvious development skills. Never join a project that only has a web designer. You have your own ideas. Focus on them carefully and in small chunks and you will be able to develop cool projects."

Weapon of Destruction
User avatar
Dr.Flay
Godlike
Posts: 3347
Joined: Thu Aug 04, 2011 9:26 pm
Personal rank: Chaos Evangelist
Location: Kernow, UK
Contact:

Re: [in progress] Fei Sprites

Post by Dr.Flay »

Gustavo6046 wrote:
papercoffee wrote: Do the research dawg! :wth:

That's not how sprites work. Believe me, I know what I'm saying.
Do the mercy dawg! 8) You are getting too hot angry, you will OVERHEAT!
Then stop annoying him, and as speak politely as you would in someone else's home.
Think about it like this;
Many of us here are at least twice your age (I am 4x as old as you), with at least your entire life-span modding with UEd (Ouch I just felt a whole lot older).
This game is older than you are, and admittedly no-one here knows all there is to know about it, but Papercoffee knows a lot more than you or me.

Learn from me as an Aspergers powered freak. This is something I only learned in my 30s.
When other people are saying things that are wrong or opposite to what I believe, 2 things are possible;
1) I am missing a vital piece of info, so there is a gap in my knowledge that I must now fill.
2) They are missing a vital piece of info, so there is a gap in their knowledge that they must now fill.

By being rude and leaping in with "WRONG!...blah,blah,blah " people do not care if I am right or wrong.
I must find the contextual evidence online, so that I can post proof/reference shared by other people.
However if I cannot find any supporting evidence for this situation, it often leads me to realise that the "fact" I know, does not apply here or is not relevant.

UEd and other development engines often have quirks and oddities that are not shared between them.
Whenever you move to a new engine, throw the rule-book out the window and start a new one.
User avatar
papercoffee
Godlike
Posts: 10443
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

Re: [in progress] Fei Sprites

Post by papercoffee »

Gustavo6046 wrote: Do the mercy dawg! 8) You are getting too hot angry, you will OVERHEAT!
You have to put out more get me angry.
I'm just mildly annoyed that you were disrespectful towards LannFyre, without a reason.
User avatar
ANUBITEK
Adept
Posts: 261
Joined: Sun Dec 28, 2014 1:10 am
Location: Anubitek

Re: [in progress] Fei Sprites

Post by ANUBITEK »

Boom mates, updated the OP. Now you can download the full standing/walking sprites, no running or jumping sprites quite yet. Read the OP and check for download link if you want the sprites. But first, take note: the sprites look bad. Like really bad. The reason they do is because XenoGears pieces together each sprite to animate each part like how Terraria animates its characters. The sprites are pieced together via animation skeleton, but each sprite is scaled according to camera position. Even if this was possible, for the love of all that is good I would never do this. It is a cheaper animation method and probably an ultimately good decision, but god it makes sprite ripping a FUn task.
<<| http://uncodex.ut-files.com/ |>>

Code reference for UGold, UT99, Unreal2, UT2k3, UT3
Additional Beyond Unreal Wiki Links
wiki.beyondunreal.com/Legacy:Console_Bar
wiki.beyondunreal.com/Exec_commands#Load
wiki.beyondunreal.com/Legacy:Exec_Directive#Loading_Other_Packages
wiki.beyondunreal.com/Legacy:Config_Vars_And_.Ini_Files
wiki.beyondunreal.com/Legacy:INT_File
User avatar
Gustavo6046
Godlike
Posts: 1462
Joined: Mon Jun 01, 2015 7:08 pm
Personal rank: Resident Wallaby
Location: Porto Alegre, Brazil
Contact:

Re: [in progress] Fei Sprites

Post by Gustavo6046 »

I tried not to being disrespectful with LannFyre. I told her that Doom had sprites animated as a entire just to fill his/her knowledge, um... "database", and I just was surprised that at least somewhere, there were animated SPRITES and PARTIAL SPRITES after 1996 when Quake came and inutilized sprites.

Sorry man, I didn't want this to happen...
"Everyone is an idea man. Everybody thinks they have a revolutionary new game concept that no one else has ever thought of. Having cool ideas will rarely get you anywhere in the games industry. You have to be able to implement your ideas or provide some useful skill. Never join a project whose idea man or leader has no obvious development skills. Never join a project that only has a web designer. You have your own ideas. Focus on them carefully and in small chunks and you will be able to develop cool projects."

Weapon of Destruction
User avatar
ANUBITEK
Adept
Posts: 261
Joined: Sun Dec 28, 2014 1:10 am
Location: Anubitek

Re: [in progress] Fei Sprites

Post by ANUBITEK »

Hey Gustavo, is it cool if I use what you posted and I modify it a bit? I want to see about putting it into a manager that adjusts based on a camera's position.
<<| http://uncodex.ut-files.com/ |>>

Code reference for UGold, UT99, Unreal2, UT2k3, UT3
Additional Beyond Unreal Wiki Links
wiki.beyondunreal.com/Legacy:Console_Bar
wiki.beyondunreal.com/Exec_commands#Load
wiki.beyondunreal.com/Legacy:Exec_Directive#Loading_Other_Packages
wiki.beyondunreal.com/Legacy:Config_Vars_And_.Ini_Files
wiki.beyondunreal.com/Legacy:INT_File
User avatar
Gustavo6046
Godlike
Posts: 1462
Joined: Mon Jun 01, 2015 7:08 pm
Personal rank: Resident Wallaby
Location: Porto Alegre, Brazil
Contact:

Re: [in progress] Fei Sprites

Post by Gustavo6046 »

LannFyre wrote:Hey Gustavo, is it cool if I use what you posted and I modify it a bit? I want to see about putting it into a manager that adjusts based on a camera's position.
Sure! Anyone is free to use my code :3

(despite mostly being more advanced like this:)

Code: Select all

//=============================================================================
// Breadcrumb.
//=============================================================================
class Breadcrumb expands Actor;

var		BreadcrumbPath	Pathes;
var()	float			MaxBreadcrumbDistance;
var		bool			bFindingPath;

function BreadcrumbPath AppendPathes(BreadcrumbPath A, BreadcrumbPath B)
{
	A.AddPath(B);
	return A;
}

function UpdatePathes()
{	
	local Breadcrumb BC;
	local Breadcrumbpath NewPath;
	local Breadcrumbpath Current;

	foreach AllActors(class'Breadcrumb', BC)
		if ( BreadcrumbReachable(BC) )
			for ( Current = Pathes; Current != None; Current = Current.Next )
				if ( Current.Next == None )
				{
					NewPath = Spawn(class'BreadcrumbPath', self);

					NewPath.Destination = BC;
					Current.Next = NewPath;

					break;
				}
}

function bool BreadcrumbReachable(Breadcrumb Other)
{
	return FastTrace(Other.Location) && -1024 < Other.Location.Z - Location.Z && Other.Location.Z - Location.Z < 256 && VSize(Other.Location - Location) < MaxBreadcrumbDistance;
}

function BreadcrumbPath FindPathToBreadcrumb(Breadcrumb Destination, BreadcrumbPath Path)
{
	local BreadcrumbPath Current;
	local BreadcrumbPath NewPath;
	local BreadcrumbPath BP;

	for ( Current = Pathes; Current.Next != None; Current = Current.Next )
		if ( Current.Destination == Destination )
			return AppendPathes(Path, Current);
		
		else 
			if ( !BreadcrumbInPathes(Current.Destination, Path) )
				return Current.Destination.FindPathToBreadcrumb(Destination, AppendPathes(Path, Current));

	return None;
}

function PostBeginPlay()
{
	UpdatePathes();
}

function bool BreadcrumbInPathes(Breadcrumb Current, BreadcrumbPath Pathes)
{
	local BreadcrumbPath BP;

	for ( BP = Pathes; BP.Next != None; BP = BP.Next )
		if ( BP.Next == Current )
			return true;

	return false;
}

function BreadcrumbPath PathAt(BreadcrumbPath Root, int Index)
{
	local int i;
	local BreadcrumbPath BP;

	for ( BP = Root; BP.Next != None; BP = BP.Next )
	{
		if ( i == Index )
			return BP;

		i++;
	}

	return none;
}

function Leaving(Pawn Other, BreadcrumbPath Next, Breadcrumb Destination)
{
	Next.ControlEntrance(Other, Destination);

	Destination.Entering(Other, Next, Destination);
}

function Entering(Pawn Other, BreadcrumbPath Origin, Breadcrumb Destination);

auto	state()	Activated	{}
	state()	Deactivated	{}

Code: Select all

//=============================================================================
// AutoRocket.
//=============================================================================
class AutoRocket expands UT_SeekingRocket;

var()	float	SeekAcceleration, SeekSpeed, TargetAcquiringRadius, WallAvoidSpeed, WallPredictionFactor, WallAvoidSlowdown;
var		Pawn	User;
var		int		Slowdown;
var		bool	bFoundUser;

replication
{
	reliable if ( Role == ROLE_Authority )
		User,
		Slowdown,
		bFoundUser;
}

simulated event Vector EstimateLocation(Actor Other)
{
	return Other.Location + (Other.Velocity / VSize(Velocity)) * 0.5;
}

simulated event HomeAt(Actor Other)
{
	Velocity *= VSize(Velocity cross (EstimateLocation(Seeking) - Location)) * SeekAcceleration;
	Acceleration = (EstimateLocation(Seeking) - Location) * SeekSpeed;
}

simulated event Actor WillHitWall(optional out Vector Location, optional out Vector OutNormal)
{
	return Trace(Location, OutNormal, Self.Location + Velocity * WallPredictionFactor);
}

simulated event bool CheckSeekable(Pawn Other, Pawn FireAgent)
{
	if
	(
		Other != None
		&&
		(
			FireAgent == None
			||
			(
				FastTrace(Other.Location)
				&& Other != FireAgent
				&& !Other.IsInState('Dying')
				&&
				(
					(
						ScriptedPawn(FireAgent) != None
						&& ScriptedPawn(FireAgent).AttitudeTo(Other) != ATTITUDE_Friendly
					)
					||
					(
						ScriptedPawn(Other) != None
						&& ScriptedPawn(Other).AttitudeTo(FireAgent) != ATTITUDE_Friendly
					)
					||
					(
						PlayerPawn(FireAgent) != None
						&& Other.AttitudeToPlayer != ATTITUDE_Friendly
						&& Other.PlayerReplicationInfo.Team != FireAgent.PlayerReplicationInfo.Team
					)
					|| Other.PlayerReplicationInfo.Team != FireAgent.PlayerReplicationInfo.Team
				)
			)
		)
	)	
	{
		return True;
	}

	return False;
}

function BeginPlay()
{
	if ( Owner == None )
		return;

	if ( Pawn(Owner) != None )
		User = Pawn(Owner);

	else
		User = Pawn(Owner.Owner);

	if ( User == None )
		return;
}

simulated function SetTarget(Pawn Other)
{
	Seeking = Other;

	Log(self@"is now seeking after:"@Other);
}

simulated event Timer()
{
	local Pawn P;
	local Pawn Target;
	local Actor A;
	local Vector WallNorm, WallLoc;

	SetRotation(Rotator(Velocity));

	A = WillHitWall(WallLoc, WallNorm);

	if ( A != None && ( LevelInfo(A) != None || !CheckSeekable(Pawn(A), User) ) && WallNorm dot (Velocity + Acceleration) < 0.9 )
	{
		Velocity /= WallAvoidSlowdown;
		Slowdown *= WallAvoidSlowdown;
		Acceleration -= WallAvoidSpeed * 2 * (WallNorm dot Velocity) * WallNorm;
	}

	else if ( Slowdown > 1 )
	{
		Velocity *= Slowdown;
		Slowdown = 1;
	}

	else bFoundUser = True;

	if ( Seeking != None && ( Pawn(Seeking) == None || !Pawn(Seeking).IsInState('Dying') || ( ScriptedPawn(Seeking) == None && User != None && ScriptedPawn(Seeking).AttitudeTo(User) == ATTITUDE_Friendly ) ) )
	{
		HomeAt(Seeking);
	}

	else
	{
		foreach RadiusActors(class'Pawn', P, TargetAcquiringRadius)
		{
			if ( Target == None || VSize(P.Location - Location) < VSize(Target.Location - Location) )
			{
				Target = P;

				if ( CheckSeekable(Target, User) )
					SetTarget(Target);
			}
		}
	}
}


Also, don't mind what I did ages ago. I was a d#@k back then :P

Also, if you are trying to find for something to de-sheet sprite sheets, then use ShoeBox. Just a tip. It works perfectly for me :)
"Everyone is an idea man. Everybody thinks they have a revolutionary new game concept that no one else has ever thought of. Having cool ideas will rarely get you anywhere in the games industry. You have to be able to implement your ideas or provide some useful skill. Never join a project whose idea man or leader has no obvious development skills. Never join a project that only has a web designer. You have your own ideas. Focus on them carefully and in small chunks and you will be able to develop cool projects."

Weapon of Destruction
Post Reply