Unterschiede (Vor- und Nachteile) vom XML gegenüber Ini-Dateien



  • lol, ihr seid aber auch blöd und selber schuld, wenn ihr in einem c++ forum mit neuen technologien ankommt. im dschungel von afrika will auch niemand nen auto 👎



  • Außenstehender schrieb:

    lol, ihr seid aber auch blöd und selber schuld, wenn ihr in einem c++ forum mit neuen technologien ankommt. im dschungel von afrika will auch niemand nen auto 👎

    😃

    MfG SideWinder



  • Außenstehender schrieb:

    lol, ihr seid aber auch blöd und selber schuld, wenn ihr in einem c++ forum mit neuen technologien ankommt. im dschungel von afrika will auch niemand nen auto 👎

    Meinst du mit neuen technologien das alte xml zeugs?



  • er muss lisp meinen. lisp ist naemlich secret alien technology und der menschheit jahrtausende voraus. deswegen kapierts auch kaum jemand.



  • XML hat einen gravierenden Vorteil:

    man kann Konfigurationsdateien einfach gegen ein Schema validieren und jedes Feld auf gültige Werte einschränken (z.B: Windowed darf nur einen bool-Wert besitzen). Heute liefert schon fast jede Programmiersprache einen Parser + Validator für XSD-Schema in der Standardbibliothek mit. Stellt euch mal vor wie fricklig sowas mit ini Dateien ist.



  • das schema musst du erstmal schreiben. die gleiche arbeit fuer ne ini datei muss man sich auch machen.



  • c.rackwitz schrieb:

    das schema musst du erstmal schreiben. die gleiche arbeit fuer ne ini datei muss man sich auch machen.

    Ne, ich schreib

    new XmlSerializer(typeof(MyConfigClassWithGeilePropertiesType)).Serialize(stream, config);
    

    Da muss ich kein Schema schreiben, weil die Properties vom passenden Typ sind und wenn ich den Wertebereich einschränken muss, muss ich sowieso die Validierung in die Properties einbauen, unabhängig davon was ich mit der Klasse dann mache. Aber für das XML ist der einzige Aufwand diese Zeile.



  • Schön peinliche Diskussion...

    PS: foo_bar oder fooBar?



  • und wo steht, welches property welchen wertebereich oder typ haben darf?



  • c.rackwitz schrieb:

    und wo steht, welches property welchen wertebereich oder typ haben darf?

    Der Typ ergibt sich durch das Property selbst:

    public class Configuration {
        public Size Resolution {
            get { return resolution; }
            set { resolution = value; }
        }
    
        public bool Windowed {
            get { return windowed; }
            set { windowed = value; }
        }
    ...
    }
    

    Daraus entsteht dann irgendwie sowas in der Art:

    <Configuration>
        <Resolution type="System.Drawing.Size">
            <Width>800</Width>
            <Height>600</Height>
        </Resolution>
        <Windowed>True</Windowed>
    </Configuration>
    

    Den Wertebereich prüfst du im Code bei der Zuweisung der Properties und wirfst ggf. eine Exception. Du stellst also sicher, dass eine Instanz von Configuration immer gültige Werte hat. Beim Deserialisieren werden die ganzen Zuweisungen gemacht und ungültiges XML oder ungültige Werte führen so zu einem Fehler beim Deserialisieren (auch ein Einzeiler).



  • XMLSpy hat übrigens einen ganz hervorragenden Schema-Editor, dem man eine XML vorlegt, und man kann daraus mit einigen Zusatzeingaben ein (sehr striktes) Schema bauen. Selbst bei komplexeren Datenformaten Dauer < 1 Stunde.



  • c.rackwitz schrieb:

    das schema musst du erstmal schreiben. die gleiche arbeit fuer ne ini datei muss man sich auch machen.

    Klar ist das Schreiben des Schemas ein Mehraufwand. Aber danach ist die Struktur der XML-Dateien klar definiert und Du kannst schon vor dem Parsen die Korrektheit des Formats prüfen. Das ist besonders nützlich, wenn mehrere Programme das gleiche Format verwenden. Wenn alle Programme das gleiche Schema zugrunde legen, ist die Interoperabilität gewährleistet.

    Und was das Erzeugen angeht: Entweder man erzeugt das Schema automatisch aus bestehenden XML-Dateien und passt es noch ein wenig an (Kardinalitäten etc) oder man schreibt es kurz per Hand. Es gibt zahlreiche sehr gute Editoren mit Code-Completion, womit das recht fix von der Hand geht. Da hat man sich imo sehr schnell eingearbeitet. XML-Schema ist wesentlich weniger komplex als beispielsweise XSLT oder XPath.



  • Marc++us schrieb:

    XMLSpy hat übrigens einen ganz hervorragenden Schema-Editor, dem man eine XML vorlegt, und man kann daraus mit einigen Zusatzeingaben ein (sehr striktes) Schema bauen. Selbst bei komplexeren Datenformaten Dauer < 1 Stunde.

    Was heißt hier "< 1 Stunde"? Wie komplex sind die Datenformate die du mit XML verwaltest?

    MfG SideWinder



  • Das letzte XML-Schema habe ich im Laufe meiner Diplomarbeit geschrieben und waren von der Komplexität her etwa 30-40 Schema-Typen (~1000 Zeilen). Hat vielleicht einen Vormittag gedauert. Mit entsprechenden Editoren brauchste dabei nicht mal XML schreiben sondern kannst Dir die Typen und Attribute auch zusammenklicken.
    XMLSpy bietet verdammt viele Möglichkeiten, ist mir persönlich aber schon fast zuviel. Habe Eclipse Webtools Plattform benutzt, ist umsonst und hat einen vernünftigen XML und Schema Editor.



  • Optimizer schrieb:

    ...

    das ueberzeugt mich garnicht. typisch java.

    erkennt keiner von euch, dass man genau das gleiche auch mit lisp machen kann?



  • erkennt keiner von euch, dass man genau das gleiche auch mit lisp machen kann?

    Solange du Java abwertest ohne es überhaupt zu erkennen (und das kann man von sich bei weitem nich behaupten, wenn man C# und Java Code verwechselt), hast du auch absolut keinen Anspruch Kenntnisse über Nischensprachen von anderen "Java"-Programmierern zu fordern.



  • c.rackwitz schrieb:

    Optimizer schrieb:

    ...

    das ueberzeugt mich garnicht. typisch java.

    erkennt keiner von euch, dass man genau das gleiche auch mit lisp machen kann?

    Ok. Du kritisiertest, dass man ein Schema schreiben muss. Ich zeigte, dass man das nicht muss (für Konfigurationsdateien, wofür man inis üblicherweise verwendet). Was ist an der Lösung genau schlecht? Geht sie am Thema vorbei? Willst du unbedingt ein freakiges Schema schreiben und alle XML-Tricks für was simples auspacken, dich endlos verkünsteln? Was hat das überhaupt mit einer Programmiersprache zu tun gehabt? ➡ ⚠



  • TactX schrieb:

    Schön peinliche Diskussion...

    PS: foo_bar oder fooBar?

    fooBar natürlich 🙄 sonst könnte man ja gleich noch ungarische notation verwenden.



  • was ich meinte war:

    die selbe arbeit, die ihr euch mit sun/MS java und XML machen muesst, um dateien zu validieren, die waere auch zu tun wenn man lisp daten validieren wollen wuerde. ich konnte es einfach nicht so stehen lassen, dass - ich weiss nicht mehr wer - xml schemas als etwas einfaches hinstellt, was man mit inis oder lisp daten nicht machen koennte. kann man naemlich. also ist es kein argument fuer xml.

    und weil hier doch von config dateien die rede ist, braucht man ja schon mal kein schema, weil nichts interoperieren muss. von mir aus kanns gerne auch ein binaerformat sein, so lange das programm sich selbst dann noch lesen kann.

    das laesst sich dann aber schlecht vom menschen bearbeiten. deswegen bin ich auch gegen xml als config.
    laesst sich mit primitiven texteditoren schwerer bearbeiten als conf oder ini.

    so lange die daten keine baumstruktur haben, sind doch conf und ini perfekt. und wenn doch baumstruktur verlangt ist, wuerde ich s-expressions (lisp) vorziehen. die strapazieren das auge nicht mit meta-text wie "<attribute>", "<property>" oder diesen redundanten schliessenden tags. ein einfaches </> koennte es doch auch tun, ist dann aber wieder zu "uneindeutig", und das scheint manche zu beunruhigen.



  • Ich habe die Diskussion nicht im Detail verfolgt. Ich stimme dir auf jeden Fall mal zu, dass man kein Schema braucht (wie ich sagte).

    so lange die daten keine baumstruktur haben, sind doch conf und ini perfekt.

    Eine Baumstruktur kann aber schon deutlich übersichtlicher sein... magst du mal meine UT2004.ini sehen?

    [URL]
    Protocol=ut2004
    ProtocolDescription=Unreal Protocol
    Name=Player
    Map=Index.ut2
    LocalMap=NvidiaLogo.ut2
    NetBrowseMap=Entry.ut2
    Host=
    Portal=
    MapExt=ut2
    EXEName=UT2004.exe
    SaveExt=usa
    Port=7777
    Class=Engine.Pawn
    Character=Gorge
    
    [FirstRun]
    FirstRun=3369
    
    [Engine.Engine]
    RenderDevice=D3DDrv.D3DRenderDevice
    ;RenderDevice=D3D9Drv.D3D9RenderDevice
    ;RenderDevice=Engine.NullRenderDevice
    ;RenderDevice=OpenGLDrv.OpenGLRenderDevice
    ;RenderDevice=PixoDrv.PixoRenderDevice
    AudioDevice=ALAudio.ALAudioSubsystem
    NetworkDevice=IpDrv.TcpNetDriver
    DemoRecordingDevice=Engine.DemoRecDriver
    Console=XInterface.ExtendedConsole
    GUIController=GUI2K4.UT2K4GUIController
    StreamPlayer=Engine.StreamInteraction
    Language=int
    Product=UT2004
    GameEngine=Engine.GameEngine
    EditorEngine=Editor.EditorEngine
    DefaultGame=XGame.XDeathmatch
    DefaultServerGame=XGame.XDeathmatch
    ViewportManager=WinDrv.WindowsClient
    ;ViewportManager=SDLDrv.SDLClient
    Render=Render.Render
    Input=Engine.Input
    Canvas=Engine.Canvas
    DetectedVideoMemory=256
    ServerReadsStdin=False
    CdPath=E:\CD1
    
    [Core.System]
    PurgeCacheDays=30
    SavePath=../Save
    CachePath=../Cache
    CacheExt=.uxx
    CacheRecordPath=../System/*.ucl
    MusicPath=../Music
    SpeechPath=../Speech
    Paths=../System/*.u
    Paths=../Maps/*.ut2
    Paths=../Textures/*.utx
    Paths=../Sounds/*.uax
    Paths=../Music/*.umx
    Paths=../StaticMeshes/*.usx
    Paths=../Animations/*.ukx
    Paths=../Saves/*.uvx
    Suppress=DevLoad
    Suppress=DevSave
    Suppress=DevNetTraffic
    Suppress=DevGarbage
    Suppress=DevKill
    Suppress=DevReplace
    Suppress=DevCompile
    Suppress=DevBind
    Suppress=DevBsp
    Suppress=DevNet
    Suppress=DevKarma
    Suppress=RecordCache
    Suppress=MapVoteDebug
    Suppress=Init
    suppress=MapVote
    Suppress=VoiceChat
    Suppress=ChatManager
    Suppress=Timer
    
    [Engine.GameEngine]
    CacheSizeMegs=32
    UseSound=True
    VoIPAllowVAD=False
    ServerActors=IpDrv.MasterServerUplink
    ServerActors=UWeb.WebServer
    ServerPackages=Core
    ServerPackages=Engine
    ServerPackages=Fire
    ServerPackages=Editor
    ServerPackages=IpDrv
    ServerPackages=UWeb
    ServerPackages=GamePlay
    ServerPackages=UnrealGame
    ServerPackages=XEffects
    ServerPackages=XPickups
    ServerPackages=XGame
    ServerPackages=XWeapons
    ServerPackages=XInterface
    ServerPackages=Vehicles
    ServerPackages=TeamSymbols_UT2003
    ServerPackages=TeamSymbols_UT2004
    ServerPackages=BonusPack
    ServerPackages=SkaarjPack_rc
    ServerPackages=SkaarjPack
    ServerPackages=UTClassic
    ServerPackages=UT2k4Assault
    ServerPackages=Onslaught
    ServerPackages=GUI2K4
    ServerPackages=UT2k4AssaultFull
    ServerPackages=OnslaughtFull
    ServerPackages=xVoting
    UseStaticMeshBatching=True
    ColorHighDetailMeshes=False
    ColorSlowCollisionMeshes=False
    ColorNoCollisionMeshes=False
    ColorWorldTextures=False
    ColorPlayerAndWeaponTextures=False
    ColorInterfaceTextures=False
    MainMenuClass=GUI2K4.UT2K4MainMenu
    ConnectingMenuClass=GUI2K4.UT2K4ServerLoading
    DisconnectMenuClass=GUI2K4.UT2K4DisconnectOptionPage
    LoadingClass=GUI2K4.UT2K4SP_LadderLoading
    SinglePlayerMenuClass=GUI2K4.UT2K4SP_Main
    
    [WinDrv.WindowsClient]
    WindowedViewportX=640
    WindowedViewportY=480
    FullscreenViewportX=1280
    FullscreenViewportY=1024
    MenuViewportX=640
    MenuViewportY=480
    Brightness=0.800000
    Contrast=0.700000
    Gamma=0.800000
    UseJoystick=False
    CaptureMouse=True
    StartupFullscreen=True
    ScreenFlashes=True
    NoLighting=False
    MinDesiredFrameRate=35.000000
    AnimMeshDynamicLOD=0.000000
    Decals=True
    Coronas=True
    DecoLayers=True
    Projectors=True
    NoDynamicLights=False
    ReportDynamicUploads=False
    TextureDetailInterface=Higher
    TextureDetailTerrain=UltraHigh
    TextureDetailWeaponSkin=UltraHigh
    TextureDetailPlayerSkin=UltraHigh
    TextureDetailWorld=UltraHigh
    TextureDetailRenderMap=UltraHigh
    TextureDetailLightmap=UltraHigh
    NoFractalAnim=False
    ScaleHUDX=0.000000
    MouseXMultiplier=1.000000
    MouseYMultiplier=1.000000
    UseSpeechRecognition=True
    WeatherEffects=True
    DrawDistanceLOD=1.000000
    
    [SDLDrv.SDLClient]
    WindowedViewportX=640
    WindowedViewportY=480
    FullscreenViewportX=800
    FullscreenViewportY=600
    MenuViewportX=640
    MenuViewportY=480
    Brightness=0.800000
    Contrast=0.700000
    Gamma=0.800000
    UseJoystick=False
    JoystickNumber=0
    IgnoreHat=False
    JoystickHatNumber=0
    CaptureMouse=True
    StartupFullscreen=True
    ScreenFlashes=True
    NoLighting=False
    MinDesiredFrameRate=35.000000
    AnimMeshDynamicLOD=0.0
    Decals=True
    Coronas=True
    DecoLayers=True
    Projectors=True
    NoDynamicLights=False
    ReportDynamicUploads=False
    TextureDetailInterface=Normal
    TextureDetailTerrain=Normal
    TextureDetailWeaponSkin=Normal
    TextureDetailPlayerSkin=Normal
    TextureDetailWorld=Normal
    TextureDetailRenderMap=Normal
    TextureDetailLightmap=UltraHigh
    TextureMaxLOD=0
    TextureMinLOD=0
    NoFractalAnim=False
    WeatherEffects=True
    DrawDistanceLOD=1.0
    IgnoreUngrabbedMouse=False
    AllowUnicodeKeys=False
    AllowCommandQKeys=True
    MacFakeMouseButtons=True
    MacKeepAllScreensOn=False
    TextToSpeechFile=
    MacNativeTextToSpeech=True
    
    [ALAudio.ALAudioSubsystem]
    UseEAX=False
    Use3DSound=False
    UseDefaultDriver=True
    CompatibilityMode=False
    MaxEAXVersion=255
    UsePrecache=True
    ReverseStereo=False
    Channels=32
    MusicVolume=0.200000
    AmbientVolume=0.500000
    SoundVolume=0.600000
    VoiceVolume=4.000000
    VolumeScaleRec=0.100000
    DopplerFactor=1.000000
    Rolloff=0.500000
    TimeBetweenHWUpdates=15.000000
    DisablePitch=False
    LowQualitySound=False
    UseVoIP=True
    UseVAD=False
    UseSpatializedVoice=False
    SpatializedVoiceRadius=100000.000000
    EnhancedDenoiser=False
    LocalZOffset=0.000000
    
    [IpDrv.TcpNetDriver]
    AllowDownloads=True
    ConnectionTimeout=20.0
    InitialConnectTimeout=200.0
    AckTimeout=1.0
    KeepAliveTime=0.2
    MaxClientRate=15000
    MaxInternetClientRate=10000
    SimLatency=0
    RelevantTimeout=5.0
    SpawnPrioritySeconds=1.0
    ServerTravelPause=4.0
    NetServerMaxTickRate=20
    LanServerMaxTickRate=35
    DownloadManagers=IpDrv.HTTPDownload
    DownloadManagers=Engine.ChannelDownload
    AllowPlayerPortUnreach=False
    LogPortUnreach=False
    MaxConnPerIPPerMinute=5
    LogMaxConnPerIPPerMin=False
    
    [IpServer.UdpServerQuery]
    GameName=ut2
    
    [IpDrv.MasterServerUplink]
    DoUplink=True
    UplinkToGamespy=True
    SendStats=True
    ServerBehindNAT=False
    DoLANBroadcast=False
    bIgnoreUTANBans=False
    
    [IpDrv.MasterServerLink]
    LANPort=11777
    LANServerPort=10777
    MasterServerList=(Address="ut2004master1.epicgames.com",Port=28902)
    MasterServerList=(Address="ut2004master2.epicgames.com",Port=28902)
    
    [IpDrv.HTTPDownload]
    RedirectToURL=
    ProxyServerHost=
    ProxyServerPort=3128
    UseCompression=True
    
    [Engine.DemoRecDriver]
    AllowDownloads=True
    DemoSpectatorClass=UnrealGame.DemoRecSpectator
    MaxClientRate=25000
    ConnectionTimeout=15.0
    InitialConnectTimeout=200.0
    AckTimeout=1.0
    KeepAliveTime=1.0
    SimLatency=0
    RelevantTimeout=5.0
    SpawnPrioritySeconds=1.0
    ServerTravelPause=4.0
    NetServerMaxTickRate=30
    LanServerMaxTickRate=30
    
    [Engine.GameReplicationInfo]
    ServerName=UT2004 Server
    ShortName=UT2 Server
    ServerRegion=0
    AdminName=KSK_Soldatin
    AdminEmail=
    MessageOfTheDay=
    
    [D3DDrv.D3DRenderDevice]
    DetailTextures=True
    HighDetailActors=True
    SuperHighDetailActors=True
    UsePrecaching=True
    UseTrilinear=True
    AdapterNumber=-1
    ReduceMouseLag=True
    UseTripleBuffering=False
    UseHardwareTL=True
    UseHardwareVS=True
    UseCubemaps=True
    DesiredRefreshRate=60
    UseCompressedLightmaps=True
    UseStencil=False
    Use16bit=False
    Use16bitTextures=False
    MaxPixelShaderVersion=255
    UseVSync=False
    LevelOfAnisotropy=1
    DetailTexMipBias=0.000000
    DefaultTexMipBias=-0.500000
    UseNPatches=False
    TesselationFactor=1.000000
    CheckForOverflow=False
    AvoidHitches=False
    OverrideDesktopRefreshRate=False
    ReportUnusedTextures=False
    DecompressTextures=False
    TerrainLOD=0
    SkyboxHack=False
    LowQualityTerrain=False
    
    [D3D9Drv.D3D9RenderDevice]
    DetailTextures=True
    HighDetailActors=True
    SuperHighDetailActors=True
    UsePrecaching=True
    UseTrilinear=True
    AdapterNumber=-1
    ReduceMouseLag=True
    UseTripleBuffering=False
    UseHardwareTL=True
    UseHardwareVS=True
    UseCubemaps=True
    DesiredRefreshRate=60
    UseCompressedLightmaps=True
    UseStencil=False
    Use16bit=False
    Use16bitTextures=False
    MaxPixelShaderVersion=255
    UseVSync=False
    LevelOfAnisotropy=1
    DetailTexMipBias=0.0
    DefaultTexMipBias=-0.5
    UseNPatches=False
    TesselationFactor=1.0
    CheckForOverflow=False
    OverrideDesktopRefreshRate=False
    
    [OpenGLDrv.OpenGLRenderDevice]
    DetailTextures=True
    HighDetailActors=True
    SuperHighDetailActors=True
    UsePrecaching=True
    UseCompressedLightmaps=True
    UseTrilinear=True
    UseStencil=False
    MaxTextureUnits=8
    VARSize=32
    ReduceMouseLag=True
    UseVSync=False
    LevelOfAnisotropy=1.0
    DetailTexMipBias=0.0
    DefaultTexMipBias=-0.5
    UseVBO=False
    UseVSync=False
    AppleVA=1
    MultisampleBuffers=0
    MultisampleSamples=0
    MultisampleHint=2
    
    [PixoDrv.PixoRenderDevice]
    FogEnabled=True
    Zoom2X=True
    SimpleMaterials=True
    LimitTextureSize=True
    LowQualityTerrain=True
    TerrainLOD=10
    SkyboxHack=True
    FilterQuality3D=1
    FilterQualityHUD=1
    HighDetailActors=False
    SuperHighDetailActors=False
    ReduceMouseLag=False
    DesiredRefreshRate=0
    DetailTexMipBias=0.000000
    Use16bitTextures=False
    Use16bit=True
    UseStencil=False
    UseCompressedLightmaps=False
    DetailTextures=False
    UsePrecaching=True
    
    [Engine.NullRenderDevice]
    DetailTextures=True
    HighDetailActors=True
    SuperHighDetailActors=True
    UsePrecaching=True
    UseCompressedLightmaps=True
    UseStencil=False
    
    [Editor.EditorEngine]
    UseSound=True
    CacheSizeMegs=32
    GridEnabled=True
    SnapVertices=False
    SnapDistance=1.000000
    GridSize=(X=4.000000,Y=4.000000,Z=4.000000)
    RotGridEnabled=True
    RotGridSize=(Pitch=1024,Yaw=1024,Roll=1024)
    GameCommandLine=-log
    FovAngleDegrees=90.000000
    GodMode=True
    AutoSave=True
    AutoSaveTimeMinutes=5
    AutoSaveIndex=6
    UseAxisIndicator=True
    MatineeCurveDetail=0.1
    ShowIntWarnings=False
    UseSizingBox=True
    RenderDevice=D3DDrv.D3DRenderDevice
    AudioDevice=ALAudio.ALAudioSubsystem
    NetworkDevice=IpDrv.TcpNetDriver
    DemoRecordingDevice=Engine.DemoRecDriver
    Console=Engine.Console
    Language=ute
    AlwaysShowTerrain=False
    UseActorRotationGizmo=False
    LoadEntirePackageWhenSaving=0
    EditPackages=Core
    EditPackages=Engine
    EditPackages=Fire
    EditPackages=Editor
    EditPackages=UnrealEd
    EditPackages=IpDrv
    EditPackages=UWeb
    EditPackages=GamePlay
    EditPackages=UnrealGame
    EditPackages=XGame_rc
    EditPackages=XEffects
    EditPackages=XWeapons_rc
    EditPackages=XPickups_rc
    EditPackages=XPickups
    EditPackages=XGame
    EditPackages=XWeapons
    EditPackages=XInterface
    EditPackages=XAdmin
    EditPackages=XWebAdmin
    EditPackages=Vehicles
    EditPackages=BonusPack
    EditPackages=SkaarjPack_rc
    EditPackages=SkaarjPack
    EditPackages=UTClassic
    EditPackages=UT2k4Assault
    EditPackages=Onslaught
    EditPackages=GUI2K4
    EditPackages=UT2k4AssaultFull
    EditPackages=OnslaughtFull
    EditPackages=xVoting
    EditPackages=StreamlineFX
    EditPackages=UTV2004c
    EditPackages=UTV2004s
    CutdownPackages=Core
    CutdownPackages=Editor
    CutdownPackages=Engine
    CutdownPackages=Fire
    CutdownPackages=GamePlay
    CutdownPackages=GUI2K4
    CutdownPackages=IpDrv
    CutdownPackages=UT2K4Assault
    CutdownPackages=Onslaught
    CutdownPackages=UnrealEd
    CutdownPackages=UnrealGame
    CutdownPackages=UTClassic
    CutdownPackages=UWeb
    CutdownPackages=Vehicles
    CutdownPackages=XAdmin
    CutdownPackages=XEffects
    CutdownPackages=XGame
    CutdownPackages=XGame_rc
    CutdownPackages=XInterface
    CutdownPackages=XPickups
    CutdownPackages=XPickups_rc
    CutdownPackages=XWeapons
    CutdownPackages=XWeapons_rc
    CutdownPackages=XWebAdmin
    CutdownPackages=XVoting
    
    [UWeb.WebServer]
    Applications[0]=xWebAdmin.UTServerAdmin
    ApplicationPaths[0]=/ServerAdmin
    Applications[1]=xWebAdmin.UTImageServer
    ApplicationPaths[1]=/images
    bEnabled=True
    ListenPort=80
    
    [Engine.Console]
    ConsoleHotKey=9
    TimePerTitle=30.000000
    TimePerDemo=60.000000
    TimePerSoak=3600.000000
    TimeTooIdle=0.000000
    DemoLevels[0]=DM-Curse3
    DemoLevels[1]=DM-Antalus
    DemoLevels[2]=CTF-Chrome
    DemoLevels[3]=DOM-SunTemple
    DemoLevels[4]=BR-Endagra
    TimeBeforeReboot=5.000000
    DemoLevels[5]=
    DemoLevels[6]=
    DemoLevels[7]=
    DemoLevels[8]=
    DemoLevels[9]=
    DemoLevels[10]=
    DemoLevels[11]=
    DemoLevels[12]=
    DemoLevels[13]=
    DemoLevels[14]=
    DemoLevels[15]=
    DemoLevels[16]=
    DemoLevels[17]=
    DemoLevels[18]=
    DemoLevels[19]=
    DemoLevels[20]=
    DemoLevels[21]=
    DemoLevels[22]=
    DemoLevels[23]=
    DemoLevels[24]=
    DemoLevels[25]=
    DemoLevels[26]=
    DemoLevels[27]=
    DemoLevels[28]=
    DemoLevels[29]=
    DemoLevels[30]=
    DemoLevels[31]=
    DemoLevels[32]=
    DemoLevels[33]=
    DemoLevels[34]=
    DemoLevels[35]=
    DemoLevels[36]=
    DemoLevels[37]=
    DemoLevels[38]=
    DemoLevels[39]=
    DemoLevels[40]=
    DemoLevels[41]=
    DemoLevels[42]=
    DemoLevels[43]=
    DemoLevels[44]=
    DemoLevels[45]=
    DemoLevels[46]=
    DemoLevels[47]=
    DemoLevels[48]=
    DemoLevels[49]=
    DemoLevels[50]=
    DemoLevels[51]=
    DemoLevels[52]=
    DemoLevels[53]=
    DemoLevels[54]=
    DemoLevels[55]=
    DemoLevels[56]=
    DemoLevels[57]=
    DemoLevels[58]=
    DemoLevels[59]=
    DemoLevels[60]=
    DemoLevels[61]=
    DemoLevels[62]=
    DemoLevels[63]=
    
    [Engine.AccessControl]
    AdminPassword=admin
    GamePassword=
    bBanByID=True
    LoginDelaySeconds=0.000000
    IPPolicies=ACCEPT;*
    
    [Engine.GameInfo]
    GoreLevel=1
    MaxSpectators=2
    MaxPlayers=16
    AutoAim=1.000000
    GameSpeed=1.000000
    bChangeLevels=True
    bStartUpLocked=False
    bNoBots=False
    bAttractAlwaysFirstPerson=False
    NumMusicFiles=13
    bEnableStatLogging=false
    HUDType=Engine.Hud
    MaxLives=0
    TimeLimit=0
    GoalScore=0
    GameStatsClass=IpDrv.MasterServerGameStats
    SecurityClass=UnrealGame.UnrealSecurity
    AccessControlClass=Engine.AccessControl
    VotingHandlerType=xVoting.xVotingHandler
    MaxIdleTime=0.000000
    bWeaponStay=False
    bAllowWeaponThrowing=True
    bAllowBehindView=False
    bAdminCanPause=False
    bWeaponShouldViewShake=True
    bLowGore=False
    bLargeGameVOIP=False
    GameDifficulty=4.000000
    ResetTimeDelay=0
    MaplistHandlerType=
    ServerSkillLevel=
    
    [Engine.AmbientSound]
    AmbientVolume=0.25
    
    [Engine.LevelInfo]
    PhysicsDetailLevel=PDL_High
    MeshLODDetailLevel=MDL_Ultra
    bLowSoundDetail=False
    DecalStayScale=2.000000
    bNeverPrecache=false
    bShouldPreload=True
    bDesireSkinPreload=True
    bKickLiveIdlers=False
    MaxClientFrameRate=90.000000
    MaxTimeMargin=1.000000
    TimeMarginSlack=1.350000
    MinTimeMargin=-1.000000
    
    [XInterface.ExtendedConsole]
    ConsoleHotKey=192
    NeedPasswordMenuClass=GUI2K4.UT2K4GetPassword
    bSpeechMenuUseMouseWheel=True
    bSpeechMenuUseLetters=False
    SMOriginX=0.010000
    SMOriginY=0.300000
    LetterKeys[0]=IK_Q
    LetterKeys[1]=IK_W
    LetterKeys[2]=IK_E
    LetterKeys[3]=IK_R
    LetterKeys[4]=IK_A
    LetterKeys[5]=IK_S
    LetterKeys[6]=IK_D
    LetterKeys[7]=IK_F
    LetterKeys[8]=IK_Z
    LetterKeys[9]=IK_X
    MusicManagerClassName=GUI2K4.StreamPlayer
    MaxScrollbackSize=128
    PasswordPromptMenu=
    ChatMenuClass=GUI2K4.UT2K4InGameChat
    StatsPromptMenuClass=GUI2K4.UT2K4StatsPrompt
    WaitingGameClassName=
    ServerInfoMenu=GUI2K4.UT2K4ServerInfo
    bDemoJogKeys=True
    Favorites=(ServerID=0,IP="lorenzstr.no-ip.info",Port=7777,QueryPort=7778,ServerName="Unknown Server")
    SavedPasswords=(Server="lorenzstr.no-ip.info",Password="foobar")
    SavedPasswords=(Server="84.152.88.27",Password="foobar")
    
    [XGame.xDeathMatch]
    HUDType=XInterface.HudBDeathMatch
    MaxLives=0
    TimeLimit=12
    GoalScore=20
    bTeamScoreRound=False
    bPlayersMustBeReady=False
    bAllowTaunts=True
    bForceRespawn=False
    bWeaponStay=true
    bCustomPreload=False
    NetWait=5
    bAdjustSkill=False
    bAllowTrans=False
    SpawnProtectionTime=2.000000
    LateEntryLives=1
    LoginMenuClass=GUI2K4.UT2K4PlayerLoginMenu
    bAllowPrivateChat=True
    bAllowWeaponThrowing=True
    ResetTimeDelay=0
    
    [XGame.xTeamGame]
    HUDType=XInterface.HudBTeamDeathMatch
    MaxLives=0
    TimeLimit=20
    GoalScore=60
    bTeamScoreRound=False
    bPlayersMustBeReady=False
    bAllowTaunts=True
    FriendlyFireScale=0
    MaxTeamSize=16
    bForceRespawn=False
    bWeaponStay=true
    
    [XGame.xCTFGame]
    HUDType=XInterface.HudBCaptureTheFlag
    MaxLives=0
    TimeLimit=20
    GoalScore=3
    bTeamScoreRound=False
    bPlayersMustBeReady=False
    bAllowTaunts=True
    FriendlyFireScale=0.000000
    MaxTeamSize=16
    bForceRespawn=False
    bWeaponStay=true
    bAllowNonTeamChat=False
    NetWait=5
    bAdjustSkill=False
    bAllowTrans=True
    SpawnProtectionTime=2.000000
    LateEntryLives=1
    LoginMenuClass=GUI2K4.UT2K4PlayerLoginMenu
    bAllowPrivateChat=True
    bAllowWeaponThrowing=True
    ResetTimeDelay=0
    
    [XGame.xDoubleDom]
    HUDType=XInterface.HudBDoubleDomination
    MaxLives=0
    TimeLimit=20
    GoalScore=3
    bTeamScoreRound=False
    bPlayersMustBeReady=False
    bAllowTaunts=True
    TimeToScore=10
    TimeDisabled=10
    FriendlyFireScale=0
    MaxTeamSize=16
    bForceRespawn=False
    bWeaponStay=true
    
    [XGame.xBombingRun]
    HUDType=XInterface.HudBBombingRun
    MaxLives=0
    TimeLimit=20
    GoalScore=15
    bTeamScoreRound=False
    bPlayersMustBeReady=False
    bAllowTaunts=True
    FriendlyFireScale=0
    MaxTeamSize=16
    bForceRespawn=False
    bWeaponStay=true
    
    [Engine.MaplistManager]
    Games=(GameType="BonusPack.xLastManStandingGame",ActiveMaplist="Default LMS")
    Games=(GameType="BonusPack.xMutantGame",ActiveMaplist="Default MUT")
    Games=(GameType="Onslaught.ONSOnslaughtGame",ActiveMaplist="Default ONS")
    Games=(GameType="SkaarjPack.Invasion",ActiveMaplist="Default INV")
    Games=(GameType="UT2k4Assault.ASGameInfo",ActiveMaplist="Default AS")
    Games=(GameType="XGame.xBombingRun",ActiveMaplist="Default BR")
    Games=(GameType="XGame.xCTFGame",ActiveMaplist="Default CTF")
    Games=(GameType="XGame.xDeathMatch",ActiveMaplist="Default DM")
    Games=(GameType="XGame.xDoubleDom",ActiveMaplist="Default DOM2")
    Games=(GameType="XGame.xTeamGame",ActiveMaplist="Default TDM")
    Games=(GameType="XGame.xVehicleCTFGame",ActiveMaplist="Default VCTF")
    Games=(GameType="XGame.InstagibCTF",ActiveMaplist="Default ICTF")
    Games=(GameType="Jailbreak.Jailbreak",ActiveMaplist="Default JB")
    
    [DefaultDM MaplistRecord]
    DefaultTitle=Default DM
    DefaultGameType=XGame.xDeathMatch
    DefaultActive=1
    DefaultMaps=DM-Curse4
    DefaultMaps=DM-Corrugation
    DefaultMaps=DM-1on1-Albatross
    DefaultMaps=DM-1on1-Desolation
    DefaultMaps=DM-1on1-Idoma
    DefaultMaps=DM-1on1-Irondust
    DefaultMaps=DM-1on1-Mixer
    DefaultMaps=DM-1on1-Roughinery
    DefaultMaps=DM-1on1-Spirit
    DefaultMaps=DM-1on1-Squader
    DefaultMaps=DM-1on1-Trite
    
    [DefaultTDM MaplistRecord]
    DefaultTitle=Default TDM
    DefaultGameType=XGame.xTeamGame
    DefaultActive=0
    DefaultMaps=DM-RRAJIGAR
    DefaultMaps=DM-RANKIN
    DefaultMaps=DM-CORRUGATION
    DefaultMaps=DM-DE-GRENDELKEEP
    DefaultMaps=DM-DE-IRONIC
    DefaultMaps=DM-DE-OSIRIS2
    DefaultMaps=DM-GESTALT
    DefaultMaps=DM-IRONDEITY
    DefaultMaps=DM-METALLURGY
    DefaultMaps=DM-Deck17
    DefaultMaps=DM-Antalus
    DefaultMaps=DM-Asbestos
    DefaultMaps=DM-Curse4
    
    [1on1TeamDeathmatch MaplistRecord]
    DefaultTitle=1 on 1 Team Deathmatch
    DefaultGameType=XGame.xTeamGame
    DefaultActive=0
    DefaultMaps=DM-1on1-Albatross
    DefaultMaps=DM-1on1-Crash
    DefaultMaps=DM-1on1-Desolation
    DefaultMaps=DM-1on1-Idoma
    DefaultMaps=DM-1on1-Irondust
    DefaultMaps=DM-1on1-Mixer
    DefaultMaps=DM-1on1-Roughinery
    DefaultMaps=DM-1on1-Serpentine
    DefaultMaps=DM-1on1-Spirit
    DefaultMaps=DM-1on1-Squader
    DefaultMaps=DM-1on1-Trite
    
    [1on1Deathmatch MaplistRecord]
    DefaultTitle=1 on 1 Deathmatch
    DefaultGameType=XGame.xDeathMatch
    DefaultActive=0
    DefaultMaps=DM-1on1-Albatross
    DefaultMaps=DM-1on1-Crash
    DefaultMaps=DM-1on1-Desolation
    DefaultMaps=DM-1on1-Idoma
    DefaultMaps=DM-1on1-Irondust
    DefaultMaps=DM-1on1-Mixer
    DefaultMaps=DM-1on1-Roughinery
    DefaultMaps=DM-1on1-Serpentine
    DefaultMaps=DM-1on1-Spirit
    DefaultMaps=DM-1on1-Squader
    DefaultMaps=DM-1on1-Trite
    
    [XInterface.MapListDeathMatch]
    MapNum=1
    Maps=DM-Curse4
    Maps=DM-Corrugation
    Maps=DM-1on1-Albatross
    Maps=DM-1on1-Desolation
    Maps=DM-1on1-Idoma
    Maps=DM-1on1-Irondust
    Maps=DM-1on1-Mixer
    Maps=DM-1on1-Roughinery
    Maps=DM-1on1-Spirit
    Maps=DM-1on1-Squader
    Maps=DM-1on1-Trite
    
    [XInterface.MapListTeamDeathMatch]
    MapNum=0
    Maps=DM-RRAJIGAR
    Maps=DM-RANKIN
    Maps=DM-CORRUGATION
    Maps=DM-DE-GRENDELKEEP
    Maps=DM-DE-IRONIC
    Maps=DM-DE-OSIRIS2
    Maps=DM-GESTALT
    Maps=DM-IRONDEITY
    Maps=DM-METALLURGY
    Maps=DM-Deck17
    Maps=DM-Antalus
    Maps=DM-Asbestos
    Maps=DM-Curse4
    
    [XInterface.MapListCaptureTheFlag]
    MapNum=0
    Maps=CTF-ABSOLUTEZERO
    Maps=CTF-MOONDRAGON
    Maps=CTF-GRASSYKNOLL
    Maps=CTF-COLOSSUS
    Maps=CTF-SMOTE
    Maps=CTF-DOUBLEDAMMAGE
    Maps=CTF-AVARIS
    Maps=CTF-BRIDGEOFFATE
    Maps=CTF-FaceClassic
    Maps=CTF-CHROME
    Maps=CTF-Citadel
    Maps=CTF-Orbital2
    
    [XInterface.MapListDoubleDomination]
    MapNum=0
    Maps=DOM-ATLANTIS
    Maps=DOM-ACCESS
    Maps=DOM-ASWAN
    Maps=DOM-JUNKYARD
    Maps=DOM-RENASCENT
    Maps=DOM-SUNTEMPLE
    Maps=DOM-SCORCHEDEARTH
    
    [XInterface.MapListBombingRun]
    MapNum=0
    Maps=BR-TWINTOMBS
    Maps=BR-BRIDGEOFFATE
    Maps=BR-CANYON
    Maps=BR-COLOSSUS
    Maps=BR-SERENITY
    Maps=BR-SkyLine
    Maps=BR-Anubis
    
    [BonusPack.MapListMutant]
    Maps=DM-RRAJIGAR
    Maps=DM-RANKIN
    Maps=DM-CORRUGATION
    Maps=DM-DE-GRENDELKEEP
    Maps=DM-DE-IRONIC
    Maps=DM-DE-OSIRIS2
    Maps=DM-GESTALT
    Maps=DM-IRONDEITY
    Maps=DM-METALLURGY
    Maps=DM-Deck17
    Maps=DM-Antalus
    Maps=DM-Asbestos
    Maps=DM-Curse4
    
    [BonusPack.MapListLastManStanding]
    Maps=DM-RRAJIGAR
    Maps=DM-RANKIN
    Maps=DM-CORRUGATION
    Maps=DM-DE-GRENDELKEEP
    Maps=DM-DE-IRONIC
    Maps=DM-DE-OSIRIS2
    Maps=DM-GESTALT
    Maps=DM-IRONDEITY
    Maps=DM-METALLURGY
    Maps=DM-Deck17
    Maps=DM-Antalus
    Maps=DM-Asbestos
    Maps=DM-Curse4
    
    [Onslaught.ONSMapListOnslaught]
    Maps=ONS-TORLAN?LinkSetup=Default
    Maps=ONS-ARCTICSTRONGHOLD?LinkSetup=Default
    Maps=ONS-CROSSFIRE?LinkSetup=Default
    Maps=ONS-DRIA?LinkSetup=Default
    Maps=ONS-SEVERANCE?LinkSetup=Default
    
    [Skaarjpack.MapListSkaarjInvasion]
    Maps=DM-RRAJIGAR
    Maps=DM-RANKIN
    Maps=DM-CORRUGATION
    Maps=DM-DE-GRENDELKEEP
    Maps=DM-DE-IRONIC
    Maps=DM-DE-OSIRIS2
    Maps=DM-GESTALT
    Maps=DM-IRONDEITY
    Maps=DM-METALLURGY
    Maps=DM-Deck17
    Maps=DM-Antalus
    Maps=DM-Asbestos
    
    [UT2K4Assault.ASMapList]
    MapNum=1
    Maps=AS-CONVOY
    Maps=AS-FALLENCITY
    Maps=AS-MOTHERSHIP
    Maps=AS-GLACIER
    Maps=AS-ROBOTFACTORY
    Maps=AS-JUNKYARD
    
    [DefaultLMS MaplistRecord]
    DefaultTitle=Default LMS
    DefaultGameType=BonusPack.xLastManStandingGame
    DefaultActive=0
    DefaultMaps=DM-RRAJIGAR
    DefaultMaps=DM-RANKIN
    DefaultMaps=DM-CORRUGATION
    DefaultMaps=DM-DE-GRENDELKEEP
    DefaultMaps=DM-DE-IRONIC
    DefaultMaps=DM-DE-OSIRIS2
    DefaultMaps=DM-GESTALT
    DefaultMaps=DM-IRONDEITY
    DefaultMaps=DM-METALLURGY
    DefaultMaps=DM-Deck17
    DefaultMaps=DM-Antalus
    DefaultMaps=DM-Asbestos
    DefaultMaps=DM-Curse4
    
    [DefaultMUT MaplistRecord]
    DefaultTitle=Default MUT
    DefaultGameType=BonusPack.xMutantGame
    DefaultActive=0
    DefaultMaps=DM-RRAJIGAR
    DefaultMaps=DM-RANKIN
    DefaultMaps=DM-CORRUGATION
    DefaultMaps=DM-DE-GRENDELKEEP
    DefaultMaps=DM-DE-IRONIC
    DefaultMaps=DM-DE-OSIRIS2
    DefaultMaps=DM-GESTALT
    DefaultMaps=DM-IRONDEITY
    DefaultMaps=DM-METALLURGY
    DefaultMaps=DM-Deck17
    DefaultMaps=DM-Antalus
    DefaultMaps=DM-Asbestos
    DefaultMaps=DM-Curse4
    
    [DefaultONS MaplistRecord]
    DefaultTitle=Default ONS
    DefaultGameType=Onslaught.ONSOnslaughtGame
    DefaultActive=0
    DefaultMaps=ONS-TORLAN?LinkSetup=Default
    DefaultMaps=ONS-ARCTICSTRONGHOLD?LinkSetup=Default
    DefaultMaps=ONS-CROSSFIRE?LinkSetup=Default
    DefaultMaps=ONS-DRIA?LinkSetup=Default
    DefaultMaps=ONS-SEVERANCE?LinkSetup=Default
    
    [DefaultINV MaplistRecord]
    DefaultTitle=Default INV
    DefaultGameType=SkaarjPack.Invasion
    DefaultActive=0
    DefaultMaps=DM-RRAJIGAR
    DefaultMaps=DM-RANKIN
    DefaultMaps=DM-CORRUGATION
    DefaultMaps=DM-DE-GRENDELKEEP
    DefaultMaps=DM-DE-IRONIC
    DefaultMaps=DM-DE-OSIRIS2
    DefaultMaps=DM-GESTALT
    DefaultMaps=DM-IRONDEITY
    DefaultMaps=DM-METALLURGY
    DefaultMaps=DM-Deck17
    DefaultMaps=DM-Antalus
    DefaultMaps=DM-Asbestos
    
    [DefaultAS MaplistRecord]
    DefaultTitle=Default AS
    DefaultGameType=UT2k4Assault.ASGameInfo
    DefaultActive=1
    DefaultMaps=AS-CONVOY
    DefaultMaps=AS-FALLENCITY
    DefaultMaps=AS-MOTHERSHIP
    DefaultMaps=AS-GLACIER
    DefaultMaps=AS-ROBOTFACTORY
    DefaultMaps=AS-JUNKYARD
    
    [DefaultICTF MaplistRecord]
    DefaultTitle=Default ICTF
    DefaultGameType=XGame.InstagibCTF
    DefaultActive=0
    DefaultMaps=CTF-ABSOLUTEZERO
    DefaultMaps=CTF-MOONDRAGON
    DefaultMaps=CTF-GRASSYKNOLL
    DefaultMaps=CTF-COLOSSUS
    DefaultMaps=CTF-SMOTE
    DefaultMaps=CTF-DOUBLEDAMMAGE
    DefaultMaps=CTF-AVARIS
    DefaultMaps=CTF-BRIDGEOFFATE
    DefaultMaps=CTF-FaceClassic
    DefaultMaps=CTF-CHROME
    DefaultMaps=CTF-Citadel
    DefaultMaps=CTF-Orbital2
    
    [DefaultBR MaplistRecord]
    DefaultTitle=Default BR
    DefaultGameType=XGame.xBombingRun
    DefaultActive=0
    DefaultMaps=BR-TWINTOMBS
    DefaultMaps=BR-BRIDGEOFFATE
    DefaultMaps=BR-CANYON
    DefaultMaps=BR-COLOSSUS
    DefaultMaps=BR-SERENITY
    DefaultMaps=BR-SkyLine
    DefaultMaps=BR-Anubis
    
    [DefaultCTF MaplistRecord]
    DefaultTitle=Default CTF
    DefaultGameType=XGame.xCTFGame
    DefaultActive=0
    DefaultMaps=CTF-ABSOLUTEZERO
    DefaultMaps=CTF-MOONDRAGON
    DefaultMaps=CTF-GRASSYKNOLL
    DefaultMaps=CTF-COLOSSUS
    DefaultMaps=CTF-SMOTE
    DefaultMaps=CTF-DOUBLEDAMMAGE
    DefaultMaps=CTF-AVARIS
    DefaultMaps=CTF-BRIDGEOFFATE
    DefaultMaps=CTF-FaceClassic
    DefaultMaps=CTF-CHROME
    DefaultMaps=CTF-Citadel
    DefaultMaps=CTF-Orbital2
    
    [DefaultDOM2 MaplistRecord]
    DefaultTitle=Default DOM2
    DefaultGameType=XGame.xDoubleDom
    DefaultActive=0
    DefaultMaps=DOM-ATLANTIS
    DefaultMaps=DOM-ACCESS
    DefaultMaps=DOM-ASWAN
    DefaultMaps=DOM-JUNKYARD
    DefaultMaps=DOM-RENASCENT
    DefaultMaps=DOM-SUNTEMPLE
    DefaultMaps=DOM-SCORCHEDEARTH
    
    [DefaultVCTF MaplistRecord]
    DefaultTitle=Default VCTF
    DefaultGameType=XGame.xVehicleCTFGame
    DefaultActive=0
    
    [UnrealGame.DeathMatch]
    MinNetPlayers=1
    RestartWait=30
    bTournament=False
    bAutoNumBots=False
    bColoredDMSkins=False
    bPlayersMustBeReady=False
    bWaitForNetPlayers=False
    bAllowPlayerLights=False
    bForceDefaultCharacter=False
    NamePrefixes[0]=Mr_
    NamePrefixes[1]=
    NamePrefixes[2]=The_Real_
    NamePrefixes[3]=Evil_
    NamePrefixes[4]=
    NamePrefixes[5]=Owns_
    NamePrefixes[6]=
    NamePrefixes[7]=Evil_
    NamePrefixes[8]=
    NamePrefixes[9]=
    NameSuffixes[0]=
    NameSuffixes[1]=_is_lame
    NameSuffixes[2]=
    NameSuffixes[3]=
    NameSuffixes[4]=_sucks
    NameSuffixes[5]=
    NameSuffixes[6]=_OwnsYou
    NameSuffixes[7]=
    NameSuffixes[8]=_jr
    NameSuffixes[9]='s_clone
    
    [UnrealGame.UnrealMPGameInfo]
    BotMode=1
    MinPlayers=6
    EndTimeDelay=4.000000
    BotRatio=1.000000
    
    [Engine.VoiceChatReplicationInfo]
    bEnableVoiceChat=True
    bAllowLocalBroadcast=True
    MaxChatters=0
    LocalBroadcastRange=1000.000000
    DefaultBroadcastRadius=20.000000
    VoIPInternetCodecs=CODEC_48NB
    VoIPLANCodecs=CODEC_48NB
    VoIPLANCodecs=CODEC_96WB
    
    [Engine.BroadcastHandler]
    bMuteSpectators=False
    bPartitionSpectators=False
    
    [xVoting.xVotingHandler]
    VoteTimeLimit=70
    ScoreBoardDelay=5
    bAutoOpen=True
    MidGameVotePercent=50
    bScoreMode=False
    bAccumulationMode=False
    bEliminationMode=False
    MinMapCount=2
    MapVoteHistoryType=xVoting.MapVoteHistory_INI
    RepeatLimit=4
    DefaultGameConfig=0
    bDefaultToCurrentGameType=True
    bMapVote=False
    bKickVote=False
    bMatchSetup=False
    KickPercent=51
    bAnonymousKicking=True
    MapListLoaderType=xVoting.DefaultMapListLoader
    ServerNumber=1
    CurrentGameConfig=0
    
    [xVoting.DefaultMapListLoader]
    bUseMapList=False
    MapNamePrefixes=
    
    [Jailbreak.JBMapList]
    Maps=JB-Addien-Dwy-Gold
    Maps=JB-BabylonTemple-Gold
    Maps=JB-CastleBreak-Gold
    Maps=JB-Cosmos
    Maps=JB-Poseidon-Gold
    Maps=JB-Oasis
    Maps=JB-Cavern
    Maps=JB-MoonCraters-Gold
    Maps=JB-Aswan
    Maps=JB-SavoIsland-Gold
    Maps=JB-NoSense-Gold
    Maps=JB-Conduit-Gold
    Maps=JB-IndusRage2-Gold
    Maps=JB-Arlon-Gold
    Maps=JB-SubZero
    Maps=JB-Solamander-Gold
    MapNum=0
    
    [DefaultJB MaplistRecord]
    DefaultTitle=Default JB
    DefaultGameType=Jailbreak.Jailbreak
    DefaultActive=0
    DefaultMaps=JB-Addien-Dwy-Gold
    DefaultMaps=JB-BabylonTemple-Gold
    DefaultMaps=JB-CastleBreak-Gold
    DefaultMaps=JB-Cosmos
    DefaultMaps=JB-Poseidon-Gold
    DefaultMaps=JB-Oasis
    DefaultMaps=JB-Cavern
    DefaultMaps=JB-MoonCraters-Gold
    DefaultMaps=JB-Aswan
    DefaultMaps=JB-SavoIsland-Gold
    DefaultMaps=JB-NoSense-Gold
    DefaultMaps=JB-Conduit-Gold
    DefaultMaps=JB-IndusRage2-Gold
    DefaultMaps=JB-Arlon-Gold
    DefaultMaps=JB-SubZero
    DefaultMaps=JB-Solamander-Gold
    
    [Jailbreak.Jailbreak]
    Addons=JBAddonAvenger.JBAddonAvenger,JBAddonCelebration.JBAddonCelebration,JBAddonLlama.JBAddonLlama,JBAddonProtection.JBAddonProtection
    bEnableJailFights=True
    bEnableScreens=True
    bEnableSpectatorDeathCam=True
    bFavorHumansForArena=False
    bEnableWebScoreboard=True
    bEnableWebAdminExtension=True
    WebScoreboardClass=Jailbreak.JBWebApplicationScoreboard
    WebScoreboardPath=/scoreboard
    bAllowNonTeamChat=False
    FriendlyFireScale=0.000000
    NetWait=5
    bForceRespawn=False
    bAdjustSkill=False
    bAllowTaunts=True
    bAllowTrans=False
    SpawnProtectionTime=2.000000
    LateEntryLives=1
    LoginMenuClass=GUI2K4.UT2K4PlayerLoginMenu
    bAllowPrivateChat=True
    bWeaponStay=True
    bAllowWeaponThrowing=True
    ResetTimeDelay=0
    GoalScore=1
    MaxLives=0
    TimeLimit=20
    
    [UnrealGame.TeamGame]
    bBalanceTeams=True
    bPlayersBalanceTeams=True
    
    [Jailbreak.JBInteractionKeys]
    AutoBoundKeys=
    
    [UT2k4Assault.ASGameInfo]
    RoundLimit=1
    RoundTimeLimit=14
    PracticeTimeLimit=0
    ReinforcementsFreq=7
    bAllowNonTeamChat=False
    FriendlyFireScale=0.000000
    NetWait=15
    bForceRespawn=False
    bAdjustSkill=False
    bAllowTaunts=True
    bAllowTrans=False
    SpawnProtectionTime=3.000000
    LateEntryLives=1
    LoginMenuClass=GUI2K4.UT2K4SinglePlayerLoginMenu
    bAllowPrivateChat=True
    bWeaponStay=True
    bAllowWeaponThrowing=True
    ResetTimeDelay=8
    GoalScore=0
    MaxLives=0
    TimeLimit=0
    
    [IpDrv.UdpGamespyQuery]
    MinNetVer=0
    OldQueryPortNumber=7787
    bRestartServerOnPortSwap=True
    bDebugPortSwaps=True
    
    [Onslaught.ONSOnslaughtGame]
    OvertimeCoreDrainPerSec=20
    bRandSetupAfterReset=False
    bSwapSidesAfterReset=True
    bAllowNonTeamChat=False
    FriendlyFireScale=1.000000
    NetWait=15
    bForceRespawn=False
    bAdjustSkill=False
    bAllowTaunts=True
    bAllowTrans=False
    SpawnProtectionTime=2.000000
    LateEntryLives=1
    LoginMenuClass=GUI2K4.UT2K4OnslaughtLoginMenu
    bAllowPrivateChat=True
    bWeaponStay=True
    bAllowWeaponThrowing=True
    ResetTimeDelay=11
    GoalScore=3
    MaxLives=0
    TimeLimit=20
    

    Da drin such mal was bestimmtes von dem du nicht genau weißt wie es heißt, hab ich schon ein paar mal gemacht! Also ohne Baumstruktur kommt für mich mangels Ordnung nichts in Frage. Also fällt conf und ini komplett raus. XML find ich eigentlich ganz gut lesbar, ich würde als Nachteil eher sehen, dass es sauviel Platz braucht im Vergleich zu anderen Lösungen. Zu dem Lisp-Zeug was du vorschlägst (hat es wirklich was mit der Sprache zu tun? Geht es ohne Lisp nicht?) kann ich mangels Wissen jetzt nichts sagen.


Anmelden zum Antworten