Brainstorming - Run-Time Paths - initial stage

Discussions about Coding and Scripting
Post Reply
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Brainstorming - Run-Time Paths - initial stage

Post by sektor2111 »

For anyone interested in some cooperation related to a mutator that can be used in XCGE environment able to spread paths around player which can be used by Bots.
For understanding is about launching Navigation during game-play. First not even ALPHA stage looks like this (based on summoning a sort of PathNode).
[attachment=0]Phaze_01_Navigbuilder.png[/attachment]
Yeah, so far WayBeacon uses these spawned nodes... They are REALLY usable.

Of course, I know - some PathLogic has been done years ago having nothing to do with pathing - excuse me but I cannot swallow trashes. For now I spent a few time building a sort of mutator (needed) in order to support summoning some nodes which can be linked into a Path Network even if map is EMPTY (okay, okay - playerstart actors are there).
The problems/questions/facts:
Will be a good thing to have it as a player tracker and dropping nodes automated if is nothing in certain range ? Perhaps it has to be stopped - lifts need special considerations as different jumpy things - I'll try to figure how to set them up. The toy probably will aim plain maps without too many dumb things. Limiting nodes at some value ? Taking first player in account (not all of them are about to build paths). Making it for OFF-Line for not messing up in servers ?
The base is done. Now I need to put the control for player - stopping background scan and restarting it as needed. A path processor and checker should do the task without forcing player to do presumptions about distances. Taking 2 vectors in account when player has lost the sight line with a last node add a node when it was seeing last time a Node (corners and such).
What will be ? A dynamic path-net based on player movement. If this thing will not be a toy for game-play perhaps will be helpful for mapping in understanding some optimal distances in a Level by looking at it in Editor and in game and comparing all stuff...
Saving paths in some INI file ? That task is a bit out of my current skills... but I'll try to figure the "how to".
I see Higor seems that he went quiet last time so I want to see which anyone else wants to participate at doing this thing.
Attachments
Phaze_01_Navigbuilder.png
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Brainstorming - Run-Time Paths - initial stage

Post by sektor2111 »

Okay, I understand your opinions. Now let me quote some occurrence:

I was playing a map with simple geometry which initially was limited, Bot was covering player until to a spot and that's all.
Because:
- MBot is wiping his ass with BlockMonsters;
- I was capable of adding real paths in map by using this tool...
MBot was able to track me being a good company. Player can activate auto-dumping nodes in poor zones, and also manually adding a node in a desired spot. Yes, is a primitive work but is a start. When player stops auto-dumping, a destination spot is automated there, by stepping away and forcing a "showpath" command, if paths have valid routes created not funky aerial links, Lamp-beacon should be usable... AYEE ! THIS tool requires XCGE else it will not only crash game, but default UT will never link paths in run-time, so only natives specific to XCGE can solve empty areas.

Purpose of this tool:
Testing and little gaming, tweaking some of those SP maps with monster supposed to patrol but it doesn't no do anything due to missing paths between PatrolPoints (noob mapping) - yeah, this from now on pathing tweaks are doable by simply spawning a "Pathnode" in desired location and... leaving it alone. This one (is a SmartNode after all) will self-connect into network updating NavigationPoint list and... without crashing game. So more Coop type tweaks are available a la 2017.

I will need to figure if adding some Lift support is constructive since way too many mappers are lost here... regarding to some explanations, to stock samples, and... gimme a break.

Setting up such thing as a patcher configurable to load a desired module (U file) for certain map ? It will be like a mutator making paths in empty cubes... Developing other nodes for different maps ?

Maybe is not that clear this thing keeping me a bit busy so I think I'll do a map - without paths (my bad on purpose) and loading mutator + a module for creating run-time paths - NOT all time, but only if game starts, LOL. Yeah, I dare to attack a PathNet while Bots are roaming.

Reversal - removing a bad node ? Maybe not right now. This really might not be needed... a bad node can be set to a higher cost and pushed up... in the desired patcher.
Spectra
Masterful
Posts: 542
Joined: Tue Jan 22, 2013 5:23 pm
Personal rank: Nullified!
Location: (X) Unable To Locate....

Re: Brainstorming - Run-Time Paths - initial stage

Post by Spectra »

sektor2111 wrote: Saving paths in some INI file ?
Throwing idea out, like saving the coordinates of spawned pathnodes as well as map file name. So next time opening the map, the mutator will check for file name and if true, then spawn the pathnodes at the saved coordinates. Perhaps a Dynamic array can come useful in this case?
User avatar
SilverSound
Adept
Posts: 341
Joined: Fri Nov 06, 2015 10:12 am
Personal rank: Curious
Location: St. Cloud, Florida

Re: Brainstorming - Run-Time Paths - initial stage

Post by SilverSound »

