Mein erstes Spiel...
Moderator: Rockford
-
- Beiträge: 43
- Registriert: 18.03.2024 17:33
- Has thanked: 7 times
- Been thanked: 2 times
- Kontaktdaten:
Re: Mein erstes Spiel...
Danke, aber Eure Mithilfe hat auch einen nicht unerheblichen Anteil daran!
Ich habe ja so kein richtiges Konzept, ist eher so on-the-fly. Vielleicht wird es garnicht ein Galaxian-Clone, sondern was eigenes... Aber ich habe Ideen und mal schauen was draus wird.
Ich würde mich auch furchtbar gern um das Thema Sound-Effekte und Musik kümmern, aber dafür bleibt grad gar keine Zeit. Wie ihr mach ich das ja alles in meiner Freizeit als Hobby und die Zeit ist eh schon knapp und es ist auch nicht mein einziges Hobby. Neben Elektronik, KFZ-Technik, Reverse-Engineering, ein paar Wikis und Foren sowie einem Dutzend weiterer Themenfelder nun auch noch Spiele-Entwicklung...
Ich habe ja so kein richtiges Konzept, ist eher so on-the-fly. Vielleicht wird es garnicht ein Galaxian-Clone, sondern was eigenes... Aber ich habe Ideen und mal schauen was draus wird.
Ich würde mich auch furchtbar gern um das Thema Sound-Effekte und Musik kümmern, aber dafür bleibt grad gar keine Zeit. Wie ihr mach ich das ja alles in meiner Freizeit als Hobby und die Zeit ist eh schon knapp und es ist auch nicht mein einziges Hobby. Neben Elektronik, KFZ-Technik, Reverse-Engineering, ein paar Wikis und Foren sowie einem Dutzend weiterer Themenfelder nun auch noch Spiele-Entwicklung...
Online
- Olix
- Beiträge: 1325
- Registriert: 17.08.2021 07:06
- Has thanked: 175 times
- Been thanked: 821 times
- Kontaktdaten:
Re: Mein erstes Spiel...
Noch ein kleiner Tip:
Blättere doch auf jeden Fall mal dieses Forum durch (Softare/Programmierung)-
Hier hat sich über die letzten Jahre einiges an Wissen angesammelt.
Hier mein kleiner Beitrag z.B. zum Thema VBI: viewtopic.php?f=7&t=928
Noch spannender ist aber noch das Timing des DLI, da muss man unter umständen dann wirklich jeden einzelnen Takt zählen
Blättere doch auf jeden Fall mal dieses Forum durch (Softare/Programmierung)-
Hier hat sich über die letzten Jahre einiges an Wissen angesammelt.
Hier mein kleiner Beitrag z.B. zum Thema VBI: viewtopic.php?f=7&t=928
Noch spannender ist aber noch das Timing des DLI, da muss man unter umständen dann wirklich jeden einzelnen Takt zählen
- Mathy
- Beiträge: 1281
- Registriert: 18.06.2021 11:13
- Wohnort: Heerlen, NL
- Has thanked: 546 times
- Been thanked: 287 times
- Kontaktdaten:
Re: Mein erstes Spiel...
.
Hallo Peter
Tschüß
Mathy
Hallo Peter
Hast Du VLC probiert? Laut deren Website müsste VLC AVI abspielen können. Bin auf der Arbeit, hier gibt's nur Windoof, kann also nicht ausprobieren ob's stimmt.
Tschüß
Mathy
Wer oder was hat denn da geblitzt?
Online
VLC kann (fast) alles !
(Auch AVI )
Gtx.
andY
- andymanone
- Beiträge: 2800
- Registriert: 17.08.2021 12:34
- Wohnort: Berlin - Suburban
- Has thanked: 573 times
- Been thanked: 965 times
- Kontaktdaten:
Re: Mein erstes Spiel...
VLC kann (fast) alles !
(Auch AVI )
Gtx.
andY
Ressortleiter Hardware - Save the past and use the future!© andYManOne / Demozoo / My brandnew, experimental Album "Apocalyptic Symphony" / Zur Zeit keine POKEY´s ab Lager - Warteliste
-
- Beiträge: 43
- Registriert: 18.03.2024 17:33
- Has thanked: 7 times
- Been thanked: 2 times
- Kontaktdaten:
Re: Mein erstes Spiel...
Oh, sorry, hier nochmal als MP4 (.mov). Beim Abspielen hat er das aus irgendeinem Grund um 90° nach rechts gedreht, musst mal schaun ob das bei Dir auch so ist und ggf. korrigieren.
- Dateianhänge
-
- shipmove.mov
- (551.93 KiB) 43-mal heruntergeladen
Online
- Dr. Irata
- Beiträge: 991
- Registriert: 24.08.2021 14:40
- Has thanked: 135 times
- Been thanked: 294 times
- Kontaktdaten:
Re: Mein erstes Spiel...
ja, ist gedreht bei mir... aber egal!
Für die Erstellung von Sprites oder Charaktern gibt es etliche Hilfsprogramme - die wirst gut brauchen.
Ich nutze den Online SSpred von MatoSimi oder den SprEd aud gleicher Schmiede...
Für die Erstellung von Sprites oder Charaktern gibt es etliche Hilfsprogramme - die wirst gut brauchen.
Ich nutze den Online SSpred von MatoSimi oder den SprEd aud gleicher Schmiede...
-
- Beiträge: 43
- Registriert: 18.03.2024 17:33
- Has thanked: 7 times
- Been thanked: 2 times
- Kontaktdaten:
Re: Mein erstes Spiel...
Genau, so eine Aufstellung von Tools wäre auch hilfreich. Ich hatte beim schnellen suchen diesen hier gefunden: SprEd v.1.2.1 https://bocianu.gitlab.io/spred/
der aussieht wie eine Weiterentwicklung des von Dir genannten SwSprEd v.0.8.4 https://bocianu.gitlab.io/spred/
Dann habe ich von ihm noch den Atari Fontmaker geladen: https://github.com/matosimi/atari-fontmaker#readme
So ganz blicke ich noch nicht durch, vor allem wie man mit den Farben umgeht und wie man später die Sprites zeichnet und animiert. Ich würde da unterscheiden in Verikales Scrolling und Animation bei Bewegung oder Zerstörung.
Man hat ja 4 Sprites (players) mit jeweils 128 oder 256 Byte Höhe. Diesen Block muss man ja erstmal im RAM per PMBASE zuweisen und initialisieren (mit 00en befüllen).
Dann muss ich meine Spritedaten da rein kopieren und bestimmte mit der Startadresse auch die Y-Position. Wenn ich das Sprite dann bewegen will mache ich das horizontal über das HPOS Register und vertikal über Scrolling oder Bytemove. Hier sehe ich zwei Möglichkeiten:
a) Ein echtes vertikal Scrolling verwenden
b) Die Bytes im Sprite verschieben, also von unten nach oben oder umgekehrt einen Byteshift durch den player-data Bereich machen.
c) Den gesamten 256 Byte Block des Players mit $00 löschen und das Sprite an der gewünschten Position neu einkopieren.
d) Die Daten des Sprites an der letzten bekannten Position durch überschreiben mit $00 löschen und an der neuen gewünschten Position wieder einkopieren
Gibt es hier bevorzugte Methoden, bzw. habe ich eine übersehen?
Ich persönlich würde Methode c) oder d) wählen weil es mir am flexibelsten erscheint. Ich kann so im Gegensatz zum zeilenweisen Scrolling direkt eine neue Position erreichen die mehrere Pixel von der alten entfernt ist. Aber das würde u.U. bedeuten das ich mein Sprite an einer Kollision vorbei bewegen könnte. Knifflig.
Bezüglich Animation wird man wohl eine Datenstruktur anlegen (Array) und irgendwo einen Index hinterlegen der beim zeichnen dann verschiedene Varianten des Sprites darstellt. Das zu steuern ist auch nicht ohne, da käme wieder sowas wie ein Scheduler zum Einsatz. Man kann sich ja auch in Ruheposition "wabernde" Gegner vorstellen, ebenso wie Animationen nur während einer Bewegung.
Und ist es so das man die Hintergründe (was so oft als Fields bezeichnet wird) dann über den ANTIC-Textmode und spezielle Fonts macht? Ggf. auch Gegner? Man hat ja nur 4 Sprites, das ist nicht viel und im Fall von Galaxian kann man die obere Reihe wohl eher nicht mit Sprites darstellen?
Auch ist mir noch ein Rätsel wie ich das mit dem animierten Sternenhintergrund hinbekomme. Hier wurde ja schonmal auf Missile diagnostiziert, aber mir fehlt noch jegliche Idee dazu das umzusetzen. Auch benötige ich die Missiles ja eigentlich für mein eigenes und das gegnerische Feuer?
Wie mal Fragen über Fragen... währenddessen ziehe ich mir die WUDSN Tutorials rein, lese div. Handbücher wie das Profi-Buch Seite für Seite durch und versuche aus zahlreichen Online-Quellen wie playermissile.com, AtariWiki etc. schlauer zu werden und ganz nebenbei noch das doch recht aufwändige 6502 Assembler zu lernen. Die fehlenden 16-Bit Register/Funktionen machen das Coding doch recht aufwändig, besonders bei Datenstrukturen die man ja nicht immer auf Page-Boundaries legen kann.
Online
- Dr. Irata
- Beiträge: 991
- Registriert: 24.08.2021 14:40
- Has thanked: 135 times
- Been thanked: 294 times
- Kontaktdaten:
Re: Mein erstes Spiel...
Also ich mache das aktuell so:
Mein Schiff besteht aus 2 Playern, dadurch erhalte ich drei Farben und es ist etwas breiter. Man kann theoretisch auch durch DLI´s aus einem Player einen mehrfarbigen Player machen, aber das ist etwas komplizierter und das brauche ich nicht zur Zeit.
Mit dem SpriteEd habe ich dann den Sprite gezeichnet. Dieser Editor hat schon eine Abspielfunktion drin und hat auch schon die Funktion mit drei Farben drin. Die Daten kann man dann ganz einfach per copy/paste in das Programm übernehmen.
Hier habe ich eine Extradatei in .txt Form angelegt, die Daten des Player lege ich dort per .dta ab. Die Datendatei wird mit icl eingebunden.
Ein Unterprogramm welches ständig aufgerufen wird im VBI schreibt ständig die Werte aus der "Datenbank" in die jeweilige gewünschte ypos des Player ein. Ich habe immer über und unter den Playerdaten eine 0 - also Leerwert, das löscht immer den oberen und unteren Anteil des Player, alles andere wird jeweils vom neuen Wert überschrieben. Mit einem Zähler bestimme ich, welche Phase aus der "Datenbank" gelesen wird und in den Player eingeschrieben wird. Thats it...
Mein Schiff besteht aus 2 Playern, dadurch erhalte ich drei Farben und es ist etwas breiter. Man kann theoretisch auch durch DLI´s aus einem Player einen mehrfarbigen Player machen, aber das ist etwas komplizierter und das brauche ich nicht zur Zeit.
Mit dem SpriteEd habe ich dann den Sprite gezeichnet. Dieser Editor hat schon eine Abspielfunktion drin und hat auch schon die Funktion mit drei Farben drin. Die Daten kann man dann ganz einfach per copy/paste in das Programm übernehmen.
Hier habe ich eine Extradatei in .txt Form angelegt, die Daten des Player lege ich dort per .dta ab. Die Datendatei wird mit icl eingebunden.
Ein Unterprogramm welches ständig aufgerufen wird im VBI schreibt ständig die Werte aus der "Datenbank" in die jeweilige gewünschte ypos des Player ein. Ich habe immer über und unter den Playerdaten eine 0 - also Leerwert, das löscht immer den oberen und unteren Anteil des Player, alles andere wird jeweils vom neuen Wert überschrieben. Mit einem Zähler bestimme ich, welche Phase aus der "Datenbank" gelesen wird und in den Player eingeschrieben wird. Thats it...
Online
- Dr. Irata
- Beiträge: 991
- Registriert: 24.08.2021 14:40
- Has thanked: 135 times
- Been thanked: 294 times
- Kontaktdaten:
Re: Mein erstes Spiel...
übrigens besteht mein Schiff aus 2 Playern und 2 Missiles... aber das ändert ja nix von der Theorie her...
Hier mal mein Code - wie gesagt ich schreibe gerne mit IF Then weil es sehr übersichtlich ist, wenn es hart auf Zeit geht, wandel ich das später durchaus um:
und hier ein Ausschnitt der Daten meines Players (nur 1 Player - da fehlt dann noch der andere Player und die beiden Missiles...
soll aber nur das Prinzip verdeutlichen:
Hier mal mein Code - wie gesagt ich schreibe gerne mit IF Then weil es sehr übersichtlich ist, wenn es hart auf Zeit geht, wandel ich das später durchaus um:
Code: Alles auswählen
; Endteil des Codes aus meinem VBI
lda xposp1
sta hposp0
sta hposp1
mva xposm1 hposm0
mva xposm2 hposm1
inc playerphasez
#if .byte playerphasez<#11
jsr playerphase1
#end
#if .byte playerphasez>#10 .and .byte playerphasez<#21
jsr playerphase2
#end
#if .byte playerphasez>#20 .and .byte playerphasez<#31
jsr playerphase3
#end
#if .byte playerphasez>#30 .and .byte playerphasez<#41
jsr playerphase4
#end
#if .byte playerphasez>#40 .and .byte playerphasez<#51
jsr playerphase5
#end
#if .byte playerphasez>#50 .and .byte playerphasez<#61
jsr playerphase6
#end
#if .byte playerphasez>#60
mva #0 playerphasez
#end
jsr joystick
inc explosionindex
plr
jmp xitvbv
soll aber nur das Prinzip verdeutlichen:
Code: Alles auswählen
; SPRITE COLORS 0
;dta 132, 132, 132, 132, 132, 132
; SPRITE COLORS 1
;dta 136, 136, 136, 136, 136, 136
sprite01 ; Frame 0
dta 0,0, 4, 0, 4, 0, 4, 27, 10, 4, 85, 21, 68, 32, 32, 0, 0,0
sprite02 ; Frame 1
dta 0,0, 0, 4, 0, 4, 4, 10, 10, 36, 4, 36, 27, 4, 0, 0, 0,0
sprite03 ; Frame 2
dta 0,0, 4, 4, 0, 4, 0, 16, 0, 20, 4, 21, 4, 0, 4, 0, 0,0
sprite04 ; Frame 3
dta 0,0, 4, 0, 4, 0, 4, 8, 8, 12, 4, 14, 0, 4, 0, 4, 0,0
sprite05 ; Frame 4
dta 0,0, 0, 4, 4, 0, 4, 1, 0, 5, 4, 21, 0, 0, 4, 0, 0,0
sprite06 ; Frame 5
dta 0,0, 4, 4, 0, 4, 4, 10, 10, 4, 4, 36, 27, 0, 0, 4, 0,0
Das macht wahrscheinlich jeder anders und wahrscheinlich bin ich der Einzige, der IF Then verwendet ;-)
-
- Beiträge: 242
- Registriert: 18.08.2021 23:21
- Has thanked: 74 times
- Been thanked: 32 times
- Kontaktdaten:
Re: Mein erstes Spiel...
Abgesehen von Methode a) haben tatsächlich alle so ihre Vor- und Nachteile. Wenn man den Player nur in einem sehr begrenzten Rahmen bewegt (also wie z.B. bei Crownland) dann würde ich Methode b) nutzen. Methode c) ist einfach, benötigt mehr CPU-Last aber weniger Verwaltungsaufwand. Methode d) benötigt weniger CPU-Last, dafür aber mehr Verwaltungsaufwand.yMoreT8 hat geschrieben: ↑26.03.2024 08:30b) Die Bytes im Sprite verschieben, also von unten nach oben oder umgekehrt einen Byteshift durch den player-data Bereich machen.
c) Den gesamten 256 Byte Block des Players mit $00 löschen und das Sprite an der gewünschten Position neu einkopieren.
d) Die Daten des Sprites an der letzten bekannten Position durch überschreiben mit $00 löschen und an der neuen gewünschten Position wieder einkopieren
Gibt es hier bevorzugte Methoden, bzw. habe ich eine übersehen?
Finde Dein Engagement jedenfalls sehr gut.
Genau genommen benötigt es für Spieleentwicklung ja immer ein Grundgerüst, von dem Du Dir schon viel erarbeitet hast.
Displaylist
Scrolling
Interrupts (VBI und DLI)
Timer
P/M-Grafik
Pokey-Programmierung
Dafür war ja mal eine Idee mit dem Wiki gedacht, aber leider komme ich nicht dazu, das bereits von Carsten eingerichtete Wiki auch mal zu füllen.
Ich nutze folgende Tools:
Entwicklungsumgebung: wudsn mit mads als Assembler und Altirra als Emu und zum Souce-Level-Debugging
Sprites: bocianus von Dir erwähnten SpriteEd
Fonts: matosimis von Dir ebenfalls erwähnten FontMaker
Sound/Chipmusik: RasterMusicTracker (RMT) von Raster (R.I.P.) http://raster.infos.cz/atari/rmt/rmt.htm#download bzw. in einer überarbeiteten aber strubbeligen Fassung von VinsCool https://github.com/VinsCool/RASTER-Music-Tracker
-
- Beiträge: 43
- Registriert: 18.03.2024 17:33
- Has thanked: 7 times
- Been thanked: 2 times
- Kontaktdaten:
Re: Mein erstes Spiel...
Ich habe mir das Image von "Galaxian (1982)(Atari)(US)[a].exe" im Altirra Debugger näher angeschaut um zu lernen.
Der Code wird laut COM Prefix ab $5500 geladen. Das DLIST Register wird auf $3D00 gesetzt und die dort liegende DLIST kann man mit einem Kommando in der Altirra Console prima debuggen:
Es ist also ein durchaus komplexer Mix verschiedener Graphics-Modes, teilweise mit LMS zu eigenen RAM-Locations und Blanks.
Der Code wird laut COM Prefix ab $5500 geladen. Das DLIST Register wird auf $3D00 gesetzt und die dort liegende DLIST kann man mit einem Kommando in der Altirra Console prima debuggen:
Code: Alles auswählen
Altirra> .dumpdlist $3d00
3D00: blank.i 8
3D01: blank 8
3D02: mode.i 6 @ 0B20
3D05: blank 6
3D06: mode.v.h E @ 1028
3D09: x7 mode.v.h E
3D10: mode.i.v.h E
3D11: blank 4
3D12: x8 mode.v.h E
3D1A: mode.i.v.h E
3D1B: blank 4
3D1C: x8 mode.v.h E
3D24: mode.i.v.h E
3D25: blank 4
3D26: x8 mode.v.h E
3D2E: mode.i.v.h E
3D2F: blank 4
3D30: x9 mode.v.h E
3D39: blank 4
3D3A: blank 3
3D3B: x5 blank 8
3D40: mode 6 @ 1E00
3D43: blank 8
3D44: blank.i 8
3D45: x2 blank 8
3D47: blank 1
3D48: x7 blank 8
3D4F: mode.h E @ 0818
3D52: x8 mode.h E
3D5A: mode.i.h E
3D5B: blank 1
3D5C: mode 2 @ 2D00
3D5F: waitvbl 3D00
- LarsImNetz
- Beiträge: 175
- Registriert: 24.08.2021 18:27
- Has thanked: 144 times
- Been thanked: 89 times
- Kontaktdaten:
Re: Mein erstes Spiel...
Um mal das komplette Gegenteil zu zeigen:Ich nutze folgende Tools:
Entwicklungsumgebung: wudsn mit mads als Assembler und Altirra als Emu und zum Souce-Level-Debugging
Sprites: bocianus von Dir erwähnten SpriteEd
Fonts: matosimis von Dir ebenfalls erwähnten FontMaker
Sound/Chipmusik: RasterMusicTracker (RMT) von Raster (R.I.P.) http://raster.infos.cz/atari/rmt/rmt.htm#download bzw. in einer überarbeiteten aber strubbeligen Fassung von VinsCool https://github.com/VinsCool/RASTER-Music-Tracker
Ich nutze folgende Tools:
Entwicklungsumgebung: IntelliJ-CE und Emacs als Editor, Makefiles um die Abhängigkeiten aufzulösen, atasm v1.23 und atari800 oder Altirra, falls ich debuggen muss. Des Weiteren verwende ich meist meine selbst geschriebene Algol 68 ähnliche Sprache zum Programmieren von Dingen, die nicht soo zeitkritisch sind. Sonst natürlich Assembler. Der Compiler nimmt mir echt eine Menge Dinge ab. Das ist dann wie programmieren mit Action oder Basic nur halt ähnlich schnell wie Assembler.
Als Tipp: Ich lege meine Sprite/Font-Daten meist als Binärzahlen im Sourcecode ab, dann sind die Dateien zwar locker 8x größer, aber auf einem aktuellen PC spielt das keine Rolle. So könnte ich auch schnell Dinge anpassen im Sourcecode. Statt Oktal unterstützt mein Compiler die Quad-Zahlen (0-3) damit lassen sich dann mehrfarbige Fonts einfach anlegen.
Grundsätzlich verwende ich Git als Revision-Controll-System. Bei mir lokal auf meinem Server rennt ein Gitea, das verwende ich ausgiebig.
Als Sprite-Editor nehme ich gerne Piskel, damit kann man sehr schnell Animationen zaubern.
Für Sounds habe ich mir selbst etwas zusammengezimmert, nicht weil ich RMT nicht mag, sondern weil ich es einfach wollte.
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast