Mega65 Converter Tool

Ich arbeite jetzt schon einige Zeit an einem Converter-Tool für den Mega65.

Ziel dieses Programms ist Bilddateien,Paletten und Tilemaps in ein Format zu konvertieren das einfach mit Assembler,Basic oder einer anderen Sprache zu benutzen ist.

Dazu gibt es derzeit 3 mögliche Exportmodi, direkt als Assemblercode, als Basiccode oder als binäre Datei.

Stand der Dinge :

  • konvertieren von FCM (Full Color Mode, 256Farben gleichzeitig) funktioniert mit allen exporten
  • konvertieren von NCM (Nibble-Color Mode, 16 Farben pro 16×8 Zelle mit Palettenindex) funktioniert mit extern eingebundener Palette (sollte für die meisten völlig ausreichen)
  • konvertireen von NCM mit gleichzeitiger generierung der dazugehörigen Palette ist noch sehr alpha und funktioniert noch nicht 100% sicher
    • Ich will dieses Feature drin haben, weil es nicht leicht umzusetzen ist
    • Assets die man auf itch.io kauft, oder anderswo besorgt, sind nicht wirklich kompatibel und benötigen meist einen hohen Aufwand an remapping der Paletten usw. -> mein Tool erleichter dies dann
  • konvertieren von Paletten im GPL oder Image Format funktioniert
  • konvertieren von Tilemaps im CSV Format funktioniert

Wie geht es die nächste Zeit weiter:

Da ich immernoch mit meinen diversen Bandscheibenvorfällen beschäftigt bin, werde ich dieses Projekt jetzt bis zum Ende durchziehen. D.h. ich versuche den verbuggten NCM-Automatic export umzusetzen, überarbeite die Oberfläche und schreibe die Dokumentation der Funktionen. Ich werde dennoch kein Release-Datum festlegen, da ich noch eine Liste an bugs habe die es zu beheben gilt. Auch leide ich unter recht schlechten CodeDesign entscheidungen seitens mir, deswegen kann es sein das ich ein komplettes Refactoring vor dem Release durchführe…

Testimage für FCM export

Umzug meiner social-media Präsenz.

Ich habe mich dazu entschieden Twitter auf Wiedersehen zu sagen und meine Präsenz auf Mastodon umzuverlagern. https://mastodon.gamedev.place/@roughnight


Mein Mega65 ist da!!!!

Da ich aus medizinischen Gründen derzeit nicht am Arbeitsalltag teilnehmen kann, hatte ich etwas Zeit mich wieder mit dem Mega65 zu beschäftigen. D.h. ich hab mir wieder Assembly angeschaut, vorher allerdings angefangen Librarys in Kick-C und TRSE zu schreiben die den Einsatz des Raster Rewrite Buffer zeigen.
Sinn dahinter war es, Leute zu ermutigen sich mit der Platform auseinander zu setzen und Programme zu schreiben ohne auf Basic oder Assembly angewiesen zu sein.

Die Library für TRSE ist schon ziemlich fortgeschritten aber noch nicht vollständig. https://github.com/CptnRoughnight/TRSE_Mega65_Playground

Ich hatte meine Vorbestellung zwar schon im Februar diesen Jahres eingereicht und bezahlt, aber war dennoch zu spät um das Gerät dieses Jahr, hauptsächlich dem Chip-a-geddon geschuldet, in Empfang zu nehmen. Also begann ich verhäuft auf Ebay usw. nach einem Verkäufer dieser technischen Spielerei zu suchen, vllt. hat man ja Glück.

Mega65 Devkit

Und ja… nach ein paar Tagen hatte ich wirklich unverschämtes Glück. Ein User im Mega65-Discord hat sein
DevKit zur Veräußerung gebracht und ich war zwar ein paar Stunden später erst online und konnte darauf antworten, aber der Zuschlag ging an mich. Also Vorbestellung gecancelt und das Geld dem netten Mitbürger überwiesen. Nach 3 Tagen hatte ich das Gerät dann in den Händen, fühlte sich wie Weihnachten 1992 an^^

Ich hatte den Mega65 vorbestellt, nicht weil ich ihn nur anschauen mag, oder damit spielen will. Ich will Spiele entwickeln, Assembler lernen und einfach Spaß am lernen und ausprobieren haben.

Kombiniert mit einem mobilen IPS-Panel ist es sogar direkt als “Laptop” zu benutzen, naja fast…. 😀

Auf jeden Fall hab ich jetzt ein paar Tage damit gearbeitet, sogar mal ein Basic Programm eingetippt und bin nachwievor fasziniert. Die Tastatur ist so ziemlich die Beste die bisher in Verwendung hatte. Viele meckern über das eingebaute, unnötige Diskettenlaufwerk, aber für mich ist das ein Muss, da bin ich egoistisch… ein Diskettenlaufwerk muss dazu sein:)

Habe dann direkt angefangen meinen Assembler, den ich anfang diesen Jahres mit Kick-C geschrieben habe in Assembly nachzuprogrammieren. Und dank des eingebauten JTAG-Adapters vom M65-Devkit konnte ich die Früchte meiner Synapsendehnungen gleich am originalen Gerät testen. Und siehe da… es gibt unterschiede zum Emulator, welche ich noch nicht genau deuten kann, allerdings verhält sich der Tastaturcontroller im Emulator anders, wie es beim Nexys Board aussieht muss ich nocht testen…

So das wars erstmal, der nächste Post folgt bald.


Wave Function Collapse in C# für Godot

Über das Wochenende hab ich mir meinen derzeitigen (seit ein paar Monaten) Nemesis vorgenommen. Den Wave-Function-Collapse Algorhythmus (https://github.com/mxgmn/WaveFunctionCollapse).
Meine Implementierung ist nicht so advanced wie in diesem Github-Repo, ich habe mich stark an das Video von “The Coding Train” https://www.youtube.com/watch?v=rI_y2GAlQFM&t=2169s orientiert. Allerdings habe die gleich auf das Prinzip der Connectoren gesetzt. Sodass ich sehr einfach meine Liste an möglichen Elementen erweitern kann. Auch kann der Algo sehr einfach in 3D umgeschrieben werden, da das Script sich nicht dafür interessiert wie das Endprodukt aussieht.

Bisher ist es ein reiner 2D-Algo, das heißt 2d sowie 3d benutzt nur eine Ebene. Auch ist der Algo etwas langsam und es stecken sich noch einige Optimierungsmöglichkeiten drin, aber damit beschäftige ich mich später. Der GMTK2022 ist endlich komplett vorbei, sodass ich mein Spiel Blood Moon Dicing updaten kann. D.h. diese Woche werde ich eine riesige Liste an Bugs und Verbesserungen abarbeiten, evtl. dies auch live im Stream.


Twitch Integration with Godot und GIFT

Da ich wieder vermehrt mich aufs Streamen konzentrieren möchte, dachte ich mir das ich das Userfeeling verbessern möchte. Dazu hab ich mir das Addon GIFT in Godot runtergeladen, die üblichen Sachen für Twitch erledigt (Oauth, Bot-Account etc) und dann angefangen daraus ein “Spiel” zu bauen.

Bisher funktionieren rudimentäre Sachen, sich bei dem Spiel anmelden, eine Nachricht senden und ein Effekt wenn man sich gerade nicht findet…


GMTK Game Jam 2022

Hi,

ja ich habe mal wieder an einem GameJam teilgenommen. Die Frequenz der Jam-Teilnahmen ist bei mir olympisch 😀
Aber ok, dann beschreibe ich mal hier was meine Erfahrungen mit dem Jam und allg. mit Gamejams sind.

Start Freitag abend, bekanntgabe des Themas : “Rolling of the Dice”.
Gut dachte ich mir, mit Würfeln kann man viel machen. Würfel bedeuten auch Randomness. Also hab ich mir meinen Lieblingsalgorhythmus hergenommen (Drunk Walk Algo) und etwas mit Godot’s Gridmaps rumgespielt. Einen FPS-Controller dazu und ja… dann kam eins zum anderen.

Samstag war die Idee dann reif, ein 3D-FPS-Roguelike/Dungeon Crawler. Also ab ans Werk!
Habe mir dann auf Itch.io und Opengameart.org einige Sachen herausgesucht die für diesen Zweck passen sollten. Mir fehlte nur noch eine Idee wie ich den FPS teil verbaue, ohne das es zu glatt wirkt.


“Der DiceMage kämpft sich durch die Skybase Delta zum Blutmond weiter nach unten. Bis er den üblen Boss trifft”

Dice-Mage, Magier, Spells…. Ein Ring aus Würfeln die man verschießen kann… Das ist es! Die Idee! Natürlich passt die Idee zum Jam-Thema… die Würfel werfen, Gegner treffen, Würfel wieder aufheben und weiter…. sodass bei jedem Wurf/Aufheben ein andere Würfelwert benutzt wird. Das hätte ich mir ja leicht machen können, aber nein…. ich habe bei geworfenen Würfeln berechnet welche Seite nach oben schaut um den Wert der Würfelaugen in den Spellring zu übernehmen….. ein einfaches auswürfeln wäre einfacher und wahrscheinlich auch intuitiver.

Sonntag begann dann mit der Suche nach Musik und SFX, hab dann schnell einige Sachen gefunden die mir zugesagt haben. Musik von AKMV-18 , und diverse SFX für die Feinde und den Spieler. Alles sehr rudimentär, aber ich bekomme langsam Zeitdruck :D.

Ab Sonntag mittag war dann eigtl. alles soweit fertig, wollte gerade loslegen das Spiel aus den Einzelteilen zusammen zu bauen, dann….. BUGS, BUGS everywhere….. Gut das bleibt nicht aus, vorallem nicht in einem 48h Gamejam….
Also die große Fliegenklatsche rausgeholt und ein Bug nach dem anderen beseitigt… Dann viel mir auf das der Bosskampf zu flach ist… keine dynamik. Ich habe dann einige Partikeleffekte gebaut die der Boss auf den Spieler wirft. Dann kam die Idee das der Boss einiges zu sagen hat, also hab ich mir ein Voice changer runtergeladen und angefangen Sachen einzusprechen.

Der Endspurt (Abgabe 21.00 spätestens) ab 19.00 war intensiv, Bugs, Balancing, Aufregung, Nervösität….
Aber letztendlich habe ich das Spiel 40 Minuten vor der deadline hochladen können….. natürlich auch da wieder Fehler gemacht.
! ACHTUNG ! packt eure gamefiles in eine ZIP-Datei, sonst meckern die Leute weil ihre Browser die .exe nicht laden will ! ACHTUNG !

Alles fertig? Nein…. Promo-time

Der Abend endete mit einem Youtube-Video, das bearbeiten der Itch.io Seite, Postings auf Reddit, Twitter, GameJolt.
Ich hatte dann auch das Glück das ein Streamer ( Aarimous ) mein Spiel live auf Twitch gespielt hat…. und ich war überrascht, ihm gefiel es… Hat mir auch gleich wieder einige Bugs offenbart.

So… nun heißt es spielen! Ich werde die kommende Woche so viele Spiele wie möglich von diesem Jam spielen und bewerten, in der Hoffnung das sie auch mein Spiel spielen und bewerten. Bin ja schon stolz auf die Arbeit!




Dreamgame Devlog#1

So,

ich habe mich dazu durchgerungen mein Traumprojekt anzugehen. Ich habe eine Zeit lang http://Ogame.de gespielt, ein Browserspiel in dem man Planeten besiedelt, Flotten aufbaut usw.

Dann kam ich zu DarkOrbit, was ich, obwohl ich es gut fande, relativ kurz gespielt habe… Die Umsetzung des Spiels und teilweise heftige P2W-Aspekte waren echt nicht mein Ding.

Also dachte ich mir das ich diese 2 Konzepte verbinde, wie tief diese beiden Mechaniken implementiert werden, wird sich mit der Zeit zeigen. Auf jeden Fall möchte ich Resourcen abbauen, mit RPG-Elementen evtl. (bessere Ausrüstung craften, oder kaufen). Stationen bauen und diese automatisieren.

Ich habe bereits begonnen wiedermal mit ProcGen zu spielen um dem Spiel mehr dynamik zu geben und im besten Fall mir Arbeit abzunehmen.

Desweiteren arbeite ich mich gerade durch die Multiplayfähigkeiten von Godot und denke das ich es schon ganz gut händeln kann.. das ist auf jeden Fall ein essentieller Bestandteil des Spiels.


Low Energy Gamedev

Hi,

Aufgrund der Ereignisse auf der ganzen Welt, ist es notwendig das jeder seinen Teil dazu beiträgt das die Auswirkungen vllt. nicht so fatal werden. Da mein Haupt-Hobby aber Spieleentwicklung/Programmierung ist und bleibt, musste ich mir etwas einfallen lassen.

Glücklicherweise habe ich mir vor geraumer Zeit einen Raspberry Pi 400 zugelegt. Auf dieser Basis hab ich meine neue “Dev-Maschine” gebaut, Pi-OS 64Bit, Godot (https://github.com/hiulit/Unofficial-Godot-Engine-Raspberry-Pi), Raylib, VS-Code und einige andere Sachen drauf gehauen und los gehts!

Da ich aber alles in einem haben möchte, und das meist immer :D, hab ich mir einen portablen Monitor rausgesucht (USB-C/HDMI, 5V – 3A = 15Wmax) und bin eigentlich sehr zufrieden. Ich hab jetzt ein ordentliches System zum entwickeln,surfen usw. und verbrauche max. 30W…. das ist schon ein großes Ersparniss gegenüber meinem großen PC mit 650W Netzteil. Außerdem kann ich alles schnell zusammenpacken und mich in meinen Garten setzen und dort weiterarbeiten.

Ich kann jedem nur empfehlen sich damit zu beschäftigen.


Neuausrichtung

So, ich habe jetzt lange Zeit kein Update zu M’Garok gepostet, weil ich auch nicht wirklich daran weitergearbeitet habe.
Ich habe derbe Motivationsprobleme, obwohl ich immernoch finde das es ein gutes Spiel werden kann. Die Größe des
Projekts war mir vorher schon bewusst und das es ein Langzeitprojekt ist, aber mit der anhaltenden Motivationsflaute sehe ich es so, dass ich vorerst mich auf C64 Programmierung und kleinere Projekte stürzen werde. Streamen wird auf jeden Fall wieder mehr im Fokus stehen, habe schon einige Ideen für Stream-Chat Spiele…
M’Garok bleibt aktiv, aber ich werde erst wieder dran arbeiten wenn ich mich so fühle, das ist alles ein Hobby für mich und für Termindruck und forciertes Arbeiten hab ich einen normalen Job bei dem ich sogar Geld bekomme 😉

Auf jeden Fall kann hier der 1. Stream seit…. knapp einem Jahr?! bewundert werden :


DirectSpaceState

So, I was in the process of translating my GDScript-Code to C# in the hope of some extra fps and I encountered a
small issue. I’ve searched the world wide interwebs but didn’t find an answer.

var space_state = get_world().direct_space_state
var result = space_state.intersect_ray(Vector3(0,10,0),Vector3(0,0,0))
if result:
……

You have the ambition to know where your ground is, our your enemy or you want to know how far the next obstacle is. In GDscript, well documented, you get the position by

result.position

It isn’t that easy in C#. The syntax matches what is written on the official site.

PhysicsDirectSpaceState space_state = GetWorld().DirectSpaceState;
Godot.Collections.Dictionary result = space_state.IntersectRay(new Vector3(0, 10, 0), new Vector3(0, 0, 0));

You can also determine if the result is null. But how to get the information, like the position of intersection?
I don’t know if I overread this, but I didn’t found a tutorial/doc for this.

If you want to get the ,e.g. position you have to cast and to the class you want and know wich key.

(Vector3)result["position"];


Kein Backup, kein Mitleid!

Ich weiß nicht wie, aber ich habe versucht ein Backup meines Servers zu ziehen, und dabei das Image zerschossen. Ironie ist ein Arschloch! 😀 Na gut, es wird weitergehen.