Spectra wrote:
sektor2111 wrote: Saving paths in some INI file ?
Throwing idea out, like saving the coordinates of spawned pathnodes as well as map file name. So next time opening the map, the mutator will check for file name and if true, then spawn the pathnodes at the saved coordinates. Perhaps a Dynamic array can come useful in this case?

Kinda like what ferbotz do. This is a fantastic idea to fix maps in real time. Could just distribute your INI and then a person who doesn't have Experience with the editor can play on a non pathed map.
"Woah what?! I wish I was recording that...."
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Brainstorming - Run-Time Paths - initial stage

Post by sektor2111 »

The thing which I don't like is handling these names and I have to see a sample about getting an ini according to map-name, or using an U file having a flexible configuration - advantage to be adjusted later.

At this moment I have a simple mutator - not a smart one able to create nodes - I did this for some tests/tweaks. It canot be automated because it will react a la Editor auto-pathing crap. Maps have various configurations which needs particular tweaking, a single rule is not helpful.

The needs and/or adds can be a lot - a sort of HuntNode self managing after spawn, Lifts, Teleporters (Higor has these in GunLoc), even Translocator stuff. And then all those "dead" cubes can be turned into a noisy place - Oh, I was almost to forgot: A really SmartAlternatePath...

Using Outer.Name + some attached string, we can spawn some TWP actor which can use an INI based on map-name as well. There... due to XCGE we can access some dynamic array exactly as that weapon loader. Advantage of such an array is that it can be updated (reduced, multiplied, etc.) The cons is making the configuration - I still believe that a static array is way better due to numbering system for not spawning nodes in wrong locations...

Without to feed "collectors" I can post only Source-Code for taking a look at it and doing some probing, or I can directly use an archive (first I need to write that) having Mutator, module involved, and Map.

I'll wait a while for figuring other Chaos testers, if nobody will show up, I'll put public update link. The rest of complains are about to be discarded - considering testing stage passed and later complaints/comments have no purpose.

After that I'll be continuing this "PathsTweakerAdder" or some name which I don't have in my mind at this time but I'll hunt something suitable...

However I have a question or a problem:
In current stage node spawned is a bit visible - for figuring position (even Bugs created), visible means it's not disturbing visibility, it is just smoother noticeable - this might be taken as a sign about tweaking available - I mean "This map without Bot Support suddenly now has Bot Support..." and completely compatible. Does it need to be visible (package required) or just Server-Side fully operational ?

Lifts can be tuned and mapped like I said even after 10 seconds or 3 minutes or whatever time... there is no problem at all. Even by doing this way you might have a total control over paths. They can be done into a more readable format like a default INI file.

Not the last chapter, inventories - we can spawn stuff and then I think we can set markers properly... Probably producing pathing packages is not such friendly task, but for whoever can do them perhaps we can find a special host for such things - even some G00gledr1ve where players will find these updating files...

Other limitations
Maps where DevPath doesn't even blink - those will not work - at least not with current engine(s).
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Brainstorming - Run-Time Paths - initial stage

Post by sektor2111 »

Bumping.
I have interesting results in some map with a few paths but no single PathNode. Level is called DM-1on1-Jimbo-HTD.
The tech:
A mutator in Prebeginplay scans Level VIA "Outer.Name" taking in account tail of name not a lot of chars (not sure if it needs more). Then by attaching to this string some dot and classname will attempt loading such a module in this case "N1-JIMBO-HTD.PathsMapper". This is a standalone actor (keypoint spawning with less issues) which will attack some stuff pre-pathing (fixing aerial location of InventorySpot assigned to shieldbelt for being reachable), and then spawning some smarty nodes. No worries I will not write 100 lines for 100 such nodes on future and neither for this task, I made another script helper mutator spawning fake nodes but logging lines which are going to be copied and compiled.
I don't know if my methods modified from GunLoc mutator are the best ever but I went to link traceable nodes in 750 UU range for each such node and reversal ONLY if a Scout (a thin guy living a short life) is able to confirm if route is navigable properly. Links seem done well, BotyMan3 confirms a good navigation without pointing routes through walls as it was in some faulted test session. So let's say that doing paths with an U package is doable, but is a bit of time exhausted - I was almost to quit due to failures, actually this result still makes me unsure about this job if is optimized correctly, we speak about small maps else generating script takes ages and at this moment I did only PathNodes. Then I will need Lift type stuff which will be probably another challenge...

