Posts from ZeHa in thread "Heute so gecodet..."

    Gerade rausgefunden, dass es (Please login to see this link.) auch einfacher geht: ACME einfach mit "--vicelabels <dateiname>" aufrufen, dann kommt dabei eine Datei raus, die VICE-Kommandos enthaelt. Damit entfaellt die zusaetzliche "moncommands.txt".

    ZeHa: Gehst du auch damit um, wenn es für eine Adresse mehrere Labels gibt? Da hatte VICE WIMRE immer rumgezickt, und ich habe halt dann immer das erste davon genommen.

    Keine Ahnung was in solch einem Fall passieren wuerde, habe glaub selten den Fall. Das ganze wurde aber ja wie gesagt nicht von mir programmiert, das ist existierende VICE- (und ACME-)Funktionalitaet, ich habe es nur endlich mal verwendet und in mein Build-Skript eingebaut.

    kein LDA BULLETALIVE, Y? :wink:

    (oder halt ganz ohne Y)

    Verstehe nicht ganz, meinst Du weil das Label nicht uppercase ist? Das ist jetzt die Ausgabe vom Monitor, in meinem Code sind die Assembler-Befehle (und das "y") lowercase und normale Variablen auch, nur Konstanten schreibe ich dort gross.

    Nicht direkt gecodet, und nicht direkt heute rausgefunden, aber heute endlich mal umgesetzt (weil es damals irgendwie nicht so recht klappen wollte) - vielleicht ist es fuer den ein oder anderen ja neu:

    Ich lasse mir bei ACME immer eine "labels.txt" erzeugen, in der saemtliche Labels inkl. ihrer zugehoerigen Adresse aufgelistet werden. Diese Datei laesst sich im VICE-Monitor laden, sodass man beim Debuggen nicht mit Adressen hantieren muss und z.B. beim Disassemblieren seine gewohnten Labels drinstehen hat. Nun habe ich mir mein Build-Skript (fuer mein aktuelles Spiel) so angepasst, dass dies automatisch erfolgt.

    Dazu muss man zunaechst ACME mit dem "-l" Parameter aufrufen, z.B. "-l ../build/labels.txt" (also um das Label-File ueberhaupt zu erzeugen).

    VICE muss man ueber den Umweg einer weiteren Textdatei beibringen, was er im Monitor fuer Befehle ausfuehren soll. Leider gibt es keinen "direkten" Execute-Parameter, zumindest habe ich keinen gefunden. Daher benoetigt man den Parameter "-moncommands", z.B. "-moncommands mc.txt".

    In der Datei mc.txt steht dann lediglich das folgende Kommando: "load_labels "build/labels.txt"" (Anfuehrungszeichen beim Dateinamen sind wichtig, "load_labels" kann auch durch "ll" ersetzt werden).

    Wenn man dann in VICE den Monitor oeffnet, kann man alle public-Labels anstelle von Adressen verwenden, allerdings muss man einen Punkt (".") vorne dranstellen. Hat man also ein Label names "game_loop", und man moechte sich den Code disassemblieren, kann man im Monitor z.B. "d .game_loop" eingeben. Auch werden im disassemblierten Code alle Adressen durch public-Labels ersetzt. Private und anonyme Labels hingegen bleiben weiterhin Adressen.

    Keine Ahnung wem das oben beschriebene was nuetzt, einige werden es kennen, einige andere werden Tools wie C64Studio benutzen, aber wer wie ich mit normalen Text-Editoren und Linux-Terminals unterwegs ist, dem wird das vielleicht eine Hilfe sein.

    Beispiel:

    Please login to see this attachment.

    Ich arbeite ja zur Zeit an einem neuen Spiel, und habe dafuer auch vor einiger Zeit einen Leveleditor angefertigt in Python. Dort habe ich gestern bei unserem "42. Spieleentwicklertreffen" (Please login to see this link.) weitergemacht und ein paar coole Zeichenfunktionen eingebaut, mit denen das Levelbauen jetzt richtig viel Spass macht. Natuerlich kann ich dazu noch nichts zeigen, denn dann wuerde man ja was vom Spiel sehen ;)

    Aber ich freue mich schon, sofern das Spiel dann mal eines Tages fertig wird, auch ueber den Entwicklungsprozess zu sprechen und ein paar der internen Tools vorzufuehren :D

    Dann fehlt doch aber die Einschaltmeldung, oder?

    Gut beobachtet, aber die Einschaltmeldung

    "© 1982 Sinclair Research Ltd." stand nach dem Einschalten unten , und war in der Zeile der Eingabemaske. Drückte man nach dem Einschalten eine Taste, war die weg :D

    Ja, dann ist das eben nicht das selbe ;)

    Ich wollte ja nicht einfach nur andere Farben haben (das geht am C64 ja ebenfalls simpler), sondern ich wollte damit eigentlich eher einen Schwarzweiss-Modus imitieren ;)

    (auch wenn ich dabei - bewusst - die Textfarbe etwas heller gemacht habe als sie eigentlich korrekterweise waere, denn sie muesste ja eigentlich identisch zur Randfarbe sein. Da hab ich mal aus kuenstlerischer Freiheit einen hoeheren Kontrast gewaehlt)

    Aber war ja auch nur als kleiner Gag gedacht. Kann man evtl mal auf einem Retro-Treffen kurzerhand an einem unbeaufsichtigten Fremd-C64 eintippen und dann schauen, wie lang der Besitzer benoetigt, um herauszufinden, dass der Monitor oder das Kabel keinen defekt hat :bgdev

    tulan

    Ja, der Style ist aehnlich minimalistisch, aber das hatte auch einen Grund - in einem GameJam ist die Zeit ja begrenzt, daher ist es immer eine gute Idee, sich nur auf die wesentlichen Dinge zu konzentrieren und die komplexeren Dinge so weit es geht runterzuschrauben. Da wir keinen separaten Grafiker im Team hatten, der sich ausschliesslich um die Grafik kuemmern konnte, musste ich das uebernehmen - daher waehle ich in solch einem Fall dann einen Look, der zwar auch auf seine Art und Weise irgendwie "cool" ist, aber auch sehr schnell zu produzieren ist. Denn theoretisch hat man spaeter immer noch die Moeglichkeit, alles nochmal zu ueberarbeiten (ist auch zum Teil geschehen - anfangs waren die Figuren z.B. nicht animiert, und die Baeume sahen "haesslicher" aus).

    Mir ist natuerlich klar, dass Du das nicht negativ meintest mit der Grafik, ich wollte das nur allgemein ein bisschen erklaeren :)

    Es gibt auch Leute, die malen dann z.B. gerne einfach nur Kaestchen und Bloecke. Das mache ich z.B. sehr ungern. Fuer mich soll der Baum schon nach Baum aussehen und das Maennchen auch nach einem Maennchen, daher versuche ich da schon erstmal was "hinzuklatschen" was grundsaetzlich das symbolisiert, was es sein soll. Aber eben so schnell und simpel wie moeglich. Man spart auch Zeit bei der Programmierung - haetten die Figuren z.B. eine komplexere Animation mit verschiedenen Richtungen usw, dann haette man das ja auch alles programmieren muessen. In diesem Falle ist die Animation der Maennchen immer haargenau gleich, da einfach zwischen 2 Frames gewechselt wird. Also profitiert von solch einer Vereinfachung nicht nur rein die Grafikerstellung sondern die Kette setzt sich fort.

    Vereinfachung bei GameJams gibts auch noch an anderen Stellen, z.B. versuche ich immer Ideen zu waehlen, die ohne riesige Levels auskommen. Denn auch sowas zu designen kostet natuerlich Zeit. Am besten ist es, eine Idee zu haben, die mit nur einem einzigen Level funktioniert. Denn weitere Levels kann man spaeter immer noch dazubauen, wenn man Lust hat, oder auch mal zwischendrin, wenn es sich anbietet. Auch bietet es sich an, etwas zu waehlen, bei dem es z.B. nicht mehrere Gegnertypen erfordert, denn die muesste man ja auch alle programmieren, usw.

    Alles in allem hilft einem ein solcher GameJam auch ein bisschen dabei, zu lernen, sich auf das wesentliche zu beschraenken und zielorientiert zu arbeiten, anstatt sich wie so oft ein viel zu grosses Projekt vorzunehmen, das man zwar fuer klein haelt, aber an dem Wochenende dann doch nur zur Haelfte schafft.

    Bei so einem Gamejam wär ich echt gern mal dabei.
    Scheint als ob ich derart am Allerwertesten der Welt lebe, dass die alle am anderen Ende des Allerwertesten sind :biggrin:

    Naja es gibt auch viele Online-GameJams, und es gibt z.B. auch den "Global GameJam", der findet dann an vielen Orten (z.B. Hochschulen usw) gleichzeitig statt.

    Oder man hockt sich wirklich mal ins Auto oder in den Zug und betrachtet das ganze einfach mal als einen Kurzurlaub. Unser GameJam ging ja z.B. 2 Tage, wir hatten auch schon welche mit 3 Tagen, also da lohnt es sich dann eigentlich auch mal, eine kleine Reise anzutreten. Eventuell traegt das noch zum Erlebnis bei, denn man sieht einfach mal was anderes, neue Leute, andere Umgebung, usw, das kann einen regelrecht befluegeln und inspirieren, auch die Tage und Wochen danach noch :)

    Am Wochenende fand der "Please login to see this link." statt, dort habe ich zusammen mit einem Kumpel ein kleines Spielchen in Lua/Love2d entwickelt. Es gab 4 vorgegebene Themen, davon war eines "Enge", welches wir wie folgt umgesetzt haben: Man befindet sich im Wald auf Hasenjagd, sollte aber eng beinander bleiben, denn wenn man sich zu weit voneinander entfernt, taucht ein Wolf auf und schnappt sich denjenigen, der naeher dran ist. Man spielt eigentlich gegeneinander, aber eben auch ein klein wenig miteinander. Man kann den Wolf jedoch auch strategisch "triggern", wenn man weiss, dass der andere gerade naeher dran ist und geschnappt werden wuerde.

    Please login to see this attachment.

    Das Spiel kann man auf itch.io downloaden und zu zweit an einem Rechner spielen, entweder per GamePad oder mit Tastatur:

    Please login to see this link.

    Ich selbst finde die Spielidee ganz witzig, war aber noch nicht 100% vom Gameplay ueberzeugt - eventuell benoetigt es noch etwas mehr Feinschliff. Daher werde ich es jetzt nicht umgehend auf den C64 portieren oder so :)

    Aber vielleicht wirds ja eines Tages nochmal angeruehrt, mal schauen :)

    Hat auf jeden Fall Spass gemacht, ich kann nur jedem empfehlen mal bei einem GameJam mitzumachen. Es ist einfach eine tolle Gelegenheit, mal ein kleines Projekt zu starten und im Idealfall auch zu vollenden. Man muss sich auf das wesentliche konzentrieren und ist hinterher auf jeden Fall ein paar Erfahrungen reicher.