Jump to content
Unity Insider Forum
  • Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011

MaZy

Members
  • Content count

    485
  • Joined

  • Last visited

  • Days Won

    12

MaZy last won the day on November 6

MaZy had the most liked content!

Community Reputation

148 Excellent

About MaZy

  • Rank
    Advanced Member
  • Birthday 02/20/1988

Profile Information

  • Gender
    Male
  • Location
    Hannover

Recent Profile Visitors

5,274 profile views
  1. Nee hab leider kein Tutorial dafür. Ich hab ja nur von der Möglichkeit gesprochen und nicht wie es geht. Wie aber in andern Post geschrieben reicht ein Server zu starten die Funktion StartServer() über den NetworkManager. Nach dem Builden kannst du command line benutzen. -batchmode : Damit es im Hintergrund startet. Zur Testwecken würde ich das weglassen. -nographics : Grafiken werden nicht geladen. Zur Testzwecken, würde ich die Grafiken natürlich am Windows laden. Im Code musst du halt jetzt selber da gucken wie du das machst. Ich hab Beispiel sowas mal gemacht -port 24130 -server . Da hab ich eine Leere Scene als erste Scene genommen und geguckt, ob es allgemein -server gefunden hat, wenn nicht dann normal starten.
  2. Naja headless ist wie paar mal erklärt nichts anders als wenn man bei NetworkManager und NetworkManager UI auf "Server Only" drücken würde. Allerdings ohne den grafischen Teil. Das heißt, man startet etwas aber ohne den grafischen Teil / Treiber usw nicht zu laden. Ein Beispiel ist ja Mining Welt. Die meisten Mininggeräte haben keine grafische Oberfläche. Sie sind jedoch mit anderen Programmen verbunden (Console). Somit kann man trotzdem noch einsehen oder steuern. In anderen Worten ein Monitor, 100 Mininggeräte. Synchronisierung ist ja andere Geschichte. Das hat ja nichts damit am Hut.
  3. Musik bei Scenewechsel

    EDIT: Oh man jetzt sehe ich erst, dass dieser Thread ja schon fast ein Monat her ist ^^. Ich habe so fast wie in den letzen Post gemacht. Also Volume und so verändere ich auch nur durch audioSource selber ohne extra Methoden. Bei Singleton würde ich aufpassen. Ich persönlich würde nicht mit bei dem Beispiel mit GetComponent arbeiten. Aber ist Geschmacksache. Wieso? Ich lasse diese Sachen "vorladen" also schon bereits in der erste Scene (was ganz leer sein kann, quasi Ladebildschirm/Splashscreen mäßig beim Spielstart). Dort ist nun meine AudioSource Einstellung bereits gemacht. Ich lasse daher bei Singleton eher eine Error ausgeben, dass es nicht existiert. Theoretisch müsste ja dieser immer vorhanden sein. Wie gesagt ist Geschmacksache bzw. kommt drauf an. Bei vielen anderen Dingen braucht man wie bei mir nicht vorgehen. Folgendes existiert bei mir noch extra. Die Musikdateien. Eigentlich reicht auch private und [SerializeField], aber wollte damals Public haben public AudioClip[] clips; Paar Methoden um mein Leben leichter zu machen public void PlayMusicID(int id) { if (clips == null || id >= clips.Length) return; if (source.clip == clips[id]) return; source.clip = clips[id]; source.Play(); } public void PlayMusicID(int id, float volume) { if (clips == null || source.clip == clips[id]) return; source.volume = volume; PlayMusicID(id); }
  4. Client-Objekt finden

    Da es MonoBehaviour ist kannst du daher networkIdentify.gameObject oder .transform machen. Somit hast du den GameObject. Und ein Client kennt eigentlich seine GameObjects. Du hast aber meist nur über NetworkIdentify versucht und hast bei NetworkConnection nicht weiter gemacht. NetworkConnection networkIdentify.connectionToClient - gibt den Connection zu dem Client zurück. Weiß hier aber nicht, ob der Owner irrelevant ist. Wenn ja dann networkIdentify.clientAuthorityOwner benutzen Nun hast du den "realen" Client man könnte es ClientNetworkConnection nennen.. networkConnection.clientOwnedObjects - gibt alle gameObjects aus (als Liste natürlich), die man "besitzt". ------------------------- UNet + HLAPI mit (oder ohne) NetworkManager ist nicht so aufgebaut, wie man das üblich bei anderen Networking Sachen (meistens außerhalb des Gaming bereich) kennt. UNet ist so bestimmt, dass du immer das eine GameObject bist und du bestimmst was mit den passiert, sofern du der owner bist. Daher braucht man eigentlich so gut wie nie fragen "Wer bin ich eigentlich?". Eher die Frage "Was bin ich?" ist hier wichtiger (Server / -Owner , Client / -Owner, etc )
  5. Irgendwer oder Irgendwo muss man ein Server hosten. Ob es nun übers Handy ist, oder PC, oder ein Remote PC (Dedicated Server / VServer, oder einfach nur ein PC neben dir) ist es egal. Womit soll man sich sonst connecten ? ^^ Soweit ich weiß bietet Unity selber kein Bluetooth an. Muss man selber proggen oder sich da etwas aus dem AssetStore holen.
  6. Ja hab auch einfach so mit StartServer gemacht. EDIT: Bei Headless Server solltest du StartServer machen und nicht StartHost. Bei StartHost wird auch der Server eine Spielfigur vergebem bzw zugewiesen. Soll ja aber nicht sein. Daher StartServer. Du muss da auch kein Spieler / Spielcharakter löschen, da ja keinen gibt ^^. Kannst ja hier zb einfach joinen und testen. http://vmanager4008.premium-vserver.net/unity/industry/ Hab mal Server gestartet. Da tue ich einfach nur das: // Use this for initialization void Start () { if(Application.platform == RuntimePlatform.LinuxPlayer) manager.StartServer(); connectButton.onClick.AddListener(delegate { OnClick_Connect(); }); dcButton.onClick.AddListener(delegate { OnClick_Disconnect(); }); } EDIT2: Server ist wieder offline.
  7. Das war die Unity version wo Unity 2D Support kam. War mir nicht sicher welche Version war aber zwischen 3.2-3.4 dachte ich ^^. Auf jeden Fall waren das Sprites. Ich hab nur paar ScriptErrors gehabt die schnell gefixt wurden. Komisch nur, dass ich da angeblich ein Parameter vergessen habe bei einer API, dass ich mal runtergeladen habe :O. Auf jeden Fall zum Glück keine Fehler durch ASsets.
  8. Altes Spiel updaten entwickelt in Unity 3.x - 3.4
  9. Unreal Engine 4 Grafik besser?

    Ist jetzt nur meine Meinung, aber ich mag Unity sehr, aber da muss ich zugeben, dass Unreal Engine einfach bessere Grafik anbietet. Liegt daran, dass vieles schon standardmäßig aktiviert ist und mehr Funktionen hat und länger besteht. Wenn man die Lichter, Anti-Aliasing, Schattierung anschaut sieht das richtig gut aus. In Unity muss man da bisschen rumfummeln und eventuell Sachen zusammen finden und erzielt dann auch eine "Schönheit". Auf jeden Fall kann man als Schlusswort sagen, dass dennoch dieser "Wow"-Effekt bezüglich Grafik bei beiden auftreten kann. Ich habe einige davon gesehen Facepunch Studios arbeitet gerade an auch sowas. Die wollen den Hammer Editor von Valve bzw Source Engine sozusagen etwas nach machen, weil der neue Garrysmod in Unreal Engine sein wird und wollen das leicht für die rüber kommenden machen. Die sind bei dem Spiel nicht bei Unity geblieben leider. Und da generieren die Meshes. Vielleicht hab ich auch nur Falsch verstanden ^^
  10. GameServer (In Unity) Headless Server oder allgemein Dedicated Server genannt. Mehr dazu weiter unten. Listenserver -> Bedeutet einfach nur, dass du zwar den Server startest, aber du auch gleichzeitig Spieler bist. Kurz gesagt: Du bist Client und Server zugleich. Clients -> Logischerweise die Spiele/Spieler, die das Spiel beitreten oder allgemein sich mit irgendwem verbinden (muss nicht ein Spiel sein). Masterserver Ist allgemein Begriff für ein Server, der meistens mit anderen Server "redet" Loginserver -> Du startest das Spiel, verbindest mit dem Masterserver (meist automatisch) und er sagt dir, dass Loginserver gerade nicht geht. Matchmakingserver -> Beispiel: Wenn du einen GameServer startest wird an Matchmakingserver die Daten gesendet (IP, Servername, Gamemode usw). Hab aber das Gefühl, dass manche dazu auch Masterserver sagen, weil er ja auch regelt mit wem du verbinden kannst und nicht. Bin mir aber da nicht sicher. In Dota zum Beispiel nennen sie es der Coordinator. Dedicated Server = Root Server - allgemein und nicht auf Spiele bezogen Heißt einfach nur Allgemein, dass der Server(also ein Computer als Server) irgendwo gehostet ist und 24/7 läuft und eigentlich mit niemanden seinen Ressourcen teilt. Also einfach nur ein Server sein. In Unity nennt man sie auch Headless Server, weil Headless Server dafür sorgt, dass der grafische Teil einfach nicht geladen werden soll, weil man in dem Falle sie nicht braucht. Man spart natürlich Ressourcen. Headless Server laufen auch ausschließlich im Hintergrund bzw. per Konsole. Virtueller Server = VServer Das gleiche wie oben, nur dass man die Ressourcen teilt. Meistens teilt man einen Server(also wieder ein Computer), mit 10-50 Leuten.
  11. Hallo mich nervt es schon länger, dass Button- und Textcomponenten getrennt sind. Wenn man InputField anschaut, da haben die in eins gepackt und bei Button nicht. Aber das ist auch verständlich. Warum? Buttons funktionieren auch ohne irgendwelche Texte. Man kann ja auch Bilder nehmen oder ganz alles weglassen. Beispiel bei Farbauswahl, braucht mal sowohl keine Bilder, aber auch keine Texte. Aber warum dann Button und Text nicht in einem GameObject. Irgendwie mögen Image component und Text component sich nicht. Beides zusammen dürfen nicht in einem GameObject existieren (Warum auch immer). Darum ist der Text component im Child GameObject. Doch mich nervt es meistens da rum zu klicken.. Daher hab ich kleinen Script geschrieben, der mir Hilft alles in eins zu Packen. UITextButton UITextButton hat folgende Member button text Wie man hier erkennt kann man also per Instance auf die Componenten zugreifen. Beispiel void Start() { uiTextButtonInstance.OnClick.AddListener(OnCloseButtonClicked); uiTextButtonInstance.text.text = "Close Menu"; } Der Vorteil hier ist ich brauche nicht zwei Variablen erstellen, wegen einmal Button und einmal Text, sondern habe gleich ein Instanz wo beides existieren. Ebenfalls wurde der Script so aufgebaut, dass automatisch die Componenten erkennt. Das heißt man muss selber da nichts machen. Auch einen Textfield hab ich hinzugefügt, so dass man per Inspector den Text da eintragen kann. Somit muss man nicht da sich durch navigieren (was ich öfters genervt hat). Das alles kann man nochmal besser anpassen und vielleicht mehr eintragen wie z.B. Textgröße, jedoch das hab ich weggelassen. Code using UnityEngine; using UnityEngine.UI; public class UITextButton : MonoBehaviour { public Button buttonComponent; public Text textComponent; [SerializeField] string input = ""; void Start() { if (buttonComponent == null) buttonComponent = GetComponent<Button>(); if (buttonComponent == null) Debug.LogError("Button component not found"); if (textComponent == null) textComponent = GetComponentInChildren<Text>(); if (textComponent == null) Debug.LogError("Text child component not found"); } void Update() { if (textComponent != null) input = textComponent.text; } void OnValidate() { if (Application.isPlaying) return; Start(); if (textComponent != null) textComponent.text = input; } } So, der Script ist so aufgebaut, dass es bei jede Veränderung OnValidate() getriggert wird. Das funktioniert auch in PlayMode. Daher lasse ich die Funktion returnen, also "abbrechen", wenn es in PlayMode ist. Wer das doch anders will, kann ja die zwei Zeilen löschen.
  12. Also für den Matchmaking brauchst du kein "Content". Das ist ja pure Kommunikation. Beim Gameserver musst du halt gucken was du brauchst und was nicht. Deswegen hab ich ja bei mir als Beispiel gesagt, dass alles Clientseitig war. Also der Server muss nichts berechnen. Er kommuniziert nur während. Da kann man aber locker cheaten. Bei Serverseitigen, kann man sehr schwer bis gar nicht cheaten. Als Beispiel daher hab ich gesagt Kollision. Nehmen wir an, dass es Serverseitig sein soll. Spieler können rumlaufen, können gegen Wände laufen. Bei sowas ist natürlich Server mit Content natürlich gut. Woher sonst soll der Server später wissen können, ob der Spieler kollidiert ist. Sonst kann man ja Cheaten und durch laufen. Ich kann mich gut erinnern, da war mal früher ein Multiplayer Beispiel in Unity. Das konnte man runterladen. Da hat einer die Map einfach größer gemacht und fuhr mit einem Auto rum. Bei mir schwebte er in der Luft, weil bei mir die Map ja nicht so groß war. Das war clientseitig. Wäre das serverseitig wäre er trotzdem runtergefallen, weil ich gehostet hatte und dürfte nicht rumschweben. Wenn deine Map nicht riesen groß ist und viele Daten hat dann sollte schnell gehen. Vergleichbar würde ich jetzt Rocket League sagen.
  13. Ich habe früher mal Flappy Bird Clon in Multiplayer gemacht. Dort wurde allerdings alles Clientseitig gemacht. Auf jeden war auf dem Server die Scene komplett leer. Nur die Figuren war da zu sehen. Das war nur das alte System. In der neuen System UNet sollte auch sowas funktionieren. Sollte aber nicht Clientseitig sein und der Server müsste über vieles Bescheid wissen, z.B. wo man hin kollidiert usw., dann würde ich den Server gleich lassen wie beim Client. Kurz gesagt: Muss nicht alles drin sein.
  14. Ich habe das bereits in den Status nachricht geschrieben Also ich habe nun das Problem auch gehabt. Mein xbox controller wurde beim zweiten Mal nicht erkannt. Das allerdings habe ich dann versucht bei Unity Editor auch versucht. Ja auch da wurde es nicht mal beim ersten Versuch erkannt. Da wurde mir klar, dass es nicht nur an Unity lag. Ich habe auch die Lösung gefunden allerdings ist das bis jetzt nur eine Theorie, denn ich denke eher dass es nun ein Zufall ist, dass es funktioniert, denn ich schaffe es nicht mehr, dass es NICHT erkannt wird.. sondern funktioniert nun wunderbar. Ich habe windows 7 64 bit nebenbei. Ich hatte den falschen Treiber drin. Dies hier ist der Richtige: Davor hatte ich den drinne: Wenn mein Controller ausgeschaltet ist verschwindet dieses Symbol (in Systemsteuerung\Hardware und Sound\Geräte und Drucker): So nachdem ich eingeschaltet habe kam es nicht mehr weg. Ich habe das gleiche Problem bei Elite Dangerous auch gehabt. Nach dem Spielen und XBOx Controller ausschalten hat das nicht mehr funktioniert. Ich müsste quasi die USB Kabel rausstecken und wieder anstecken. Aber jetzt ist es immer da nach dem ich einschalte. Und es funktioniert auch die ganze Zeit. Daher würde ich euch mal bitten, ob ihr auch mal ausprobieren könnt. Ich habe den obersten Treiber gewählt. Außerdem Steam bestätigt mir, dass es richtig sein sollte, denn plötzlich meldet sich Steam beim Spielen, dass auch ein Controller angeschlossen ist. Das hatte ich NIE davor. Oder ich hab es nie bemerkt ^^. Edit: Anscheinend ist das letzte Build nicht so wirklich bei anderen Spielen aufgetaucht. Hab es gerade mit Rocket League versucht. Da kommt das nicht.
  15. Good bye dedicated root server :( - hello 5 euro vserver xD

    1. Show previous comments  1 more
    2. MaZy

      MaZy

      Produktiv. Dedicated war mir dafür zu teuer ^^. Hatte denn Dedicated vorher für GamingServer + tests geholt.

      EDIT: Wollte das eigentlich schon vor vielen Monaten tun, war aber zu faul alles wieder einzurichten.

    3. Overload

      Overload

      welchen anbieter benutzt du wenn ich fragen darf ?

    4. MaZy

      MaZy

      ip-projects.de. Davor war ich bei server4you.de. Deren Leitung ist aber nicht so schnell. Alles andere war gut.

×