Splitting MonsterHunt packages?

Discussions about Coding and Scripting
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Post by Higor »

Right now I'm aiming at replicating original behaviour while fixing some things.
Once all maps get to start we'll get into stage 2 which is rewriting some logic.

PD: Placing monsters in a map isn't rocket science, you wouldn't see this kind of noobassery in any SP or decent map.
Monsters are supposed to be filtered by mutators the same way everything else, including the OddsOfAppearing chance.
And no, the base mutator won't do that, the gametype will.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Splitting MonsterHunt packages?

Post by sektor2111 »

Okay, I'm working here (I have Monsters, btw), some of your solutions looks nice to me, however I won't load Bot code More than needed. A Karmic actor will manage A.I. as long as Attraction is being called only if Bot is not stuck somewhere else NONE attack. Simply Bot has to be under threat by external factors and leaving it to decide combat as it wants.
Else after working at MBot I could see when Attraction is being called - in NavigationPoint/s and Not during movement and has insane cycles during attack, so I will balance things awaking monsters with any matter around PLAYERS - ANY, and keeping a decent rate of attack without fluctuations. No more Levels where a Monster is sleeping at 400 UU from Player... its just stupid.
A.I. tweaker will react properly... Foreach in attraction will be used for managing objectives else it won't mess an useless load. Also A.I. state based tool will manage counting hunters and Monsters using... PawnActors iterator - is just XC Stuff. Right now I'm rechecking weaponry to not forget fixing Dispersion sh!te. It will take a few days because I have a job time consuming and less time for MH.
Then, I'll check your solutions, too... I'm curious.
In that INI XC_MonsterHunt is being spawned by XC_Engine so it doesn't need a check for XC. Actor will scan Game-Type and will trigger a package mapping U file. In U file some tweaks are operated, removing original BaseMutator and loading other one and game functions replaced, End, WayPoint wrapped, etc, etc.
At final point if I cannot solve all goals then... I'll subclass MH into a child game with everything rewritten... Aside I'm gonna implement Tournament type monster - no one will move a finger until game is being started, even Skaarj will not hold any weapon if game is not being started. Everyone will sleep properly if no player gets into stage.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Post by Higor »

Moved the difficulty scaler to a part after all mutators have done their job, and the mutators themselves can override whether they want MH to apply said scaling, now totally unrelated to shadow.
MonsterArena 'should' be playable, check how the respawn timers are handled in MonsterHuntArena class as well, I don't want a mutator-fest controlling every single little aspect but if that solution is too restrictive I can move that to the MonsterBase mutator instead.
Also the Monster vs Bot tasker should be disabled on XCGE 19.

========
Speaking of OLWeapons now.
Did some mappers directly add OLWeapons references into their maps? I'm itching to keep that into a separate package but I'm not sure whether it's a safe thing to do.

========
Edit:
Did you notice you can continuously change skin color now?
I need to get rid of the team-change messages tho...
User avatar
Chamberly
Godlike
Posts: 1963
Joined: Sat Sep 17, 2011 4:32 pm
Personal rank: Dame. Vandora
Location: TN, USA
Contact:

Re: Splitting MonsterHunt packages?

Post by Chamberly »

Higor wrote:Did you notice you can continuously change skin color now?
I need to get rid of the team-change messages tho...
Yeah. Those are good for those who want to change clothe every time they get dirty (there is always that one person that does this). :loool:

