XC_Engine megathread

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

Re: XC_Engine megathread

Post by sektor2111 »

Still fog:
All is loaded now

Code: Select all

Log: Compiling XC_Engine_TournamentPlayer
Error: E:\Editor\UnrealTournament\XC_Engine_UT99\Classes\XC_Engine_TournamentPlayer.uc(190) : Error, 'Clock': Bad command or expression
Critical: appError called:
Critical: Failed due to errors.
Exit: Executing UObject::StaticShutdownAfterError
Critical: CompileError
Critical: TryCompile
Critical: FScriptCompiler::CompileScript
Critical: (Class XC_Engine_UT99.XC_Engine_TournamentPlayer, Pass 1, Line 190)
Calling that Clock did not compile until I called:

Code: Select all

class'XC_CoreStatics'.static.Clock( F);
Else I did not do anything than error.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_Engine megathread

Post by Higor »

ucc or ucc2?
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine megathread

Post by sektor2111 »

None of them is not compiling anything - I had to declare functions and claim "class'whatever'.static.Something(ThatOne)" else I could not compile package XC_Engine_UT99.u.
In exchange UCC2 is more bitching. Whenever exist an error, is crashing without to point error as default UCC does, this was happening in XC23 as well, when a package part of a map was missing or was screwed up and game went down-hill never returning to entry Level. I don't mention that UPakPredator.u which crashed Editor instantly when I loaded it...
I'm curious when that UPak will be used in UT because if I well recall it crashed game all time or I failed to see UT version, I think I will remove it from XC_Engine.INI.
So far package embedded with a configuration compiled normally do seems to work properly in a private server without PickAnyTarget() and those functions which I replaced previously in other mutator, so I have those disabled so far to not have double replacements.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine megathread

Post by sektor2111 »

An observation:
At remapping paths in whatever map (any), after primary clean operation in NavigationPoints from map I still can see data like bestPathWeight and visitedWeight. I went to remove these bytes at once with other bytes hosted in Navigation network and I tested map using plain UT with default Bots. Engine was working properly. Duh... which means that a map can be really cleaned by bytes which don't seems to be used at anything...
I'm not sure how much these things do help processing, but definitely without them nothing evil happens. It looks like the most useful data is bOneway, bTwoWay, bSpecialCost, ExtraCost, Paths[x], upstreamPaths[x], the rest seems really useless.
User avatar
UT Sniper (SJA94)
Inhuman
Posts: 753
Joined: Thu Jun 24, 2010 10:35 pm
Personal rank: Retard
Location: England
Contact:

Re: XC_Engine megathread

Post by UT Sniper (SJA94) »

I've been playing on a different server recently and I keep crashing with this err:

Code: Select all

Critical: appError called:
Critical: Assertion failed: Font [File:C:\UTDev\Engine\Src\UnCanvas.cpp] [Line: 335]
Critical: Windows GetLastError: There are no more files. (18)
Critical: UCanvas::WrappedPrint
Critical: (Name:: )
Critical: UCanvas::WrappedStrLenf
Critical: UCanvas::execStrLen
Critical: UGameEngine::Draw
Critical: UWindowsViewport::Repaint
Critical: UWindowsClient::Tick
Critical: ClientTick
Critical: UGameEngine::Tick
Critical: UXC_GameEngine::Tick
Critical: ACE1
Critical: EnhancedTickRate
Critical: XC_MainLoop

Only thing I notice that is different with the server is that it runs the bonus pack skins, don't know if it's related or not.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_Engine megathread

Post by Higor »

sektor2111 wrote:bestPathWeight and visitedWeight
That's the secret to the hyper mega super duper marvellously advanced pruning, multiple small route mappings done during the pathing process.
That data are leftovers from the build process, will make sure they're zero'd out after build is complete. Thanks.
UT Sniper (SJA94) wrote:

Code: Select all

