Register for your free account! | Forgot your password?

You last visited: Today at 20:59

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[How To ] Rapid Neuz

Discussion on [How To ] Rapid Neuz within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.

Reply
 
Old   #1
 
Pumaaa's Avatar
 
elite*gold: 0
Join Date: Sep 2008
Posts: 569
Received Thanks: 695
[How To ] Rapid Neuz

Einige wundern sich evtl wieso Flyff im Vergleich zu andern Spielen so erbärmlich langsam ist.

Das liegt zum einen daran dass unnötig viel KOMPLETT SINNLOSER Code im Hintergrund läuft, der das Spiel nicht nur langsam macht, sondern den Computer auchnoch unnötig warmlaufen lässt.

Man könnte meinen, Aeonsoft hätte für diesen Müll von den Stromkonzernern Geld zugeschoben bekommen.



Die Frage lautet aber doch:

Wie zum Teufel mache ich meinen Client schneller?

1 :
Das erste worauf ihr achten solltet sind Codeschnipsel die wirklich unnötig sind.

Ein Paradebeispiel dafür ist die Funktion OnAfterLoadPropitem(), die eigentlich nur für den Server relevant ist.

Wenn man die Funktion vom Clienten unbeachtet lässt, läd der Client gleich etwas schneller - ganz ohne Nebeneffekte.

2 :


Codeteile die unnötigen Code enthalten oder unnötig viel Code ausführen der garnicht notwendig ist.


Nach weiteren Tests hat sich herausgestellt, dass FOR_LAND_NEAR nur in bestimmten Fällen schneller ist, ihr solltet deshalb von dieser Änderung in eurem eigenen Interesse absehen.

Dafür gibts was anderes :

CModelObject::FrameMove( D3DXVECTOR3 *pvSndPos, float fSpeed )

Die Funktion enthält diesen Teil :

Quote:
int i = ( m_nFrameOld + 1 ) % GetMaxFrame();
int nFrame = ( static_cast<int>( m_fFrameCurrent ) + 1 ) % GetMaxFrame();
while( i != nFrame )
{
BOOL bAttr = FALSE;
/*
MOTION_ATTR* pAttr = IsAttrSound( i );
if( pAttr && pAttr->m_nSndID > 0 && m_nPause == 0 )
{
PLAYSND( pAttr->m_nSndID, pvSndPos );
bAttr = TRUE;
}
*/
BOOL bQuake = IsAttrQuake( (float)( i ) );
if( bQuake && m_nPause == 0 )
{
CMover *pMover = CMover::GetActiveMover();
if( pMover )
{
ItemProp* pItemProp = pMover->GetActiveHandItemProp();
if( pItemProp && pItemProp->dwItemKind3 != IK3_YOYO && !pMover->IsActiveMover() )
{
pMover->GetWorld()->m_pCamera->SetQuake( 15 );
bAttr = TRUE;
}
}
}
if( bAttr )
break;
i = ( i + 1 ) % GetMaxFrame();
}

