XC_Engine [20] - XC_Core [7b] - XC_IpDrv

Post Reply
User avatar
sektor2111
Godlike
Posts: 6410
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_GameEngine [test build 7]

Post by sektor2111 »

Chamberly wrote:Well the MH2v3 does have it's own mover open/close but the only thing (but no healgun?)
These are pointless - map must work or mod is bad coded, forcing movers might mess up Levels - else I probably you want to force a CreatureFactory as well, LOL, is was done only to complete bugs caused by missing creatures - else mappers won't learn ever to deal with triggers if a server is acting like this. Imagine in a server 8 players, 6 playing normal and 2 monkeying opening doors earlier ruining all fun - player need to work in team challenged by monsters not playing in 0 skill - bad settings used last years in servers made good MH mappers to quit working disturbed by the way how was stuff messing up entire idea for MH Level, remaining only a few which don't have to much creativity and neither logic for MyLevel-ing good things. Other time I witnessed a server having more than 200 heal-guns spawned as a protest for a broken map (it was a good one unable to be handled by a wrong mod) and all those players got vanished later, is not a need to explain what I witnessed many times until I quit visiting MH servers because I was nearby to throw up looking at all those "cute" options. No need mentioning some mods removing stuff that is meant to trigger things - factories, and they won't work as long as these ignitions were removed. MH 5.04 was intended to ruin some console errors and tweaking a few common default mistakes without embedded Regens, Colors, 1xx replication things, just ready to be tweaked here and there as needed depending on tastes and a better deal with all kind of Troopers.

