Mapping - misc settings, decorations, borks prevention

Development assistance and tutorials here.
Nelsona
Posts: 1372
Joined: Sat Sep 30, 2017 5:03 am

Re: Mapping - misc settings, decorations, borks prevention

Post by Nelsona » Thu Jul 30, 2020 5:33 am

Bumping through settings
In next hours I'll try to setup a small speech using Translations, trying to explain the settings required to be done correctly in the case of TrapSpringer actor. I could see a nominated and sampled as great or such best map by community, but it was WRONG set over there. TrapSpringer used was a guess work heading nowhere as long as this actor with bad setup is self removed - you won't find it in map anymore during run-time.
Stock map DM-Pressure IS NOT A SAMPLE - don't follow that thing because that's a dumb thing done by Epic's league. BotPack coming later in their patches was auto-hacking TrapSpringer or else that map would never work as intended - speaking about Bots trapping player. By any matter you can look at Script for this class and figure what does it do as long as UScript is more an english thing than a programming thing.

TrapSpringer - explanations and use.

TrapSpringer aims to attract artificial intelligence aka Bot to a point where the destruction of an enemy based on a trap is initiated other way than the direct use of the equipped weapon or its indirect use. TrapSpringer is found in the Inventory subclasses by browsing actors classes. This actor needs for the correct functioning the usage of two parameters representing a name used as a Tag by other actors participating in the above-mentioned trap.

TrapTag is first name that needs to be configured for this TrapSpringer.
TrapTag will be found as a Tag in an actor that is destructive to the enemy. This actor as a direct trap can be:
- A zone aka ZoneInfo sub-classes - killing zones when are triggered;
- a Mover that must be the floor for the victim - exactly, this mover is the floor itself;
- a Trigger that does any kind of effect or that doesn't do much.

TriggerTag is the second requirement for configuration of TrapSpringer.
Usually this Trigger is placed right next to TrapSpringer to be touched by the player activating the trap - Bot or Man. It is delegated to the Event that causes the indirect elimination of the enemy.

In other hand, TrapSpringer itself can cause an event when it is touched which can make it even more useful causing various effects. Whether or not we use this Internal Event, we MUST have TriggerTag configured because otherwise this actor will not work properly, it usually self-destructs when something is wrong.
Anyone who understands English from UScript realizes what's going on below. If not, we use an English to English translation to be more explicit as possible.

Code: Select all

	if ( (TrapTag == '') || (TriggerTag == '') )
	{
		Destroy();
		return;
	}
And the translation of the code: If we don't have a valid TrapTag or we don't have a valid TriggerTag I'm destroying myself and stop executing next codes from function.

By adding these actors without completing fields properly, nothing major happens at A.I. Level.

How does it work ?
The bot has a special interest in all sorts of things by calculating the desire for them. At the time of this calculation, TrapSpringer checks to see if anyone is trapped. If there is and we have a Bot at a distance of less than 1600 UU, the desire becomes stronger to come to this TrapSpringer and which causes major damage to the one who is trapped, operated by the involved Trigger or even with the direct participation of the TrapSpringer actor when the Bot is instigating these.
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -

Nelsona
Posts: 1372
Joined: Sat Sep 30, 2017 5:03 am

Re: Mapping - misc settings, decorations, borks prevention

Post by Nelsona » Sun Feb 07, 2021 5:15 pm

Bump. Subject: In mapping assets.
Another things which can be in account for stability and quality in playing a more or less uncommon map is using normal packages instead of buggers.
As long as last time I could see addiction for "Monster-Player" things, let's say that I don't like the objects soup generated by these lousy assets in COPY-PASTE style. Sudden skin problems, spam logs with trash, etc. If we talk about ideas to discuss around these issues in the newer patch for UT, replies are for persons and pointing GitHub and nothing ON-TOPIC with regard to brainstorming generally. Okay, I think I will leave away discussions from there about "patch" which was causing issues not ONLY for ONE player/admin and let's see what is about in our stage - think if something else similar suits your needs - we can expect mismatch versions but this is not a stock and conforming them is not exactly compatible, but this is not a critical problem.

Monster can not only react properly, but it can be a Team Monster in all the way, it's not needed anything else than leaving it alone, using Team byte, the skin comes itself automated. Yes, RedFlag from CTFGame does this "automated change" by Epic, showing the "How To".
Team_Color_Blue.png
Team_Color_Blue.png (821.95 KiB) Viewed 424 times
All teams are a bit colored like that. What's the point in all these thingies ? Something simple, using MyLevel with good packages forgetting dumb copies "re-coded" or "ported" or... trashed it's the more suitable term. Such a map will prevent player to load or hunt a needed file which can be badly screwed up. Instead of making a map with external assets, it can be a simple file having everything inside. Future changes will embed changes in future maps and so on.

The fact is, I can share around packages for MyLevel but a wide range of mappers are not really know and neither willing to learn how to do things other way and packages are going to be spread in multiple copies continuing to make a mess in community. I kindly recommend you to ask help when it comes to such assets about using them in map out of extra-files and pain.

For maps already done, if it exists one in M.G.S server - packages are going to be updated as long as their integrity it's under doubts.
MapGarbage builder in these last versions is having a MyLevel importer for making life easier - if you need packages for testing how goes the importing task, let me know...
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -

Nelsona
Posts: 1372
Joined: Sat Sep 30, 2017 5:03 am

Re: Mapping - misc settings, decorations, borks prevention

Post by Nelsona » Sat Feb 20, 2021 7:40 am

Continuing through...
A not very known local crusher and random game breaker: CloudZone.
This zone attempts to assign a kill for Pawn boosted (having an enemy here...) and falling into this zone. So far it's interesting. The most "interesting" it's what it does when actor it's not Pawn but decals, effects, CTFFlag, etc. Frankly is more than mindless...

Code: Select all

	if ( Other.IsA('Pawn') )
		Pawn(Other).Died(Pawn(Other).Enemy, 'Fell', Location);
	else
		Other.Destroy();
Mapper is asking then for a replacement. Let's see what else can be used and being more "domestic" that original toxic hazard code.
You can expand CloudZone into a MyLevel package and class "OtherCloudZone". Code Content that needs compiled and added is something like this:

Code: Select all

class OtherCloudZone expands CloudZone;

simulated event ActorEntered( actor Other )
{
	if ( Other.bDeleteMe )
		return;
	if ( Other.bIsPawn && !Other.bHidden ) //Faster than mother "IsA"
	{
		if ( Pawn(Other).Health > 0 )
			Pawn(Other).Died(Pawn(Other).Enemy, 'Fell', Location);
		return; //And... DONE!
	}
	if ( Inventory(Other) != None || Carcass(Other) != None )	// We, Bots, are not wanting to die today,
	{								// lol, trying to gain these potential reachable junks (Inventory)
		Other.LifeSpan = 1.5;
		return;
	}
	if ( Projectile(Other) != None )
	{
		Other.Destroy();
		return;
	}
/*
	Trashed 2021 - You won't do a destroy just like that...
	if ( Other.IsA('Pawn') )
		Pawn(Other).Died(Pawn(Other).Enemy, 'Fell', Location);
	else
		Other.Destroy();
*/
}
No worries, code it's already tested.
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -

Post Reply