locked
Darf keinen Namen vergeben

    Frage

  • Hallo,

    Ich habe mir das AntMe Tut runtergeladen und die Einsteigerversion dazu. Nach dem anfänglichen Problem mit dem fehlenden DX SDK habe ich nun versucht, meiner AmeisenKI einen Namen zu geben, sobald ich aber einen Namen vergebe und versuche zu kompilieren, stürzt das Spiel ab. Nur Vorname und Nachname lässt sich eintragen...

    Aus der Zwischenablage:

    Microsoft.DirectX.Direct3D.InvalidCallException wurde nicht behandelt.
      Message="Fehler in der Anwendung."
      Source="Microsoft.DirectX.Direct3D"
      ErrorCode=-2005530516
      ErrorString="D3DERR_INVALIDCALL"
      StackTrace:
           bei Microsoft.DirectX.Direct3D.Device..ctor(Int32 adapter, DeviceType deviceType, Control renderWindow, CreateFlags behaviorFlags, PresentParameters[] presentationParameters)
           bei AntMe.Plugin.Anzeige3D.Engine.ErstelleGerät()
           bei AntMe.Plugin.Anzeige3D.Engine.set_Aktiv(Boolean value)
           bei AntMe.Plugin.Anzeige3D.Plugin.Start()
           bei AntMe.PluginManager.Start()
           bei AntMe.Main.Start(Object sender, EventArgs e)
           bei AntMe.Main..ctor(String[] parameter)
           bei AntMe.Program.Main(String[] parameter)

    Gruß Thomas

    Sonntag, 12. November 2006 16:10

Antworten

  • Hi Thomas,

    nach der Fehlermeldung weiter oben zu folgern liegt dein Problem definitiv nicht an deinem Volknamen. Es ist nur lediglich so, dass die Simulation starten kann sobald du einen Namen einträgst und daher neue Probleme auftauchen.

    Ursprung deines Fehlers ist die 3D-Visualisierung bei dem Versuch mit deiner Grafikkarte zu sprechen. Es wird dort versucht eine Grafikarte zu finden die 3D-Beschleunigung hat. Vermutlich ist da keine passende Karte? Ohne gehts nur, wenn du das 3D-Plugin umschreibst..

    Im Profipaket findest du im Verzeichnis Anzeige3D das Projekt für die Visualisierung. Du musst dazu die komplette Projektmappe öffnen, in das Projekt "Anzeige3D" welchseln und dort im Order "DirectX" die Datei "Engine.cs" öffnen. In Zeile 115 findest du den Befehl zum erstellen eines Zeichengerätes. Das ist die Zeile in dem dein Fehler auftritt.

    this.zeichenGerät = new Device(...);

    Der dritte Parameter dieses Aufrufs bestimmt die Art der Hardwareunterstützung die das Plugin von deiner Grafikkarte erwartet. Hier steht normalerweise "CreateFlags.HardwareVertexProcessing" und "CreateFlags.PureDevice". Es erwartet also volle 3D-Beschleunigung. Hier muss bei dir "CreateFlags.SoftwareVertexProcessing" stehen.

    Wenn du das Ganze dann neu kompilierst findest du das neue, preparierte Plugin im Order "bin" in Form einer Datei namens "AntMe.Plugin.Anzeige3D.dll" die du nun für deine KI-Entwicklung verwenden kannst.
    Erwarte allerdings nicht allzu hohe Performance von diesem Plugin.

    Viel Erfolg
    wünscht der Tom
    Montag, 13. November 2006 13:14