Critical: Assertion failed: Font [File:C:\UTDev\Engine\Src\UnCanvas.cpp] [Line: 335]
Modder didn't test his work well enough, this specific error happened a lot in old NewNet demoplays due to lack of demoplay testing, but happening in live game is somewhat unacceptable (likely a rookie mistake).
The modder must always specify a font before calling text functions, and ideally, backup the old font and restore it after doing so.
I haven't touched anything on the canvas code and I don't feel like doing it at all.
I did plan to add support for line drawing at one point and other hacks into the canvas, but don't expect anything of that nature this year.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine megathread

Post by sektor2111 »

I'll split UT editing version in multiple parts and declaring paths properly.
I think I have more than one reason for doing this as follows:
- XCv21 with Range definition and various checks;
- XCv23 and/or v24 for XC_EditorAdds completed.
I don't know what is the deal in versions higher than v21 but some crashes have NO LOGS just supposed C++ Visual Studio problems. Which means if something goes wrong I have to quickly fallback to a prior version for figuring crash-log else I do not have anything for debugging.
As for DevPath, even in XCv21, I think I can drop out some useless bytes and to modify paths that have the same length. Range deal and "hiding" feature are helpful for making a compact Paths Network and then V23 V24 can be used where V21 is failing. To be honest V23 V24 do long range connections which I never asked for... and these are creating reachSpecs charging bytes which I don't even need. Map's cleaner from XC_EditorAdds from v24 is even crashing Editor at random. I think for me would be priceless declaring jumpy-routes manually instead of letting Editor to do a false prediction about what I want.

Edit:Original client is crashing in any server v23 v24 at server-travel...

Code: Select all

DevNet: PendingLevel received: DLMGR CLASS=Engine.ChannelDownload PARAMS=Enabled COMPRESSION=0
DevNet: PendingLevel received: XC_ENGINE VERSION=23
DevNet: PendingLevel received: WELCOME LEVEL=CTF-300k-w00tious LONE=0
DevNet: Welcomed by server: LEVEL=CTF-300k-w00tious LONE=0
Log: LoadMap: 64.94.238.23/CTF-300k-w00tious?Name=Nelsona?Class=BotPack.TFemale1?Team=1?skin=FCommandoSkins.daco?Face=FCommandoSkins.Tanya?Voice=BotPack.VoiceFemaleOne?OverrideClass=
DevAudio: Galaxy SetViewport: WindowsViewport0
NetComeGo: Close TcpipConnection0 06/08/19 21:39:27
Critical: FMallocWindows::Free
Critical: FMallocWindows::Free
Critical: DestroyServerConnection
Critical: UNetDriver::Destroy
Critical: UObject::ConditionalDestroy
Critical: (TcpNetDriver Transient.TcpNetDriver0)
Critical: ULevelBase::Destroy
Critical: ULevel::Destroy
Critical: UObject::ConditionalDestroy
Critical: (Level CTF-300k-w00tious.MyLevel)
Critical: UObject::StaticAllocateObject
Critical: (Level MyLevel)
Critical: UObject::StaticConstructObject
Critical: ULinkerLoad::CreateExport
Critical: (MyLevel 235663)
Critical: ULinkerLoad::Create
Critical: UObject::StaticLoadObject
Critical: (Engine.Level CTF-300k-w00tious.MyLevel CTF-300k-w00tious)
Critical: LoadLevel
Critical: UGameEngine::LoadMap
Critical: AttemptLoadPending
Critical: TickPending
Critical: UGameEngine::Tick
Critical: UpdateWorld
Critical: MainLoop
Exit: Executing UObject::StaticShutdownAfterError
Exit: Executing UWindowsClient::ShutdownAfterError
Exit: UGalaxyAudioSubsystem::ShutdownAfterError
Log: DirectDraw End Mode
Exit: UD3D9RenderDevice::ShutdownAfterError
Exit: Exiting.
This is client without XC_Engine.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_Engine megathread

Post by Higor »

