Hi BuddyOli,
mein Feature funktioniert folgendermaßen:
LoadRarestFinishedChunksFirst:
Per Zufallsgenerator wird zunächst irgendein Partchunk des Files ausgesucht das wir noch nicht vollständig haben und unser Gegenüber auch schon besitzt.
Nun beginnt die Routine nach einem Partchunk zu suchen der noch besser dem entspricht was wir lieber runterladen möchten - das Feature geht nun immer einen Partchunk weiter nach rechts und
prüft nach folgendem Chema ob dieser Partchunk besser ist als der den wir uns jeweils als besten vorgemerkt haben.
Die Seltenheit ist folgendermaßen definiert: Man stelle sich die Blöcke der einzelnen Quellen so wie bei Tetris vor und läßt nun alle Steine nach unten fallen.
eMule zählt nun wie oft jeder einzelne Partchunk vorhanden ist.
Der nächste verfügbare Partchunk wird mit dem zunachst gespeichertem verglichen was deren Seltenheit angeht.
- Ist die Seltenheit des gemerkten Parts und des nächsten Parts nicht jeweils mehr als 10* vorhanden geht das Feature davon aus das es sich um sehr seltene Parts handelt.
Ist der nächste noch seltener wird dieser nun als bester Partchunk vorgemerkt und der nächste Partchunk des Files wird gegengecheckt.
Sind diese beiden seltenen Partchunks allerdings gleich selten wird geprüft welcher von beiden bereits vollständiger ist.
Das war nun zunächst der Modus "Seltene Partchunks zuerst laden".
- Ist die Seltenheit des gemerkten Parts und des nächsten Parts jeweils mehr als 10* vorhanden geht das Feature davon aus das es sich nicht mehr um sehr seltene Parts handelt.
Ist der nächste Part nun vollständiger wird dieser jetzt als bester Partchunk vorgemert.
War der nächste Partchunk allerdings genauso vollständig dann wird wiederum geprüft ob dieser seltener ist und dann als bester Partchunk vorgemerkt.
Die Vollständigkeit des letzten Parts(ganz rechts) wird allerdings etwas anders berechnet da dieser meistens kürzer ist und somit von allen MOD´s mit höchster Vorliebe genommen wird. Außer von meinem MOD/Feature, mein MOD
prüft ob es sich um den letzten Partchunk handelt und täuscht somit die Länge eines kompletten Partchunks vor damit dieser nicht fälschlich als bereits angeladen erkannt wird.
Dann hat das Feature noch ein Rechtsklick-Menu für jedes File in dem man aussuchen kann wie viel Preview man benötigt.
Ist die Preview-Funktion für ein File aktiv werden diese bevorzugt geladen solange die Seltenheit der Partchunks größer als 5 ist.
Natürlich wird für sämtliche Quellen individuell bestimmt welcher Partchunk als nächstes geladen werden soll.
Um so ein Preview so früh wie möglich zu erhalten wird zunachst nur 1/8Part am Anfang des Files, bzw. am Ende des Files bevorzugt geladen.
Für z.B. AVI-Files ist es notwendig zuerst auch das Ende des Files zu haben. Damit das Preview also wirklich früh geht lädt meine Routine den letzten Partchunk RÜCKWÄRTS ein.
Nun kann es natürlich sein das der letzte Partchunk so klein ist das 1/8 vom Ende des Files auch noch den vorletzten Partchunk betreffen, dann wird der vorletzte Partchunk ebenfalls RÜCKWÄRTS geladen.
Was ist nun wenn ein File bloß 1 Part größ ist und man möchte z.B. ein mp3-File anspielen ? - Dann wird der Part natürlich VORWÄRTS wie gewohnt geladen.
Die Auswahl der Partchunks die zuerst geladen werden beim Preview-Mode ist allerdings schon wieder etwas aufwendiger:
Der gesamte Moviepreview, jetzt Filepreview genannt geht natürlich noch einen Schritt weiter und nennt sich auch dann schon Version2.
Also Filepreviewpartchunks werden nur dann bevorzugt wenn im Vergleich zum nächsten Partchunk die Seltenheit 5 nicht übersteigt. Weiterhin wird ebenfalls wieder die Seltenheit und Vollständigkeit eines solchen Parts berücksichtigt. Und es gibt eine Reihenfolge in der die Previewpartchunks lieber geladen werden(Preview so früh wie möglich unter anderem).
Es gibt schon Pläne diese Version2.1 der Routine so zu erweitern das es möglich wird noch schneller ein File fertig zu bekommen ohne leechen.
Ich könnte auch mal schreiben was jemand im englischen Forum über meine Routine geschrieben hat:
Übersetzt ins Deutsche von Vorlost:
Ich glaube das Vorlost´s "Rare Chunk"-Patch ist besser zum Verteilen als der offizielle Algorhythmus.
Ein Beispiel:
Nur ein Client Released das File(hat es vollständig), was glaubst Du ist nun besser ?
A) Vervollständige einen weit verbreiteten chunk vom Releaser.
B) Frage bei dem Releaser nach einen seiner seltensten chunks.
Ich glaube Option B ist besser zum Verteilen von Files, weil der Upload eines Releasers ist meist nur schwer zu bekommen.
Und Option A verschwendet einfach Upload des Releasers. Aber der offizielle Algorhythmus verwendet die Option A !!!
Weiterhin beachtet Vorlost´s patch die Vollständigkeit der chunks und wählst den vollständigsten chunk wenn die Seltenheit gleich ist.
Ende der Übersetzung.....
Ich habe mir wirklich jede nur denkbare Situation vorgestellt und dafür dann jeweils das Feature wieder so weit verbessert wie es jetzt ist.
Falls noch Fragen sein sollten...