Some Purpose: I know a good map where author specified to NOT be modified. OKAY, I think I can fix it in run-time right now without screwing file and making it playable, in a more powerful patcher tweaking all except geometry (that's not a problem after all) using ACTORS spawned in Level and nothing else + natives coming with XCGE V20.

Edit: I was thinking at this:
SilverSound wrote:Could just distribute your INI and then a person who doesn't have Experience with the editor can play on a non pathed map.
Doesn't have too much logic. Whoever has no experience with Editor for sure doesn't know sh!t about "Bot Pathing" - said with quotes because I do paths for Pawns not only for Bots, like I said in my DM I'm using paths for hunting purpose I'm getting tired of being found by Bot but I don't know where the heck is the turd; purpose of such INI to get messy with bad edits by guessing is None. We speak about advanced users for this task not about guessing, this is not guessing at all.
What is about ? Why this task do requires some extra experience ? Because paths in game are not visible like in Editor, the half of job here is like driving blind, that's why you need to understand navigation criteria without to guess, placing pathnodes where they have to be, I did this from game, I did not have to change them except 2 pieces around redeemers - way out was unreachable in first stage.
How do I got the good location ? I went on "PathNode" creating a "report", putting report in some empty text file, then reporting a new location. By opening later the script I checked for first report location assigned to some node and I changed it with the second location provided by second report - node was moved then. It did not help, so I had to create another two nodes immediately nearby Redeemers, by adding those nearby nodes I got required links. Yes, they have to be tested because map might have another deal - it depends on geometry and how much space is there... default GunlocScout did not help... I had to adjust that fat ass... as the required shrinking deal. Actually it was looking like a walking stick for having a "reachable" confirmation.
Beside this an INI will require a lot of custom things to take in account - I'm not sure how many users will handle it properly. By sharing a file doing good paths everyone can play map properly if all spots are navigable, there is no purpose for changes.
User avatar
SilverSound
Adept
Posts: 341
Joined: Fri Nov 06, 2015 10:12 am
Personal rank: Curious
Location: St. Cloud, Florida

Re: Brainstorming - Run-Time Paths - initial stage

Post by SilverSound »

When I said that, I meant it a lot like Ferbots handles extra paths on maps. It has a folder with mapnames. It just loads the file and places paths on the map. That's what I meant.
"Woah what?! I wish I was recording that...."
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Brainstorming - Run-Time Paths - initial stage

Post by sektor2111 »

Yes, not only handling new paths but creating ones in empty spots. Difference in this toy, it won't use unreadable pathing files, it will use an U file - a package that can be easily decompiled/read and modified/compiled back - server-side in net play. The package getting called will do this task itself in presence of XCGE and will crash for no XCGE loaded cases - logically only XCGE can deal with paths modifiers so using it without XCGE is a dumb idea.

First sample being ready I will execute another one - Lifts and/or doors in stage for a different sample. I think I even found another map with empty lifts and not many weaponry. It's time for another stuff or I should get some DM-3072 map without paths over a lift, and neither in some spots where previously I found lost Bots camping and doing nothing. Advantages are coming by using unidirectional paths for not messing up routes. I hope to not have troubles here...
Chris
Experienced
Posts: 134
Joined: Mon Nov 24, 2014 9:27 am

Re: Brainstorming - Run-Time Paths - initial stage

Post by Chris »

You should use the binary serializer of XCGE and create a simple file protocol. It will be A LOT more efficient and faster than using INI files, and you're also going to be able to benefit from ability to serialize structures in dynamic sizes which is not supported with INI files through UScript. Then you can come up with a new file protocol as such:
File extension.. Uhm '.path' ? Or something...
|< NumLocations (4 bytes) >|< Locations( 12 * NumLocations ) >| (Locations is a dynamic sized stream of location vectors with the size mentioned in the parenthesis) 12 bytes is the size of a vector, or 3 floats

You can squeeze any kind data you want in there actually.
So an example:

| < 5 > | < X = 1004.12324, Y = 4512.241332, Z = 2135.672344 > | < X = 1004.12324, Y = 4512.241332, Z = 2135.672344 > | < X = 1004.12324, Y = 4512.241332, Z = 2135.672344 > | < X = 1004.12324, Y = 4512.241332, Z = 2135.672344 > | < X = 1004.12324, Y = 4512.241332, Z = 2135.672344 > | EOF

serialized, the file will look like this in hexadecimal:
05 00 00 00
44 7B 07 E3 45 8D 01 EE 45 05 7A C2
44 7B 07 E3 45 8D 01 EE 45 05 7A C2
44 7B 07 E3 45 8D 01 EE 45 05 7A C2
44 7B 07 E3 45 8D 01 EE 45 05 7A C2
44 7B 07 E3 45 8D 01 EE 45 05 7A C2

As you can see the first 4 bytes tells the number of vectors stored in the file. Followed by a bunch of 4 byte floats, with 3 of them in a chunk making up a 3D vector (I divided them with new line tokens)

You can then save the file with the same filename as the map it belongs to, but with .path instead of .unr and distribute them with the mutator.

Here is an example of how you would load and save the file

Code: Select all


var BinarySerializer File; //Current file

function LoadFile
{
       local int NumLocations, i;
       local vector CurrentLocation;

       File = new BinarySerializer; // Just an example, this can be called in another place depending on context..
       File.OpenFileRead( "MapName.path" );  //Open the file
       File.SerializeInt(NumLocations); //NumLocations now stores value 5
       
       for(i = 0;i<NumLocations; ++i)
       {
              File.SerializeVector(CurrentLocation);
              //Store the vector somewhere else... Spawn a waypoint with this location or whatever.
       }
       File.CloseFile();
       File.Destroy();
}

function SaveFile
{
       local int NumLocations, i;
       local vector CurrentLocation;

       NumLocations = 5; //This should be taken from somewhere else and not stored in a local variable.

       File = new BinarySerializer; // Just an example, this can be called in another place depending on context..
       File.OpenFileWrite( "MapName.path" );  //Save the file
       File.SerializeInt(NumLocations); //Save number of locations to file
       
       for(i = 0;i<NumLocations; ++i)
       {
              CurrentVector = vect(1004.12324,  4512.241332, 2135.672344); //Should point to the current vector you wish to save.
              File.SerializeVector(CurrentLocation);
       }
       File.CloseFile();
       File.Destroy();
}

This is easier than it looks! I can help out with this if needed.

PS: Technically you don't need to save the number of vectors in the file, you can also just keep on reading a vector until File.Position == File.TotalSize()
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Brainstorming - Run-Time Paths - initial stage

Post by sektor2111 »

For lower coding skills I prefer an U file, In U file I can attack other bad stuff from maps where permissions are not granted for fooling around. Good... After finishing some stuff I'll show you a not so complex way in "patching" a map a la sektor2111.

Let's take a look at "BEFORE"

Code: Select all

Log: Level is Level MH-BirdBrainedResearch.MyLevel
XC_Engine: Bringing Level MH-BirdBrainedResearch.MyLevel up for play (100)...
XC_Engine: Engine function replacements done (0.000149 second)
XC_Engine: Conditional function replacements loaded (0.086306 second)
XC_MonsterHunt: Found XC_Engine version 20
ScriptLog: InitGame: ?Game=XC_MonsterHunt.MonsterHunt?Mutator=NsUTw3.NsUTw,LessTele3.LessTele,MHBotyMan4.MeBot?Name=Nelsona?Class=Botpack.TFemale1?team=255?skin=FCommandoSkins.daco?Face=FCommandoSkins.Tanya?Voice=BotPack.VoiceFemaleOne?OverrideClass=
ScriptLog: Pawn Notify Initialized.
ScriptLog: Base Mutator is MH-BirdBrainedResearch.EMonsterBase0
ScriptLog: Mutators NsUTw3.NsUTw,LessTele3.LessTele,MHBotyMan4.MeBot
ScriptLog: Add mutator NsUTw3.NsUTw
NsUTw0: >> looking for XC_Engine...
NsUTw0: >> found XC_Engine Version 20. Proceed tweaks...
NsUTw0: - Tweaks Done!
ScriptLog: Add mutator LessTele3.LessTele
ScriptLog: MH-BirdBrainedResearch.LessTele0  has been loaded and started.
ScriptLog: LessTele0 has added 12 additional PlayerStart types...
ScriptLog: 16 0
ScriptLog: Add mutator MHBotyMan4.MeBot
ScriptLog: MHBotyMan4.MeBot version 4.00 is being loaded...
ScriptLog: MeBot0 has found MonsterHunt game-type loaded.
ScriptLog: Warning: MH-BirdBrainedResearch.Mover67 is BumpOpenTimed.  Bots don't understand this well - use StandOpenTimed instead!
ScriptLog: Warning: MH-BirdBrainedResearch.Mover10 is BumpOpenTimed.  Bots don't understand this well - use StandOpenTimed instead!
Init: Initialized moving brush tracker for Level MH-BirdBrainedResearch.MyLevel
Log: Spawning new actor for Viewport WindowsViewport0
ScriptLog: Team 255
ScriptLog: Login: Nelsona
Log: Possessed PlayerPawn: TFemale1 MH-BirdBrainedResearch.TFemale1
DevAudio: Galaxy SetViewport: WindowsViewport0
ScriptWarning: SludgeBarrel MH-BirdBrainedResearch.SludgeBarrel0 (State UnrealI.SludgeBarrel.Animate:000D) LoopAnim: Sequence 'Swirl' not found in Mesh 'BRifle2Pick'
Log: Bird12 flew out of the world!
Log: Bird14 flew out of the world!
Log: Bird17 flew out of the world!
ScriptWarning: SteelBarrel MH-BirdBrainedResearch.SteelBarrel3 (State UnrealShare.SteelBarrel.Animate:0008) PlayAnim: Sequence 'Normal' not found in Mesh 'WoodenBoxM'
ScriptWarning: SteelBarrel MH-BirdBrainedResearch.SteelBarrel4 (State UnrealShare.SteelBarrel.Animate:0008) PlayAnim: Sequence 'Normal' not found in Mesh 'WoodenBoxM'
DevMusic: Load music: Music Mech8.Mech8
ScriptWarning: PrecipitationGenerator MH-BirdBrainedResearch.PrecipitationGenerator0 (Function MH-BirdBrainedResearch.PrecipitationGenerator.Timer:00D2) Accessed None
ScriptWarning: PrecipitationGenerator MH-BirdBrainedResearch.PrecipitationGenerator0 (Function MH-BirdBrainedResearch.PrecipitationGenerator.Timer:00DA) Attempt to assigned variable through None
ScriptWarning: PrecipitationGenerator MH-BirdBrainedResearch.PrecipitationGenerator0 (Function MH-BirdBrainedResearch.PrecipitationGenerator.Timer:00E6) Accessed None
ScriptWarning: PrecipitationGenerator MH-BirdBrainedResearch.PrecipitationGenerator0 (Function MH-BirdBrainedResearch.PrecipitationGenerator.Timer:00EE) Attempt to assigned variable through None
ScriptWarning: PrecipitationGenerator MH-BirdBrainedResearch.PrecipitationGenerator0 (Function MH-BirdBrainedResearch.PrecipitationGenerator.Timer:00FA) Accessed None
ScriptWarning: PrecipitationGenerator MH-BirdBrainedResearch.PrecipitationGenerator0 (Function MH-BirdBrainedResearch.PrecipitationGenerator.Timer:0102) Attempt to assigned variable through None
ScriptWarning: PrecipitationGenerator MH-BirdBrainedResearch.PrecipitationGenerator0 (Function MH-BirdBrainedResearch.PrecipitationGenerator.Timer:010E) Accessed None
ScriptWarning: PrecipitationGenerator MH-BirdBrainedResearch.PrecipitationGenerator0 (Function MH-BirdBrainedResearch.PrecipitationGenerator.Timer:0124) Accessed None
ScriptWarning: PrecipitationGenerator MH-BirdBrainedResearch.PrecipitationGenerator0 (Function MH-BirdBrainedResearch.PrecipitationGenerator.Timer:012C) Attempt to assigned variable through None
....
And then we can take a tour in "CURRENT STAGE" (I will continue here...) Just for the fun around old times when I was bugged at extremes...
New log:

Code: Select all

Log: Level is Level MH-BirdBrainedResearch.MyLevel
XC_Engine: Bringing Level MH-BirdBrainedResearch.MyLevel up for play (100)...
XC_Engine: Engine function replacements done (0.000145 second)
XC_Engine: Conditional function replacements loaded (0.088031 second)
XC_MonsterHunt: Found XC_Engine version 20
ScriptLog: InitGame: ?Game=XC_MonsterHunt.MonsterHunt?Mutator=NsUTw3.NsUTw,LessTele3.LessTele,MHBotyMan4.MeBot,NavAdder.NavAdder?Name=Nelsona?Class=Botpack.TFemale1?team=255?skin=FCommandoSkins.daco?Face=FCommandoSkins.Tanya?Voice=BotPack.VoiceFemaleOne?OverrideClass=
ScriptLog: Pawn Notify Initialized.
ScriptLog: Base Mutator is MH-BirdBrainedResearch.EMonsterBase0
ScriptLog: Mutators NsUTw3.NsUTw,LessTele3.LessTele,MHBotyMan4.MeBot,NavAdder.NavAdder
ScriptLog: Add mutator NsUTw3.NsUTw
NsUTw0: >> looking for XC_Engine...
NsUTw0: >> found XC_Engine Version 20. Proceed tweaks...
NsUTw0: - Tweaks Done!
ScriptLog: Add mutator LessTele3.LessTele
ScriptLog: MH-BirdBrainedResearch.LessTele0  has been loaded and started.
ScriptLog: LessTele0 has added 12 additional PlayerStart types...
ScriptLog: 16 0
ScriptLog: Add mutator MHBotyMan4.MeBot
ScriptLog: MHBotyMan4.MeBot version 4.00 is being loaded...
ScriptLog: MeBot0 has found MonsterHunt game-type loaded.
ScriptLog: Add mutator NavAdder.NavAdder
NavAdder:  Mutator loaded.
NavAdder: Map's name is: MH-BirdBrainedResearch
NavAdder: Map's name length is: 19 characters.
NavAdder: Cutting Name...
NavAdder: Looking for a class called > INEDRESEARCH.PathsMapper
ScriptLog: MonsterWaypoint0 spawned at -1280.000000,-88.000000,-216.000000
ScriptLog: MonsterWaypoint1 spawned at -2264.000000,392.000000,296.000000
ScriptLog: MonsterWaypoint2 spawned at 1496.000000,488.000000,-1120.000000
ScriptLog: MonsterWaypoint3 spawned at -8466.000000,7000.000000,-2546.000000
ScriptLog: Precipitation Attack
BirdBrainedResearch: Connected PathNode15 and LiftExit3
BirdBrainedResearch: Connected Teleporter0 and PathNode78
NavAdder: Found and loaded pathing module...
Init: Initialized moving brush tracker for Level MH-BirdBrainedResearch.MyLevel
Log: Spawning new actor for Viewport WindowsViewport0
ScriptLog: Team 255
ScriptLog: Login: Nelsona
Log: Possessed PlayerPawn: TFemale1 MH-BirdBrainedResearch.TFemale1
DevAudio: Galaxy SetViewport: WindowsViewport0
ScriptLog: Scout Test Connect SmartNode17 and SmartNode20
DevMusic: Load music: Music Mech8.Mech8
ScriptLog: Mover MH-BirdBrainedResearch.Mover2 has been set for group Mover2
ScriptLog: Mover MH-BirdBrainedResearch.Mover3 has been set for group Mover3
ScriptLog: Mover MH-BirdBrainedResearch.Mover4 has been set for group Mover4
ScriptLog: MonsterCounter0 is using Friendly mode : True with TeamTag XC_MH
ScriptLog: Mover MH-BirdBrainedResearch.Mover5 has been set for group Mover5
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover5
ScriptLog: Mover MH-BirdBrainedResearch.Mover6 has been set for group Mover6
ScriptLog: Mover MH-BirdBrainedResearch.Mover7 has been set for group Mover7
ScriptLog: Detected & Resolved a Mover Triggered Once With ReturnWhenEncroach >>  Mover11
ScriptLog: Mover MH-BirdBrainedResearch.Mover14 has been set for group Mover14
ScriptLog: Mover MH-BirdBrainedResearch.Mover13 has been set for group Mover13
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover13
ScriptLog: Mover MH-BirdBrainedResearch.Mover15 has been set for group Mover15
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover15
ScriptLog: Mover MH-BirdBrainedResearch.Mover16 has been set for group Mover16
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover16
ScriptLog: Mover MH-BirdBrainedResearch.Mover17 has been set for group Mover17
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover17
ScriptLog: Mover MH-BirdBrainedResearch.Mover18 has been set for group Mover18
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover18
ScriptLog: Mover MH-BirdBrainedResearch.Mover19 has been set for group Mover19
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover19
ScriptLog: Mover MH-BirdBrainedResearch.Mover20 has been set for group Mover20
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover20
ScriptLog: Mover MH-BirdBrainedResearch.Mover21 has been set for group Mover21
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover21
ScriptLog: Mover MH-BirdBrainedResearch.Mover23 has been set for group Mover23
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover23
ScriptLog: Mover MH-BirdBrainedResearch.Mover26 has been set for group Mover26
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover26
ScriptLog: Mover MH-BirdBrainedResearch.Mover27 has been set for group Mover27
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover27
ScriptLog: Mover MH-BirdBrainedResearch.Mover28 has been set for group Mover28
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover28
ScriptLog: Mover MH-BirdBrainedResearch.Mover31 has been set for group Mover31
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover31
ScriptLog: Mover MH-BirdBrainedResearch.Mover32 has been set for group Mover32
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover32
ScriptLog: Mover MH-BirdBrainedResearch.Mover48 has been set for group Mover48
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover48
ScriptLog: Mover MH-BirdBrainedResearch.Mover49 has been set for group Mover49
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover49
ScriptLog: Mover MH-BirdBrainedResearch.Mover50 has been set for group Mover50
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover50
ScriptLog: Power A.I. has spawned.
ScriptLog: A Path Identifier has been spawned for Nelsona
ScriptLog: Mover MH-BirdBrainedResearch.Mover57 has been set for group Mover57
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover57
ScriptLog: Mover MH-BirdBrainedResearch.Mover59 has been set for group Mover59
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover59
ScriptLog: Mover MH-BirdBrainedResearch.Mover61 has been set for group Mover61
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover61
ScriptLog: Mover MH-BirdBrainedResearch.Mover63 has been set for group Mover63
ScriptLog: Mover MH-BirdBrainedResearch.Mover63  is crusher. Demanding Pawn kill.
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover63
ScriptLog: Mover MH-BirdBrainedResearch.Mover63  will have delay...
ScriptLog: Mover MH-BirdBrainedResearch.Mover71 has been set for group Mover71
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover71
ScriptLog: Detected & Resolved a Mover to not be turned back without to suffer a big damage >>  Mover67
ScriptLog: Mover MH-BirdBrainedResearch.Mover67 will be activated by any Pawn.
ScriptLog: Mover MH-BirdBrainedResearch.Mover24 has been set for group Mover24
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover24
ScriptLog: Test Carcass Class'MonsterHunt.RockTentacleCarcass'
ScriptLog: Mover MH-BirdBrainedResearch.Mover60 has been set for group Mover60
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover60
ScriptLog: Mover MH-BirdBrainedResearch.Mover70 has been set for group Mover70
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover70
ScriptLog: Detected & Resolved a Mover to not be turned back without to suffer a big damage >>  Mover72
ScriptLog: Mover MH-BirdBrainedResearch.Mover72  will have delay...
ScriptLog: Mover MH-BirdBrainedResearch.Mover72 will be activated by any Pawn.
ScriptLog: TelPathsHacker0 blocking Teleporter11 with URL buffybabe1
ScriptLog: TelPathsHacker0 blocking Teleporter2 with URL buffybabe1
ScriptLog: TelPathsHacker0 blocking Teleporter8 with URL skaarjmommy
ScriptLog: TelPathsHacker0 blocking Teleporter29 with URL mercslimshady
ScriptLog: TelPathsHacker0 blocking Teleporter30 with URL mantasanta1
ScriptLog: TelPathsHacker0 blocking Teleporter31 with URL bruteboottelez125
ScriptLog: TelPathsHacker0 blocking Teleporter32 with URL mantalord124
ScriptLog: TelPathsHacker0 blocking Teleporter33 with URL idontgivea
ScriptLog: TelPathsHacker0 blocking Teleporter34 with URL skaarjrainshower
ScriptLog: TelPathsHacker0 blocking Teleporter37 with URL skaarjrainshower
ScriptLog: TelPathsHacker0 blocking Teleporter43 with URL guntele1
ScriptLog: TelPathsHacker0 blocking Teleporter44 with URL BossShortcut
ScriptLog: Mover MH-BirdBrainedResearch.Mover75 has been set for group Mover75
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover75
ScriptLog: Mover MH-BirdBrainedResearch.Mover76 has been set for group Mover76
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover76
ScriptLog: Mover MH-BirdBrainedResearch.Mover74 has been set for group Mover74
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover74
ScriptLog: Detected & Resolved a Mover to not be turned back without to suffer a big damage >>  Mover10
ScriptLog: Mover MH-BirdBrainedResearch.Mover10 will be activated by any Pawn.
ScriptLog: Mover MH-BirdBrainedResearch.Mover35 has been set for group Mover35
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover35
ScriptLog: Mover MH-BirdBrainedResearch.Mover36 has been set for group Mover36
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover36
ScriptLog: Mover MH-BirdBrainedResearch.Mover37 has been set for group Mover37
ScriptLog: Detected & Resolved a Mover to not be cheated by GRAB command >>  Mover37
ScriptLog: Detected & Resolved a Mover to not be turned back without to suffer a big damage >>  Mover39
ScriptLog: Mover MH-BirdBrainedResearch.Mover39  will have delay...
Ahah I think is different right now, I was reading somewhere: "No shizzle ma nizzle".
Else let me see, some dudes were properly helping to unlock basic weaponry, and I believe they "shizzle ya nizzle" in a very gorgeous format.
[attachment=0]ShizzlingNizzling.png[/attachment]
Bot reached at ripper in boring area where colliding birds is really annoying. And... this is Original MAP. Duh, probably it's time for some relaxed BT as long as I got tired of being corroded. Good story, good ambience, crapped setup. I'm gonna look what is doable at BirdBrained and BerserkStinger - there I guess an XC_Actor will land in area...
Edit: Back from work
It would be a nice thing having a sample using another methods.
So far what I did was useful in debugging - I used report and another script generator logging stuf ready for copy-paste. I was tweaking in the same time some bad actors (eternal problem of changing meshes for actors animating null crap), also some setup look really against bot which I happily ruined.
What people don't know is the bot when go to an Inventoryspot but has desirability for an item unheld will try forever to get a weapon locked under a glass making Bot to run like a stupid with no success. Do I need to rewrite a bot for such a dumb task checking another bunch of traces ?
Pathing here was not only a job for adding new nodes.
a) I went for InventorySpot attack:
- their burial as cadavers deeply into the ground;
- removing paths passing through them as Translocdest does;
- un-linking them from their Inventory, they are no longer goals;
To do (default Bot maybe...) some timed jumpers for making them to move out from those holes after getting items:
- jumping in random directions ?
- jumping to Routecache[1] direction ?
- temporary giving a higher "MaxStepHeight" ?
b) Teleporters blocking them in wild areas:
- block teleporter with some stuff colliding Bots;
- locking paths as well because are not useful for A.I.;
Tweaking involves a lot of custom things and that's why I went to a package task, but I'm agree with other solutions if are more handy.
Attachments
ShizzlingNizzling.png
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Brainstorming - Run-Time Paths - initial stage

Post by sektor2111 »

I was wondering when Karma will enter the stage. Fore mentioned map contains zones with no navigation, DevPath is refusing any deal. If paths added so far are working like a charm, in ZoneInfo12 navigation is NONE :mad2: .
My voice from head asking: "What were you even talking about ? Monster using paths to hunt player ? What paths ? Those returning NONE and no RouteCache at all ? That's why MH have no paths because monsters are a threat ? In which maps ? You guys, get the fuck out of UT, seriously... :evil: "
X times I was ordering Bot to cover me. They went all time retarded in that area. Now I did a few tests, except stuff immediate reachable, paths seeking is a myth there... :thudown:
So... in order to make some noise I will need Navigation without Navigation stuff, like in other garbled things a la 2015-2016. I have to rethink objectives and passing A.I. to other "pushers".
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Brainstorming - Run-Time Paths - initial stage

Post by sektor2111 »

Bump.
Module with headaches for this map seems ready, but I'm not 100% sure about stability. Due to problems found, I went to a wild compilation around paths so the source-code cannot be compiled normally.
Bots were acting properly, movers were cute, teleporters were not bugging anybody, main patching module seems pretty much ready. The secondary chapter is adding in package map another small or medium U package with a few tweaked decorations - even lights. I intend to setup a few things on some empty walls and even dark areas just for a different looking trying to improve game feeling - even if are changes for people to go scared why map looks that different from a normal place.

