Splitting MonsterHunt packages?

Discussions about Coding and Scripting
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:I want it.
Available now.
"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 »

Thanks a lot...

Okay a short note about these Works. It looks like fixed codes in weaponry VS default Player are not 100% healthy.
Solution_
Leaving them alone (maybe a map has these and then will crash game if something is missing) and simply, like new HUD attaching a package for replacements - ALL of them Old and OL and OS - every stupid thing should be tweaked properly. What was happening ? By testing original player into new format with GesBioRifle, due to different codes from the same weapon, things went crappy, client crashed. So, we speak about other names, and other actors like I did at MH2, I think that's the right way. AT this time I have 2 adds: 1 - HUD and quadshot + a few things needed in packages, 2 - one dependent on This MH called by MH automated and having monster projectiles and the rest of needs. Else conforming a MH with original in full compatibility is the mostly like a nice dream. Some stuff needs a total remade and Net things will go in trash. That's it... the other one XC_MonsterHunt expanding MonsterHunt will not be the best ever thing but still improved in big parts...

Edit: Map needs a bit of love. I don't see WeaponPowerup and neither a ceiling surface for testing BigBioGel split, or I missed it.
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 »

Barbie wrote:
sektor2111 wrote:I want it.
Available now.
Interesting to fiddle around with. lol
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 »

Gooood... now I have to setup a little math and a bit of logic. Purpose is teaming monsters Vs high load (MH-Crescendo and similar), iterators have to be broken for preventing iterations limit crash. Here I need to setup a few steps in awaking monsters from latent state waiting for game start but doing this in a few rows, after 1 second from start, awake first 300 pieces, then in next second next 300, and so on until everyone is all right and ready to happily murder players.

At this moment this MonsterHunt seems compatible with default 503 Client Player and having major fixes to weaponry - simply MH stuff is not used, just classes hold for compatibility. It will use 2 adds one of them has to be "packaged" manually - probably I need to make it self called somehow as a dependent one. In this way MH won't be losing old compatibility and player gets new things from new adds without mooing original stuff.

Edit:
I went to 128 awakes/second post game start. This is logged, but probably players have to be noticed as well. Teaming a ScriptedPawn involves a Leader check but... it's about Home Seeking as well. Now I can see what kind of stupid heavy load is all time in MH when ALL monsters in map are iterating at game start causing a nasty load right when other things are in initialization stage. Starting is smoother when pawns are simply doing nothing but properly waiting their turn to move.
Log says:

Code: Select all

Log: Possessed PlayerPawn: TFemale1 MH-Crescendo_R16.TFemale2
DevAudio: Galaxy SetViewport: WindowsViewport0
DevMusic: Load music: Music BPC-midian.BPC-midian
MonsterHunt: Awaking monsters in progress...
MonsterHunt: Awaking monsters in progress...
MonsterHunt: Awaking monsters in progress...
MonsterHunt: Awaking monsters in progress...
MonsterHunt: Awaking monsters in progress...
MonsterHunt: Awaking monsters in progress...
MonsterHunt: Awaking monsters in progress...
MonsterHunt: Awaking monsters in progress...
MonsterHunt: Awaking monsters in progress...
MonsterHunt: Awaking monsters in progress...
MonsterHunt: Awaking monsters in progress...
MonsterHunt: Awaking monsters in progress...
MonsterHunt: Awaking monsters in progress...
MonsterHunt: Awaking monsters in progress...
MonsterHunt: All Monsters are ready for fight...
Log: Viewport WindowsViewport0: WM_DisplayChange
Log: Enter SetRes()
All monsters went ready to battle in around 15 seconds with no crashing - 1631 pieces - I must see if are OK and not falling into void - doesn't make sense to see them dying by themselves.
I must prepare a map with 3262 monsters in order to perform an extra power test, and also I will need to check a slower machine as well.

Edit2:
3262 are operational if other tweaks are disabled... else other tweaking iterations might become a problem too... only if we don't switch things to a smoother action After "PostBeginPlay", and then you can blow up your players, servers, hard-drives, because I'm not interested about 10000 monsters in a MH map, even if I might run such things (if I'll ever be on drugs of course).

Edit3: By keeping away Mover tweaking we might have this >>
[attachment=0]MH_Load.JPG[/attachment]
I won't continue Monster Spree because that guy saying that you cannot add more than 1000+ monsters in Editor might be grinding teeth to the death.
I did not say that even in Editor you might have a few 500 creatures, at match start moment you might go to 5000+ if this is the nice down-hill most wanted UT way, OFF Line - Not ON LINE for damaging servers which are costing people's money.

Edit4: Stress Test ended, even On-Line, 3262 version seems somehow playable, version with 6500+ creatures is lagging my machines, can't do much more - it overrides all channels but... MH503 original client is still there like a blind man hitting walls. MH seems to handle these but not the CPU/Engine.
Attachments
No comment... 6508. On a slow machine until game will have a start, you might go and drink some beer...
No comment... 6508. On a slow machine until game will have a start, you might go and drink some beer...
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Post by Higor »

Spent the whole saturady on this crap: https://github.com/CacoFFF/MonsterHunt- ... b05dd8adf4

Stuff it does:
- MHE_Base events can tell the MonsterHunt game (or any other moduel) the event that needs to be triggered in order to function.
- MHE_SingularEvents supports non-bTriggerOnceOnly buttons can recalculate their unlock/attraction flags, meaning that bots know when a button NEEDS to be pressed.
- MHE_SingularEvents can attribute dispatcher's and other triggered mover's events as own.
- MHE_SingularEvents can recognize any of a button's Event, BumpEvent, PlayerBumpEvent.
- Bots can see if an obstruction between them and next path requires a MHE_Base event to be completed.
-- If this happens and a MHE_Base event that doesn't necessarily classifies as objective is nearby they'll use it in order to remove the obstruction, this makes bots support doors opened by dispatchers/non-standard nearby triggers.
- If the obstruction can't be opened by anything nearby, the reachspecs between the bot and the door are removed and a MHE_Base objective is searched, if found bot's objective is updated.
-- MHE_Base objective recurses the chain of events, so bots are capable of understanding multi-stage objectives (trigger that enables other triggers, dispatchers, etc).
- When the door/route is finally cleared by reaching the objective, the reachspecs are put back in place and bots can traverse that route again.

Recommended test map: MH-Krogaar(v2), despite having waypoints this fixes bots getting stuck at doors.

Monster Spawners that trigger counters no longer have their associated MHE_MonsterSpawner event removed before the counter is finished, that way the 'remaining events' part of the monster wave info can be updated even if the monster wave is finished.
Example: monster wave of 30 pupaes and 1 non-wave pupae boss + counter with 31 hits. Killing all 30 pupaes before the boss would trigger the bug and freeze the counter info at '1 remaining'.


======
Stuff to do in near future:
- Block disabled teleporters when a bot tries to go through it by removing reachspecs and restoring when enabled (similar system with locked doors).
- Fix kill messages.
- Put another beta build out.
Attachments
MH-ObjTest.unr
Bots can complete this test map.
Try in 503 lol
(24.81 KiB) Downloaded 74 times
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.
I must tell something which I recall, an old HUD issue WinPlayer / Linux Server. During playing a map for a Looong time or not that long but still... 40 .. 50+ minutes, player (me and not only) could see that Monsters and projectiles couldn't be seen properly until they went almost invisible, game starting a degradation but without Net lags. By restarting client and rejoining, after a few time things went invisible again. Later in MH2 somebody went to a change from whatever render mask to render translucent and then game could run even 2 hours with no issues (crashed at end/travel and bang - MH-Trials was showing up). Have you seen such HUD/Server issues ? I recall a Linux server where I was playing some BoomBoomBridge map and... some DungeonMonsters, where things went nasty almost at end - long time play in there...

I would like to know why those were happening or they were... memory related things + Rendering.

Eh, real tests in MH are taking a lot of time... I have something right now as a good MH but... I need to spend at least 1 hour with client 503 and proto server and also proto client proto server. 503 is known already I'm not gonna waste time with that.

Edit:
AT what I have - different HUDs I did some test with UTJ29 and UTJ29v1, local - ahah v1 looks functional, 29 simple did not update health - looks buggy. Will need to break dependencies and chaining things like you did - IF I'll ever CARE about UTJ any...

Edit:
Meh, I have loaded one of those pathed maps with 4 Bots and I went to hunting. In such a load, simply regenerators are expensive and counting monsters as well. I think I'll write separate stuff for counting creatures (using default UT methods) in a state code from whatever actor spawned. I will stop calling CountMonsters because I think is too much processing for some lousy thing which has a secondary importance at a moment. I've done a very smoother start and later went pretty laggy if more than 800+ creatures are in map for some time... Counting in a single function is not an answer as I can see...
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Post by Higor »

6k monsters.
LOL

Some physics systems have less elements than that and resort to floating point paralellization.
Some of the newest RTS games employ such things and you don't usually see that many units.

What makes you think you can play with that amount of pawns with their AI being run on a virtual machine that's 20 times slower than C++ while sharing CPU resources with graphics/net processing?
Also wasting file space, initialization time...
SC]-[WARTZ_{HoF}
Adept
Posts: 426
Joined: Tue Feb 21, 2012 7:29 pm

Re: Splitting MonsterHunt packages?

Post by SC]-[WARTZ_{HoF} »

sektor2111 wrote: AT what I have - different HUDs I did some test with UTJ29 and UTJ29v1, local - ahah v1 looks functional, 29 simple did not update health - looks buggy. Will need to break dependencies and chaining things like you did - IF I'll ever CARE about UTJ any...
@sektor2111
I did discuss UTJ_Versions with Higor for a bit the other day while he was grabbing some maps from my test server. Higor said he would make it compatible or design a new reward system based upon UTJ.

@Higor
Did you cache the UTJ mod or do you still want me to upload the source code?
Image
Image
Image
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, little self feed-back:
- version conformed which I compiled has a sort of old HUD for player and UTJMH29v1 works properly - send calls to other "scorekill" muts;
- amazingly IpTocountry seems to work pretty nice - I gotta do changes then to MH2 too... because...;
- counting monsters is simple in 2 modules:
Controller (a few lines LOL)

Code: Select all

function CountMonsters()
{
	MRI.Monsters = MonstersTotal;
}
I think is fast, right ? Right... Who is updating MonstersTotal ? a Little freak from space (no deps)
Spoiler

Code: Select all

class MonsterCounter expands Info;

var Pawn P;
var ScriptedPawn S;
var MonsterHunt MyGame;
var int MonstersTotal, TheStep;

function PostBeginPlay()
{
	if ( MonsterHunt(Level.Game) != None )
	{
		MyGame = MonsterHunt(Level.Game);
		InitialState='Counting';
	}
}

Auto State Counting
{
Begin:
	Sleep(1.00);
Active:
	if (MyGame == None)
		GoTo('End');
	P = None;
	MonstersTotal = 0;
	TheStep = 0;
	P = Level.PawnList;
	while ( P != None )
	{
		if ( MyGame == None || MyGame.bGameEnded )
			break;
//Pausing if needed
		if ( !P.bHidden )
		if ( ScriptedPawn(P) != None && P.Health > 0 )
		{
			if ( MyGame.bDumbDown )
			if ( Nali(P) == None && Cow(P) == None )
			{
				if ( ScriptedPawn(P).TeamTag == '' );
					Spawn(class'MTeam',P).ATeamTag = MyGame.TT; //Must have a team - MTeam will wait and will
			} //group them as team post iterator - it do helps attitude code - even without a TeamLeader - this is slow
			MonstersTotal++;
		}
		TheStep++;
		if ( TheStep >= 32 )
		{
			TheStep = 0;
			Sleep(0.2);
		}
		P = P.nextPawn;
	}
	if ( MyGame.bGameEnded )
		GoTo('End');
	MyGame.MonstersTotal = MonstersTotal;
	MyGame.CountMonsters();
	Sleep(1.00);
	GoTo('Active');
End:
	GoToState('');
	LifeSpan=0.2;
}
That map with 6000+ is not that much playable ON-Line as that with 3000+. We speak about a smother start as oil, in a few seconds will might be a bit laggy (until all monsters start living), and then game flow seems playable somehow.
Another map with 900 creatures works fine even as my old mod with 300 creatures :lol2: . Counting and teaming system was too expensive affecting even tickrate - I will quit using tickspy VS counting in a single function - exactly like mapvote - it lags without a good purpose, that's not an answer. State code is smother and I don't see why I need this counter to be fast - it's like a background process less CPU consuming. PostBeginPlay Iterator with attitude has been removed - it's useless - SetPawnDifficulty can manage this thing as many others... and permanent, not only a single time, without iterating constantly for new monsters added... I think more optimizations are doable. That 6000+ map was on purpose to cause a heavy stress in a game ProtoServer/DefaultMH client. It doesn't crash indeed but also is not a game to be proud of it.

Edit:
Okay, I was playing some "original" map with 1600+ creatures cannot say exactly the number since they were roaming randomly in death Zones, LOL. In the middle of battle I did a query to IpToCountry - for some reason (Bad or Good) this thing do WORKS. Game was smoother by default even using UTJ29v1 with those funny "Multblipreekill" messages blabbering - eh, old memories, I would like to play such a game 5 years ago... If MonsterHunt 503 wouldn't do crap in that AlwaysKeep and hosting stupid shadows + the rest of controller errors, this game would be number one in all shooters known on Earth. Probably is hard to figure all data that has to be aligned with old controller. A single time (perhaps a net error) I could see a bunch data error crashing client, I couldn't identify source of that bunch packet, I must do other tests as well. My 3072 map easy as pie, I did not die a single time, UTJ makes MH too easy, really to easy, also I was using 2 Bots hunting around, probably helpful because at using more they bug lifts turning your retreat in a trap.
If such bunch errors will occur in other environment probably I'll keep this for me, or simply fixing HUD without any add-on, I believe there is something which doesn't seems to work 100% perfectly, even if both sides server/client are clean in logs...
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Post by Higor »

https://github.com/CacoFFF/MonsterHunt- ... ab04428040
Another beta build, UTJ should load with this one.

If you tried another proto build in the past make sure you have this in MonsterHunt.ini:

Code: Select all

[MonsterHunt.MonsterHunt]
ClientExtensionClass=MonsterBetaCL_1.MHCL_MonsterBriefing
If it's MonsterBetaCL_0 then it'll auto-switch to CL_1 so no need to worry.
As usual if you don't have XC_Engine, you'll have to add MonsterBeta_CL1 to ServerPackages list.
MH_proto_beta1.7z
Includes FerBotz (v20) profile and MH-ObjTest.unr AI test map.
(351.38 KiB) Downloaded 79 times
Maps to try:
- MH-ShootingGuys (no bots)
- MH-Krogaar(v2)
- MH-CrystalReactor
- Any other fully pathed map where bots get stuck trying to get past locked doors.

Maps to try if you have FerBotz
- MH-LongCorridor2006 (only FerBotz!!)
- MH-Annihilation
- MH-Lonely][
- MH-PoL1-Frigid
- MH-Skyland series
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 »

So... Monster's Health is no longer visible at using UTJ29v1 ? Hm, I think I'm not gonna think to mix HUD types, it seems that doesn't help at all.

This is simple UTJMH29 - Like I got before... no health update... Client 503.
[attachment=0]UTJ29.JPG[/attachment]
Did I miss something ? It's XCGE proto server and NON XC 503 client.

At least in my build, Client 503 has a more closer to normal HUD and monster Health is visible in known UTJ style - it's about UTJMH29v1. The other one simple non v1 has the same HUD problem - no health update.

Conclusion: a conformed mod-package update with major changes IS NOT HEALTHY at all. I went to changes at default stock files and I have good games, by implementing new classes and stuff = 100 PROBLEMS to solve.
Attachments
UTJ29.JPG
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 »

Bumping here a bit. Let's say a generic smoother A.I. control is better than a code running called by Bot. Bot sometimes has amnesia, forgetting to call that and... monster will not always see it.
Function FindSpecialAttraction is called by Bot WHEN bot is mainly reaching at a PathNode in a slow rate for state Roaming. If paths are messed = Crap behavior at Bot VS Monster (or Monster VS Bot). I removed that ass code awaking Skaarj Statues from their sleep using a non-dependent actor called and... it can be used even in a DM. It runs smoother and... slow if monsters are more than 1500 - 2000, but will reduce useless iteration to a lower level. MonsterHunt can spawn this thing... only if game is being started, and actor stops working if game has ended keeping the load at minimum.

Code: Select all

class MonsterAttack expands Actor;

var Pawn P;
var int TheStep;

event PrebeginPlay()
{}

event PostBeginPlay()
{
	log ( "Power A.I. has spawned" );
	InitialState='DoAttacking';
}

final function DoPlayerAttack(Pawn P)
{
	local ScriptedPawn S;

	if ( P == None )
		Goto DoNothing;

	foreach VisibleCollidingActors(class'ScriptedPawn',S,1800,P.Location)
	{
		if ( S.Health > 0 && ( !S.IsInState('Sitting') && !S.IsInState('Teleporting') && !S.bHidden ) )
		{
			if ( S.Enemy == None || (( VSize(P.Location - S.Location) < VSize(S.Enemy.Location - S.Location ))
						|| !S.LineOfSightTo(S.Enemy)) || ScriptedPawn(S.Enemy) != None )
			{
				S.Enemy = P;
				S.Hated = P;
				S.LastSeenPos = P.Location;
				S.SetEnemy(P);
				if (!S.IsInState('Attacking'))
					S.GoToState('Attacking','Begin');
				if ( Bot(P) != None )
				{
					if ( P.Enemy == None || !P.LineOfSightTo(P.Enemy) )
						P.Enemy = S;
				}
			}
		}
	}
DoNothing:
}

Auto State DoAttacking
{
Begin:
	Sleep(3.00);
	bHidden=True;
LoopAttack:
	P = None;
	TheStep = 0;
	if ( Level.Game.bGameEnded )
		GoTo('End');
	P = Level.PawnList;
	while ( P != None )
	{
		if ( Level.Game.bGameEnded )
			break;
		if ( !P.bHidden )
		{
			if ( ScriptedPawn(P) == None )
				if ( P.Health > 0
				&& P.bCollideActors && P.Mesh != None && P.DrawType == DT_Mesh )
				{
					DoPlayerAttack(P);
				}
		}
		TheStep++;
		if ( TheStep >= 32 )
		{
			TheStep = 0;
			Sleep(0.05);
		}
		P = P.nextPawn;
	}
	Sleep(0.33);
	GoTo('LoopAttack');
End:
	LifeSpan=0.2;
	GoToState('');
}

defaultproperties
{
	RemoteRole=ROLE_None
	bMovable=False
	NetUpdateFrequency=0.100000
}
Now I think Monster will attack stupid Biterfish which were slowly killing monsters - and monsters were ignoring them, Birds, Cannons, Super Duper 1337 Craps, XPawn (used by some awesome clan), and so on, Botz are not an exception.
Explanation > Whatever Non-Monster Pawn having visible monsters around in 1800 range will not see monsters sleeping there with no purpose, I went a bit over PlayerCanSeeMe range. By testing such things using 3262 creatures, after 30 seconds game went pretty smoother.
Goal is to query and sort for battle 640 Pawns/Second, more exactly in a second we check 32 Pawns at each 50 ms. So we don't have an Instant iterator, we have a sort of "background scan" if I can call it like that, sliding as oil.
This is Initial format, I'm gonna check details if it do needs a little fine tuning.

Edit:
Indeed, I had to switch methods, regarding to Wiki's stories about Iterators...
VisibleCollidingActors - using tracing lines - is fast
RadiusActors - Slow as AllActors

Fact from Unreal's reality >> MonsterHuntArena >> MonsterArenaEnd - A giant Trigger (even hidden as it is) will ruin your happiness according to VisibleCollidingActors even using IgnoreHidden directive - probably useless. In this case RadiusActors combined with an UScript Tracing checker works like a charm :| .
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Post by Higor »

I dont remember seeing titans getting up from that code (same as 503), those skaarj statues need to be fixed lol.


OLautomag is kind of tough, given that not only I am properly chaining the animations in both server and client state, I am also making the idle animations play as the original automag would (plus twirl).
It's interesting to see that the UT99 enforcer model has an extra idle animation, plus reload.
Reloading will only add to the 'clip' only available ammo, that means that if you have 15 ammo clip gets 15 instead of 20, dynamics with two automags gets interesting here.
Client simulation also covers clip counter and reloading.


Check this OLautomag clip status, roughly a third of the code in 503 and does the same.

Code: Select all

simulated function PostRender( Canvas Canvas)
{
	local int RightClip, LeftClip, SwapBuffer;
	
	RightClip = 20 - ClientClipCount();
	if ( slavemag == None )	LeftClip = -1;
	else					LeftClip = 20 - slavemag.ClientClipCount();
	
	if ( Mesh == Mesh'AutoMagL' ) //Left handed, swap clip values
	{
		SwapBuffer = LeftClip;
		LeftClip = RightClip;
		RightClip = SwapBuffer;
	}

	Canvas.Style = 3;
	Canvas.Font = Canvas.SmallFont;
	Canvas.DrawColor.B = 0;
	//Draw right clip
	if ( RightClip >= 0 )
	{
		Canvas.DrawColor.G = byte(float(RightClip) * 12.7);
		Canvas.DrawColor.R = 255 - Canvas.DrawColor.G;
		Canvas.SetPos(0.85 * Canvas.ClipX, 0.80 * Canvas.ClipY);
		Canvas.DrawText("Clip: " $ string(RightClip));
	}
	if ( LeftClip >= 0 )
	{
		Canvas.DrawColor.G = byte(float(LeftClip) * 12.7);
		Canvas.DrawColor.R = 255 - Canvas.DrawColor.G;
		Canvas.SetPos(0.05 * Canvas.ClipX, 0.80 * Canvas.ClipY);
		Canvas.DrawText("Clip: " $ string(LeftClip));
	}
}
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 »

The only thing which I do is using other classes. Original client with those OL craps loaded will not have full net code (like HUD) as long as class names called are taken from there Grenade, Asmd combo, etc. So I'm using another stuff, OL things being there to not break Net compatibility but I'm not using them for replacements.

I know that Titan is probably well coded somehow, but I prevent some lousy creature to mess up, I should write stuff for default states... Because GotoState() unhealthy called is not good at all, like NextState NextLabel (when creature has no health).

Edit:
MonsterArena was a hard and nasty lesson about VisibleCollidingActors which probably I have to remove/replace in MBot too (not in Berserker - here I really need a bitch breaker). Mbot/Bot uses that a lot around Inventories - or it do helps for preventing another recursive errors due to breaks resulted... I'm gonna check these more.

Edit2:
Speaking about weaponry - I was almost to forget other sort of fix for Levels like MH-MonstersOfSpam-v116.unr. Me saying: No spam here, I'm sorry...
First we initialize InitGame to allow replacements (if will occur) "set Inventory bla bla" making sure to not be so relevant. Then we have some entry:

Code: Select all

function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
{
	local Inventory Inv;
	local Pawn P;

	bSuperRelevant = 1;

	if ( ScriptedPawn(Other) != None )
	{
		ScriptedPawn(Other).Team = 1;
		return true;
	}
//=====
	if ( Inventory(Other) != None && ( Other.bStatic || Other.bNoDelete ) )
	{
		log ("Hit... Found bad pickup"@Other.Name,'MonsterHunt');
		ConsoleCommand("SET"@Other.Class@BROTATINGPICKUP FALSE);
		ConsoleCommand("SET"@Other.Class@BFIXEDROTATIONDIR FALSE);
		ConsoleCommand("SET"@Other.Class@ROTATIONRATE (YAW=0,ROLL=0,ROLL=0));
		log("RotatingPickup Set"@Inventory(Other).bRotatingPickup);
		log("bFixedRotationDir Set"@Other.bFixedRotationDir );
		log("Yaw Set"@Other.RotationRate.Yaw );
		log("Roll Set"@Other.RotationRate.Roll );
		log("Pitch Set"@Other.RotationRate.Pitch );
//=====
	}

	if ( MyGame.bMegaSpeed && Other.bIsPawn && Pawn(Other).bIsPlayer )
	{
		Pawn(Other).GroundSpeed *= 1.4;
		Pawn(Other).WaterSpeed *= 1.4;
		Pawn(Other).AirSpeed *= 1.4;
		Pawn(Other).AccelRate *= 1.4;
	}
At least I'm grateful for this thing called Console... :sleep:
Edit3:
Next days I think I'll setup a 3000+ Creatures Level because I see that after a few seconds (until all Monsters are started) game runs pretty well using new "background" solution. Only first moments are a bit heavy but later goes better. At killing multiple creatures at time, some frames are lost but is not that bad. I think this MH supports well around 1000+ creatures - this really looks like an easy load.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Splitting MonsterHunt packages?

Post by Higor »

When I added the Reload, StopReload functions back to the replication statement of UIweapons, all OLweapons worked with 503.
So package conformation still requires identical replication statements.

EDIT:
I completely messed up the akimbo automag's firing sequences lol, I made it based on UT99 while the 503 one fires one per click (not both)
Time to rewrite!
Post Reply