Schönen Guten Tag liebe Com,
ich habe mich die letzte Zeit intensiv mit dem Code des Spiels auseinander gesetzt, zumidest mal mit python. Auch wenn es im Quellcode viele Elemente gibt, die ohne Probleme entfernt werden können und ich sehe oftmals Codes, die komplett unstrukturiert und übersichtlich sind. Als Beispiel werfen wir mal einen Blick in die typische game.py welche bei jedem fast gleich aussieht. Doch schon ganz oben fängt des ganze an:
1. --> Zusammenfügen der ganzen imports und löschen von doppelten imports.
Code:
import os
import app
import dbg
import grp
import item
import time
import background
import chr
import chrmgr
import cw_player
import snd
import chat
import textTail
import snd
import net
import effect
import wndMgr
import fly
import systemSetting
import quest
import guild
import skill
import messenger
import localeInfo
import constInfo
import exchange
import ime
import ui
import serverInfo
import uiCommon
import uiPhaseCurtain
import uiMapNameShower
import uiAffectShower
import uiPlayerGauge
import uiCharacter
import uiTarget
import uiDeathCause
import uiauctionbuylink
import uiTeleport
import uiMobInfo
import uiProphecy
import cw_lootfilter
import localeString
import nonplayer
import uiCelestialPortal
import uiToolTip
Sieht schon vom Anfang unordentlich aus und vorallem diese doppelt und draifachen imports überall sind komplett
UNNÖTIG, weil es bereits genügt , ganz oben es nur 1x stehen zu haben. Und um das ganze besser zu machen, habe ich dies in dieser Form zusammen gestellt, was exakt den gleichen Zweck erfüllt:
Code:
import serverInfo,uiCommon,uiPhaseCurtain,uiMapNameShower,uiAffectShower,uiPlayerGauge,uiCharacter,uiTarget
import uiDeathCause,uiauctionbuylink,uiTeleport,uiMobInfo,uiProphecy,cw_lootfilter,localeString,nonplayer,uiCelestialPortal,uiToolTip
spart eine Mange Zeilen und wenn ihr die duplikat Imports noch entfernt, sind es noch mehr.
2. --> entfernen von Codes, die im Spiel nicht verwendet werden.
Überall in den Files befinden sich Code schnipsel, welche so aussehen:
Code:
# if not app.IsPressed(app.DIK_LSHIFT):
Diese Codes wurden aus bestimmten Gründen auskommentiert und deaktiviert, z.B weil diese Probleme mit anderen Funktionen auslösen, nicht gebraucht werden oder nicht vollständig und fehlerfrei implementiert worden sind. Auf jeden Fall können diese entfernt werden, wenn nicht gebraucht, es wird keine Auswirkungen auf das Spiel haben. Wer gründlich sucht, wird auch einiges an Platz sparen können.
3. Kommentare welche auf Koreanisch sind.
Es befinden sich haufenweise Kommentare wie das hier z.B.
oder das hier:
Code:
######################################################################################
hier kann man eben erkennen, dass den Entwicklern iwie langweilig war, weil solche Teile einfach nur überall vorkommen.
Jedenfalls genügt es, wenn man Funktionen mit eindeutigen Kommentaren versieht und diese auch lesen kann. Es kann auch vorkommen (abhängig vom Editor), dass diese Zeichenfolge beim Bearbeiten Probleme bereitet und beim Speichern (ich glaube die uilocale.py) oder sowas in der Richtung.
4. (Trifft nicht auf alle zu, da manche lieber den Abstand zwischen den Commands so lassen wollen), doch man kann alle Leerzeichen und Tabs am Ende jeder Zeile direkt rauslöschen. Ebenfalls können alle Leerzeilen mit rausgelöscht werden, dadurch wird der Code nochmal locker 100-300 Zeilen kleiner und ist am Ende übersichtlicher.
Wer diese Schritte befolgt, wird es später leichter haben, Dinge im Code zu suchen und zu verändern.
Das gleiche habe ich auch mit der Source des Clienten und des Servers gemacht, dort sollte man etwas vorsichtiger sein, weil das compilen eben zeitaufwändiger ist. Dort findet man sehr viele solche Elemente:
Code:
// NOTE : 매트릭스에서 위치를 직접 얻어온다 - [levites]
oder
Ihr werdet in vielen .cpp sowie auch .h Files extrem viel solcher unnötigen und sowieso unleserlichen Kommentare finden, diese werden euch in ein paar Fälle die Dateien um fast 1/3 schrumpfen, ohne das des Spiel davon beeinträchtigt wird.
Ich hoffe mit diesen Tipps konnte ich dem einen oder anderen bisschen helfen, auch wenn das jetzt keine große Sache ist. Es wird euch am Ende eben Zeit sparen und vllt geht das compilen auch etwas schneller, wenn das System nicht solange braucht, jede Datei vollständig einzulesen. Ich habe mir die Zeit genommen und ich hab das Gefühl, dadurch läuft das Spiel am Ende ein tick flüssiger und sauberer. vllt bilde ich mir des aber auch nur ein, es auszuprobieren, schadet auf jeden Fall nicht.
Wer dies machen will, soll am besten nach jeder File die root zusammenpacken und des Game starten und testen ob nichts versehentlich falsch gelöscht wurde. Auch backups sollten davor gemacht werden.
Falls ihr weiter Fragen habt, was Python und dem Modding von Metin2 angeht, könnt ihr mich gerne anschreiben.
€: Ich würde für diese Aktion Notepad++ benutzen, da dieser Editor alle Funktionen hat, dies schnell für die gesamte Datei zu übernehmen. Niemand will jede einzelne Zeile von Hand bearbeiten/löschen, sowas kann damit in wenigen Sekunden gemacht werden.
mit freundlichen Grüßen, Endless