I think I like Barbie's idea with a map-patcher mutator but I'll do that in my way...
After testing this thing a couple of times probably I'll post this little toy with a small description.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Brainstorming - Run-Time Paths - initial stage

Post by sektor2111 »

Bump
Client-Side packs automated.
Not as Off-Topic. Purpose from now of this said "NavAdder" is not only tweaking paths, it can be used for multiple tweaks, including as "completions", these going in Packages Map only when map is being loaded and not permanent packages.
Let's see original start location (tweaks are available here and there not only around start)
[attachment=1]BB_Before.jpg[/attachment]

And then by using this Server-Side mutator, map is like this:
[attachment=0]BB_After.jpg[/attachment]

Yes, mutator is located in server, but it is able to add packages and to spawn classes from packages, so they are going visible in Net games. Packages will have some name like map but adding "P_" as prefix - these are loaded in redirects.
I'm looking at other poor empty cubes for other decorating options. I'm not sure if I'll find a solution for tweaking textures - not for current case but in other dumb Levels.
Edit:
Perhaps this has to be moved somewhere in a patcher discussion.
Attachments
BB_After.jpg
BB_Before.jpg
User avatar
Gustavo6046
Godlike
Posts: 1462
Joined: Mon Jun 01, 2015 7:08 pm
Personal rank: Resident Wallaby
Location: Porto Alegre, Brazil
Contact:

