{"id":885,"date":"2019-10-28T11:58:57","date_gmt":"2019-10-28T10:58:57","guid":{"rendered":"https:\/\/clockwork-origins.com\/spine-tutorial-1-initialization\/"},"modified":"2019-10-28T12:16:07","modified_gmt":"2019-10-28T11:16:07","slug":"spine-tutorial-1-initialization","status":"publish","type":"page","link":"https:\/\/clockwork-origins.com\/de\/spine-tutorial-1-initialization\/","title":{"rendered":"Spine Tutorial 1 &#8211; Initialisierung"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Voraussetzungen<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Ikarus Script-Paket: <a rel=\"noreferrer noopener\" aria-label=\"Thread @ World of Gothic (opens in a new tab)\" href=\"https:\/\/forum.worldofplayers.de\/forum\/threads\/1299679-Skriptpaket-Ikarus-4\" target=\"_blank\">Thread @ World of Gothic<\/a><\/li><li>LeGo Script-Paket: <a rel=\"noreferrer noopener\" aria-label=\"Thread @ World of Gothic (opens in a new tab)\" href=\"https:\/\/forum.worldofplayers.de\/forum\/threads\/1505251-Skriptpaket-LeGo-4\" target=\"_blank\">Thread @ World of Gothic<\/a><\/li><li>Spine Script-Paket: <a rel=\"noreferrer noopener\" aria-label=\"Download @ GitHub (opens in a new tab)\" href=\"https:\/\/github.com\/BonneCW\/Spine-Scripts\" target=\"_blank\">Download @ GitHub<\/a><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Einleitung<\/h2>\n\n\n\n<p>Spine erlaubt es neue Scriptfeatures zu nutzen, solange die Modifikation \u00fcber Spine gestartet wurde. Sollte die Modifikation ohne Spine gestartet werden, so werden s\u00e4mtliche Aufrufe von Spine-Funktionen ignoriert. Die Ausnahme sind Erfolge. Diese funktionieren auch, wenn die Modifikation ohne Spine gestartet wird.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Spine in Scripts einbinden<\/h2>\n\n\n\n<p>Spine in bestehende Scripte zu integrieren ist \u00e4u\u00dferst einfach. Wenn du das Scriptpaket geladen hast, entpacke das Archiv den Scripts-Ordner (<em>_work\/data\/Scripts\/Content<\/em>) in deiner Modding-Installation von Gothic. Anschlie\u00dfend musst du nur noch die <em>Gothic.src<\/em> \u00f6ffnen und die folgende Zeile eintragen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Spine\\Spine.src<\/code><\/pre>\n\n\n\n<p>Wichtig ist, dass diese Zeile unter <em>Ikarus<\/em>, <em>LeGo<\/em> und <em>AI\\AI_Intern\\AI_Constants.d<\/em> steht.<\/p>\n\n\n\n<p>Wenn du jetzt die Scripte erneut compilierst, wird Spine bereits mitcompiliert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Module<\/h2>\n\n\n\n<p>Spine bietet verschiedene Module wie auch LeGo, die sich einzeln aktivieren lassen. Das sorgt daf\u00fcr, dass zum Einen nicht unn\u00f6tig viele Resourcen belegt werden. Zum Anderen vermeidet es, das zuk\u00fcnftige Features, die die Modifikation sowieso nicht ohne ein weiteres Update der Scripts nutzen kann, gar nicht erst initialisiert werden.<\/p>\n\n\n\n<p>Die verschiedenen Module sollen nun kurz dargestellt werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Username<\/h3>\n\n\n\n<p>Das Username-Modul ist sehr klein und bietet lediglich die M\u00f6glichkeit, des Username des aktuell eingeloggten Spine-Users zu ermitteln. Es kann n\u00fctzlich sein f\u00fcr Modifikationen, die den Spieler personalisieren m\u00f6chten. Das kann z.B. f\u00fcr Multiplayer oder Highscores der Fall sein.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Erfolge<\/h3>\n\n\n\n<p>Das Erfolge-Modul erm\u00f6glicht es auf sehr einfache Weise Erfolge zu implementieren. Man muss lediglich ein paar Werte konfigurieren und an der richtigen Stelle <em>Spine_UnlockAchievement<\/em> aufrufen. Mehr Informationen dazu gibt es in <em>Tutorial 2 &#8211; Erfolge<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Scores<\/h3>\n\n\n\n<p>Mit dem Scores-Modul lassen sich Highscores und Rankings umsetzen. Es bietet verschiedene Methoden um einen Score zu setzen, sowie Informationen \u00fcber die Scores abzufragen. Dazu geh\u00f6ren sowohl der eigene Score als auch Scores und Usernamen bestimmter Pl\u00e4tze im Highscore. Auch der eigene Platz l\u00e4sst sich abfragen. Mehr dazu gibt es in <em>Tutorial 3 &#8211; Scores<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Multiplayer<\/h3>\n\n\n\n<p>Mit dem Multiplayer-Modul lassen sich verschiedene Arten von Multiplayer-Modifikationen realisieren. Du kannst dich mit anderen Spielern verbinden und Nachrichten austauschen. Es wurde nicht f\u00fcr schnelle Echtzeit\u00fcbertragungen gebaut, aber z.B. rundenbasierter Multiplayer with beispielsweise in unserer Schach-Modifikation ist kein Problem. Mehr dazu gibt es in <em>Tutorial 5 &#8211; Multiplayer<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Overall Saves<\/h3>\n\n\n\n<p>Mit dem Overall-Save-Modul lassen sich Daten Savegame-\u00fcbergreifend f\u00fcr eine Modifikation speichern und auslesen. Das kann n\u00fctzlich sein, wenn man beispielsweise Erfolge erstellen m\u00f6chte nach dem Schema &#8222;Spiel mit allen Gilden einmal abgeschlossen&#8220; oder &#8222;x Gegner besiegt&#8220;. Mehr Informationen dazu gibt es in <em>Tutorial 4 &#8211; Overall Saves<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Initialisierung<\/h2>\n\n\n\n<p>Um Spine nun zu initialisieren reicht eine weitere Zeile Code.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Spine_Init(SPINE_MODULE_GETCURRENTUSERNAME);<\/code><\/pre>\n\n\n\n<p>Die Zeile muss in die Funktion <em>INIT_GLOBAL<\/em> in der <em>Startup.d<\/em>. Wichtig ist, dass das <strong>NACH<\/strong> der Initialisierung von LeGo geschieht. Eine komplette <em>INIT_GLOBAL<\/em>-Funktion kann daher wie folgt aussehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func void INIT_GLOBAL()\n{\n\t\/\/ wird fuer jede Welt aufgerufen (vor INIT_&lt;LevelName>)\n\tGame_InitGerman();\n\n\tLeGo_Init(LeGo_All);\n\tSpine_Init(SPINE_MODULE_GETCURRENTUSERNAME);\n};<\/code><\/pre>\n\n\n\n<p>Will man mehrere Spine-Module aktivieren, kann man diese einfach mit dem Bit-Operator &#8218;|&#8216; verodern. So kann mit mit der Zeile<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Spine_Init(SPINE_MODULE_GETCURRENTUSERNAME | SPINE_MODULE_ACHIEVEMENTS);<\/code><\/pre>\n\n\n\n<p>sowohl das Username- als auch das Erfolge-Modul aktivieren.<\/p>\n\n\n\n<p>Hat man die Initialisierung abgeschlossen, kann man nun mit der Zeile<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Print(ConcatStrings(\"Username: \", Spine_GetCurrentUsername()));<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">in einer sek\u00fcndlichen Schleife den Namen des eingeloggten Spielers ausgeben.<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Spine-Funktionen testen<\/h2>\n\n\n\n<p>F\u00fchrt man das Beispiel nun aus, wird man sehen, dass auf dem Bildschirm immer nur <em>Username:<\/em> erscheint. Das liegt daran, wie bereits in der Einleitung erw\u00e4hnt, dass die Spine-Funktionen nur dann eine Auswirkung haben, wenn die Modifikation \u00fcber Spine gestartet wurde. Solange die Modifikation allerdings nicht Teil der Spine-Datenbank ist &#8211; und das ist eine noch in Entwicklung befindliche Modifikation normalerweise nicht &#8211; ist sie das nat\u00fcrlich noch nicht. Daf\u00fcr gibt es den <em>Entwicklermodus<\/em>. Der Entwicklermodus simuliert eine bereits in der Datenbank enthaltene Modifikation. Aktivieren l\u00e4sst er sich in den Einstellungen von Spine im Entwickler-Tab und \u00fcber die Men\u00fcleiste. Der Shortcut <em>Strg + D<\/em> aktiviert und deaktiviert den Entwickler-Modus ebenfalls. Als fortgeschrittenes Feature f\u00fcr Leute, die an mehreren Projekten gleichzeitig arbeiten, gibt es auch die M\u00f6glichkeit, einzelne Ordner auf die Shortcuts <em>Strg + 0-9<\/em> zu legen und damit direkt in den Entwicklermodus f\u00fcr dieses Projekt zu wechseln. Du kannst die Einstellung daf\u00fcr ebenfalls in den Entwickler-Einstellungen im Einstellungsmen\u00fc finden.<\/p>\n\n\n\n<p>Ist der Entwicklermodus aktiv, werden alle \u00fcber Spine installierte Modifikationen ausgeblendet und nur manuell installierte oder eben eigene lokale Modifikationen angezeigt. Startet man nun die Modifikation, so k\u00f6nnen alle Spine-Funktionen getestet werden. Die Scripts lassen sich ebenfalls direkt in Spine kompilieren und zSpy kann zum Debuggen gestartet werden.<\/p>\n\n\n\n<p>Startet man nun seine Modifikation \u00fcber Spine, so funktioniert auch die Ausgabe des Usernames.<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"entry-summary\">\nVoraussetzungen Ikarus Script-Paket: Thread @ World of Gothic LeGo Script-Paket: Thread @ World of Gothic Spine Script-Paket: Download @ GitHub Einleitung Spine erlaubt es neue Scriptfeatures zu nutzen, solange die Modifikation \u00fcber Spine gestartet wurde. Sollte die Modifikation ohne Spine&hellip;\n<\/div>\n<div class=\"link-more\"><a href=\"https:\/\/clockwork-origins.com\/de\/spine-tutorial-1-initialization\/\" class=\"more-link\"><span class=\"screen-reader-text\"> &ldquo;Spine Tutorial 1 &#8211; Initialisierung&rdquo;<\/span> weiterlesen\u00a0&hellip;<\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"iawp_total_views":10,"footnotes":""},"tags":[51,50],"class_list":["post-885","page","type-page","status-publish","hentry","tag-spine-de","tag-tools-de","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Spine Tutorial 1 - Initialisierung - Clockwork Origins<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/clockwork-origins.com\/de\/spine-tutorial-1-initialization\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spine Tutorial 1 - Initialisierung - Clockwork Origins\" \/>\n<meta property=\"og:description\" content=\"Voraussetzungen Ikarus Script-Paket: Thread @ World of Gothic LeGo Script-Paket: Thread @ World of Gothic Spine Script-Paket: Download @ GitHub Einleitung Spine erlaubt es neue Scriptfeatures zu nutzen, solange die Modifikation \u00fcber Spine gestartet wurde. Sollte die Modifikation ohne Spine&hellip; &ldquo;Spine Tutorial 1 &#8211; Initialisierung&rdquo; weiterlesen\u00a0&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/clockwork-origins.com\/de\/spine-tutorial-1-initialization\/\" \/>\n<meta property=\"og:site_name\" content=\"Clockwork Origins\" \/>\n<meta property=\"article:modified_time\" content=\"2019-10-28T11:16:07+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"4\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/clockwork-origins.com\\\/de\\\/spine-tutorial-1-initialization\\\/\",\"url\":\"https:\\\/\\\/clockwork-origins.com\\\/de\\\/spine-tutorial-1-initialization\\\/\",\"name\":\"Spine Tutorial 1 - Initialisierung - Clockwork Origins\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/clockwork-origins.com\\\/#website\"},\"datePublished\":\"2019-10-28T10:58:57+00:00\",\"dateModified\":\"2019-10-28T11:16:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/clockwork-origins.com\\\/de\\\/spine-tutorial-1-initialization\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/clockwork-origins.com\\\/de\\\/spine-tutorial-1-initialization\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/clockwork-origins.com\\\/de\\\/spine-tutorial-1-initialization\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/clockwork-origins.com\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Spine Tutorial 1 &#8211; Initialisierung\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/clockwork-origins.com\\\/#website\",\"url\":\"https:\\\/\\\/clockwork-origins.com\\\/\",\"name\":\"Clockwork Origins\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/clockwork-origins.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/clockwork-origins.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/clockwork-origins.com\\\/#organization\",\"name\":\"Clockwork Origins\",\"url\":\"https:\\\/\\\/clockwork-origins.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/clockwork-origins.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/clockwork-origins.com\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/cropped-ClockworkOrigins_Icon_256xx-1.png\",\"contentUrl\":\"https:\\\/\\\/clockwork-origins.com\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/cropped-ClockworkOrigins_Icon_256xx-1.png\",\"width\":256,\"height\":256,\"caption\":\"Clockwork Origins\"},\"image\":{\"@id\":\"https:\\\/\\\/clockwork-origins.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spine Tutorial 1 - Initialisierung - Clockwork Origins","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:\/\/clockwork-origins.com\/de\/spine-tutorial-1-initialization\/","og_locale":"de_DE","og_type":"article","og_title":"Spine Tutorial 1 - Initialisierung - Clockwork Origins","og_description":"Voraussetzungen Ikarus Script-Paket: Thread @ World of Gothic LeGo Script-Paket: Thread @ World of Gothic Spine Script-Paket: Download @ GitHub Einleitung Spine erlaubt es neue Scriptfeatures zu nutzen, solange die Modifikation \u00fcber Spine gestartet wurde. Sollte die Modifikation ohne Spine&hellip; &ldquo;Spine Tutorial 1 &#8211; Initialisierung&rdquo; weiterlesen\u00a0&hellip;","og_url":"https:\/\/clockwork-origins.com\/de\/spine-tutorial-1-initialization\/","og_site_name":"Clockwork Origins","article_modified_time":"2019-10-28T11:16:07+00:00","twitter_card":"summary_large_image","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"4\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/clockwork-origins.com\/de\/spine-tutorial-1-initialization\/","url":"https:\/\/clockwork-origins.com\/de\/spine-tutorial-1-initialization\/","name":"Spine Tutorial 1 - Initialisierung - Clockwork Origins","isPartOf":{"@id":"https:\/\/clockwork-origins.com\/#website"},"datePublished":"2019-10-28T10:58:57+00:00","dateModified":"2019-10-28T11:16:07+00:00","breadcrumb":{"@id":"https:\/\/clockwork-origins.com\/de\/spine-tutorial-1-initialization\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/clockwork-origins.com\/de\/spine-tutorial-1-initialization\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/clockwork-origins.com\/de\/spine-tutorial-1-initialization\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/clockwork-origins.com\/de\/"},{"@type":"ListItem","position":2,"name":"Spine Tutorial 1 &#8211; Initialisierung"}]},{"@type":"WebSite","@id":"https:\/\/clockwork-origins.com\/#website","url":"https:\/\/clockwork-origins.com\/","name":"Clockwork Origins","description":"","publisher":{"@id":"https:\/\/clockwork-origins.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/clockwork-origins.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/clockwork-origins.com\/#organization","name":"Clockwork Origins","url":"https:\/\/clockwork-origins.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/clockwork-origins.com\/#\/schema\/logo\/image\/","url":"https:\/\/clockwork-origins.com\/wp-content\/uploads\/2018\/02\/cropped-ClockworkOrigins_Icon_256xx-1.png","contentUrl":"https:\/\/clockwork-origins.com\/wp-content\/uploads\/2018\/02\/cropped-ClockworkOrigins_Icon_256xx-1.png","width":256,"height":256,"caption":"Clockwork Origins"},"image":{"@id":"https:\/\/clockwork-origins.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/clockwork-origins.com\/de\/wp-json\/wp\/v2\/pages\/885","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/clockwork-origins.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/clockwork-origins.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/clockwork-origins.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/clockwork-origins.com\/de\/wp-json\/wp\/v2\/comments?post=885"}],"version-history":[{"count":1,"href":"https:\/\/clockwork-origins.com\/de\/wp-json\/wp\/v2\/pages\/885\/revisions"}],"predecessor-version":[{"id":886,"href":"https:\/\/clockwork-origins.com\/de\/wp-json\/wp\/v2\/pages\/885\/revisions\/886"}],"wp:attachment":[{"href":"https:\/\/clockwork-origins.com\/de\/wp-json\/wp\/v2\/media?parent=885"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clockwork-origins.com\/de\/wp-json\/wp\/v2\/tags?post=885"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}