I'm alive! Took a while to get around to settling in a new place...
Back to action, made a more complex 'tick' system that should take advantage of the OS's system timers as well as high precision timers while reducing CPU usage.

Code: Select all

/*=============================================================================
	CTickerEngine.h
	Author: Fernando Velázquez

	Advanced game tick controller.

	This game tick controller has been designed to take advantage of the
	system's timer resolution while minimizing resource usage.

	This controller knows when the next system timer will hit and will use one
	or more of the necessary sleeping methods to reach the next timer.
=============================================================================*/

Code: Select all

class CTickerEngine
{
protected:
	double LastSleepExitTime; //Time at which native sleep ended
	double SleepResolution; //Native sleep timer resolution
	double TimeStampResolution; //Time between high precision timer updates

	double LastTickTimestamp;
	double LastInterval;
	double LastAdjustedInterval;
	uint64 TickCount;

public:
	CTickerEngine();

	double GetSleepResolution() const;
	double GetTimeStampResolution() const;
	double GetLastTickTimestamp() const;
	uint64 GetTickCount() const;

	void NativeSleep( double Time);
	void NativeYield();
	void FixState( double& EndTime, double CurrentTime); //Needed in case time goes around boundaries
	void ResetState();
	void UpdateTimerResolution();

	double TickNow(); //Tick [Immediate]
	double TickAbsolute( double EndTime); //Tick [Absolute], ends on [EndTime]
	double TickInterval( double Interval, double ResetInterval=0, double AllowedError=0); //Tick [Interval], ends on [LastTickTimestamp + Interval], optional reset state
};

=== Somewhere in the XC_ServerCommandlet:

Code: Select all

	CTickerEngine Ticker;
	Ticker.UpdateTimerResolution();
	Ticker.TickNow();
	while( GIsRunning && !GIsRequestingExit )
	{
		// Update the world.
		guard(UpdateWorld);
...
		unguard;

		// Enforce optional maximum tick rate.
		guard(EnforceTickRate);
		Ticker.TickInterval( 1.0 / (double)Engine->GetMaxTickRate(), 0.25, 0.1 / 1000.0); // 0.1ms error allowed
		unguard;
	}
Result for a high tickrate server were good, only 40% CPU load on MH-SkaarjCastle_2012 (with all the stuff in it).
The usage was 100% when not using the system timers for 'smart sleeping'.
Attachments
Tickrate fluctuation eliminated.
Tickrate fluctuation eliminated.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine megathread

Post by sektor2111 »

Nice... but I'm still having a question: What are we doing with DEFAULT Player ? It looks like if server closes a duplicated connection (I don't get why happens) original 436 client is crashing... and also when server is changing map. I'm not gonna say anything about new ACE + XC_Engine. I'm waiting other "stuff" to be posted first... V24 is more sensitive here... probably with that I cannot do anymore a server usable by default player... I'm thinking to move straight to v21 if things are going to this direction or... maybe I'll wipe drives without doing any backup and that's all.
Default client is Knock-Out here, if we have to delete NONE garbage objects...

Code: Select all

Critical: FMallocWindows::Free
Critical: FMallocWindows::Free
Critical: DeleteObject
Critical: (21721)
Critical: DeleteGarbage
Critical: (TcpipConnection0)
Critical: UObject::PurgeGarbage
Critical: UObject::StaticExit
Critical: appPreExit
Exit: Executing UObject::StaticShutdownAfterError
Exit: Exiting.
Uninitialized: Name subsystem shut down
Uninitialized: Log file closed, 06/19/19 20:44:05
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_Engine megathread

Post by Higor »

I am unable to reproduce this, does that same client crash on this server?
unreal://23.111.157.138:7777
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine megathread

Post by sektor2111 »

[attachment=0]Travel_00.PNG[/attachment]

Code: Select all

