{"id":2009,"date":"2024-02-29T10:35:17","date_gmt":"2024-02-29T09:35:17","guid":{"rendered":"http:\/\/www.acidpool.at\/005_wordpress\/?page_id=2009"},"modified":"2024-05-21T18:51:06","modified_gmt":"2024-05-21T16:51:06","slug":"project-2024-seite-01","status":"publish","type":"page","link":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/project-2024-seite-01\/","title":{"rendered":"[Project 2024]"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\"><strong>#0 &#8211; Einleitungsblabla<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>Frage: <strong>WAS<\/strong> will ich tun?<br>Antwort: Ein <a href=\"https:\/\/de.wikipedia.org\/wiki\/Computer-Rollenspiel\" target=\"_blank\" rel=\"noreferrer noopener\"><strong><em>RPG<\/em><\/strong><\/a> im <a href=\"https:\/\/de.wikipedia.org\/wiki\/Shadowrun\" target=\"_blank\" rel=\"noreferrer noopener\"><strong><em>Shadowrun<\/em><\/strong><\/a>-Universum programmieren.<\/p><\/blockquote><\/figure>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-2d6da71b963d4d08610431bc06584c1a\">Die absolute Wunschvorstellung meinerseits w\u00e4re es ja die Grafiken vom 1993er <a href=\"https:\/\/en.wikipedia.org\/wiki\/Shadowrun_(1993_video_game)\" target=\"_blank\" rel=\"noreferrer noopener\"><strong><em>SNES-Shadowrun<\/em><\/strong><\/a> zu grabben, den Rollenspielteil der <strong><em><a href=\"https:\/\/en.wikipedia.org\/wiki\/Shadowrun_Returns\" target=\"_blank\" rel=\"noreferrer noopener\">Shadowrun Returns<\/a><\/em><\/strong>-Triologie als Vorbild zu nehmen aber mit einer eigenen an <strong><span style=\"text-decoration: underline;\"><em><a href=\"https:\/\/en.wikipedia.org\/wiki\/BioWare#Technology\" target=\"_blank\" rel=\"noreferrer noopener\">Biowares Infinity\/Aurora-Engine<\/a><\/em><\/span><\/strong> angelehnten &#8222;<em>jederzeit pausierbaren Echtzeit-Kampf<\/em>&#8222;-Engine* zu verkn\u00fcpfen und mir mein eigenes &#8222;<em><strong>Shadowrun 2<\/strong><\/em>&#8220; zu basteln.<\/p>\n\n\n\n<p class=\"has-cyan-bluish-gray-color has-text-color has-link-color has-small-font-size wp-elements-fd99551cad35c5907bb17f207ca196b6\"><em>* = Das System der &#8222;<em>jederzeit pausierbaren Echtzeit-Kampf<\/em>&#8222;-Engine<\/em> <em>ist eigentlich nichts anderes, als das die aus den g\u00e4ngigen Rundenk\u00e4mpfen bekannte Initiative-Leiste ohne Einwirkung des Spielers abgearbeitet wird. Das merkt man vor allem an den elendiglich langen Pausen zwischen den Angriffsanimationen. Entschlie\u00dft sich der Spieler doch Befehle zu geben, werden diese an der korrekten Stelle eingereiht. <\/em><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"448\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2024\/02\/Shadowrun2.jpg\" alt=\"\" class=\"wp-image-2010\" srcset=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2024\/02\/Shadowrun2.jpg 512w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2024\/02\/Shadowrun2-300x263.jpg 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\"><strong>Vorbild#1: Shadowrun auf dem Super Nintendo (1993) <\/strong><br>(<em>Bild aus dem <strong>SNES-SR<\/strong>-Eintrag auf <strong><a href=\"https:\/\/shadowrun.fandom.com\/wiki\/Drake_(SNES_video_game)\" target=\"_blank\" rel=\"noreferrer noopener\">shadowrun.fandom.com<\/a><\/strong><\/em>.)<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-ab2fc03915e1d1c9623c06a4735e1e47\">Da sich das grabben der Grafiken aber noch h\u00f6flich formuliert &#8222;in Arbeit befindet&#8220; (<em>Siehe Blogeintr\u00e4ge zum Thema <strong><a href=\"http:\/\/www.acidpool.at\/005_wordpress\/?s=SXT\" target=\"_blank\" rel=\"noreferrer noopener\">SXT<\/a><\/strong>.<\/em>) liegt diese Idee aber vorerst auf Eis. Vor allem die Inkompatibilit\u00e4t&nbsp;von <strong><a href=\"https:\/\/github.com\/QB64-Phoenix-Edition\/QB64pe\" target=\"_blank\" rel=\"noreferrer noopener\"><em>QB64PE<\/em><\/a><\/strong> und dem effing M$-Defender @wrk macht mir einen derben Strich durch die Rechnung da ich @home dank ESO nur extrem selten die Muse zum programmieren finde.<\/p>\n\n\n\n<p class=\"has-black-color has-text-color has-link-color wp-elements-495a8f4e0d6a6ff1efa072ce4921d645\">Mein <strong>SRRDM<\/strong>-Projekt ist zwischenzeitlich noch nicht ganz aber doch schon ziemlich sehr an seiner Komplexit\u00e4t erstickt. Meine &#8222;Quick&amp;Dirty Just4fun&#8220; 8x8px-Tile-Iso-Engine die unter dem Namen &#8222;<strong>Projekt<\/strong> <strong>Silvester<\/strong>&#8220; l\u00e4uft, ist trotz wirklich bemerkenswerter Fortschritte dann doch noch aufgrund der Konzeptlosigkeit an die Wand gefahren.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2023\/04\/984994665.webp\" alt=\"\" class=\"wp-image-1936\" srcset=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2023\/04\/984994665.webp 640w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2023\/04\/984994665-300x188.webp 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><figcaption class=\"wp-element-caption\"><strong>Vorbild#2: Shadowrun Returns (2013)<\/strong><br>(<em>Bild aus dem&nbsp;<strong>SR:R<\/strong>-Guide auf&nbsp;<a href=\"https:\/\/guides.gamepressure.com\/shadowrunreturns\/\" target=\"_blank\" rel=\"noreferrer noopener\">G<strong>ame Pressure<\/strong><\/a>.<\/em>)<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Je mehr ich hier schreibe desto mehr zieht es mich wieder in Richtung <strong>SR:SNES:DRMM<\/strong> zur\u00fcck. Warum auch nicht? Genug Zeit h\u00e4tte ich da ja schon hineingesteckt. (<em>Der <strong>SXT<\/strong> ist ja ein Teil davon.<\/em>)<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2024\/02\/shadowrun-chronicles-04_2631968-1024x576.jpg\" alt=\"\" class=\"wp-image-2012\" srcset=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2024\/02\/shadowrun-chronicles-04_2631968-1024x576.jpg 1024w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2024\/02\/shadowrun-chronicles-04_2631968-300x169.jpg 300w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2024\/02\/shadowrun-chronicles-04_2631968-768x432.jpg 768w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2024\/02\/shadowrun-chronicles-04_2631968.jpg 1440w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption class=\"wp-element-caption\"><strong>Vorbild#3: Shadowrun Chronicles: Boston Lockdown (2015)<\/strong><br>(<em>Bild von <strong><a href=\"https:\/\/www.gamestar.de\/spiele\/shadowrun-chronicles-boston-lockdown,4224.html\" target=\"_blank\" rel=\"noreferrer noopener\">Gamestar.de<\/a>.<\/strong><\/em>)<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Okay, damit ist es fix. Ich reanimiere das Projekt <strong>SR:SNES:DRMM<\/strong> denn wirklich gl\u00fccklich macht mich die rundenbasierende <strong>SRRDM<\/strong>-Idee nicht wirklich. Einer der Hauptgr\u00fcnde warum ich mich \u00fcberhaupt in diese Richtung gedreht hatte, waren ja meine Zweifel ob man die K\u00e4mpfe des <strong>SNES-SR<\/strong> \u00fcberhaupt in die Gegenwart holen kann ohne einen Twinstick-Shooter daraus machen zu m\u00fcssen. (<em>Ein Genre das mich zwar fasziniert, in dem ich aber mangels Skills nie wirklich Land gewinnen kann.<\/em>) Genauso ben\u00f6tigt die Welt von <strong>Shadowrun<\/strong> meiner Meinung nach kein weiteres Strategie-RPG. Die perfekte L\u00f6sung w\u00e4re es meiner Ansicht also f\u00fcr den Adventure\/Rollenspiel-Part die SNES-Steuerung beizubehalten (<em>inkl. optionaler Mouse &amp; WASD-Steuerung sowie einer Highlight-  als auch einer m\u00f6glichst intelligenten Snap-Funktion f\u00fcr interaktive Gegenst\u00e4nde.<\/em>) In den K\u00e4mpfen soll oberfl\u00e4chlich ebenfalls alles beim alten bleiben. Der Gegner wird anvisiert und dann der Angriff initiiert. Dr\u00fcckt man dann die Pause-Taste, wird das optionale Gitter eingeblendet (<em>Eventuell schaffe ich es das rote Leuchten aus <strong><a href=\"https:\/\/de.wikipedia.org\/wiki\/Fallout_(Computerspiel)\" target=\"_blank\" rel=\"noreferrer noopener\">Fallout 1<\/a><\/strong> zu kopieren?<\/em>) , die Initiative-Leiste und und und. Dr\u00fcckt man die Pause-Taste ein weiteres mal, verschwindet der Taktik-Teil wieder und man kann &#8222;einfach so weiterballern&#8220;, auch wenn im Hintergrund alles nach einem an die Regeln angelehntes System abl\u00e4uft. Optional soll es nat\u00fcrlich auch m\u00f6glich sein alle K\u00e4mpfe im Schneckentempo rundenbasierend abzuarbeiten, aber mir geht es mehr darum zumindest f\u00fcr 08\/15 Konfrontationen den Spielfluss aufrecht zu erhalten. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"294\" height=\"233\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2024\/02\/steamuserimages-a.akamaihd.gif\" alt=\"\" class=\"wp-image-2021\"\/><figcaption class=\"wp-element-caption\">Ich habe tats\u00e4chlich kein besseres .gif zu der &#8222;roten Umrandung&#8220; in Fallout gefunden&#8230;<br>(Von <em><strong><a href=\"https:\/\/steamcommunity.com\/sharedfiles\/filedetails\/?l=spanish&amp;id=301526822\">OnlyAnderso<\/a><a href=\"https:\/\/steamcommunity.com\/sharedfiles\/filedetails\/?l=spanish&amp;id=301526822\" target=\"_blank\" rel=\"noreferrer noopener\">n<\/a>s<\/strong><\/em>-Steam Account.)<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Meine sonstigen W\u00fcnsche an meine Version w\u00e4ren dann noch:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ich w\u00fcrde gerne eine Art Deckungssystem einbauen, da mich bei meinem aktuellen Playthrough der SNES-Version wieder einmal fasziniert das sich die Kontrahenten regungslos gegen\u00fcberstehen und einfach nur aufeinander schie\u00dfen. <\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"280\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2024\/02\/ZSNES2024-02-2717-10-36-ezgif.com-effects.gif\" alt=\"\" class=\"wp-image-2027\"\/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>\u00dcberhaupt soll das reale Regelwerk viel mehr Beachtung bekommen.<\/li>\n\n\n\n<li>Koop ist Pflicht. Wie sich das mit den K\u00e4mpfen vertr\u00e4gt muss man sich wenn es eines Tages dann tats\u00e4chlich einmal so weit ist noch genau anschauen.<\/li>\n\n\n\n<li>Bessere\/detailliertere\/hoch aufgel\u00f6stere Grafiken m\u00fcssen ebenfalls her.  Theoretisch m\u00fcsste es &#8222;<em>gen\u00fcgen<\/em>&#8220; die originalen Tiles zu skalieren und dann zu bearbeiten. <\/li>\n\n\n\n<li>Ein <strong><em><a href=\"https:\/\/emulation.gametechwiki.com\/index.php\/CRT_shaders\" target=\"_blank\" rel=\"noreferrer noopener\">CRT-Shader<\/a><\/em><\/strong> sollte ebenfalls nicht fehlen.<\/li>\n\n\n\n<li>Freies Speichern und Autosaves nat\u00fclich auch nicht.<\/li>\n\n\n\n<li>Modding alias eine modulare Bauweise um leicht alles Erweitern zu k\u00f6nnen liegt mir auch noch sehr am Herzen.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>#1 &#8211; \u00dcbersicht \u00fcber die Teilst\u00fccke<\/strong><\/h2>\n\n\n\n<p>F\u00fcr den Anfang bleibe ich bei meinem Plan &#8222;<em>nur<\/em>&#8220; das originale <strong>SNES-SR<\/strong> zu replizieren. Dazu ist a) der <strong>SXT<\/strong> notwendig um an die Grafiken zu kommen und b) ein Neustart von Projekt <strong>Silvester<\/strong> um zu schauen was ich mit den Grafiken anstellen kann. <\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"200\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2024\/02\/QBJS-QBasicfortheWebMozillaFirefox2024-02-2318-30-35-ezgif.com-video-to-gif-converter.gif\" alt=\"\" class=\"wp-image-2023\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-small-font-size\">Aktueller Stand von Projekt <strong>Silvester<\/strong>:<br><br>Das isometrische 16&#215;16-Grid wird mittels 8x8px-Tiles erstellt. Die Engine errechnet korrekt in welchem 16&#215;16-Feld sich der Mouse Cursor gerade befindet.<br>Stillstand\/Abbruch da f\u00fcr alles weitere eine Map notwendig w\u00e4re und deren Implementierung &#8222;<em>ein bisschen sehr aufw\u00e4ndig<\/em>&#8220; w\u00e4re.<\/p>\n<\/div>\n<\/div>\n\n\n\n<p>Die Sprache meiner Wahl ist &#8230; <strong><em><a href=\"https:\/\/github.com\/boxgaming\/qbjs\" target=\"_blank\" rel=\"noreferrer noopener\">QBJS<\/a><\/em><\/strong>. Wie erw\u00e4hnt ist es mir ohne Adminrechte nicht m\u00f6glich <strong><em><a href=\"https:\/\/github.com\/QB64-Phoenix-Edition\/QB64pe\">QB6<\/a><a href=\"https:\/\/github.com\/QB64-Phoenix-Edition\/QB64pe\" target=\"_blank\" rel=\"noreferrer noopener\">4PE<\/a><\/em><\/strong> in der Arbyte zu verwenden, ergo bin ich auf die Browservariante angewiesen. Das einzige Problem hierbei ist die aktuelle https-Abh\u00e4ngigkeit und das einbauen von Spielst\u00e4nden.  Zu ersterem werde ich eines Tages mal im <strong><em><a href=\"https:\/\/qb64phoenix.com\/forum\/index.php\" target=\"_blank\" rel=\"noreferrer noopener\">Forum<\/a><\/em><\/strong> nachfragen, zweiteres muss ich bei Zeiten mal austesten. Da <strong><em><a href=\"https:\/\/github.com\/boxgaming\/qbjs\" target=\"_blank\" rel=\"noreferrer noopener\">QBJS<\/a><\/em><\/strong> als Webandwendung aber ziemlich sicher keinen Zugriff auf Mouse, Tastatur und Desktop erhalten kann, wird der <strong>SXT<\/strong> weiterhin in <strong><em><a href=\"https:\/\/github.com\/QB64-Phoenix-Edition\/QB64pe\">QB6<\/a><a href=\"https:\/\/github.com\/QB64-Phoenix-Edition\/QB64pe\" target=\"_blank\" rel=\"noreferrer noopener\">4PE<\/a><\/em><\/strong> umgesetzt. Obwohl der Browser via <strong><em><a href=\"https:\/\/github.com\/boxgaming\/qbjs\" target=\"_blank\" rel=\"noreferrer noopener\">QBJS<\/a><\/em><\/strong> meine Wunschplattform darstellt, m\u00f6chte ich mir dennoch die Option eine Desktopversion bzw. allein lauff\u00e4hige .EXE zu erstellen offen halten, weshalb ich die Kompatibilit\u00e4t zwischen <strong><em><a href=\"https:\/\/github.com\/QB64-Phoenix-Edition\/QB64pe\">QB6<\/a><a href=\"https:\/\/github.com\/QB64-Phoenix-Edition\/QB64pe\" target=\"_blank\" rel=\"noreferrer noopener\">4PE<\/a><\/em><\/strong> und  <strong><em><a href=\"https:\/\/github.com\/boxgaming\/qbjs\" target=\"_blank\" rel=\"noreferrer noopener\">QBJS<\/a><\/em><\/strong> nicht aus den Augen verlieren sollte. <\/p>\n\n\n\n<p>Je nachdem wie viele Daten im Savegame stehen, kann ich eventuell die f\u00fcr mein <strong>eXcom-Reehmake<\/strong> angedachte Version \u00fcbernehmen. Angelehnt an QR-Codes, soll das Savegame eine Bilddatei sein, welche einen Screenshot enth\u00e4lt in dessen Rahmen alle gespeicherten Daten farbkodiert eingepixelt sind. Wenn ich am Anfang eine Versionsinformation einsetze, m\u00fcsste es sogar m\u00f6gllich sein &#8222;<em>alte<\/em>&#8220; Spielst\u00e4nde in neuere Versionen zu laden. Aber das ist ferne Zukunftsmusik&#8230;<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Der SXT<\/strong> (<em> = Sprite Extraktor, damit es hier auch einmal ausgeschrieben ist.<\/em>)<\/p>\n\n\n\n<p>Der aktuelle Stand ist, das <strong><em><a href=\"https:\/\/www.romhacking.net\/utilities\/274\/\" target=\"_blank\" rel=\"noreferrer noopener\">vSNES<\/a><\/em><\/strong> korrekt konfiguriert gestartet, die aktuelle Datei geladen wird und dann auf die richtige Ebene gewechselt wird. Diese wird dann zur \u00dcbersicht exportiert und eigentlich sollte dann mein Fake-OCR loslegen,<\/p>\n\n\n\n<p>Meine Sorgenkinder sind a) das Format in dem ich die erhaltenen Daten ablege und b) die Pausen die der <strong>SXT<\/strong> einlegt um darauf zu warten das <strong><em><a href=\"https:\/\/www.romhacking.net\/utilities\/274\/\" target=\"_blank\" rel=\"noreferrer noopener\">vSNES<\/a><\/em><\/strong> die Eingaben umsetzt. Au\u00dferdem habe ich trotz \u00fcberm\u00e4\u00dfigem Gebrauch von Kommentaren nach all den Jahren keine Ahnung mehr was wie funktioniert.<\/p>\n\n\n\n<p><strong>Schritt#1-1<\/strong> w\u00e4re es also das Skript zu analysieren.<br><strong>Schritt#1-2<\/strong> besteht daraus einen Weg zu finden wie ich von &#8222;warte 1 Sekunde&#8220; auf &#8222;warte so lange es notwendig ist&#8220; komme. Dazu muss ich herausfinden welche Teile des Bildschirms sich als letztes \u00e4ndern und bla&#8230;<br><strong>Schritt#1-3<\/strong> ist dann das Auswerten der aktuellen Daten. Wenn ich diese in ein Array schreibe kann ich dieses dann nach Lust und Laune in beliebiger Reihenfolge in eine .txt schreiben. F\u00fcr den Anfang w\u00e4re es glaube ich nicht verkehrt so viele Daten wie m\u00f6glich auszulesen. Vielleicht kann ich auch noch herausfinden wie ich die .txt formatieren muss damit es als .csv weiter verarbeitbar ist.<br><strong>Schritt#1-4<\/strong> stellt dann den Wechsel auf die n\u00e4chste Ebene sowie das Auswerten eben dieser dar.<br><strong>Schritt#1-5<\/strong> w\u00e4re der Sprung zur n\u00e4chsten Datei in der Liste.<\/p>\n\n\n\n<p><strong>Schritt#2-1<\/strong> ist dann die Auswertung aller extrahierter Tiles, Dabei geht es in erster Linie darum alle Duplikate zu identifizieren und zu entfernen. <br><strong>Schritt#2-2<\/strong> w\u00e4re es dann die \u00fcbrig gebliebenen Tiles mit denen aus der (<em>zuk\u00fcnftig existenten<\/em>) Datenbank zu vergleichen.<br><strong>Schritt#2-3<\/strong> ist dann die Erstellung eines Map-Files anhand dieser Daten.<\/p>\n\n\n\n<p>Bis <strong>Schritt#2-3<\/strong> erreicht ist, sollte Projekt Silvester im Stande sein diese Map-Files verarbeiten zu k\u00f6nnen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Projekt Silvester<\/strong> (<em>Hei\u00dft so weil es am 31.12.2023 @wrk gestartet worden ist.<\/em>)<\/p>\n\n\n\n<p>Bevor hier gestartet werden kann, ist ein wenig Recherche notwendig, Wie baut das SNES den Bildschirm auf? Wie verh\u00e4lt es sich mit den Positionierungen der Sprites? Wie wird das Scrolling gehandhabt?<\/p>\n\n\n\n<p>Dazu ben\u00f6tige ich ein weiteres Tool. Da es darum geht das vom <strong><em><a href=\"https:\/\/www.zsnes.com\/\">zSNE<\/a><a href=\"https:\/\/www.zsnes.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">S<\/a><\/em><\/strong> erstellte ZMV-Dateien Frame f\u00fcr Frame als ZST-Dateien abzuspeichern schlage ich den absolut unschlagbar kreativen Arbeitstitel <strong>ZMV2SRT<\/strong> vor.<\/p>\n\n\n\n<p>Dieses \u00f6ffnet <strong><em><a href=\"https:\/\/www.zsnes.com\/\">zSNE<\/a><a href=\"https:\/\/www.zsnes.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">S<\/a><\/em><\/strong>, das Rom, sofern notwendig das Savestate und abschlie\u00dfend das ZMV. Dieses wird dann automatisiert Frame f\u00fcr Frame abgespielt und auch als .ZST abgespeichert. Um nicht extra wieder <strong><em><a href=\"https:\/\/www.romhacking.net\/utilities\/274\/\" target=\"_blank\" rel=\"noreferrer noopener\">vSNES<\/a><\/em><\/strong> \u00f6ffnen zu m\u00fcssen wird auch gleich ein Screenshot erstellt. Anhand dieser Screenshots kann dann kontrolliert werden ob sich auf dem Bildschirm \u00fcberhaupt etwas ver\u00e4ndert hat. (<em>Damit der <strong>SXT<\/strong> nicht umsonst robotet&#8230;<\/em>)<br>Falls mir schrecklich langweilig ist, kann ich noch schauen ob ich gleich in <strong><em><a href=\"https:\/\/github.com\/QB64-Phoenix-Edition\/QB64pe\">QB6<\/a><a href=\"https:\/\/github.com\/QB64-Phoenix-Edition\/QB64pe\" target=\"_blank\" rel=\"noreferrer noopener\">4PE<\/a><\/em><\/strong> aus den Screenshots ein .AVI oder eine \u00e4hnliche Videodatei erstellen kann.<br>Details hierzu folgen sobald ich mich ausgiebig genug mit <strong><em><a href=\"https:\/\/www.zsnes.com\/\">zSNE<\/a><a href=\"https:\/\/www.zsnes.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">S<\/a><\/em><\/strong> befasst habe.<\/p>\n\n\n\n<p>Was soll <strong>Projekt Silvester<\/strong> also k\u00f6nnen? Als erstes muss einmal klargestellt werden, das aus Projekt Silvester eines fernen Tages die Engine von <strong>SR:SNES:DRMM<\/strong> entstehen wird. (<em>Ges\u00e4ubert, optimiert und und und&#8230;<\/em>) F\u00fcr den Anfang reicht es mir allerdings wenn die Morgue umgesetzt und benutzt werden kann. Sprich, die Map wird geladen, die Sprites und Objekte ebenfalls, das &#8222;Jake-steht-auf&#8220;-Script l\u00e4uft ab und danach ist bis zum Verlassen des Hauses jegliche Interaktion korrekt m\u00f6glich.<\/p>\n\n\n\n<p>Die erste und wichtigste Komfortfunktion wird die skalierte Darstellung sein. Die nativen 256&#215;240 Pixel sollen zwar eine Option bleiben, aber x2 \/ x3 \/ x4 (<em>512&#215;480 \/ 768&#215;720 \/ 1024&#215;960 <\/em>) m\u00fcssen auf jeden Fall verf\u00fcgbar sein. Wichtig ist erfahrungsgem\u00e4\u00df hierbei das <span style=\"text-decoration: underline;\">nicht<\/span> in der Originalaufl\u00f6sung berechnet und dann erst hochskaliert wird, sondern das bereits von Anfang an mit den skalierten Werten gearbeitet wird. Vielleicht w\u00e4re es klug, das Tileset selbst hochzuskalieren anstatt diesen Schritt jedes mal beim kopieren auszuf\u00fchren? <\/p>\n\n\n\n<p>Die n\u00e4chste Komfortfunktion soll eine Maussteuerung sein. Nicht f\u00fcr das Spiel selbst, sondern f\u00fcrs Debugging. Mouseover zeigt in der Console Infos zu den Tiles an, das obligatorische Highlighting, etc.<\/p>\n\n\n\n<p>Dies geschieht alles in  <strong><em><a href=\"https:\/\/github.com\/boxgaming\/qbjs\" target=\"_blank\" rel=\"noreferrer noopener\">QBJS<\/a><\/em><\/strong> und ist somit das Einzige das ich auch unterwegs machen kann. <\/p>\n\n\n\n<p>Um irgendwo anfangen zu k\u00f6nnen muss einmal das Format der Map definiert werden.<br>Und um das tun zu k\u00f6nnen, muss ich im Vorfeld ein paar grundlegende Regeln fesetlegen.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Die Map ist in quadratische 8x8pxTiles und nicht in rautenf\u00f6rmige 16&#215;16 Felder aufgebaut.<br>Dadurch entstehen in den Ecken zwar Leerr\u00e4ume aber da der Ausgabebildschirm rechteckig sein wird, w\u00fcrden diese sowieso generiert werden.<\/li>\n\n\n\n<li>Weil ich Ich bin, und ich vom ASCII komme, ist x vertikal und y horizontal. (<em>Siehe LOCATE X,Y<\/em>). Die klassische Aufl\u00f6sung 640&#215;480 ist demnach y,x. Das mag f\u00fcr jeden Anderen verwirrend sein, f\u00fchlt sich f\u00fcr mich aber nat\u00fcrlicher an.<\/li>\n\n\n\n<li>Die Map wird in ein mehrdimensionales Array eingelesen.<br><strong>MapData%(Mapnummer%, TilePosX%, TilePosY%, Layer%)<\/strong><br><strong>Mapnummer%<\/strong> = kA warum, aber ich erachte es als wichtig das einzubauen.<br><strong>TilePosX%\/TilePosY%<\/strong> = Die x\/y-Koordinate des 8x8px Tiles<br><strong>Layer%<\/strong> = Ich orientiere mich am SNES und m\u00f6chte unterschiedliche Layer einbauen.<br>Imo w\u00e4ren ein Layer f\u00fcr den Boden, einer f\u00fcr die W\u00e4nde, einer f\u00fcr statische Objekte, einer f\u00fcr Sprites die in diese Objekte oder d\u00ede W\u00e4nde integriert sind und explizit bewegt werden m\u00fcssen (<em>zB. T\u00fcren, Leichenf\u00e4cher<\/em>) und einer f\u00fcr Sprites die st\u00e4ndig animiert werden notwendig. <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"http:\/\/www.acidpool.at\/007_shadowrun\/01_srsnesdrmm\/pictures\/181218_002.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Die in SNES Shadowrun verwendeten Layer. Der Sinn hinter der Aufteilung von BG1 und BG2 erschlie\u00dft sich mir nicht zu 100%,.<\/figcaption><\/figure>\n\n\n\n<p>An dieser Stelle f\u00e4llt mir ein Problem auf! Der Sprite Layer darf afair nicht an das 8x8px-Grid gebunden sein. Aber dazu ist, wie weiter oben bereits erw\u00e4hnt, noch eine Recherche \u00fcber die Positionierung der Sprites notwendig.<\/p>\n\n\n\n<p>Okay, dann lassen wir vorerst Sprites Sprites sein und konzentrieren uns auf die korrekte Darstellung der Map sowie Basic-Scrolling. So wie ich mich kenne, d\u00fcrfe ich damit eh bis kurz vor der Apokalypse besch\u00e4ftigt sein. \ud83d\ude09<\/p>\n\n\n\n<p>Da mir zum einem nichts mehr an dieser Stelle Erw\u00e4hnenswertes einf\u00e4llt und sich zum anderen meine Nachtschicht dem Ende zuneigt (<em>Soviel zum gem\u00fctlichen Filmschauen&#8230;<\/em>) schlie\u00dfe ich diesen Text hiermit vorl\u00e4ufig ab. <strong>[Donnerstag 22\/02\/2024, 05:45]<\/strong><\/p>\n\n\n\n<p><strong><a href=\"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/project-2024-seite-01\/project-2024-seite-02\/\" data-type=\"page\" data-id=\"2034\">Hier<\/a><\/strong> geht&#8217;s weiter.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>#0 &#8211; Einleitungsblabla Frage: WAS will ich tun?Antwort: Ein RPG im Shadowrun-Universum programmieren. Die absolute Wunschvorstellung meinerseits w\u00e4re es ja die Grafiken vom 1993er SNES-Shadowrun zu grabben, den Rollenspielteil der Shadowrun Returns-Triologie als Vorbild zu nehmen aber mit einer eigenen an Biowares Infinity\/Aurora-Engine angelehnten &#8222;jederzeit pausierbaren Echtzeit-Kampf&#8222;-Engine* zu verkn\u00fcpfen und mir mein eigenes &#8222;Shadowrun 2&#8220; &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/project-2024-seite-01\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201e[Project 2024]\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2009","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/pages\/2009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=2009"}],"version-history":[{"count":18,"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/pages\/2009\/revisions"}],"predecessor-version":[{"id":2157,"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/pages\/2009\/revisions\/2157"}],"wp:attachment":[{"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=2009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}