Re: Brainstorming - Run-Time Paths - initial stage

Post by Gustavo6046 »

I did an A* pathfinder, if that is relevant. The heuristics are:

Code: Select all

VSize(node.Location - target.Location)
At the moment the destination can only be a BreadcrumbII (a better and working version - still doesn't work with NavigationPoints since they're dynamic), but I'll later implement the possible usage of the closest Breadcrumb to an Actor (or even spawn a Breadcrumb with an AttachInfo to every Actor that is Relevant to Pathfinding), and the debugging arrows disappear when their center is not looked at, since they are just DrawScaled actors with a MiniTrace mesh.

Since they are not part of the main NavigationPoint network, my main use with that will be to code smarter bots, that learn the level progressively, by adding unexplored BreadcrumbII actors in its view to a list of recently explored crumbs, and all of its already explored linked crumbs to a list of old crumbs.

Every recently explored actor (i.e. that is not new) should be searched for in the Explore state. Inventory locations are also stored and can be used for camping and other purposes. Spots with little space can also serve as good hiding spots, for "stealthy" camping.

But that is just a dream. that is... yet! I do have progress, already:

Image
FNYCmPv2urA
"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
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Brainstorming - Run-Time Paths - initial stage

Post by sektor2111 »

Thanks for attention, however, I have some operational stuff here:
viewtopic.php?f=15&t=11630&p=102326#p102320
Check maps in cause with and without mutator... te, he...

Except fixing geometry, these rest of options are 98%, fixable, Maps returning to playground.
I will go busy doing other updates for good looking maps where DevPath works properly else I will need again stupid "pushers"...
Post Reply