Splitting MonsterHunt packages?

Discussions about Coding and Scripting

Re: Splitting MonsterHunt packages?

Postby Higor » Mon Jan 09, 2017 5:09 pm

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.
Higor
Godlike
 
Posts: 1478
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Postby sektor2111 » Tue Jan 10, 2017 12:04 am

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.
Underground Location.
User avatar
sektor2111
Godlike
 
Posts: 2832
Joined: Sun May 09, 2010 6:15 pm
Location: Into personal private location.
Personal rank: 0.11

Re: Splitting MonsterHunt packages?

Postby Higor » Tue Jan 10, 2017 7:35 pm

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...
Higor
Godlike
 
Posts: 1478
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Postby Chamberly » Tue Jan 10, 2017 7:42 pm

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
irc.globalgamers.net #uscript
http://irc.lc/globalgamers/uscript
Image
User avatar
Chamberly
Godlike
 
Posts: 1526
Joined: Sat Sep 17, 2011 4:32 pm
Location: Tennessee, USA
Personal rank: Dame. Vandora

Re: Splitting MonsterHunt packages?

Postby sektor2111 » Tue Jan 10, 2017 8:54 pm

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...
Underground Location.
User avatar
sektor2111
Godlike
 
Posts: 2832
Joined: Sun May 09, 2010 6:15 pm
Location: Into personal private location.
Personal rank: 0.11

Re: Splitting MonsterHunt packages?

Postby Higor » Wed Jan 11, 2017 7:47 pm

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);
}
Higor
Godlike
 
Posts: 1478
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Postby sektor2111 » Thu Jan 12, 2017 1:51 am

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.
Underground Location.
User avatar
sektor2111
Godlike
 
Posts: 2832
Joined: Sun May 09, 2010 6:15 pm
Location: Into personal private location.
Personal rank: 0.11

Re: Splitting MonsterHunt packages?

Postby Barbie » Thu Jan 12, 2017 3:12 am

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
User avatar
Barbie
Godlike
 
Posts: 1226
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: Splitting MonsterHunt packages?

Postby Higor » Thu Jan 12, 2017 6:03 am

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.
Higor
Godlike
 
Posts: 1478
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Postby sektor2111 » Thu Jan 12, 2017 8:54 am

@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.
Underground Location.
User avatar
sektor2111
Godlike
 
Posts: 2832
Joined: Sun May 09, 2010 6:15 pm
Location: Into personal private location.
Personal rank: 0.11

Re: Splitting MonsterHunt packages?

Postby Barbie » Thu Jan 12, 2017 9:54 am

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 7 times
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
User avatar
Barbie
Godlike
 
Posts: 1226
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: Splitting MonsterHunt packages?

Postby sektor2111 » Thu Jan 12, 2017 2:50 pm

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.
Underground Location.
User avatar
sektor2111
Godlike
 
Posts: 2832
Joined: Sun May 09, 2010 6:15 pm
Location: Into personal private location.
Personal rank: 0.11

Re: Splitting MonsterHunt packages?

Postby Higor » Fri Jan 13, 2017 12:56 am

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.
Higor
Godlike
 
Posts: 1478
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Postby papercoffee » Fri Jan 13, 2017 1:24 am

Higor wrote:expect a complex scoreboard.

If you need a nice UI graphic for that. :mrgreen: I'm eager to do this.
User avatar
papercoffee
Godlike
 
Posts: 8018
Joined: Wed Jul 15, 2009 11:36 am
Location: Cologne, the city with the big cathedral.
Personal rank: coffee addicted !!!

Re: Splitting MonsterHunt packages?

Postby sektor2111 » Fri Jan 13, 2017 7:29 am

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.
Underground Location.
User avatar
sektor2111
Godlike
 
Posts: 2832
Joined: Sun May 09, 2010 6:15 pm
Location: Into personal private location.
Personal rank: 0.11

PreviousNext

Return to Coding, Scripting

Who is online

Users browsing this forum: No registered users and 1 guest