Welcher Code sich um folgendes Statement geht:
Quote:
pMover->GetWorld()->m_pCamera->SetQuake( 15 );
bAttr = TRUE;
Welches aber NIE ausgeführt werden kann weil :
Quote:
CMover *pMover = CMover::GetActiveMover();
if( pMover )
{
ItemProp* pItemProp = pMover->GetActiveHandItemProp();
if( pItemProp && pItemProp->dwItemKind3 != IK3_YOYO && !pMover->IsActiveMover() )
Der Code setzt einen Pointer zum aktuellen Spieler und führt den Code nur dann aus wenn der aktuelle Spieler nicht der aktuelle Spieler ist. Was so ziemlich nie eintreten wird / kann.

Am besten dieses ganze Codesegment entfernen.


3 :

Operationen die einfach ZU OFT ausgeführt werden.

Warum soll ich 63 mal in der Sekunde prüfen, ob sich im Equip des Spielers ein Objekt befindet dass nicht gerendert werden muss?

Beispiel hierfür ist die Funktion OverCoatItemRender.

Sie sollte nur ausgeführt werden, wenn sich auch tatsächlich was am Equip des Spielers ändert - und zusätzlich alle 2~10 Sekunden.

So spart ihr jede Menge CPU Zeit.

4 :

Funktionen die ausgeführt werden, obwohl sie in einem bestimmten Kontext total sinnfrei sind.

Biespiel hier : CWndTaskBar::Process( void )

Diese Funktion überprüft ob der Mauszeiger auf einem der Iconfelder liegt, um eventuelle Tooltips anzuzeigen.

Und das sogar wenn der Mauszeiger nichtmal in der Nähe der Taskleiste ist.

Und ja - er macht es jedesmal für alle Items in der Taskleiste.

Mit einem

Quote:
CRect rect = GetWindowRect();
if( rect.PtInRect( point) )
{

}
um den entsprechenden Teil der Funktion rum
(
Ab
CPoint point = GetMousePoint();

Bis
if( m_nExecute )

)

Lässt sich das ganze eingrenzen.

5 :

Bis zum bitteren Ende.

Nicht nur , dass der Buffrender in epischem Ausmaße FPS frisst, nein er sorgt auch dafür dass euer Client langsam läd.

Circa eine halbe Sekunde auf einem Highend Rechner wie meinem lassen sich mit der Überarbeitung des Buffrenders allein beim einloggen sparen.

Genaueres findet ihr dazu in CWndWorld::OnInitialUpdate bei der Variable
m_pBuffTexture


Wenn ihr den Clienten durchsucht werdet ihr hunderte solche Fälle finden.

Mit ein bisschen Nachdenken könnt ihr diesen Resourceverschwendungen ein Ende machen.
Pumaaa is offline  
Thanks
25 Users
Old 07/10/2013, 18:11   #2
 
ThoughtfulDev's Avatar
 
elite*gold: 28
Join Date: Aug 2012
Posts: 2,335
Received Thanks: 471
Echt gutes "Tutorial".
Ich finde gut , dass du nicht sofort hingeschrieben hast ja das du dem ändern etc , da die Leute auch mal selbst denken sollen anahand der funktione bzw stellen in einer funktion.

Danke
ThoughtfulDev is offline  
Old 07/10/2013, 18:31   #3
 
elite*gold: 0
Join Date: Aug 2009
Posts: 228
Received Thanks: 26
Tutorial very good.

It would be nice a topic where everyone could help find codes with unnecessary functions or functions that need to be optimized.
julioclitwin is offline  
Old 07/10/2013, 18:57   #4
 
Pumaaa's Avatar
 
elite*gold: 0
Join Date: Sep 2008
Posts: 569
Received Thanks: 695
I have fixed like 90% of them - though it would not be useful to just post them in anyway.
Pumaaa is offline  
Old 07/10/2013, 20:04   #5
 
elite*gold: 0
Join Date: Aug 2009
Posts: 228
Received Thanks: 26
It's possible you make a video with your result?
julioclitwin is offline  
Old 07/10/2013, 22:05   #6
 
elite*gold: 0
Join Date: Apr 2013
Posts: 511
Received Thanks: 431
Ja, bitte, lass "OnAfterLoadPropitem()" aus dem Client weg, wenn man kA hat braucht man dass auch nicht.

Dass teil ist dafür zuständig das dass CreateItem Fenster ordentlich funktioniert vom Sortieren her, also bitte, lasst es drin.

Gut, bei "CWndTaskBar::Process" kann ich es verstehen dass dort ToolTip nicht hin gehört, du kommst allerdings nicht drumherum dass alles dauerhaft zu Prüfen, bzw wenn iwer an der Funktion dort rumfummelt kann es gut sein dass er den Hotkey Manager abschießt, denn "CWndTaskBar::Process" ist dafür zuständig dass beim drücken von "K" sich dass Skill Tree öffnet, oder bei "I" dass Inventory. ;>

Ansich würde ich eher mal mir den Chat ansehen dude, öffne mal dass Chat Fenster wenn die Neuz um Debug Modus läuft dann siehst du was für ein Frame Drop du kassierst.
Wanetrain is offline  
Thanks
1 User
Old 07/10/2013, 23:04   #7
 
Pumaaa's Avatar
 
elite*gold: 0
Join Date: Sep 2008
Posts: 569
Received Thanks: 695
Quote:
Originally Posted by Wanetrain View Post
Ja, bitte, lass "OnAfterLoadPropitem()" aus dem Client weg, wenn man kA hat braucht man dass auch nicht.

Dass teil ist dafür zuständig das dass CreateItem Fenster ordentlich funktioniert vom Sortieren her, also bitte, lasst es drin.

Gut, bei "CWndTaskBar::Process" kann ich es verstehen dass dort ToolTip nicht hin gehört, du kommst allerdings nicht drumherum dass alles dauerhaft zu Prüfen, bzw wenn iwer an der Funktion dort rumfummelt kann es gut sein dass er den Hotkey Manager abschießt, denn "CWndTaskBar::Process" ist dafür zuständig dass beim drücken von "K" sich dass Skill Tree öffnet, oder bei "I" dass Inventory. ;>

Ansich würde ich eher mal mir den Chat ansehen dude, öffne mal dass Chat Fenster wenn die Neuz um Debug Modus läuft dann siehst du was für ein Frame Drop du kassierst.

Man soll die Funktion auch nicht abschießen.

Dauerhaft prüfen musst du den Tooltip auch nicht, es reicht das 2 mal in der Sekunde zutun.

Wenn du mir erklärst welchen Vorteil ein Spieler von einer guten Sortierung eines ungenutzten Fensters hat dann stimm ich dir gerne zu.

Wenn man es unbedingt braucht kann man die Funktion immernoch beim ersten Aufruf des Fensters callen.

Der Chat ist leider größtenteils unumgänglich.
Pumaaa is offline  
Thanks
1 User
Old 07/11/2013, 18:12   #8
 
elite*gold: 0
Join Date: Apr 2013
Posts: 511
Received Thanks: 431
Ja, der Chat ist unumgänglich, dass stimmt schon allerdings frisst dieser mit abstand am meisten, man könnte die Framerate auch öffnen, heißt nicht mehr auf 62 Binden, allerdings entstehen so Timing Fehler, wer es testen will: Start --> Debug Fenster --> Frame Skip weg, dann merkt ihr ganz genau wie InGame alles schneller abläuft, was wiederrum geändert werden müsse wenn man so was machen will.
Wanetrain is offline  
Old 07/24/2013, 07:03   #9
 
elite*gold: 0
Join Date: Jan 2011
Posts: 3
Received Thanks: 0
I didn't find a way to significantly improve neuz performance by reducing calls to OverCoatItemRenderCheck function. I can remove it from CWndStatus::OnDraw, but it doesnt seem necessary... It would be great if I could remove it from CMover::Render, but if I do that, the players are going to keep seeing others players expired fashions.

Well, I also didn't understand the item 5. The m_pBuffTexture variable is set only once... only when the player joins the worldserver. So what do I need to optimize here?
lews169 is offline  
Old 07/24/2013, 15:34   #10
 
Pumaaa's Avatar
 
elite*gold: 0
Join Date: Sep 2008
Posts: 569
Received Thanks: 695
You can work around that by calling that function OnDoEquip and OnDoAddObj / OnRedoEquip


And 5. is to improve loading performance.
Pumaaa is offline  
Old 07/24/2013, 18:32   #11
 
Yoshii50000's Avatar
 
elite*gold: 260
Join Date: Apr 2011
Posts: 343
Received Thanks: 478
das erste was den start und den verbrauchten arbeitsspeicher extrem runter zieht ist einfach alle res dateien entpacken und die resdateien löschen, dann muss der client das nicht beim starten laden sondern dann, wenn er es braucht.
Yoshii50000 is offline  
Old 07/24/2013, 20:00   #12
 
Pumaaa's Avatar
 
elite*gold: 0
Join Date: Sep 2008
Posts: 569
Received Thanks: 695
Das ist etwas was ich noch testen wollte, ist ja auch irgendwo logisch.

Wobei ich nicht genau weiß ob er nur die Resdateien öffnet und daraus läd wenn er es braucht oder ob er direkt alles in den Speicher läd.

ED:

Es kann nur sein dass er die Resdateien öffnet aber die Dateien erst bei Gebrauch aus dem Speicher läd .

Ich habe in meinem Clienten nur wenige .res Dateien, dafür sind diese im Schnitt 500+ mb groß.

Würde er diese alle in den Speicher laden käme meine RAM Auslastung woanders raus.
Pumaaa is offline  
Old 07/24/2013, 23:50   #13
 
Yoshii50000's Avatar
 
elite*gold: 260
Join Date: Apr 2011
Posts: 343
Received Thanks: 478
Quote:
Originally Posted by Pumaaa View Post
Das ist etwas was ich noch testen wollte, ist ja auch irgendwo logisch.

Wobei ich nicht genau weiß ob er nur die Resdateien öffnet und daraus läd wenn er es braucht oder ob er direkt alles in den Speicher läd.

ED:

Es kann nur sein dass er die Resdateien öffnet aber die Dateien erst bei Gebrauch aus dem Speicher läd .

Ich habe in meinem Clienten nur wenige .res Dateien, dafür sind diese im Schnitt 500+ mb groß.

Würde er diese alle in den Speicher laden käme meine RAM Auslastung woanders raus.
Wenn du aber jetzt alles in res dateien packst oder garkeine res dateien hast ist das ein utnerschied von 100mb arbeitsspeicher und 20s ladezeit
Yoshii50000 is offline  
Old 07/24/2013, 23:58   #14



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
Der wird eher dadurch langsamer, dass er ja die Resourcen erst einmal entpacken muss und dann den Content lädt, den er aktuell braucht.

Die Suche findet ja über "*.*" im aktuellen Verzeichnis statt.
Sedrika is offline  
Old 07/25/2013, 12:08   #15
 
Yoshii50000's Avatar
 
elite*gold: 260
Join Date: Apr 2011
Posts: 343
Received Thanks: 478
Quote:
Originally Posted by Sedrika View Post
Der wird eher dadurch langsamer, dass er ja die Resourcen erst einmal entpacken muss und dann den Content lädt, den er aktuell braucht.

Die Suche findet ja über "*.*" im aktuellen Verzeichnis statt.
logisch wäre es eig. hab im source jetzt nicht genau danach geschaut, hab praktisch es aber nur andersrum erlebt.
Yoshii50000 is offline  
Reply


Similar Threads Similar Threads
NEW RELEASED Free VIP Hack Aimbot + Rapid fire + No Recoil No Spread + Rapid Slash
11/01/2014 - Soldier Front Hacks, Bots, Cheats & Exploits - 9 Replies
VIP Hack By LegendHacker1337 Solutions for Errors : Screenshot : DFI SF CHEAT tarlac 1.10.2013 - YouTube Instruction :
NEW RELEASED Free VIP Hack Aimbot + Rapid fire + No Recoil No Spread + Rapid Slash
01/29/2013 - Soldier Front Hacks, Bots, Cheats & Exploits - 1 Replies
VIP Hack By LegendHacker1337 Solutions for Errors : Screenshot : DFI SF CHEAT tarlac 1.10.2013 - YouTube Instruction :
NEW RELEASED Free VIP Hack Aimbot + Rapid fire + No Recoil No Spread + Rapid Slash
01/29/2013 - Soldier Front Hacks, Bots, Cheats & Exploits - 3 Replies
VIP Hack By LegendHacker1337 Solutions for Errors : Screenshot : http://www.youtube.com/watch?v=SkhixoTTfwA Instruction :
NEW RELEASED Free VIP Hack Aimbot + Rapid fire + No Recoil No Spread + Rapid Slash
01/29/2013 - Soldier Front Hacks, Bots, Cheats & Exploits - 0 Replies
VIP Hack By LegendHacker1337 Solutions for Errors : Screenshot : http://www.youtube.com/watch?v=SkhixoTTfwA Instruction :
Backyard Monsters - Double Rapid Resources + Rapid Upgrade, Build, Hathing (7.7.2011)
09/14/2011 - Facebook - 48 Replies
It is not savable. You are right guys. Sorry for posting not working hack! 74 45 8B DA 8B 55 EC 8B 4A 4C - Change "JE" to "JG" 74 42 8B C1 C7 45 - Change "JE" to "JG" Program for Anti AFK: Auto Clicker,Mouse Auto Clicker,Auto Mouse Clicker Software Free Download



All times are GMT +1. The time now is 21:00.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.