{"id":258,"date":"2015-10-31T01:17:42","date_gmt":"2015-10-31T00:17:42","guid":{"rendered":"http:\/\/www.bellingo.de\/blog\/?p=258"},"modified":"2015-10-31T01:17:42","modified_gmt":"2015-10-31T00:17:42","slug":"conquestrelay-server-jetzt-auf-github","status":"publish","type":"post","link":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/","title":{"rendered":"ConquestRelay-Server jetzt auf GitHub"},"content":{"rendered":"<p>Wie bereits in meinem <a href=\"https:\/\/www.bellingo.de\/blog\/?p=191\">Beitrag vom August<\/a> in Aussicht gestellt habe ich nun den Quellcode meines Relay-Servers aufger\u00e4umt und eine erste Version unter dem Namen <em>ConquestRelay<\/em> bei <a href=\"https:\/\/github.com\/Toadwana\/ConquestRelay\">GitHub<\/a> hochgeladen. Er richtet sich vor allem an Hobbyspieleentwickler die schnell erste Prototypen ihrer Online-Spiele ausprobieren wollen. Entsprechend fehlen nat\u00fcrlich viele Features die professionelle Netzwerkschichten bieten.<\/p>\n<p><!--more--><\/p>\n<p>Um mit dem ConquestRelay-Server erste eigene Versuche zu starten folge einfach <a href=\"https:\/\/github.com\/Toadwana\/ConquestRelay\" target=\"_blank\">diesem Link zu GitHub<\/a> und lade Dir entweder das ganze Paket als Zip-File herunter oder klone das Projekt auf Deinen Desktop. Es enth\u00e4lt eine Kopie der Bibliothek <a href=\"https:\/\/github.com\/sta\/websocket-sharp\" target=\"_blank\">websocket-sharp<\/a>, ein Verzeichnis mit dem Relay-Server selbst und ein Beispielprojekt f\u00fcr Unity.<\/p>\n<p>Wozu ist dieser Server nun eigentlich gut? Wie Du vielleicht schon in meinem <a href=\"https:\/\/www.bellingo.de\/blog\/ein-relay-server-mit-websockets-fuer-online-spiele-mit-unity-personal\">fr\u00fcheren Beitrag<\/a> dazu gelesen hast arbeite ich gerade an einem Online-Spiel dessen Server ich eigentlich auf einer Instanz in der Amazon-Cloud hosten wollte. Da ich aber keine Pro-Lizenz von Unity besitze kann ich den Server nicht &#8222;headless&#8220; \u00fcbersezten, d.h. ohne grafische Ausgabe im sog. &#8222;Batchmode&#8220;. Das w\u00e4re aber f\u00fcr einen solchen Cloud-Server notwendig, da diese keine Grafikkarten besitzen. Ich suchte daher nach einer L\u00f6sung wie ich das Spiel auf meinem eigenen Server zuhause hosten k\u00f6nnte w\u00e4hrend sich Rechner von \u00fcberall her damit verbinden k\u00f6nnen, sogar Mobilger\u00e4te. Die L\u00f6sung, f\u00fcr die ich mich entschied, waren WebSockets zusammen mit einem Relay-Server auf meiner Cloud-Instanz die den Spiel-Server mit den Spieler-Clients verbindet (s. Diagramm oben).<\/p>\n<h2>Starten des ConquestRelay-Servers<\/h2>\n<p>Solange Du Visual Studio benutzt (ich arbeite mit <a href=\"https:\/\/www.bellingo.de\/blog\/free-game-development-with-unity-and-visual-studio\/\">Visual Studio Community 2013<\/a>) sollte das Bauen des Projekts einfach sein. \u00d6ffne einfach die Datei ConquestRelay.sln und kompiliere sowohl die Bibliothek websocket-sharp als auch den Relay-Server selbst. Da der Server nur auf eingehende Verbindungen von Spielservern und -clients wartet muss nichts konfiguriert werden. Im Moment lauscht er auf Port 443, der f\u00fcr Https-Verbindungen reserviert ist und daher in normalen Firewall-Konfigurationen offen sein sollte. F\u00fcr einen ersten Test auf Deinem lokalen Rechner ist das allerdings nicht wichtig, also starte einfach die ConquestRelay.exe die Du gerade generiert hast.<\/p>\n<figure id=\"attachment_252\" aria-describedby=\"caption-attachment-252\" style=\"width: 660px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayScenes.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-252 size-large\" src=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayScenes-1024x616.png\" alt=\"Spiel-Client in Unity ausf\u00fchren\" width=\"660\" height=\"397\" srcset=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayScenes-1024x616.png 1024w, https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayScenes-300x181.png 300w, https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayScenes.png 1032w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/a><figcaption id=\"caption-attachment-252\" class=\"wp-caption-text\">Korrekte Konfiguration der Build Settings f\u00fcr den Spiel-Client mit Lobby.<\/figcaption><\/figure>\n<p>Der Ordner <em>Unity <\/em>enth\u00e4lt ein Asset Package mit Beispielspielserver und -client. Nach dem Import dieses Pakets in Unity enth\u00e4lt das aktuelle Projekt drei neue Szenen, <em>GameServer<\/em>, <em>GameClient<\/em> und <em>ClientLobby<\/em>. Baue zun\u00e4chst die Szene <em>GameServer <\/em> und starte sie als Windows-Applikation. Dann \u00f6ffne die Szene <em>ClientLobby<\/em>. Setze, wie im Screenshot oben gezeigt, diese Szene als Szene 0 in den Build Settings, und <em>GameClient<\/em> als Szene 1. Nun starte die Szene im Editor. Du erh\u00e4ltst eine &#8222;Liste&#8220; mit einem Spielserver der auf neue Spieler wartet. Benutze den Join-Button der eine Verbindung mit diesem Server herstellt und ein neues, leeres Player-Objekt instantiiert. Ab diesem Punkt bist Du gefragt. Wenn sich mehrere Clients mit dem Server verbinden wird f\u00fcr jeden ein Player-Objekt in jedem Client generiert. Nun w\u00e4re es an der Zeit eigenen Code zu den Player-Objekten hinzuzuf\u00fcgen.<\/p>\n<h2>Wo fange ich mit dem Programmieren an?<\/h2>\n<p>Die wichtigste Klasse f\u00fcr Dein Spiel im Unity-Projekt ist <em>WebSocketBase.<\/em> Sie verbindet sich mit dem ConquestRelay-Server und stellt Methoden f\u00fcr Remote Procedure Calls (RPCs) zur Verf\u00fcgung. Sie verarbeitet die Systemnachrichten des Relay-Servers, \u00fcberl\u00e4sst die Kommunikation zwischen Spielserver und -clients aber abgeleiteten Klassen (<em>WebSocketServer<\/em>, <em>WebSocketClient<\/em> und <em>WebSocketLobby<\/em>). Die Methode <em>ParseMessage()<\/em> ist hier von zentraler Bedeutung.<\/p>\n<p>RPCs werden als Strings \u00fcbertragen, wobei Spielkommandos immer mit dem Pr\u00e4fix &#8222;Cmd&#8220; beginnen, gefolgt von dem Kommandonamen und eventuellen Parametern und durch Leerzeichen getrennt. Die Methode <em>ParseMessage() <\/em>enth\u00e4lt nichts weiter als eine Reihe von Stringauswertungen die diese Nachrichten analysieren. Sobald Du hier ein Kommando hinzugef\u00fcgt hast kannst Du es mittels <em>RPC()<\/em>, <em>ServerRPC() <\/em>oder <em>BroadcastRPC()<\/em> aufrufen.<\/p>\n<h2>ConquestRelay und die Cloud<\/h2>\n<p>Den ConquestRelay-Server auf Deiner eigenen Cloud-Instanz laufen zu lassen ist relativ einfach. Lade ihn zun\u00e4chst hoch und starte ihn, danach musst Du noch sicherstellen dass Port 443 nicht von der Firewall geblockt wird. Das sollte eigentlich alles sein. Notiere Dir die IP-Adresse der Cloud-Instanz und trage sie an den entsprechenden Stellen der <em>Awake()<\/em>-Methoden von <em>WebSocketServer<\/em>, <em>WebSocketClient<\/em> und <em>WebSocketLobby<\/em> ein. Damit sollte sogar eine Verbindung mit Mobilger\u00e4ten funktionieren.<\/p>\n<h2>Reichlich offene Punkte<\/h2>\n<p>Wie ich vorher schon geschrieben habe ist der ConquestRelay-Server f\u00fcr mich nur ein Mittel um mein Spiel \u00fcberhaupt zum Laufen zu bekommen, aber auch eine \u00dcbung um mich mit WebSockets vertraut zu machen. Nat\u00fcrlich bleibt damit noch eine Menge zu tun, die Software ist weit davon entfernt in einem ernsthaften Projekt einsetzbar zu sein. Hier ist nur eine Auswahl der offensichtlichsten Dinge die noch ber\u00fccksichtigt werden m\u00fcssen:<\/p>\n<ul>\n<li>Bin\u00e4re \u00dcbertragung anstatt String-basierter Nachrichten.<\/li>\n<li>Irgendeine Art von Sicherheitsmechanismen, da im Moment jeder den Relay-Server verwenden kann sobald er die IP-Adresse der Cloud-Instanz herausfindet.<\/li>\n<li>Ber\u00fccksichtigung variabler IP-Adressen f\u00fcr den Fall dass die Cloud-Instanz neu gestartet wird.<\/li>\n<li>Korrekte Behandlung von Disconnects und Reconnets.<\/li>\n<li>Optimierung der \u00dcbertragungsgeschwindigkeit, wobei man beachten sollte dass ein solcher Relay-Server wahrscheinlich nie schnell genug f\u00fcr FPS- oder RTS-Spiele sein wird.<\/li>\n<li>Dokumentation. \ud83d\ude09<\/li>\n<\/ul>\n<p>Und so weiter. Wenn Du allerdings nur die ersten Schritte in der Online-Spieleentwicklung machen m\u00f6chtest ohne bereits gro\u00dfes Geld zu investieren dann gib dem ConquestRelay-Server eine Chance. Ich w\u00fcrde mich auf jeden Fall freuen wenn ich helfen konnte.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie bereits in meinem Beitrag vom August in Aussicht gestellt habe ich nun den Quellcode meines Relay-Servers aufger\u00e4umt und eine erste Version unter dem Namen ConquestRelay bei GitHub hochgeladen. Er richtet sich vor allem an Hobbyspieleentwickler die schnell erste Prototypen ihrer Online-Spiele ausprobieren wollen. Entsprechend fehlen nat\u00fcrlich viele Features die professionelle Netzwerkschichten bieten.<\/p>\n","protected":false},"author":1,"featured_media":250,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[96,28],"tags":[72,109,105,111,32,107],"class_list":["post-258","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-online-spiele","category-spieleentwicklung","tag-aws-de","tag-conquestrelay-de","tag-online-spiel","tag-relay-server-de","tag-unity","tag-websockets"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ConquestRelay-Server jetzt auf GitHub - Games:Tech:Blog<\/title>\n<meta name=\"description\" content=\"Der ConquestRelay-Server verbindet Spiel-Server und -Clients \u00fcber einen Cloud-Server. Er richtet sich an Hobby-Entwickler und ist nun auf GitHub verf\u00fcgbar.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ConquestRelay-Server jetzt auf GitHub - Games:Tech:Blog\" \/>\n<meta property=\"og:description\" content=\"Der ConquestRelay-Server verbindet Spiel-Server und -Clients \u00fcber einen Cloud-Server. Er richtet sich an Hobby-Entwickler und ist nun auf GitHub verf\u00fcgbar.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/\" \/>\n<meta property=\"og:site_name\" content=\"Games:Tech:Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-31T00:17:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayDiagram.png\" \/>\n\t<meta property=\"og:image:width\" content=\"867\" \/>\n\t<meta property=\"og:image:height\" content=\"550\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ingo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ingo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/\"},\"author\":{\"name\":\"Ingo\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9\"},\"headline\":\"ConquestRelay-Server jetzt auf GitHub\",\"datePublished\":\"2015-10-31T00:17:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/\"},\"wordCount\":882,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9\"},\"image\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayDiagram.png\",\"keywords\":[\"AWS\",\"ConquestRelay\",\"Online-Spiel\",\"relay server\",\"Unity\",\"WebSockets\"],\"articleSection\":[\"Online-Spiele\",\"Spieleentwicklung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/\",\"url\":\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/\",\"name\":\"ConquestRelay-Server jetzt auf GitHub - Games:Tech:Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayDiagram.png\",\"datePublished\":\"2015-10-31T00:17:42+00:00\",\"description\":\"Der ConquestRelay-Server verbindet Spiel-Server und -Clients \u00fcber einen Cloud-Server. Er richtet sich an Hobby-Entwickler und ist nun auf GitHub verf\u00fcgbar.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#primaryimage\",\"url\":\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayDiagram.png\",\"contentUrl\":\"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayDiagram.png\",\"width\":867,\"height\":550,\"caption\":\"ConquestRelay server connecting game servers and clients via the cloud\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.bellingo.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ConquestRelay-Server jetzt auf GitHub\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/#website\",\"url\":\"https:\/\/www.bellingo.de\/blog\/\",\"name\":\"Games:Tech:Blog\",\"description\":\"A Blog about Games, Technology in Games, and Technology in General\",\"publisher\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.bellingo.de\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9\",\"name\":\"Ingo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/93a4b9881ee1983f4fafc7e996ce82a42c3a1540c18f7417809c08a19658f167?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/93a4b9881ee1983f4fafc7e996ce82a42c3a1540c18f7417809c08a19658f167?s=96&d=mm&r=g\",\"caption\":\"Ingo\"},\"logo\":{\"@id\":\"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/image\/\"},\"url\":\"https:\/\/www.bellingo.de\/blog\/author\/ingo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ConquestRelay-Server jetzt auf GitHub - Games:Tech:Blog","description":"Der ConquestRelay-Server verbindet Spiel-Server und -Clients \u00fcber einen Cloud-Server. Er richtet sich an Hobby-Entwickler und ist nun auf GitHub verf\u00fcgbar.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/","og_locale":"de_DE","og_type":"article","og_title":"ConquestRelay-Server jetzt auf GitHub - Games:Tech:Blog","og_description":"Der ConquestRelay-Server verbindet Spiel-Server und -Clients \u00fcber einen Cloud-Server. Er richtet sich an Hobby-Entwickler und ist nun auf GitHub verf\u00fcgbar.","og_url":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/","og_site_name":"Games:Tech:Blog","article_published_time":"2015-10-31T00:17:42+00:00","og_image":[{"width":867,"height":550,"url":"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayDiagram.png","type":"image\/png"}],"author":"Ingo","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Ingo","Gesch\u00e4tzte Lesezeit":"4\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#article","isPartOf":{"@id":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/"},"author":{"name":"Ingo","@id":"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9"},"headline":"ConquestRelay-Server jetzt auf GitHub","datePublished":"2015-10-31T00:17:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/"},"wordCount":882,"commentCount":0,"publisher":{"@id":"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9"},"image":{"@id":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayDiagram.png","keywords":["AWS","ConquestRelay","Online-Spiel","relay server","Unity","WebSockets"],"articleSection":["Online-Spiele","Spieleentwicklung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/","url":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/","name":"ConquestRelay-Server jetzt auf GitHub - Games:Tech:Blog","isPartOf":{"@id":"https:\/\/www.bellingo.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#primaryimage"},"image":{"@id":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayDiagram.png","datePublished":"2015-10-31T00:17:42+00:00","description":"Der ConquestRelay-Server verbindet Spiel-Server und -Clients \u00fcber einen Cloud-Server. Er richtet sich an Hobby-Entwickler und ist nun auf GitHub verf\u00fcgbar.","breadcrumb":{"@id":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#primaryimage","url":"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayDiagram.png","contentUrl":"https:\/\/www.bellingo.de\/blog\/wp-content\/uploads\/2015\/10\/ConquestRelayDiagram.png","width":867,"height":550,"caption":"ConquestRelay server connecting game servers and clients via the cloud"},{"@type":"BreadcrumbList","@id":"https:\/\/www.bellingo.de\/blog\/conquestrelay-server-jetzt-auf-github\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.bellingo.de\/blog\/"},{"@type":"ListItem","position":2,"name":"ConquestRelay-Server jetzt auf GitHub"}]},{"@type":"WebSite","@id":"https:\/\/www.bellingo.de\/blog\/#website","url":"https:\/\/www.bellingo.de\/blog\/","name":"Games:Tech:Blog","description":"A Blog about Games, Technology in Games, and Technology in General","publisher":{"@id":"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.bellingo.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/82498f8ac21d11f5948cab6d0a9807e9","name":"Ingo","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/93a4b9881ee1983f4fafc7e996ce82a42c3a1540c18f7417809c08a19658f167?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/93a4b9881ee1983f4fafc7e996ce82a42c3a1540c18f7417809c08a19658f167?s=96&d=mm&r=g","caption":"Ingo"},"logo":{"@id":"https:\/\/www.bellingo.de\/blog\/#\/schema\/person\/image\/"},"url":"https:\/\/www.bellingo.de\/blog\/author\/ingo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/posts\/258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/comments?post=258"}],"version-history":[{"count":5,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/posts\/258\/revisions"}],"predecessor-version":[{"id":263,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/posts\/258\/revisions\/263"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/media\/250"}],"wp:attachment":[{"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/media?parent=258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/categories?post=258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bellingo.de\/blog\/wp-json\/wp\/v2\/tags?post=258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}