[MonoGame]Minecraft-Klon

    • C#
    • .NET (FX) 4.5–4.8

    Es gibt 161 Antworten in diesem Thema. Der letzte Beitrag () ist von seh.

      Okay, hab's installiert und die DLL referenziert. Allerdings scheinst Du nicht die ganz neueste MonoGame-Version zu haben:



      nvm, hab's dann einfach mit 'nem ranzigen Process.GetCurrentProcess().Kill() ersetzt, da ich kurzfristig keine Alternative gefunden habe. Jedenfalls fliegt mir dann direkt eine NullReferenceException um die Ohren:

      Spoiler anzeigen
      {"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."} - bei Microsoft.Xna.Framework.MetroGamePlatform..ctor(Game game)
      bei Microsoft.Xna.Framework.Game..ctor()
      bei MinecraftClone.MinecraftCloneGame..ctor() in D:\Downloads\Minecraft-Clone-Monogame-master\Minecraft-Clone-Monogame-master\MinecraftCloneMonoGame\MinecraftCloneGame.cs:Zeile 48.
      bei MinecraftCloneMonoGame.Program.Main() in D:\Downloads\Minecraft-Clone-Monogame-master\Minecraft-Clone-Monogame-master\MinecraftCloneMonoGame\Program.cs:Zeile 17.


      Ich kann da leider keine fehlenden Instanzen bzw. ​null-Zeiger finden...

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Hö, hab Monogame installiert als ich diesen Thread startete .. komisch.
      "This platform\s' policy [...]" hört sich aber schon nach Windows an..

      Ich sehe es mir gleich mal an.

      Gut das du mich darauf aufmerksam gemacht hast.

      @Trade Hast du auch diese Version(=> monogame.net/2016/03/17/monogame-3-5/) gedownloadet?
      Denn die Meldung scheint universell zu sein(und nicht nur Windows-spezifisch)


      Und Gott alleine weiß alles am allerbesten und besser.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „φConst“ ()

      Ja, ich habe die für VS genommen.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Ich habe es nochmal gedownloadet(die Projektmappe), funktioniert( ich hatte nur eine Referenz zu Earlz.dll hinzuzufügen).
      Hat denn irgendjemand anderes versucht das Projekt zu kompilieren?


      Liebe Grüße.
      Und Gott alleine weiß alles am allerbesten und besser.
      Das erste Biom: Inseln.

      Wasser wurde implementiert(alpha),
      wenn nun die Y-Position unter dem Meeresspiegel ist(das wird sich ändern), entsteht der Eindruck, man sei unter Wasser.
      Noch einige Bugfixes und die Repository wird synchronisiert.

      Im Anhang folgen Bilder.
      Bilder
      • OceanBioms.png

        1,46 MB, 1.920×1.080, 391 mal angesehen
      • OceanInner.png

        2,52 MB, 1.920×1.080, 381 mal angesehen
      Und Gott alleine weiß alles am allerbesten und besser.

      φConst schrieb:

      Projekt zu kompilieren?

      Hey,
      beim öffnen des Projekts erhalte ich keinerlei Meldung, beim erstellen jedoch füllt sich die Fehlerliste und nach anschließender Bereinigung erhalte ich 27 Fehlermeldungen:
      Hier ein Paar- da sich diese Meldungen wiederholen
      Schweregrad Code Beschreibung Projekt Datei Zeile
      Fehler CS0619 "Game.Exit()" ist veraltet: "This platform's policy does not allow programmatically closing." MinecraftCloneMonoGame D:\Minecraft-Clone-Monogame-master\Minecraft-Clone-Monogame-master\MinecraftCloneMonoGame\MinecraftCloneGame.cs 140
      Fehler CS0103 Der Name "BareMetal" ist im aktuellen Kontext nicht vorhanden. MinecraftCloneMonoGame D:\Minecraft-Clone-Monogame-master\Minecraft-Clone-Monogame-master\MinecraftCloneMonoGame\MinecraftCloneGame.cs 96
      Fehler CS0246 Der Typ- oder Namespacename "Earlz" wurde nicht gefunden (fehlt eine using-Direktive oder ein Assemblyverweise?) MinecraftCloneMonoGame D:\Minecraft-Clone-Monogame-master\Minecraft-Clone-Monogame-master\MinecraftCloneMonoGame\CoreOptimized\Chunk\ChunkOptimized.cs 15
      Fehler CS0246 Der Typ- oder Namespacename "Earlz" wurde nicht gefunden (fehlt eine using-Direktive oder ein Assemblyverweise?) MinecraftCloneMonoGame D:\Minecraft-Clone-Monogame-master\Minecraft-Clone-Monogame-master\MinecraftCloneMonoGame\MinecraftCloneGame.cs 23
      Fehler CS0246 Der Typ- oder Namespacename "Earlz" wurde nicht gefunden (fehlt eine using-Direktive oder ein Assemblyverweise?) MinecraftCloneMonoGame D:\Minecraft-Clone-Monogame-master\Minecraft-Clone-Monogame-master\MinecraftCloneMonoGame\MinecraftCloneGame.cs 23

      Da fehlt momentan noch die DLL, in der CSPROJ Datei wird auf "bin\Windows\x86\Debug\ThirdPartyLibraries\BareMetal.dll" verwiesen. Am besten unter deinen Verweisen die BareMetal-DLL auf True setzen unter der Lokalen Kopie.

      Grüße,
      Drahuverar
      Option Strict On!
      Wie sieht's eigentlich mittlerweile mit der Exception und den Fehlermeldungen aus? Hast Du schon was in Erfahrung gebracht?
      Ansonsten wäre es wohl nicht schlecht, wenn Du einen Release auf GitHub erstellen würdest und ich mir das nicht selber kompilieren muss.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Guten Abend,
      im Juni wird die Entwicklung kontinuiert.

      Das kompilierte Projekt findet sich auf Google Drive wieder:
      drive.google.com/open?id=0B5J-jqxpqqJUWWtBdVl4MHhnVWs


      Zur Exception:
      Ich habe es auf dem Laptop meines Cousins vergeblich versucht zu reproduzieren.(und auch auf meinem: Acer Aspire 5750g Win 7, VS 2013; VS2012)
      Scheint, dass der Fehler bei dir liegt.
      Und Gott alleine weiß alles am allerbesten und besser.
      Ein kleines Update.

      Das Spiel erkennt nun anhand eines Rays ( VectorUp), ob der Spieler im Wasser( Unterwasser ) ist.
      Nach dem Versuch die Determinierung effizienter zu implementieren, wird das Projekt hochgeladen.
      Und Gott alleine weiß alles am allerbesten und besser.

      TCP/IP und UDP

      Ein multi-threaded TCP/IP und UDP Server ist implementiert.

      Als Nächstes folgt dann die Integration eines Spieler-Models.

      TCP-Server:
      github.com/NET-D3v3l0p3r/Minec…ayer/Global/GlobalHost.cs
      TCP-Client:
      github.com/NET-D3v3l0p3r/Minec…bal/GlobalOnlinePlayer.cs

      UDP:
      github.com/NET-D3v3l0p3r/Minec…CloneMonoGame/Multiplayer


      TCP-Server, siehe Anhang.


      Wichtig:
      UDP ist Lokal,
      TCP/IP global.

      Wenn eure Maschine als globaler Host fungieren soll, muss jener gesetzte Port im Router freigeschaltet werden.
      Die Applikation determiniert anschließend, ob eure Konfiguration den Kriterien für einen globalen Host erfüllt.
      Bilder
      • server.png

        6,3 kB, 664×307, 386 mal angesehen
      Und Gott alleine weiß alles am allerbesten und besser.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „φConst“ ()

      Habe den aktuellen Stand auf GitHub nun mal mit ein paar Änderungen zum Laufen bekommen. Musste die Instanziierung vom GlobalOnlinePlayer halt noch rauswerfen, weil der angegebene IPEndPoint im aktuellen Commit nicht gültig ist und damit ja auch noch nichts gemacht wird. ;)

      Sieht schon mal ganz gut aus.
      Auf jeden Fall ist beim Start die ViewDirection der Kamera noch etwas merkwürdig (man schaut direkt nach unten, sodass Du das, je nachdem, welches Koordinatensystem Du benutzt, noch auf einen anderen Vektor anpassen solltest). Somit verliert man anfangs nämlich mal leicht die räumliche Orientierung, zumal ich gerade unter der Welt gespawnt bin. :P

      Kollisionserkennung funktioniert schon mal ganz gut. Natürlich ist es nicht ganz realistisch, dass man sich ganz genau auf den Block setzen kann und dann kleiner ist als ein Block, aber klar, das müsste man ja alles erst noch implementieren. ^^

      Das Wasser sieht halt noch ein wenig so aus, als wenn die Welt da an der Stelle ein Loch hätte und man rausfällt. ^^ Sobald man halt im Wasser ist, kann man den Wasserblock sehr deutlich sehen und erst etwas tiefer setzt dann der entsprechende Effekt ein, der das "Unterwasser-Gefühl" aufkommen lässt.

      Das Einzige, was etwas stört, ist die Steuerung. Ich würde hier wirklich darauf setzen, dass man sich anders bewegt (Leertaste=Hoch, Shift=Runter, ...) und nicht mit "W" in die Richtung fliegt, in die man schaut (und entsprechend mit "S" in die Richtung des Gegenvektors zur ViewDirection). Das macht wahrscheinlich aber auch erst richtig Sinn, wenn Gravitation implementiert ist. Also richtig die Minecraft-Steuerung. ;)

      Mir ist natürlich bewusst, dass das alles ziemlich schwer zu implementieren ist und das keine fertige Version ist, von der man alles erwarten könnte, was Minecraft hat. Aber vielleicht mal so als Ansätze, was Du auf jeden Fall noch verfolgen solltest.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()

      Danke sehr,
      ein Gravitationscontroller ist bereits implementiert, gibt jedoch Probleme mit der Kollisionserkennung .
      Die Sicht-Direktion lässt sich schnell korrigieren , wird im kommenden Update angepasst.

      Das Wasser ist provisorisch, ließ sich halt recht schnell implementieren.
      Ich werde erst den Ansatz von jvbsl verfolgen ( ein IndexBuffer für alle Chunks, nur Oberfläche des Chunks generieren ), dann kann ich das Wasser als 2D-Ebene ( 2 Triangles ) aufspannen und gegebenenfalls Effekte ( Welle , Reflektion ) implementieren.

      Die Steuerung wird im nächsten Update besser ;) .

      Nächstes Ziel:

      Biome.

      Erster Ansatz einer Biome-Map ( siehe Anhang )

      Liebe Grüße.
      Bilder
      • Screenshot (515).png

        87,25 kB, 1.920×1.080, 252 mal angesehen
      Und Gott alleine weiß alles am allerbesten und besser.
      Klingt ziemlich cool. Freue mich schon auf's Testen. :>
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: