UNet, Photon, nein ich gehe zu Lidgren (oder alternativ zur Bolt)
[size=6][font=courier new,courier,monospace][i]Keine Zeit mehr zu warten.[/i][/font][/size]
(Der Text wurde sehr spät. bzw früh mit Müdigkeit und Mühe geschrieben. Eventuell gefundene Fehler werden bald mit einem Update gefixt )
[font=courier new,courier,monospace][size=6][b]UNet[/b][/size][/font]
[font=courier new,courier,monospace][size=1]-[/size][/font]
[font=courier new,courier,monospace]Ich habe mich mit UNet auch intensiv beschäftigt. Ich muss leider sagen, dass es nicht wirklich meine Wünsche befriedigt. Ist egal, ob es jetzt seine Endphase nicht erreicht hat, aber wie sich das entwickelt zeigt schon, dass ich doch bei der alten Network bleiben muss, oder meine eigene brauche.[/font]
[font=courier new,courier,monospace]UNet ist toll, wenn man diesen NetworkManager benutzt und seinen zwei Szenen klatscht. Was aber, wenn man mehrere hat? Steht nicht viel dazu. [/font]
[font=courier new,courier,monospace]UNet bietet auch Cloudserver an, was total schön ist für Spiele die sehr dynamisch aufgebaut sind (So wie bei LoL, Dota 2: Spiel / Match suchen / finden -> Server wird bereitgestellt -> Spiel beenden -> Server wird für die nächsten Matches verfügbar gemacht)[/font]
[font=courier new,courier,monospace]Doch was ich bei UNet bemerkt habe ist, entweder du hast es sehr simple oder sehr schwer. Das hat sogar ein Unity-Crew gesagt in einer Demonstration. Entweder leicht haben oder sich Schwer machen. So ähnlich wurde es gesagt. Ich muss sagen ich finde es schwerer als altes Netzwerksystem.[/font]
[font=courier new,courier,monospace]Warum?[/font][list=1]
[*][font=courier new,courier,monospace][b]PlayerController[/b]: Ist eine Klasse aus Networking. PlayerController ist quasi sowas wie NetworkPlayer. Hat eine Variable PlayerController.[b]gameObject[/b]. Da steht, dass es einen Player GameObject gibt. Was wenn wir RTS spiele machen und viele Einheiten steuern? Wo ist dann Player GameObject.[/font]
[*][font=courier new,courier,monospace]NetworkServer und NetworkClient ist zu kompliziert gemacht. Man weiß gar nicht, wann man was braucht. Ich habe echt lange gebraucht bis ich das hinbekommen habe.
[b]NetworkServer.Listen(port)[/b] und [b]NetworkClient client = new NetworkClient()[/b]
brauchen Konfigurationen bevor sie laufen. Das finde ich ja noch ok, weil man da vieles einstellen kann, aber mache Dinge machen keinen Sinn. Für beiden kannst du die Maximale Connection einstellen. Wieso? [/font]
[*][font=courier new,courier,monospace]Viele Namen werden komisch verwendet, die nicht das Aussagen, was eigentlich tut. AddPlayer ist jetzt zum Beispiel bedeutet, dass man einer Verbindung ein GameObject zuweist (Quasi sagen dieser Spieler darf diesen GameObject kontrollieren).[/font]
[*][font=courier new,courier,monospace]Zu sehr auf Lobby Spiele fixiert.. Spieler müssen sogar "ready" sein um weiter zu kommen.[/font]
[*][font=courier new,courier,monospace][b]Command[/b] und [b]RpcClient[/b] sind auch nette Attributen.[/font]
[font=courier new,courier,monospace]Command werden von Clients (Zitat: aus Spielerobjekten) an andere Spielerobjekte gesendet. Daher Server als Spielerobjekt kriegt es eventuell auch. [/font]
[font=courier new,courier,monospace]Z.B: CmdDoFire().[/font]
[font=courier new,courier,monospace]RpcClient sendet von Server Objekten an Objekten von Clients[/font]
[font=courier new,courier,monospace]RpcKill()[/font]
[font=courier new,courier,monospace]Beide Attributen zwingen entweder Cmd oder Rpc als Anfangsbuchstaben für eine Funktion zu benutzen. Gar nicht toll!!. Sieht Später richtig unübersichtlich aus.[/font]
[font=courier new,courier,monospace]CmdDoFire()[/font]
[font=courier new,courier,monospace]RpcKill()[/font]
[font=courier new,courier,monospace]Hier muss man kein networkview.RPC oder sowas ausführen. Hier kann man Direkt den Methoden Namen schreiben und es ist automatisch an andere versendet.[/font]
[font=courier new,courier,monospace]Vielleicht merkt ihr das Problem[/font]
[font=courier new,courier,monospace]Command: Client an Clients & Server[/font]
[font=courier new,courier,monospace]RpcClient: Server an Clients[/font]
[font=courier new,courier,monospace]Wo ist von Server an Server und Clients.. gibst nicht. Und das doofe ist, dass die Methoden RpcKill bei sich selber nicht funktioniert. Man ist also gezwungen noch eine Funktion Kill() zu schreiben, wo nochmal die gleichen Sachen stehen. Das ganze zwei Mal machen nein Danke.[/font]
[*][font=courier new,courier,monospace]Ist schwer zu beschreiben. Ich hatte eine Klasse wo ein NetworkView Component war. dort hatte ich auch ein Script wo viele Funktionen gab. Sowas wie ChangeName, Chat. So allgemein Dinge halt. Ich musste den Component nur linken. Dann hatte ich sowas wie GlobalNetworkview.RPC("methode, All, bla, bla). Das geht noch so mit UNet. Allerdings ist das Problem bei Playerobjekten. Die Skripte müssen quasi das gleiche seine um etwas Synchron zu machen.
Stellt vor. Mein GlobalNetworkview wäre für alles. Da bekomme ich die Position, die Rotation von Objekten, Chat nachrichten alles einfach.
Jetzt ist das nicht mehr möglich[/font]
[/list]
[font=courier new,courier,monospace]Wie man sieht [size=5][b]zwingt[/b][/size] mich UNet zu Dingen, die ich gar nicht möchte und vor allem nicht brauche, wie mit PlayerObjekten zuweisen.[/font]
[font=courier new,courier,monospace][size=6][b]Photon Cloud[/b][/size][/font]
[font=courier new,courier,monospace][size=1]-[/size][/font]
[font=courier new,courier,monospace][size=4]Photon ist gut. Leider aber können die Pings manchmal hoch sein 80-120. Gute Pings sind im Vergleich 10-40.[/size][/font]
[font=courier new,courier,monospace][size=4]Daher passieren auch doofe Lags und Verzögerungen im Spiel die man bisschen umgehen kann ( "visuelles Faken" nenne ich das )[/size][/font]
[font=courier new,courier,monospace]Photon Cloud kostet, aber bis 20 concur kostenlos, 100 ConCur einmalig 90$ glaub ich war das. Geht noch so.[/font]
[font=courier new,courier,monospace]Das Problem ist, dass ich schon mal geschafft habe, dass ich 90.000 Spieler gleichzeitig bei meinem App sich aufgehalten haben. Wie soll man Später sowas bei Photon Cloud finanzieren. Damit mach ich nicht das Geld, womit ich das finanzieren könnte.[/font]
[font=courier new,courier,monospace]Außerdem gibst hier riesen fetten Nachteil. Kein serverseitiges Programmieren. Alles läuft über ein Spieler (als hätte er das Spiel gehostet).[/font]
[font=courier new,courier,monospace]Ich will, aber auch das können.[/font]
[font=courier new,courier,monospace][size=6][b]Bolt[/b][/size][/font]
[font=courier new,courier,monospace][size=1]-[/size][/font]
[font=courier new,courier,monospace]Bolt wird jetzt auch von Exitgames entwickelt (von Photon Leuten). Leider weiß ich noch nicht viel darüber, aber anscheinend wollen die Matchmaking mit einplanen, die durch ihren Photon Cloud System laufen wird. Ob es auch nen Auto-Matchmaking haben wird ist ne andere Sache. Genau aber das werde ich brauchen.[/font]
[font=courier new,courier,monospace]Da ich wenig Zeit habe brauche ich eine Alternative.[/font]
[font=courier new,courier,monospace]Bolt ist eine Erleichterung was Programmierung an geht, wenn es um Networking geht. Viele Lösungen wie zum Beispiel Animation Synchronisierung wird da angeboten. Außerdem wird alles über Unity programmiert . Konsole sowie Dedicated soll auch geben.[/font]
[font=courier new,courier,monospace][size=6][b]Unity Networking (altes)[/b][/size][/font]
[font=courier new,courier,monospace][size=1]-[/size][/font]
[font=courier new,courier,monospace]Die besten Erfahrungen habe ich damit gemacht. Bietet nicht viel an, aber dafür hat man andere brauchbaren Dinge. Hier kann man schön eigenen Server programmieren. Ein Beispiel zu meinem Spiel. Ich habe ein Server programmiert, wo man die Welt aber nicht sieht (denn es war nicht autoritativer Server), jedoch sollte irgendwo konstant ein Server laufen, wenn man das wollte. Zack programmiert fertig.[/font]
[font=courier new,courier,monospace]Bei einem anderen Beispiel war alles auf dem Server. Kollisionen usw wurden da auch überprüft. Das geht mit Bolt auch, aber nicht mit Photon Cloud und eventuell mit Lidgren.[/font]
[font=courier new,courier,monospace]Leider lässt angeblich die Perfomanz bei vielen Spielern nach. Habe ich bis jetzt erlebt.[/font]
[font=courier new,courier,monospace]Großer Nachteil für mich. Kein auto-matchmaking.[/font]
[font=courier new,courier,monospace]Wer mein Blog verfolgt hatte, hatte gesehen, dass ich das damit am Lösen war. Das Problem ist, dass es etwas machbar war, aber es wäre auf deutsch gesagt "scheiße" gelaufen. Sehr viel Fummelarbeit.[/font]
[font=courier new,courier,monospace][b]Lidgren[/b][/font]
[font=courier new,courier,monospace][size=1]-[/size][/font]
[font=courier new,courier,monospace]Lidgren ist kein Service wie bei UNet, Photon und Bolt, sondern man muss echt von Null Anfangen. Lidgren ist ein Allgemeines Networking für C# .Net.[/font]
[font=courier new,courier,monospace]Das heißt man müsste erst mal Unity dazu bringen Lidgren zu verstehen und Lidgren dazu bringen Unity zu verstehen (Plugins, Coding usw).[/font]
[font=courier new,courier,monospace]Ich habe damit angefangen muss sagen, dass es mir bis jetzt Spaß macht. Endlich mal, wo ich weiß, dass ich alles mir erstellen könnte, was ich so brauche. Denn ich fange von Null an und kann meine Wünsche mit einbauen.[/font]
[font=courier new,courier,monospace]Wird vielleicht länger dauern, schwer sein, aber, wenn ich überlege werde ich mehr Zeit sparen als auf UNet zu warten, als über Photon kosten auf zu regen.[/font]
[font=courier new,courier,monospace]Man auch mal richtigen dedicated Server mit ner Konsole machen [/font]
[font=courier new,courier,monospace][size=5][b]Und was genau mach ich da? [/b][/size][/font]
[font=courier new,courier,monospace]Ich sage mal so. Bin ungefähr bei 40 %. Ich habe nun Lidgren und Unity kennenlernen lassen. Ich kann Server erstellen und kommunizieren lassen. Bis jetzt waren das nur Texte, aber vieles wurde vorbereitet. die ganzen Standard Sachen wie Vectoren, Quaternion, int, float habe ich eingebaut.[/font]
[font=courier new,courier,monospace]Vieles fehlt noch. Derzeit arbeite an einem System, wo man auch zukünftig, andere mit Leichtigkeit hosten lassen kann.[/font]
[font=courier new,courier,monospace]Eventuell werde ich meinen eigenen Auto-Matchmaking schreiben. Wir gucken mal weiter.[/font]
[font=courier new,courier,monospace]Der Anfang[/font]
[font=courier new,courier,monospace][img]http://puu.sh/jRd9u/286bfeb13a.png[/img][/font]
[font=courier new,courier,monospace]Wie man auf dem Bild sieht hoste ich mit ner Konsole. Und da ist auch ein Message von einem Client angekommen als "Broadcast" mit "this is a test"[/font]
[font=courier new,courier,monospace]Und in der Unity Console sihet man, dass der Server auch was zurück geschrieben hat.[/font]
[font=courier new,courier,monospace]Und dazu hab ich ne eine DemoKlasse gemacht:[/font]
[font=courier new,courier,monospace][img]http://puu.sh/jRgV6/3abae0ae7a.png[/img][/font]
[font=courier new,courier,monospace]Wie man hier sieht habe ich sowas änhnliches wie beim UNet "ULGNetworkbehavior". Dort wird Global eine Verbindung aufgebaut, sei es als Server oder Client. Gott sei Dank geben bei dir den Peer connection zurück, wobei ich dann nicht NetServer oder NetClient benutzen muss. Würde einfach doppel zu viel Arbeit machen.[/font]
[font=courier new,courier,monospace]Wenn man Connect macht (Eventuell, werden diese namen verändert).[/font]
[font=courier new,courier,monospace][img]http://puu.sh/jRgTX/b498c72601.png[/img][/font]
[font=courier new,courier,monospace]Dummerweise kann nicht wirklich FailConnection auswendig machen. Da kriegt man auch einfach Disconnectereignis. Vielleicht schicke ich bei der Disconnect Event noch eine Meldung (Grund Paramater) hinterher und die Entwickler können selbst entscheiden, obwohl sie danach überprüfen. Mal sehen.[/font]
[font=courier new,courier,monospace]Derzeit sieht der Ordner so aus:[/font]
[font=courier new,courier,monospace][img]http://puu.sh/jRhhp/6e3854da43.png[/img][/font]
[font=courier new,courier,monospace]NetMessage ist einfach eine Hilfe um die Unity-Typen besser zu senden. Mit nem[/font]
[font=courier new,courier,monospace]Netbuffer.WriteVector3(Playerpos) kann man seine Position über das Netzwerk senden.[/font]
[font=courier new,courier,monospace]mit NetBuffer.ReadVector3() kriegt man dann die Position wieder.[/font]
[font=courier new,courier,monospace]Falls ihr ideen habt immer her damit.[/font]
[font=courier new,courier,monospace]Ich habe extra nen Trello erstellt. Eigentlich für mich persönlich, aber auch falls ihr Ideen habt.[/font]
[font=courier new,courier,monospace]Der Text wurde sehr spät. bzw früh mit Müdigkeit und Mühe geschrieben. Eventuel gefundene Fehler werden bald mit einem Update gefixt [/font]
(Der Text wurde sehr spät. bzw früh mit Müdigkeit und Mühe geschrieben. Eventuell gefundene Fehler werden bald mit einem Update gefixt )
[font=courier new,courier,monospace][size=6][b]UNet[/b][/size][/font]
[font=courier new,courier,monospace][size=1]-[/size][/font]
[font=courier new,courier,monospace]Ich habe mich mit UNet auch intensiv beschäftigt. Ich muss leider sagen, dass es nicht wirklich meine Wünsche befriedigt. Ist egal, ob es jetzt seine Endphase nicht erreicht hat, aber wie sich das entwickelt zeigt schon, dass ich doch bei der alten Network bleiben muss, oder meine eigene brauche.[/font]
[font=courier new,courier,monospace]UNet ist toll, wenn man diesen NetworkManager benutzt und seinen zwei Szenen klatscht. Was aber, wenn man mehrere hat? Steht nicht viel dazu. [/font]
[font=courier new,courier,monospace]UNet bietet auch Cloudserver an, was total schön ist für Spiele die sehr dynamisch aufgebaut sind (So wie bei LoL, Dota 2: Spiel / Match suchen / finden -> Server wird bereitgestellt -> Spiel beenden -> Server wird für die nächsten Matches verfügbar gemacht)[/font]
[font=courier new,courier,monospace]Doch was ich bei UNet bemerkt habe ist, entweder du hast es sehr simple oder sehr schwer. Das hat sogar ein Unity-Crew gesagt in einer Demonstration. Entweder leicht haben oder sich Schwer machen. So ähnlich wurde es gesagt. Ich muss sagen ich finde es schwerer als altes Netzwerksystem.[/font]
[font=courier new,courier,monospace]Warum?[/font][list=1]
[*][font=courier new,courier,monospace][b]PlayerController[/b]: Ist eine Klasse aus Networking. PlayerController ist quasi sowas wie NetworkPlayer. Hat eine Variable PlayerController.[b]gameObject[/b]. Da steht, dass es einen Player GameObject gibt. Was wenn wir RTS spiele machen und viele Einheiten steuern? Wo ist dann Player GameObject.[/font]
[*][font=courier new,courier,monospace]NetworkServer und NetworkClient ist zu kompliziert gemacht. Man weiß gar nicht, wann man was braucht. Ich habe echt lange gebraucht bis ich das hinbekommen habe.
[b]NetworkServer.Listen(port)[/b] und [b]NetworkClient client = new NetworkClient()[/b]
brauchen Konfigurationen bevor sie laufen. Das finde ich ja noch ok, weil man da vieles einstellen kann, aber mache Dinge machen keinen Sinn. Für beiden kannst du die Maximale Connection einstellen. Wieso? [/font]
[*][font=courier new,courier,monospace]Viele Namen werden komisch verwendet, die nicht das Aussagen, was eigentlich tut. AddPlayer ist jetzt zum Beispiel bedeutet, dass man einer Verbindung ein GameObject zuweist (Quasi sagen dieser Spieler darf diesen GameObject kontrollieren).[/font]
[*][font=courier new,courier,monospace]Zu sehr auf Lobby Spiele fixiert.. Spieler müssen sogar "ready" sein um weiter zu kommen.[/font]
[*][font=courier new,courier,monospace][b]Command[/b] und [b]RpcClient[/b] sind auch nette Attributen.[/font]
[font=courier new,courier,monospace]Command werden von Clients (Zitat: aus Spielerobjekten) an andere Spielerobjekte gesendet. Daher Server als Spielerobjekt kriegt es eventuell auch. [/font]
[font=courier new,courier,monospace]Z.B: CmdDoFire().[/font]
[font=courier new,courier,monospace]RpcClient sendet von Server Objekten an Objekten von Clients[/font]
[font=courier new,courier,monospace]RpcKill()[/font]
[font=courier new,courier,monospace]Beide Attributen zwingen entweder Cmd oder Rpc als Anfangsbuchstaben für eine Funktion zu benutzen. Gar nicht toll!!. Sieht Später richtig unübersichtlich aus.[/font]
[font=courier new,courier,monospace]CmdDoFire()[/font]
[font=courier new,courier,monospace]RpcKill()[/font]
[font=courier new,courier,monospace]Hier muss man kein networkview.RPC oder sowas ausführen. Hier kann man Direkt den Methoden Namen schreiben und es ist automatisch an andere versendet.[/font]
[font=courier new,courier,monospace]Vielleicht merkt ihr das Problem[/font]
[font=courier new,courier,monospace]Command: Client an Clients & Server[/font]
[font=courier new,courier,monospace]RpcClient: Server an Clients[/font]
[font=courier new,courier,monospace]Wo ist von Server an Server und Clients.. gibst nicht. Und das doofe ist, dass die Methoden RpcKill bei sich selber nicht funktioniert. Man ist also gezwungen noch eine Funktion Kill() zu schreiben, wo nochmal die gleichen Sachen stehen. Das ganze zwei Mal machen nein Danke.[/font]
[*][font=courier new,courier,monospace]Ist schwer zu beschreiben. Ich hatte eine Klasse wo ein NetworkView Component war. dort hatte ich auch ein Script wo viele Funktionen gab. Sowas wie ChangeName, Chat. So allgemein Dinge halt. Ich musste den Component nur linken. Dann hatte ich sowas wie GlobalNetworkview.RPC("methode, All, bla, bla). Das geht noch so mit UNet. Allerdings ist das Problem bei Playerobjekten. Die Skripte müssen quasi das gleiche seine um etwas Synchron zu machen.
Stellt vor. Mein GlobalNetworkview wäre für alles. Da bekomme ich die Position, die Rotation von Objekten, Chat nachrichten alles einfach.
Jetzt ist das nicht mehr möglich[/font]
[/list]
[font=courier new,courier,monospace]Wie man sieht [size=5][b]zwingt[/b][/size] mich UNet zu Dingen, die ich gar nicht möchte und vor allem nicht brauche, wie mit PlayerObjekten zuweisen.[/font]
[font=courier new,courier,monospace][size=6][b]Photon Cloud[/b][/size][/font]
[font=courier new,courier,monospace][size=1]-[/size][/font]
[font=courier new,courier,monospace][size=4]Photon ist gut. Leider aber können die Pings manchmal hoch sein 80-120. Gute Pings sind im Vergleich 10-40.[/size][/font]
[font=courier new,courier,monospace][size=4]Daher passieren auch doofe Lags und Verzögerungen im Spiel die man bisschen umgehen kann ( "visuelles Faken" nenne ich das )[/size][/font]
[font=courier new,courier,monospace]Photon Cloud kostet, aber bis 20 concur kostenlos, 100 ConCur einmalig 90$ glaub ich war das. Geht noch so.[/font]
[font=courier new,courier,monospace]Das Problem ist, dass ich schon mal geschafft habe, dass ich 90.000 Spieler gleichzeitig bei meinem App sich aufgehalten haben. Wie soll man Später sowas bei Photon Cloud finanzieren. Damit mach ich nicht das Geld, womit ich das finanzieren könnte.[/font]
[font=courier new,courier,monospace]Außerdem gibst hier riesen fetten Nachteil. Kein serverseitiges Programmieren. Alles läuft über ein Spieler (als hätte er das Spiel gehostet).[/font]
[font=courier new,courier,monospace]Ich will, aber auch das können.[/font]
[font=courier new,courier,monospace][size=6][b]Bolt[/b][/size][/font]
[font=courier new,courier,monospace][size=1]-[/size][/font]
[font=courier new,courier,monospace]Bolt wird jetzt auch von Exitgames entwickelt (von Photon Leuten). Leider weiß ich noch nicht viel darüber, aber anscheinend wollen die Matchmaking mit einplanen, die durch ihren Photon Cloud System laufen wird. Ob es auch nen Auto-Matchmaking haben wird ist ne andere Sache. Genau aber das werde ich brauchen.[/font]
[font=courier new,courier,monospace]Da ich wenig Zeit habe brauche ich eine Alternative.[/font]
[font=courier new,courier,monospace]Bolt ist eine Erleichterung was Programmierung an geht, wenn es um Networking geht. Viele Lösungen wie zum Beispiel Animation Synchronisierung wird da angeboten. Außerdem wird alles über Unity programmiert . Konsole sowie Dedicated soll auch geben.[/font]
[font=courier new,courier,monospace][size=6][b]Unity Networking (altes)[/b][/size][/font]
[font=courier new,courier,monospace][size=1]-[/size][/font]
[font=courier new,courier,monospace]Die besten Erfahrungen habe ich damit gemacht. Bietet nicht viel an, aber dafür hat man andere brauchbaren Dinge. Hier kann man schön eigenen Server programmieren. Ein Beispiel zu meinem Spiel. Ich habe ein Server programmiert, wo man die Welt aber nicht sieht (denn es war nicht autoritativer Server), jedoch sollte irgendwo konstant ein Server laufen, wenn man das wollte. Zack programmiert fertig.[/font]
[font=courier new,courier,monospace]Bei einem anderen Beispiel war alles auf dem Server. Kollisionen usw wurden da auch überprüft. Das geht mit Bolt auch, aber nicht mit Photon Cloud und eventuell mit Lidgren.[/font]
[font=courier new,courier,monospace]Leider lässt angeblich die Perfomanz bei vielen Spielern nach. Habe ich bis jetzt erlebt.[/font]
[font=courier new,courier,monospace]Großer Nachteil für mich. Kein auto-matchmaking.[/font]
[font=courier new,courier,monospace]Wer mein Blog verfolgt hatte, hatte gesehen, dass ich das damit am Lösen war. Das Problem ist, dass es etwas machbar war, aber es wäre auf deutsch gesagt "scheiße" gelaufen. Sehr viel Fummelarbeit.[/font]
[font=courier new,courier,monospace][b]Lidgren[/b][/font]
[font=courier new,courier,monospace][size=1]-[/size][/font]
[font=courier new,courier,monospace]Lidgren ist kein Service wie bei UNet, Photon und Bolt, sondern man muss echt von Null Anfangen. Lidgren ist ein Allgemeines Networking für C# .Net.[/font]
[font=courier new,courier,monospace]Das heißt man müsste erst mal Unity dazu bringen Lidgren zu verstehen und Lidgren dazu bringen Unity zu verstehen (Plugins, Coding usw).[/font]
[font=courier new,courier,monospace]Ich habe damit angefangen muss sagen, dass es mir bis jetzt Spaß macht. Endlich mal, wo ich weiß, dass ich alles mir erstellen könnte, was ich so brauche. Denn ich fange von Null an und kann meine Wünsche mit einbauen.[/font]
[font=courier new,courier,monospace]Wird vielleicht länger dauern, schwer sein, aber, wenn ich überlege werde ich mehr Zeit sparen als auf UNet zu warten, als über Photon kosten auf zu regen.[/font]
[font=courier new,courier,monospace]Man auch mal richtigen dedicated Server mit ner Konsole machen [/font]
[font=courier new,courier,monospace][size=5][b]Und was genau mach ich da? [/b][/size][/font]
[font=courier new,courier,monospace]Ich sage mal so. Bin ungefähr bei 40 %. Ich habe nun Lidgren und Unity kennenlernen lassen. Ich kann Server erstellen und kommunizieren lassen. Bis jetzt waren das nur Texte, aber vieles wurde vorbereitet. die ganzen Standard Sachen wie Vectoren, Quaternion, int, float habe ich eingebaut.[/font]
[font=courier new,courier,monospace]Vieles fehlt noch. Derzeit arbeite an einem System, wo man auch zukünftig, andere mit Leichtigkeit hosten lassen kann.[/font]
[font=courier new,courier,monospace]Eventuell werde ich meinen eigenen Auto-Matchmaking schreiben. Wir gucken mal weiter.[/font]
[font=courier new,courier,monospace]Der Anfang[/font]
[font=courier new,courier,monospace][img]http://puu.sh/jRd9u/286bfeb13a.png[/img][/font]
[font=courier new,courier,monospace]Wie man auf dem Bild sieht hoste ich mit ner Konsole. Und da ist auch ein Message von einem Client angekommen als "Broadcast" mit "this is a test"[/font]
[font=courier new,courier,monospace]Und in der Unity Console sihet man, dass der Server auch was zurück geschrieben hat.[/font]
[font=courier new,courier,monospace]Und dazu hab ich ne eine DemoKlasse gemacht:[/font]
[font=courier new,courier,monospace][img]http://puu.sh/jRgV6/3abae0ae7a.png[/img][/font]
[font=courier new,courier,monospace]Wie man hier sieht habe ich sowas änhnliches wie beim UNet "ULGNetworkbehavior". Dort wird Global eine Verbindung aufgebaut, sei es als Server oder Client. Gott sei Dank geben bei dir den Peer connection zurück, wobei ich dann nicht NetServer oder NetClient benutzen muss. Würde einfach doppel zu viel Arbeit machen.[/font]
[font=courier new,courier,monospace]Wenn man Connect macht (Eventuell, werden diese namen verändert).[/font]
[font=courier new,courier,monospace][img]http://puu.sh/jRgTX/b498c72601.png[/img][/font]
[font=courier new,courier,monospace]Dummerweise kann nicht wirklich FailConnection auswendig machen. Da kriegt man auch einfach Disconnectereignis. Vielleicht schicke ich bei der Disconnect Event noch eine Meldung (Grund Paramater) hinterher und die Entwickler können selbst entscheiden, obwohl sie danach überprüfen. Mal sehen.[/font]
[font=courier new,courier,monospace]Derzeit sieht der Ordner so aus:[/font]
[font=courier new,courier,monospace][img]http://puu.sh/jRhhp/6e3854da43.png[/img][/font]
[font=courier new,courier,monospace]NetMessage ist einfach eine Hilfe um die Unity-Typen besser zu senden. Mit nem[/font]
[font=courier new,courier,monospace]Netbuffer.WriteVector3(Playerpos) kann man seine Position über das Netzwerk senden.[/font]
[font=courier new,courier,monospace]mit NetBuffer.ReadVector3() kriegt man dann die Position wieder.[/font]
[font=courier new,courier,monospace]Falls ihr ideen habt immer her damit.[/font]
[font=courier new,courier,monospace]Ich habe extra nen Trello erstellt. Eigentlich für mich persönlich, aber auch falls ihr Ideen habt.[/font]
[font=courier new,courier,monospace]Der Text wurde sehr spät. bzw früh mit Müdigkeit und Mühe geschrieben. Eventuel gefundene Fehler werden bald mit einem Update gefixt [/font]
8 Kommentare
Recommended Comments