But the shield belt stays red. :(

----
Higor wrote:Speaking of OLWeapons now.
Did some mappers directly add OLWeapons references into their maps? I'm itching to keep that into a separate package but I'm not sure whether it's a safe thing to do.
I do remember I had several file mismatches on this. Maybe this would give you an idea.
Image
Image
Image Edit: Why does my sig not work anymore?
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Splitting MonsterHunt packages?

Post by sektor2111 »

Higor wrote: Also the Monster vs Bot tasker should be disabled on XCGE 19.
This is what I did in MH2 - No more attraction Bot crap.
if (!bXCGE) ... Player is hated, enemy, and Monster will attack.
else "SeePlayer(APlayer)" forced called, letting creatures to do what they want, all happening in "Player's" range 1600 . I have figured that Old PlayerCanSeeMe seems to send some focus when becomes True so I'm cloning that way for ALL Monsters and players in that range even if they are turned with butt at "player" - any PLAYER non-monster. This has a reaction dependent on tick-rate, if game starts mooing cycles are rare, if tickrate stay solid is being called more often, so monsters for Bots and Humans have similar reactions + TakeDamage random Boost - monster damaged proceed to attack and telling to other nearby monsters to do this as well (also counting mad monsters in order to clamp attack in decent limits - else ...)- THEY are friends after all. I was interested about this way a few years ago but nobody did it - every advantage went only at players - mainly in all MH grounds, nobody improved any A.I. and I'm serious here.

Edit

Code: Select all

		For ( E=EndList ; E!=None ; E=E.NextEnd )
			if ( E.bCollideActors && E.bInitiallyActive && AttractTo(aBot, E) )
			{
				NewDest = aBot.MoveTarget; //Jumping outside a ForEach iterator is very ugly, avoid it
				break;
			}
This will break attack if Boss is nearby End and has to be killed for activating End, simply Bot will not navigate here because has no purpose. Even if code sounds more logic, this is not an answer.
So Buttons won't get a trigger operation from Bot because they were "borked", End is not a goal because is not active. What everything else which was operational has to be screwed ? Everything is a LinkedList spree. All right, I go to solve things via XC_MonsterHunt game-type, child of MonsterHunt with cheap hacks...
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Post by Higor »

Point taken.
Movers and other stuff attempt to find their event instigator in order to force attraction towards those, a similar thing can be done here to ensure MonsterEnd sends bots to it.
Have you noticed the event system related to waypoints?

Also, how is performance for non-expanded MH when compared to 503?


EDIT:
In the meantime this 4-liner prototype already fixes MH breaking your hud team color config. :loool:

Code: Select all

//**********************************************
// MonsterHUD
// Using SiegeIV improvements here - Higor
class MonsterHUD expands ChallengeTeamHUD
	config(User);
	
//Do not use team colors
simulated function HUDSetup(canvas canvas)
{
	Super(ChallengeHUD).HUDSetup(canvas);
}
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Splitting MonsterHunt packages?

Post by sektor2111 »

Related to performance issues solved VIA rewriting and ReplaceFunction. Each 3 seconds hunters and monsters are counted not often, not rare, just at the same game-rate. Bot code... setup a GameGoal ONCE depending on navigability, They act to goal if no enemy, simple stuff letting Bot to work itself with no pushing - removed monster iterations CanSee bla bla.
By using AddtoTeam and ChangeName replication based something funky popped into HUD - Using pawnlisting or foreach through pawns did not happen, else I might forgot to check MinHealth and MaxHealth and "Skill" - added later.
Now I have to see a cheap solution toward a Point nearby GameGoal - looks like this is a need else some maps won't really work as in v504 where I was a bit inspired.
Okay, Waypoint is addressing ONLY in order of objectives (do not push closed doors - never randomized) simply a wild touch is being discarded. Once touched, for figuring/debugging, waypoint visited becomes translucent else tester won't know when Bot accomplished mission. All my known buttons (and forgotten ones) are working well in old way. Attraction code is based on a single goal without iterating enemies and seeking best Point. Also touching can be done by... Players - probably some UTDMT will mock game completing objectives if a dumb idea pops into Level. The only problem in some Levels is Path-Net load...

An iterator more nasty is a deal with lost projectiles in "Killed".

Now I have to think well if I need a Karmic A.I. setup in a slow rate and a few things toward inventories - I quit idea to leave Bot with 10 health alone, because nasty things are happening in some maps where inventories nearby are behind closed doors (LiandriInvasion - ripper pulse closer to second spawn location made Bot idiot pushing a closed door) - that was one of my bad moves in 504 but fixable with a cheap thing (each bot with 20 health mooing around will receive a healthPack for recovering the hunt in 504 at some time interval - server-side - here in XC I don't need that - it's time to help Bot because player got help around 13 years). Karma will engage Player for having an enemy too so not even player will rush Waypoints before to KILL monsters - I'm thinking at end as well... eh...

OldPistol aka dispersion is fixed toward Bot usage - do not attempt an alternate fire with less than 10 ammo in combat - will stuck weapon - solved.
InitGame feature - reading configuration and if some mutator actor is being declared (3 pieces) they are loaded before BaseMutator - for whoever needs a very early game move. Example, some Map-Vote, might be loaded there BEFORE BaseMutator and PreBeginPlay - I'm not sure if do helps but... future methods might take place, and code doesn't hurt even if won't be used. Else game-speed starts smoother ONCE and not twice as BotPack does. Next chapter implementing Player control for Levels with Speed screwed for aligning them at server's speed.

Monsters are not doing nothing and are not showing up if game is not started - if game starts they enter the stage following what they have to do - no more Invisible Skaarj weaponry, so we won't iterate nothing if no player is there, it's useless to spawn things and to make noise with no purpose.
To do: disabling triggers and factories as well (like in MH2) and enabling them only if anyone starts game else they don't need anything.
Game is ended ONCE not 4 times.

Old Weapons replacements - FIXING ALL of them at RateSelf and making them TournamentWeapons not UIWeapons. Pawn must be informed how strong is with empty weapon and loaded weapon, UIWeapons class is a dumb thing. PLAYER decides if it do needs decals and NOT SERVER - that's stupid.
UT weapons have decals configurable through game GUI and not VIA server pushing client.
After some revisions and getting some free time I'll try to recall what I forgot.

AANd... probably I'll keep out AkimboMag if I won't figure a good deal with animations and HandlePickupQuery. Quadshot probably will be a Flak (has the same ammo after all - except that manure from OLweapons - incompatible with regens and mooing a constant reload when A.I. uses it - I know the bug but I think I'll ignore this thing). Lemme guess, I'm not that interested to add regenerators...

XC_MonsterHunt as a child of MonsterHunt.MonsterHunt seems to be a good response at this moment.
User avatar
Barbie
Godlike
Posts: 2792
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: Splitting MonsterHunt packages?

Post by Barbie »

sektor2111 wrote:Game is ended ONCE not 4 times.
I tried that by changing

Code: Select all

function EndGame(string Reason)
into

Code: Select all

singular function EndGame(string Reason)
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Post by Higor »

Added Rock Tentacles, and a generic fix for tentacles carcasses, now you can put any skin on a tentacle and the carcass won't look like a default tentacle.

MonsterHunt HUD gets hidden when spectating a monster, should take care of some log spams.
The player status has been upgraded, can identify old Jump Boots, Shield Belts and generic Armors with damage protection, the Shield Belt's charge is represented by the % of the shield belt being drawn on top of your status icon (0 to 150), Boss pawns have their status doll's armor properly clipped.
Status icons from non player/bot generic pawns should also be able to be drawn (as long as the variables have the 'StatusDoll', 'StatusBelt' names), the status doll textures are cached and only retrieved every time the player changes view target.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Splitting MonsterHunt packages?

Post by sektor2111 »

@Barbie - speaking about one of my previous typo mistakes "!" I simply did a ReplaceFunction of MonsterEnd Trigger, now it should help maps with big end triggered and having hunters in radius.
old code:

Code: Select all

function TriggerObjective()
{
	local	MonsterHunt	MH;
	local	pawn		P;

	MH = MonsterHunt(Level.Game);
	if (MH != None)
		MH.EndGame("Hunt Successfull!");
	else
		log("MonsterEnd - TriggerObjective - MH == None");
}
Switched to

Code: Select all

function TriggerObjective()
{
	local	MonsterHunt	MH;
	local	pawn	P;

	if (!Level.Game.bGameEnded) //LOL - Will end only if is not ended
	{
		MH = MonsterHunt(Level.Game);
		if ( MH != None )
			MH.EndGame("Hunt Successfull!");
		else
			log("MonsterEnd - MH :: None"); //only a line for testing/checking - if it needs to.
	}
}
Being still a work in progress, at bottom probably I need such things as well:

Code: Select all

Disable('Touch');
Disable('Trigger');
SetCollision(False,False,False);
SetCollisionSize(0,0);
in hoping to not crash at collision related things.
Let me me guess, in this way mutators witnessing End game will not get triggered 4 times, right ? Right.
I'm not only saying the we can move faster in this controller and this is one of goals, but I guess if we move better is more helpful. You have seen well: Each monster killed = a new recount. WHY ? They can be counted each 3 seconds automated and nobody will die for that. Will prevent a shit-load of iterations when 20 monsters are dying from a Redeemer, because if you track codes from Pawn up to ScriptedPawn, death means a bunch of iterations and the only missing fart was Berserker's insanity from a mind on drugs. Else CountMonster chapter might suffer a delay post "killed" to not iterate immediately by chance, letting controller to breath normally - yep, I'm, gonna add this prevention delaying 1-2 seconds CountMonsters - HUD update doesn't hurt if gets data a bit latter, rushing really doesn't make sense.
How about MH2 ? Well, old trigger is rammed as above to not log me dumb things and my trigger went removed - all actors brought by my mod are removed shortly after game ended - I was thinking at whatever tool using some iterations post game ended to not have so many actors in account so actors added by my Mod are removed as well. I'm really thinking to no longer turn False Items replaced by destroying them - just disabling them... and maybe resetting them after ending game leaving map in original at server-travel process... eh... my mad man's things...
Aside probably right now I have a better deal at doors "TriggerControl" which will be a must have for me - NsUTw2 will be one of tools loaded in InitGame process... so game-controller will prioritize other needs than BaseMutator which will be only... a mutator and nothing like a God of Mutators. The real Gods are NsUTw2 and MapVote which are general server needs. After this New MH spree probably I'll develop another way of starting server - or just polishing things a bit.
User avatar
Barbie
Godlike
Posts: 2792
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: Splitting MonsterHunt packages?

Post by Barbie »

sektor2111 wrote:

Code: Select all

if (!Level.Game.bGameEnded) //LOL - Will end only if is not ended
Although I have this also in my version of MonsterEnd I recently noticed that the line "!!!!!!!!!!!!!!! CALC END STATS" appeared twice in server's log what means that TournamentGameInfo.CalcEndStats() was called twice. That was the reason why I tried that "simulated" modifier for EndGame() of my MonsterHunt (expands TeamGamePlus). But I cannot reproduce this, not even with 2 identical MonsterEnds at same location with 5 Players in their collision cylinder while the MonsterEnds are activated (OtherTriggerTurnsOn).

Test map attached.
Attachments
TestMultipleMonsterEnds.7z
Map with 2 identical MonsterEnd
(2.04 KiB) Downloaded 74 times
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Splitting MonsterHunt packages?

Post by sektor2111 »

It does occur in maps similar to type MonsterHuntArena - Hard to see ? All players are under trigger, when trigger becomes active all 4 Touchers are triggering The End. A sample of such map is BoomBoomBridge whatever Warlord kill version, probably others with such a big trigger are reacting the same. It's not mapping fault, it's CODING fault here, and they might be more, unseen by me yet. As you see MonsterWayPoint is not wrapped, End is not wrapped and codes far from being optimized properly... Just relax, this stupid coding is everywhere not only in UT, that's why everything works so nice...
Edit: Cough, XC expanded game will take a while speaking about inventories. By creating others fixed they have to be renamed - ALL - else they will mess with Original MH and... won't work properly - first issue found Combo with OLASMD - not operational.
Or I have to Call Package starting with Letter A before M from MH as Epic have Boulder1 duplicates - BotPack is in account not U packages, hmm... Will take some time for testing everything, projectiles job are not always a deal with ReplaceFunction - client side things... probably I'm not gonna waste time again with MH, some map doing might be a better goal.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Post by Higor »

Old MH clients can communicate with prototype MH servers now.
Still lots of missing resources though.
The way lives are handled in the old MH is absolutely bizarre so I won't be adding 1:1 parity in the prototype, expect to join and see 0 lives in your counter if you're playing with the prototype on a old MH server.

Try to keep the discussion within pointing out old problems, or fixing ones in the prototype.
PD: If you haven't realized, I slipped up a stat recovery system... expect a complex scoreboard.
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: Splitting MonsterHunt packages?

Post by papercoffee »

Higor wrote: expect a complex scoreboard.
If you need a nice UI graphic for that. :mrgreen: I'm eager to do this.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Splitting MonsterHunt packages?

Post by sektor2111 »

Higor wrote: The way lives are handled in the old MH is absolutely bizarre so I won't be adding 1:1 parity in the prototype
That one I'm guessing resulted from a mix related to LastManStanding game but pretty... dumb thing. I found once a server where that thing was a bit functional and then all player died was out - congrats for empty server... I was absolutely out of interested for clarifying that in next period of time. Else, for me counting how many stupid pupae have been killed really makes no sense, I could see only a competition in who is having bigger score rather than having fun fighting against monsters and team working, running and gunning like idiots in all maps like with hair burning.
Post Reply