Alle Antworten

  • das hat relativ wenig mit deinem volk zu tun, deine grafikkarte unterstützt kein dx9. musste wohl auch die 2d visualisierung nehmen!

    wenn dein volkname nicht gesetzt ist, startet die simulation sicherlich nicht und damit versucht er auch nicht, die 3d vis. zu öffnen und der fehler kommt nicht.
    Sonntag, 12. November 2006 17:24
  • Hi,

    Es ist so, wie ich es geschrieben habe. Ich habe alles nach Tutorial gemacht: von der Vorlage.cs eine Sicherung gemacht und in dieser die Änderungen vorgenommen, wodurch ich dann den Fehler erhalte. Mache ich keine Änderungen, kann ich das Spiel starten. Es liegt an den Namen, sobald ich dort etwas eintrage funktioniert das Spiel nicht mehr.

    Gruß Thomas

    Sonntag, 12. November 2006 19:33
  • hast du versucht, die 3d visualisierung abzuschalten und nur die 2d visualisierung zu nutzen?
    Sonntag, 12. November 2006 20:28
  • Hi,

    Soweit komme ich nicht mehr, wenn ich den Namen eintrage. Ohne Namen habe ich immer die 2D Darstellung gewählt und die 3D garnicht erst probiert, da ich auf einem Laptop arbeite. Der Streikt jetzt beim kompilieren, wegen dem Namen.

    Gruß Thomas

    Sonntag, 12. November 2006 20:47
  • dann kann ich dir im Moment nicht recht weiter helfen.
    Du hast 2 Möglichkeiten:
    • dein ganzes VS-Projekt zippen und hochladen, dann gucke ich oder jemand anders mal drüber
    • oder du hoffst, dass wer anders außer mir mehr Plan hat
    Sonntag, 12. November 2006 21:42
  • Hallo,

    Also deine Fehlermeldung kann eigentlich wirklich nichts mit dem Namen deines Volkes zu tun haben. Wir reden doch hier schon über das Attribut über deiner Ameisen Klassen, oder!?

    [Spieler(Name = "Demo-Ameisen",Vorname = "Wolfgang",Nachname = "Gallo")]

    marco

    Montag, 13. November 2006 07:45
  • Hi,

    Ich habe noch einmal geguckt und konnte den Fehler weiter eingrenzen. Dort wo du Demo-Ameisen stehen hast schreibe ich einen anderen Namen hin (in der Vorlage ist der Eintrag leer) und dann kommt das Problem beim kompilieren.

    Anscheinend startet das Spiel direkt im 3D Modus und startet ein Spiel, wenn ich mit einem Namen kompiliere, wodurch das Spiel nicht mehr läuft...ich muss sagen, dass ich das schlampig programmiert finde.

    Gibts eine Möglichkeit, dass ohne großen Aufwand zu ändern? Kenne mich in C# nicht so gut aus, dass ich da größere Veränderungen hinbekomme werde.

    Gruß Thomas

    Montag, 13. November 2006 12:39
  • Hi Thomas,

    nach der Fehlermeldung weiter oben zu folgern liegt dein Problem definitiv nicht an deinem Volknamen. Es ist nur lediglich so, dass die Simulation starten kann sobald du einen Namen einträgst und daher neue Probleme auftauchen.

    Ursprung deines Fehlers ist die 3D-Visualisierung bei dem Versuch mit deiner Grafikkarte zu sprechen. Es wird dort versucht eine Grafikarte zu finden die 3D-Beschleunigung hat. Vermutlich ist da keine passende Karte? Ohne gehts nur, wenn du das 3D-Plugin umschreibst..

    Im Profipaket findest du im Verzeichnis Anzeige3D das Projekt für die Visualisierung. Du musst dazu die komplette Projektmappe öffnen, in das Projekt "Anzeige3D" welchseln und dort im Order "DirectX" die Datei "Engine.cs" öffnen. In Zeile 115 findest du den Befehl zum erstellen eines Zeichengerätes. Das ist die Zeile in dem dein Fehler auftritt.

    this.zeichenGerät = new Device(...);

    Der dritte Parameter dieses Aufrufs bestimmt die Art der Hardwareunterstützung die das Plugin von deiner Grafikkarte erwartet. Hier steht normalerweise "CreateFlags.HardwareVertexProcessing" und "CreateFlags.PureDevice". Es erwartet also volle 3D-Beschleunigung. Hier muss bei dir "CreateFlags.SoftwareVertexProcessing" stehen.

    Wenn du das Ganze dann neu kompilierst findest du das neue, preparierte Plugin im Order "bin" in Form einer Datei namens "AntMe.Plugin.Anzeige3D.dll" die du nun für deine KI-Entwicklung verwenden kannst.
    Erwarte allerdings nicht allzu hohe Performance von diesem Plugin.

    Viel Erfolg
    wünscht der Tom
    Montag, 13. November 2006 13:14
  • Hi Tom,

    Ich werde das bei Gelegenheit ausprobieren. Trotzdem finde ich es merkwürdig, dass der Fehler auftaucht, sobald ich versuche ein eigenes Volk zu benutzen. Mach ich keine Änderungen, lässt sich das Spiel problemlos starten.

    Gruß Thomas

    Montag, 13. November 2006 14:47
  • Moment? Du willst mir sagen mit dem Demovolk geht alles einwandfrei? Du hast 3D-Animation und alles?
    Montag, 13. November 2006 15:49
  • Mit dem Demovolk startet das Spiel, aber ich kann wählen zwischen 2D und 3D Modus. 3D Modus funktioniert nicht (hatte ich aber auch nicht erwartet:-) ). Erstell ich mein eigenes Volk, startet das Spiel sofort im 3D Modus und ich komm erst garnicht ins Auswahlmenü
    Montag, 13. November 2006 17:25
  • Hallo Thomas, schick uns doch bitte eine Kopie deines Projekts an wolfgang.gallo@studentprogram.de und thomas.wendel@studentprogram.de.

    Dienstag, 14. November 2006 12:54
  • hi,

    habe das gleiche problem!

    sobald im Namen etwas steht kommt folgende Fehlermeldung und das Spiel startet nicht!

    Microsoft.DirectX.Direct3D.GraphicsException wurde nicht behandelt.
      Message="Fehler in der Anwendung."
      Source="Microsoft.DirectX.Direct3D"
      ErrorCode=-2147467263
      ErrorString="E_NOTIMPL"
      StackTrace:
           bei Microsoft.DirectX.Direct3D.Device..ctor(Int32 adapter, DeviceType deviceType, Control renderWindow, CreateFlags behaviorFlags, PresentParameters[] presentationParameters)
           bei AntMe.Plugin.Anzeige3D.Engine.ErstelleGerät()
           bei AntMe.Plugin.Anzeige3D.Engine.set_Aktiv(Boolean value)
           bei AntMe.Plugin.Anzeige3D.Plugin.Start()
           bei AntMe.PluginManager.Start()
           bei AntMe.Main.Start(Object sender, EventArgs e)
           bei AntMe.Main..ctor(String[] parameter)
           bei AntMe.Program.Main(String[] parameter)


    ich habe im Code nichts geändert, nur im Namen "dsds" eingetragen!

    namespace AntMe.Spieler.WolfgangGallo {

        [Spieler(
            Name = "dsfds",
            Vorname = "",
            Nachname = ""
        )]


    gruß
    thomas
    Sonntag, 19. November 2006 17:07
  • Hi Tom,

    ich hatte das gleiche Problem wie der erste Autor und Deine Lösung funktioniert.

    Fehlte noch der Hinweis, dass die AntMe.Plugin.Anzeige3D.dll in das lib Verzeichnis (und nicht bin!) vom AntMeSpielerCS Verzeichnis muss, da sie sonst durch die alte Version im lib Verzeichnis beim build überschrieben wird.

    Paul


    Montag, 20. November 2006 10:07
  • Oh Mist. Da ist tatsächlich noch ein falscher Pfad hinterlegt.
    Für alle die das selbe Problem haben (betrifft das Profipaket):

    Der Ausgabepfad des 3D-Plugins ist leider noch falsch gesetzt. Die dll-Datei wird nicht im bin-Verzeichnis sondern in einem "debug"- oder "release"-Verzeichnis im Bin-Verzeichnis erzeugt. Man muss noch den Ausgabepfad anpassen.

    Das geht über einen Rechtsklick auf "Anzeige3D" im Projektmappen-Explorer (Visual Studio rechts oben) und dort auf Eigenschaften. Nun taucht im Bereich in dem normalerweise Texteditor oder Formulardesigner sind eine Maske zur Anpassung der Einstellungen auf. ganz links ein paar Tabs zu verschiedenen Themen. Unter anderem auch "Erstellen". Ziehmlich weit unten auf der entsprechenden Seite gibts ein Eingabefeld mit der Beschriftung "Ausgabepfad" - dort muss der Inhalt angepasst werden.
    Dort steht drin "..\bin\debug" oder "..\bin\release" (je nachdem welche Konfiguration ausgewählt wurde). Es muss aber "..\bin\" lauten, damit die dll-Datei im richtigen Pfad erzeugt wird.
    Montag, 20. November 2006 12:33