NetComeGo: Close TcpipConnection0 06/20/19 08:09:42
Exit: WinSock shut down
Log: 0.0ms Unloading: Package CTF-BT-II-MindGamesCB
Log: 0.0ms Unloading: Package DoorsSnd
Log: 0.0ms Unloading: Package AmbOutside
Log: 0.0ms Unloading: Package Narvas-Nix
Log: 0.0ms Unloading: Package BTPlusPlusv0994_C
Log: 0.0ms Unloading: Package BTPPUser
Log: 0.0ms Unloading: Package egyptian
Log: 0.0ms Unloading: Package EgyptPan
Log: 0.0ms Unloading: Package Ancient
Log: 0.0ms Unloading: Package GreatFire
Log: 0.0ms Unloading: Package Indus1
Log: 0.0ms Unloading: Package GenIn
Log: 0.0ms Unloading: Package Egypt
Log: 0.0ms Unloading: Package GravDig
Log: 0.0ms Unloading: Package Chairs_Ns
Log: 0.0ms Unloading: Package Editor
Log: 0.0ms Unloading: Package 93E2BB8B4A6635F359C3A6BCF13320A1
Log: 0.0ms Unloading: Package 799BFC6E436471B6A527E79C4684481A
Log: 0.0ms Unloading: Package BC4238CD4D2A91B4CF5180A27F19CF8B
Critical: FMallocWindows::Free
Critical: FMallocWindows::Free
Critical: DeleteObject
Critical: (27351)
Critical: DeleteGarbage
Critical: (TcpipConnection0)
Critical: UObject::PurgeGarbage
Critical: UObject::CollectGarbage
Critical: Cleanup
Critical: UGameEngine::LoadMap
Critical: AttemptLoadPending
Critical: TickPending
Critical: UGameEngine::Tick
Critical: UpdateWorld
Critical: MainLoop
Exit: Executing UObject::StaticShutdownAfterError
Exit: Executing UWindowsClient::ShutdownAfterError
Exit: UGalaxyAudioSubsystem::ShutdownAfterError
Log: DirectDraw End Mode
Exit: UD3D9RenderDevice::ShutdownAfterError
Exit: Exiting.
Uninitialized: Name subsystem shut down
Uninitialized: Log file closed, 06/20/19 08:10:26
Attachments
Travel_00.PNG
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_Engine megathread

Post by Higor »

Does it happen when the XC_Engine server doesn't have any of the new download managers? (use only HTTPDownload and ChannelDownload)
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine megathread

Post by sektor2111 »

You suggested me a server to try, I tried - that was the result. I do not have any clue what is in configuration or what was so recommended to be changed is these devs, but since lzma news, I could figure more critical problems, players being unable to join. For me this way is a no go by default. I'm not surprised to see very poor feed-back here...
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine megathread

Post by sektor2111 »

I would have recommendations on XC_Engine. I think it should be compiled on the one hand using the old Windows libraries and on the other by using the processor instructions and the newer libraries in Windows, letting users choose what is most useful for them. Any released version should include two packages: old style and new style.
About file handling something is quite broken, log files that do not show anything relevant, plus we have new system crashes when the dependencies are missing instead of the normal return to the menu. In such cases when there are no logs, we can not correct the errors or figure out what is missing from the schema.
The only case that I noticed missing files was the use of the Editor, but even there XC_EditorAdds collapses at random to the process of cleaning the map.
As a matter of fact, any more recent version than version 21 does not work at all on non SSE2 processors, and on processors that have SSE2 are not stable. The "EXIT" command causes not only the application to shut down but also a collapse at the same time. The server hosted by NfoServers, which has a scheduled stop at 2:00 AM, not only stops but collapses at the same time as something is out of sync.
Server made in Windows 7: If a player joins using the default UT without XC_Engine and we have that double connection open when the second connection is closed the player is served with a collapse of the game, nothing fun in this case.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_Engine megathread

Post by Higor »

XC_Engine_Actor was a galaxy of bugs, luckily I've been fixing them non-stop on the past days, as well as massively improving it.

Meanwhile:
pSQ4N0w30B8
Post Reply