@Higor - If helps, I'll try to find some old crash-logs coming from collision crash. If you can solve that, from me mission saving UT I guess is completed. Hint: CTF-FaceSE looks like it was one attempt to avoid problems and AS-Rook is another default example in tweaking poor engine's sanity checking. You cannot imagine how much sort of stuff has been reworked just to get over these native troubles (new birds, new decos, new fish, pinatas, no drop weapon, etc - it was ALL about PlayerCanSeeMe() dumb coding) and NOBODY did nothing all these 14-15 years just slopes. TeleporterFixXXYYZZ versions are simply other attempts to get over that collision crash bug and... ruining A.I. paths through those teleporters (monster mess up alarms/patrols, Bot won't hunt/cover/attack you, etc.) original teleporter is disabled being "harmful".

I have another homework for me but might be off-topic here related to replacing some evil NavigationPoints and I'll try to find a way to update correctly upstreams, paths, prunedpaths, and all pathing data...
User avatar
Chamberly
Godlike
Posts: 1963
Joined: Sat Sep 17, 2011 4:32 pm
Personal rank: Dame. Vandora
Location: TN, USA
Contact:

Re: XC_GameEngine [test build 7]

Post by Chamberly »

Well need more feedback other than 'doesn't work' because I can't help tell you what to do unless you didn't tell me what you did wises lol. Mine does work.

Gonna add the CMV to my other server (which only have MVLA13) when I get back from work. Server is already using xcge.
Image
Image
Image Edit: Why does my sig not work anymore?
User avatar
Wises
Godlike
Posts: 1089
Joined: Sun Sep 07, 2008 10:59 am
Personal rank: ...

post moved.

Post by Wises »

post moved to UT Server setup ...

Sorry all for off topic post.
Last edited by Wises on Thu Jan 15, 2015 10:51 am, edited 2 times in total.
User avatar
Chamberly
Godlike
Posts: 1963
Joined: Sat Sep 17, 2011 4:32 pm
Personal rank: Dame. Vandora
Location: TN, USA
Contact:

Re: XC_GameEngine [test build 7]

Post by Chamberly »

Dude no. This is going off topic. Stick the redirect comments to PM.

& no, I don't have anything from gameservers. I had enough of them.
Image
Image
Image Edit: Why does my sig not work anymore?
User avatar
sektor2111
Godlike
Posts: 6410
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_GameEngine [test build 7]

Post by sektor2111 »

I found a few old problems, I cannot be sure if are solved right now but... seems a few common lines occurred in different moments:

Code: Select all

#1 Zombie trash
Critical: TouchTo
Critical: AActor::BeginTouch
Critical: ULevel::MoveActor
Critical: APawn::stepUp
Critical: APawn::physWalking
Critical: APawn::performPhysics
Critical: UObject::ProcessEvent
Critical: (TMale1 DM-Curse][.TMale9, Function Engine.PlayerPawn.ServerMove)
Critical: RemoteCall
Critical: HandleStream
Critical: UActorChannel::ReceivedBunch
Critical: (Actor TMale9)
Critical: UChannel::ReceivedSequencedBunch
Critical: Direct
Critical: UChannel::ReceivedRawBunch
Critical: DispatchDataToChannel
Critical: BunchData
Critical: UNetConnection::ReceivedPacket
Critical: UNetConnection::ReceivedRawPacket
Critical: UTcpNetDriver::TickDispatch
Critical: UpdatePreNet
Critical: ULevel::Tick
Critical: (NetMode=1)
Critical: TickLevel
Critical: UGameEngine::Tick
Critical: UpdateWorld
Critical: UServerCommandlet::Main
Exit: Executing UObject::StaticShutdownAfterError
Exit: Exiting.
Uninitialized: Name subsystem shut down
Uninitialized: Log file closed, 10/15/12 00:37:03

#2 Strange end and connection nearby end match
NetComeGo: Close TcpipConnection47 01/05/14 22:22:04
Critical: UObject::ConditionalDestroy
Critical: UObject::GetFullName
Critical: DispatchDestroy
Critical: (17775: None)
Critical: DispatchDestroys
Critical: UObject::PurgeGarbage
Critical: UObject::StaticExit
Critical: appPreExit
Exit: Executing UObject::StaticShutdownAfterError
Exit: Exiting.
Uninitialized: Name subsystem shut down
Uninitialized: Log file closed, 01/05/14 22:22:04


#3 I left match here
NetComeGo: Close TcpipConnection0 08/08/14 22:03:40
ScriptLog: CTF-Face-SE_R14.FastHandler8 initialized for Karag
ScriptLog: CTF-Face-SE_R14.Triggerator0 pending deletion with bDeleteMe = True
Critical: FCollisionHash::ActorLineCheck
Critical: CheckWithActors
Critical: ULevel::MultiLineCheck
Critical: ULevel::Trace
Critical: AActor::ProcessState
Critical: Object minigun2 CTF-Face-SE_R14.minigun58, Old State State Botpack.minigun2.AltFiring, New State State Botpack.minigun2.AltFiring
Critical: AActor::Tick
Critical: TickAllActors
Critical: ULevel::Tick
Critical: (NetMode=1)
Critical: TickLevel
Critical: UGameEngine::Tick
Critical: UpdateWorld
Critical: MainLoop
Exit: Executing UObject::StaticShutdownAfterError
Exit: Exiting.
Uninitialized: Name subsystem shut down
Uninitialized: Log file closed, 08/08/14 22:07:31


#4 MyFault in fixing spawner
Critical: FCollisionHash::ActorLineCheck
Critical: CheckWithActors
Critical: ULevel::MultiLineCheck
Critical: ULevel::Trace
Critical: AActor::ProcessState
Critical: Object NsWarLord CTF-Face-SE_R14.NsWarLord5, Old State State NsMonster.NsScriptedPawn.RangedAttack, New State State NsMonster.NsScriptedPawn.RangedAttack
Critical: AActor::Tick
Critical: TickAllActors
Critical: ULevel::Tick
Critical: (NetMode=1)
Critical: TickLevel
Critical: UGameEngine::Tick
Critical: UpdateWorld
Critical: MainLoop
Exit: Executing UObject::StaticShutdownAfterError
Exit: Exiting.
Uninitialized: Name subsystem shut down
Uninitialized: Log file closed, 08/02/14 01:36:12

#5 Rejected based on forbidden characters - and server crashed too - I think game was already ended
NetComeGo: Close TcpipConnection26 01/18/14 19:36:18
Warning: Other object in slot
Warning: This is: TFemale1 DM-Morpheus.TFemale15
Warning: Other is: Class Engine.NetPendingLevel
Critical: appError called:
Critical: Assertion failed: ThisActor->IsValid() [File:G:\dev\nacput\Utpg_451\Engine\Src\UnLevAct.cpp] [Line: 198]
Critical: Windows GetLastError: The operation completed successfully. (0)
Exit: Executing UObject::StaticShutdownAfterError
Critical: ULevel::DestroyActor
Critical: (TFemale1 DM-Morpheus.TFemale15)
Critical: UPlayer::Destroy
Critical: UNetConnection::Destroy
Critical: UTcpipConnection::Destroy
Critical: UObject::ConditionalDestroy
Critical: (TcpipConnection Transient.TcpipConnection26)
Critical: UNetDriver::TickDispatch
Critical: UTcpNetDriver::TickDispatch
Critical: UpdatePreNet
Critical: ULevel::Tick
Critical: (NetMode=1)
Critical: TickLevel
Critical: UGameEngine::Tick
Critical: UpdateWorld
Critical: MainLoop
Exit: Exiting.
Uninitialized: Name subsystem shut down
Uninitialized: Log file closed, 01/18/14 19:36:18


#6 Still worked at spawner
Critical: FCollisionHash::ActorLineCheck
Critical: CheckWithActors
Critical: ULevel::MultiLineCheck
Critical: ULevel::Trace
Critical: UObject::ProcessEvent
Critical: (SS CTF-Face-SE_R14.SS1, Function SwarmSpawn.SS.Timer)
Critical: AActor::Tick
Critical: TickAllActors
Critical: ULevel::Tick
Critical: (NetMode=1)
Critical: TickLevel
Critical: UGameEngine::Tick
Critical: UpdateWorld
Critical: MainLoop
Exit: Executing UObject::StaticShutdownAfterError
Exit: Exiting.
Uninitialized: Name subsystem shut down
Uninitialized: Log file closed, 08/22/14 20:44:42
The mostly is that

Code: Select all

Critical: FCollisionHash::ActorLineCheck
Critical: CheckWithActors
Critical: ULevel::MultiLineCheck
Critical: ULevel::Trace
Critical: UObject::ProcessEvent
They weren't very often but still bugged me randomly.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_GameEngine [test build 7]

Post by Higor »

I need a reliable tool/map to reproduce these collision crashes.
The problem with these crashes is that we haven't still figured out a constant pattern on them.

Getting a map or a specific action to crash the engine 100% times is the very first step to figure out what's wrong.

PD:
I can give you my tech-test map, it's a small map with unusual code on it to test the engine, most of said code is disabled/commented out so they don't interfere with my newest tests.
User avatar
sektor2111
Godlike
Posts: 6410
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_GameEngine [test build 7]

Post by sektor2111 »

For you how looks that ActorLineCheck ? Everything looks fine ?
Such a crash happened at Teleporters until I figured how to not spawn monster behind walls relocating them closer to a node... but Avoid teleporters and Inventories (might be moved out of walls) - simply 1 on 1 match against a monster bugged game and that's why I was reworking spawning method. Monster alone was ok, but other swarms were not very cute all the time. Also hunting players through teleporters caused such random crashes but not each time. I cannot see what caused nasty things. That minigun really confused me. I think it collided some pawn non-player or... heck knowns.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_GameEngine [test build 7]

Post by Higor »

According to the cryptic clues Smirfstch gave on his posts, the whole cause of the crash is actor collision.
Apparently the hash itself has design flaws, and the only way to fix these crashes is using something else.

This is a base class of Unreal's collision hash, which unfortunately is completely unavailable through the public sources.
Fortunately though... ULevel interacts with the base class, and not the actual FCollisionHash object which means, I could make my own FCollisionHashBase derivate and reimplement the whole behaviour myself.
That's gonna be a long journey, but I'm certainly interested in it.

Code: Select all

class FCollisionHashBase
{
public:
    // FCollisionHashBase interface.
    virtual ~FCollisionHashBase() {};
    virtual void Tick()=0;
    virtual void AddActor( AActor *Actor )=0;
    virtual void RemoveActor( AActor *Actor )=0;
    virtual FCheckResult* ActorLineCheck( FMemStack& Mem, FVector End, FVector Start, FVector Extent, BYTE ExtraNodeFlags )=0;
    virtual FCheckResult* ActorPointCheck( FMemStack& Mem, FVector Location, FVector Extent, DWORD ExtraNodeFlags )=0;
    virtual FCheckResult* ActorRadiusCheck( FMemStack& Mem, FVector Location, FLOAT Radius, DWORD ExtraNodeFlags )=0;
    virtual FCheckResult* ActorEncroachmentCheck( FMemStack& Mem, AActor* Actor, FVector Location, FRotator Rotation, DWORD ExtraNodeFlags )=0;
    virtual void CheckActorNotReferenced( AActor* Actor )=0;
 };
 ENGINE_API FCollisionHashBase* GNewCollisionHash();
So, load a map, discard the old FCollisionHash in the active level and replace it with my own hash, reinitialize all colliding actors.
Recode all of the functions listed above by reverse engineering, and find out what the hell the FMemStack is being used for.
User avatar
sektor2111
Godlike
Posts: 6410
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_GameEngine [test build 7]

Post by sektor2111 »

Higor wrote:This is a base class of Unreal's collision hash, which unfortunately is completely unavailable through the public sources.
So I deducted well, full source-code not exists released in public... engine is not done correctly and also no resources to fix it. :?

I'm interested about any kind of test-map.
User avatar
Wises
Godlike
Posts: 1089
Joined: Sun Sep 07, 2008 10:59 am
Personal rank: ...

Re: XC_GameEngine [test build 7]

Post by Wises »

maybe have look at these old sources for 224 : http://www.telefragged.com/games/613/unreal/files

epic considering relasing UE1 sources:

https://forums.unrealengine.com/showthr ... l-Engine-1
https://forums.unrealengine.com/archive ... -1515.html

do we blame Steve for the awesome bot problems?
A.I. System

Steven Polge (Unreal A.I.)
http://wiki.beyondunreal.com/Legacy:Unr ... Versions/1
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_GameEngine [test build 7]

Post by Higor »

The Tech galleon, totally hand made boat brush, super low polycount...
And I couldn't be arsed with making a decent map, nowadays I board this ship to learn about this engine a bit more every time.

Notable things:
- GalleonCollisionBrute.
Comment out the 'return' call on Tick to make this actor bounce over 100 times a frame around the map... engine still won't crash lol.
(Your log will grow very quickly, shut down after 3 minutes of testing)
- GalleonActor.
Originally used to see if calling ConsoleCommand("TestFunc") would call the 'exec function TestFunc', didn't work.
Now (if you run the timer) it simply attempts telling what input axis the player has pressed, but I found out that said input vars are cleared immediately post-tick end on player.
That was the bitter moment I realized I couldn't read raw player input from other actors.
- GalleonDeco.
If you run the timer, it'll attempt to decompress an UZ file in runtime, results in a crash due to the DecompressCommandlet not having a script (?).
I will solve this with XC_GameEngine at some point. (Making scriptless actors able to have functions from superclasses called on them).
- GalleonServer.
Grabs the master server list from your browser, holds them in their variables (type EDITACTOR CLASS=GALLEONSERVER) to see them.
- GalleonStress.
Thanks to this actor I was able to make LCWeapons's LC subengine not lag when checking against 2000 monster's old positions when firing a LC minigun.
It runs an additional set of checks that allows me to see whether a trace will never hit, saving me the work from actually adding the actors into the collision hash and then tracing (super expensive).
What was done in 2.5 seconds during said test, now it takes less than 0.1
Check CanHit( vector Start, vector TheLoc, vector X, vector Y, vector Z) function for a super fast pre-trace check, now used in LCWeapons.
- GalleonString
Attempts to create 4 chars, then read the 'Asc' of said chars.
Numbers won't match in Linux (and mac?) due to charset limitations, but they work 100% fine in Windows builds.
Yes, this is a case of UScript code not doing the same on both platforms!!! LOKI WTF DID YOU DO?
- GalleonTouch
Simply notifies the log when it was touched and untouched... nothing too important...
Until you join the map as client with 200 simulated ping and attempt to touch it...
You'll learn a lot about the default netcode from just this little thing.
- HistoryNav
Use Editactor command to see their properties ingame, they simply report some info about them.
I ordered them in numbers to get a better idea how connections were made.
Nothing too conclusive came out of this.
- TouchTest
Was testing client behaviour of the player's netcode.
Here I figured out you can't edit a player's speed during the ClientUpdatePosition() movement chain, but instead have to set:
PendingTouch to then do the alterations in PostTouch( actor OTher)
- MapTest
Benchmarks GetMapName() native function speed, this may vary on your map list.
It runs by using Base map + incremental index on first phase.
Then runs by increasing the current map, with index 1 on second phase.
Changing this actor's property to bUnlit in runtime will cause it to log a small experiment with SetPropertyText...
Can't edit static arrays unfortunately...
- BogusMover
Simple brushless mover, changes it's rotation to 0,0,0 in runtime to prevent replication errors for the client's own positioning.
Comment out the SetRotation( R); call and figure out yourself what the error is.
Attachments
Galleon.unr
(284.46 KiB) Downloaded 94 times
User avatar
sektor2111
Godlike
Posts: 6410
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_GameEngine [test build 7]

Post by sektor2111 »

Wises wrote:do we blame Steve for the awesome bot problems?
Nope, in a few maps I completed missing things with custom triggers making Bot to look superior to a "default" one, but it was really default one... he he.
In exchange, we have some isolated troubles speaking about chained pawnlist in attempting to find "OrderGiver" or such Team-mate using bIsPlayer. It was about bIsPlayer used by monsters too, and in my game controllers I'm using that only combined with P.PlayerReplicationInfo != None and errors are gone, also a monster can be armed without that (yes, read again)- I did this already with 0 problems.
I think it would be better a slow code like PlayerReplicationInfo != None rather than a boolean used even by Skaarj and moo-ing console with manure - issue has been originally fixed by using bNoMonsters=True which might be the stupidest move limiting the game. Also I have to mention not Bot's dumbness as I can get mad at wrapping, sanity checks: If (Target != None) - IF (Enemy != None) because these are for Others too, NOT that excuse with 15+ years old engine. It is old, but codes can be written properly rather than rushing useless. Also this might be an advantage, an old and simple engine might be faster handled by Powerfull machines, right Higor ?
But is not very late. In my free time I'll rewrite Bot into a child formula as I did with ScriptedPawn. No more "messages" in my consoles. If Higor will see if that collision can be more stabilized if not fixed then... YAY !! :highfive: UScript is more friendly and closer to any user and can be tuned easier - except finals that might be rewritten and renamed doing proper calls.
Yes, Higor, if you can speed-up some routines, just do it. :thuup:
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_GameEngine [build 8 - Faster upload - MH related fixe

Post by Higor »

Added PlayerCanSeeMe() hook, crash and bug fixes.
SET command won't attempt to parse an array index on properties that aren't static arrays.
Exposed some NetDriver properties.
Added bFasterUpload setting that forces a temporary NetSpeed of 1000001 on incoming clients (default=True).
Experimental Collision Hash hook (disabled by default), all it does is log stuff.
Bot.SetOrders hook to prevent accessed none warnings on games with bIsPlayer monsters.

Code: Select all

(checks for (P.PlayerReplicationInfo != none) instead of P.bIsPlayer)
Also, a little credits update.
User avatar
sektor2111
Godlike
Posts: 6410
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_GameEngine [build 8 - Faster upload - MH related fixe

Post by sektor2111 »

Well, I gotta find some time to test V8 in both MH and MH2. If you really solved collisions troubles like PlayerCanSeMee(), I think I owe you a barrel with beer.

Redirection tweak ? Well... Then I think I can quit redirection saving some HDD space... :mrgreen:
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_GameEngine [build 8 - Faster upload - MH related fixe

Post by Higor »

The collision hash thing is merely a test object, it does nothing yet... other than expose what's happening:
- Actor attempts to move
- Actor removed from hash
- Actor added to hash
- Actor moves.
And that happens on every single moving object on every frame.
Possibly one of the reason the engine takes a huge crap when you try and make more than 200 rain particles.

I gotta devise some ways to properly recode this and it might be v9's one and only milestone.
Post Reply