Willkommen im cgboard - classic games Forum! Deine gemütliche Retro Gaming Community. Besuche uns auch im Discord Chat.

[Info] Asteroids (1979) Programmierwettbewerb
#1
0
Programmierwettbewerb zum 25. c't-Geburtstag

Link

Zitat:Als Ende 1983 die erste c't erschien, standen in den Spielhallen Klassiker wie Space Invaders, Asteroids, Defender oder Pac Man. 25 Jahre später hat sich ein originaler Asteroids-Automat in die Redaktion verirrt und uns inspiriert, Sie herauszufordern: Schreiben Sie ein Programm, das gegen diesen Automaten spielt!

Ich war den Tränen nah' und bin fast in Ohnmacht gefallen als ich das heute gelesen habe. Die c't macht einen Wettbewerb der direkt auf mich zugeschnitten ist. Cry Big Grin
Hab' natürlich schon alles heruntergeladen und das Sample gestartet.
Und gleich der erste Schock: Die erste Idee die ich hatte war es das Raumschiff in Schlangenlinien fliegen zu lassen und dabei Schüsse zu streuen. Das macht das Sample auch...

Wer es sich zutraut ist herzlich eingeladen mit mir ein Team zu bilden. Konkurrenten sind auch erwünscht. Vielleicht kann man sich zumindest eine Zeit lang austauschen.
[Bild: Ready.png]
Zitieren
#2
0
Das hört sich wirklich interessant an ^^
Leider gehöre ich zu denen die nicht Programmieren können und ich wüsste nicht wie man helfen könnte.
Auch wenn ich sehr lernbereit bin und offen bin für alles....
,,,
(o o)
-------------------------------o0O--(_)--O0o-------------------------------
[Bild: DJ_Yoshi.gif]
[Bild: 5763958699.png]
Zitieren
#3
0
Man sollte kleine PowerUps einsammeln können. 10 Sekunden Schnellfeuer, Smartbomb etc. Damit könnte man dem Klassiker ein paar neue Ideen zufügen!
PS: Du bist übrigens mein Lieblingsuser in diesem Board!
[Bild: fyz2bla2s5sxc.gif]
Dieser Beitrag wurde nie editiert. Wozu auch... er ist wie immer perfekt und brillant.
Zitieren
#4
0
Mmh, ich finde das auch interessant und kann nicht programmieren - aber zumindest habe ich schonmal Asteriods gespielt (sicher eine neuere Version).
Was ist denn genau das Ziel? Möglichst lange durchhalten oder perfekt bestehen? Und was ist der Preis? Wenn es sich lohnt, werde ich sofort mit dem Programmieren-Lernen anfangen Wink.
Falls es irgendwie hilft: Ich wäre zumindest bereit, darüber nachzudenken, wie das Schiffchen am effektivsten vorgehen muss, wenn es überleben soll Big Grin.
Zitieren
#5
0
Hab die c't gestern im Halbschlaf (direkt nach der Arbeit) durchgeblättert. Wimre ist das Ziel "höchste Punktzahl in vorgegebener Zeit" oder, wenn ein Programm es schafft, alles Leerzufegen, das in "kürzester Zeit" zu tun.
Zitat:Original von H_D_BS
Lies mal den letzten Post von dx1 Wink
Zitieren
#6
0
Zitat:Ich wäre zumindest bereit, darüber nachzudenken, wie das Schiffchen am effektivsten vorgehen muss, wenn es überleben soll Big Grin .
Jede Diskussion hilft. Es gibt keine dummen Antworten, nur dumme Themen, oder so. Big Grin

Die Preise:
1. Full-HD-Beamer Panasonic PT-AE2000 + Playstation 3 oder 3000€ in Bar
2. 30" Monitor UlraSharp 3008WFP und eine dazu passende Dual-Link Graka oder 2000€ in Plastiktüten.
3. Notebook Acer Aspire 8920G Full-HD und Blu-ray oder 1000€ in kleinen Scheinen.
4. - 25. Jahresabo der c't.
200 Teilnehmer werden zu einer c't-Party eingeladen. (hoffentlich Weihnachtsfeier Wink)

Ansonsten: Ruhm und Ehre. Und man darf asteroids.zip für mame behalten. Big Grin Hat Atari freundlicherweise mal erlaubt. Kriegt man per Mail von c't. Hab' es heute an einem Sonntag bekommen.

Ich mach'das aber natürlich nicht wegen den Preisen. Wink Sondern um den anderen in den Hintern zu treten. Oder mich treten zu lassen... Angry
[Bild: Ready.png]
Zitieren
#7
0
Schicke Preise - so eine PS3 wollte ich schon lange haben Wink.

Wie kann ich mir das Spiel eigentlich ansehen? Ich meine, wenn ich mich damit befassen wollte, müsste ich ja mal das Original-Spiel sehen (ist bestimmt lustig, nachdemich ich gerade Crysis durchgespielt habe Big Grin ).

@E-Lite: Deinem Text entnehme ich, dass es das Spiel für einen Mame-Emulator geben müsste? Ich will mich gleich mal auf die Suche machen, wobei ich da zumindest von Spiele-Quellen keine Ahnung habe.

EDIT: Es gibt ja einige Revisionen und Versionen von dem Spiel (auch eine Deluxe-Version). Ich schau mir mal die allererste und normalste an...
Zitieren
#8
0
Zitat:Original von thEClaw
@E-Lite: Deinem Text entnehme ich, dass es das Spiel für einen Mame-Emulator geben müsste? Ich will mich gleich mal auf die Suche machen, wobei ich da zumindest von Spiele-Quellen keine Ahnung habe.

Ich heisse zwar nicht E-Lite aber hier kriegst du eine Version von Asteroid:
Klick mich
,,,
(o o)
-------------------------------o0O--(_)--O0o-------------------------------
[Bild: DJ_Yoshi.gif]
[Bild: 5763958699.png]
Zitieren
#9
0
Unter dem Link im ersten Post sind auch downloadlinks für die c't-Spezialversion. Komischerweise ist das Rom von Atari mit einer Datei mehr bestückt als die Roms die ich in der freien Wildbahn finden konnte.
Na jedenfalls kann man mit den Downloads ein Sample gegen mame Asteroids spielen sehen. Wie ein Sample so ist, ist er eher simpel gestrickt.
[HIDE]Unter dem Link im ersten Post sind auch downloadlinks für die c't-Spezialversion. Komischerweise ist das Rom von Atari mit einer Datei mehr bestückt als die Roms die ich in der freien Wildbahn finden konnte.
Na jedenfalls kann man mit den Downloads ein Sample gegen mame Asteroids spielen sehen. Wie ein Sample so ist, ist er eher simpel gestrickt.

Ich kann ja meine Versuche hier auch mal posten. Muss natürlich erst mal experimentieren.

Hier ist das Rom: Link

PS: Was hat es geanau mit dem HIDE-Button auf sich? Gilt der für den ganzen Post oder nur für das was im HIDE-Tag steht? Bei mir versteckt der scheinbar mehr als den Hidden-Text. Confused
[Bild: Ready.png]
Zitieren
#10
0
Zitat:Original von thEClaw
Was ist denn genau das Ziel? Möglichst lange durchhalten oder perfekt bestehen?
Ziel ist es, in 10 Minuten möglichst viele Punkte zu erreichen.

Ich könnte zwar mitmachen, habe aber wichtigeres zu tun. Zumal bei einem ersten Preis von 3000 Euro und knapp 3Monaten Entwicklungsziet so manch einer mitmachen wird, der mehr kann als ich bzw mehr Erfahrung in solchen Dingen hat als ich.... ;-)
DFTT <°)))o><
Zitieren
#11
0
Soll ja auch Spaß machen. Ich geh' auch nicht von den ersten Plätzen aus. Dabei sein ist alles. (Im Olympischen Jahr)
Es hat sich bei mehreren c't-Wettbewerben gezeigt, dass meistens sehr simple Progs gewinnen. Und das ist die Chance. Muss ja nicht so ausgeklügelt sein wie wenn's vom Frauenhofer kommt.
Wenn ich in der Mitte lande bin ich zufrieden. Also bei 1000 Teilnehmern Platz 500. Alles darüber ist gut, alles darunter ist schlecht. (Oder ich schieb's auf die Hardware Wink)
[Bild: Ready.png]
Zitieren
#12
0
Also denen im Web kursierenden Asteriods-Versionen fehlt sämtlich eine Datei (behauptet zumindest MameUI). Die lässt sich auch nirgendwo anders auftreiben.

EDIT: 034602-01.c8 heißt die Datei, die ich nicht finde. Oder funktionieren die Emulatoren irgendwie anders? Sind da die Spiele schon dabei? Oder kann man die irgendwo kostenlos runterladen?

EDIT2: Okay, habe gerade gesehen, dass die bei deinem Link dabei ist E-Lite, dann will ich jetzt auch spielen. Übrigens stimmt was mit dem Hide-Tag nicht.
Zitieren
#13
0
Hatte das gleiche Problem. Deshalb hab' ich's mir dann von Heise schicken lassen.
[Bild: Ready.png]
Zitieren
#14
0
Ich habe gerade erst gesehen, dass du eine Frage zum Hide-Button hattest: Der versteckt nur das, was zwischen dem (HIDE) und dem (/HIDE) steht - die runden Klammern musst du durch eckige ersetzen.

Das Spiel habe ich dann gestern abend noch getestet, schon lustig, womit das damals anfing. Wenn ich nachher Zeit habe, will ich mal ein paar Runden spielen und sehen, ob ich das kann Wink.

EDIT: Ich habe jetzt eine Weile gespielt und dabei kam bei mir die Frage auf, über welchen Input das Programm eigentlich verfügen kann: Soll es ohne ablaufen, also völlig automatisiert (dabei ist das Glück wohl sehr wichtig) oder gibt es eine Möglichkeit, dass das Programm die Asteroiden wahrnimmt, gezielt vorgeht und damit den Erfolg maximiert?

EDIT2: Und wo läuft das Programm eigentlich? Ich meine, wieviel Rechenkapazität steht zur Verfügung. Wenn das Programm nämlich mit Daten gefüttert werden kann, dann wäre es ja möglich, das Spiel perfekt durchzuspielen - aber das würde vielleicht schon einiges an Leistung fressen (allzu viel Ahnung habe ich davon auch nicht).
Bekommt es wiederum keine Daten, muss ein Muster her, nachdem man immer vorgehen kann. Das schont zwar enorm den Leistungshunger, aber es kann sein, dass mit steigender Asteroidenzahl das Konzept geändert werden muss.
Zitieren
#15
0
Es gibt eine UDP-Schnittstelle. Man sendet Tastatur-Kommandos und bekommt jeweils ein Frame. Der Frame ist etwas Abstrakt, aber man kann die Asteroiden "orten". Wenn man zwei Frames (das letzte und das aktuelle oder mehr) vergleicht bekommt man auch den Geschwindigkeits-/Richtungsvektor heraus.
Soweit so gut. Das ist die Theorie.
Wie schon gesagt: Wenn du dir die Mame-Version von der c't-Seite herunterlädst und das Player-Sample, kannst due ein Sample spielen sehen. Der Code ist sehr überschaubar und zum ausprobieren unwichtig. Steht alles unter diesem Link

Die Plattform ist ein Intel-Core-Duo. Mehr Power als nötig. Ein Frame besteht nur aus wenigen bytes. Der Frame ist KEINE Pixelgrafik, sondern Koordinaten Skalierungsfaktor und Typ der Grafik. Das halt für jede sichtbare Figur.

Adressen im Vektor-ROM:
Code:
852  Copyright-Meldung  ADD  Buchstabe O/Ziffer 0
   880  Explosion groß (3)  …  …
   896  Explosion (2)  B26  Buchstabe Z
   8B5  Explosion (1)  B2C  Leerzeichen
   8D0  Explosion klein (0)  B2E  1
   8F3  Asteroid Typ 1  B32  2
   8FF  Asteroid Typ 2  B3A  3
   90D  Asteroid Typ 3  B41  4
   91A  Asteroid Typ 4  B48  5
   929  UFO  B4F  6
   A6D  Raumschiff aufrecht  B56  7
   A78  Buchstabe A  B5B  8
   …  …  B63  9

So sieht ein Frame aus:
Code:
000 E001       JMPL $001
001 A11C 0311  LABS (785, 284), s0
003 7000 0000  VCTR (0, 0), s7, z0   ; Ruhezeit
005 7000 F000  VCTR (0, 0), s7, z15  ; Schuss
007 A167 E2BC  LABS (700, 359), s14
009 9000 0000  VCTR (0, 0), s9, z0   ; Ruhezeit
00B 7000 F000  VCTR (0, 0), s7, z15  ; Schuss
00D A19D F281  LABS (641, 413), s15
00F 8000 0000  VCTR (0, 0), s8, z0   ; Ruhezeit
011 7000 F000  VCTR (0, 0), s7, z15  ; Schuss
013 A27B E23C  LABS (572, 635), s14
015 9000 0000  VCTR (0, 0), s9, z0   ; Ruhezeit
017 7000 F000  VCTR (0, 0), s7, z15  ; Schuss
019 A2C4 F126  LABS (294, 708), s15
01B 8000 0000  VCTR (0, 0), s8, z0   ; Ruhezeit
01D C929       JRSL $929             ; UFO
01E A1AB E272  LABS (626, 427), s14
020 9000 0000  VCTR (0, 0), s9, z0   ; Ruhezeit
022 4380 0500  VCTR (-256, 896), s4, z0
024 4720 C680  VCTR (-640, -800), s4, z12 ; Schiff
026 4440 C6E0  VCTR (-736, -64), s4, z12
028 6520 C2F8  VCTR (760, -288), s6, z12
02A 62B0 C5B0  VCTR (-432, 688), s6, z12
02C 46E0 C040  VCTR (64, -736), s4, z12
02E A0A8 E232  LABS (562, 168), s14  ; Skalierung -2 (klein)
030 9000 0000  VCTR (0, 0), s9, z0   ; Ruhezeit
032 C8F3       JRSL $8F3             ; Asteroid (Typ 1)
033 A315 0108  LABS (264, 789), s0   ; Skalierung 0 (groß)
035 7000 0000  VCTR (0, 0), s7, z0   ; Ruhezeit
037 C91A       JRSL $91A             ; Asteroid (Typ 4)
038 A316 E13F  LABS (319, 790), s14  ; Skalierung -2 (klein)
03A 9000 0000  VCTR (0, 0), s9, z0   ; Ruhezeit
03C C8FF       JRSL $8FF             ; Asteroid (Typ 2)
03D A1DA E011  LABS (17, 474), s14   ; Skalierung -2 (klein)
03F 9000 0000  VCTR (0, 0), s9, z0   ; Ruhezeit
041 C8F3       JRSL $8F3             ; Asteroid (Typ 1)
042 A21A F333  LABS (819, 538), s15  ; Skalierung -1 (mittel)
044 8000 0000  VCTR (0, 0), s8, z0   ; Ruhezeit
046 C91A       JRSL $91A             ; Asteroid (Typ 4)
047 A1CF E1DD  LABS (477, 463), s14  ; Skalierung -2 (klein)
049 9000 0000  VCTR (0, 0), s9, z0   ; Ruhezeit
04B C8F3       JRSL $8F3             ; Asteroid (Typ 1)
04C A283 E19D  LABS (413, 643), s14  ; Skalierung -2 (klein)
04E 9000 0000  VCTR (0, 0), s9, z0   ; Ruhezeit
050 C91A       JRSL $91A             ; Asteroid (Typ 4)
051 A127 F132  LABS (306, 295), s15  ; Skalierung -1 (mittel)
053 8000 0000  VCTR (0, 0), s8, z0   ; Ruhezeit
055 C8FF       JRSL $8FF             ; Asteroid (Typ 2)
056 A2EC F25D  LABS (605, 748), s15  ; Skalierung -1 (mittel)
058 8000 0000  VCTR (0, 0), s8, z0   ; Ruhezeit
05A C8FF       JRSL $8FF             ; Asteroid (Typ 2)
05B C852       JRSL $852             ; Copyright-Meldung
05C A36C 1064  LABS (100, 876), s1
05E 7000 0000  VCTR (0, 0), s7, z0   ; Ruhezeit
060 CB2C       JRSL $B2C             ; Leerzeichen
061 CB2C       JRSL $B2C             ; Leerzeichen
062 CB3A       JRSL $B3A             ; 3
063 CB2E       JRSL $B2E             ; 1
064 CADD       JRSL $ADD             ; 0
065 A354 E0A0  LABS (160, 852), s14
067 CA6D       JRSL $A6D             ; Schiff
068 CA6D       JRSL $A6D             ; Schiff
069 CA6D       JRSL $A6D             ; Schiff
06A A36C 01E0  LABS (480, 876), s0
06C 5000 0000  VCTR (0, 0), s5, z0   ; Ruhezeit
06E CB2C       JRSL $B2C             ; Leerzeichen
06F CB2C       JRSL $B2C             ; Leerzeichen
070 CB2C       JRSL $B2C             ; Leerzeichen
071 CADD       JRSL $ADD             ; 0
072 CADD       JRSL $ADD             ; 0
073 A36C 1300  LABS (768, 876), s1
075 5000 0000  VCTR (0, 0), s5, z0   ; Ruhezeit
077 A1FC 11FC  LABS (508, 508), s1
079 B0B0       HALT

1. Spalte: Adresse
2. Spalte: 16 Bit Wert
3. Spalte: 16 Bit Wert (wenn nötig)
4. Spalte: Assembler-Entsprechung (vom Vektorbildschirm)
5. Spalte: Kommentar.


Sieht schlimmer aus als es ist. Für mich sah das auf den ersten Blick auch aus wie Kauderwelsch. Nachdem ich mir das c++ Demo angeschaut hab' und mich an CPC-Maschinensprache erinnert habe, kommt Licht in die Sache.

Ich weiß, ich weiß. Zu viele Infos. Aber wenn ich es erkläre und dabei erneut lese wird es mir selbst klarer...

Aber wie soll die Strategie aussehen? Ständig fliegen oder nur wenn nötig? Immer auf den Asteroiden schießen der am nächsten ist? Lieber auf die großen oder auf die kleinen? Schlangenlinien fliegen mit schießen (Fächerartig)? Ufos zu erst?

Eins ist klar: Ufos zuerst. Alles weitere zeigt sich.
[Bild: Ready.png]
Zitieren
#16
0
Okay, ich würde erstmal sagen: Ich habe keine Ahnung von C (ich konnte allerdings mal einiges mit Java anstellen). Ich kann einen Quelltext also mit viel Mühe lesen und mit noch mehr wäre es wohl möglich, was zu ändern. Aber wenn du das schon kannst, reicht das ja Wink.

Wie weit sind denn deine Programmierfähigkeiten ausgeprägt? Bist du in der Lage, alle Objekte auf einem Frame zu "kartographieren" und mit dem nächsten vielleicht sogar Geschwindigkeit und Richtung zu ermitteln? Oder ist es eher soviel, dass du gefährliche Objekte herausfiltern kannst (z.B. die UFOs)?

Soweit ich mir das vorstelle, müsste es doch möglich sein, eine Reihe von "Objekten" oder Variablen (meine Kenntnisse reichen hier schon nicht mehr) zu erstellen, von denen sich jede für ein dargestelltes Objekt verantwortlich fühlt. Das klingt mir zwar nach richtig viel Arbeit, aber wenn das klappt (das müsste natürlich jede Sekunde o.ä. aktualisiert werden, wobei nicht geänderte Objekte erhalten bleiben), dann hätte man soviele Infos, dass man die Lösung des Problems ohne Gefahr angehen kann. Dabei hätte das Programm dann eben viel zu tun.

Bei der Strategie würde ich sagen: So wenig wie möglich bewegen. Sollte das Schiff die Asteroiden-Bahnen kennen, kann es ja mit Hilfe der Infos über die Schussgeschwindigkeit (gibt es über auf dem Bild befindliche Schüsse eigentlich auch Infos?) genau berechnen, wann wohin geschossen werden muss. Dann dürfte jeder Schuss sitzen. Etwas knifflig wird es dabei vielleicht, die Bahnen von Objekten über den Bildschirmrand hinaus zu ermitteln. Soweit ich gelesen habe, kann die Spielgeschwindigkeit ja variieren, da müsste also erst einmal ein "Eichschuss" her.
Bewegt sich das Schiff, muss es erst auf die Info warten, wie schnell und wohin es sich bewegt (was ja je nach Frame-Rate dauert). Ohne Bewegung kann da womöglich schneller reagiert werden. Allerdings könnte bei einem sich bewegenden Schiff der Bildschirm in eine Richtung ignoriert werden, so dass praktisch jedes Objekt "vor" dem Schiff liegt und innerhalb einer +/-90°-Drehung erreichbar sein müsste.
Es wäre natürlich auch möglich, mit dem "Allzweckzufallsplan" (Zitat aus den Simpsons Wink ) vorzugehen, ohne irgendein Objekt zu identifizieren und die Schüsse in einer ganz bestimmten Weise zu streuen, damit möglichst alles erwischt wird. Allerdings kann das in der Spielendphase stark vom Glück abhängig sein.

Vielleicht sollten wir übrigens erstmal klären, wie das ganze aufgezogen wird - wieviele Leute noch mitmachen und vielleicht auch, wer wo hilft (wie gesagt: Programmieren will ich nicht wirklich Wink ). Danach kann man sich ja auf ein Konzept festlegen, das verfolgt wird. Sag einfach mal was dazu, E-Lite, du hast ja den Thread gestartet Wink.
Zitieren
#17
0
Dann ist die Theorie ja schon gut erfasst. Der Knackpunkt sind die Bildschirmränder. Dann folgt jetzt die Praxis.

Zitat:Vielleicht sollten wir übrigens erstmal klären, wie das ganze aufgezogen wird - wieviele Leute noch mitmachen und vielleicht auch, wer wo hilft (wie gesagt: Programmieren will ich nicht wirklich Augenzwinkern ). Danach kann man sich ja auf ein Konzept festlegen, das verfolgt wird. Sag einfach mal was dazu, E-Lite, du hast ja den Thread gestartet Augenzwinkern .

Alle Teilnehmer die sich gemeldet haben sind:
-keiner-
Da du bei der Praxis nicht sonderlich hilfreich sein wirst (Sorry Wink),kann man von Zusammenarbeit leider nicht reden.
Die Beiträge hier sind rein freiwillig. Wer sich dafür interessiert kann posten. Wie in anderen Threads auch. Ansonsten sehe ich hier kein Team.
Ich muss halt Testläufe starten. Da ich keine 24 Stunden am Tag Zeit habe wird das etwas dauern. Hab' aber schon angefangen Bewegungen der Objekte zu Orten. Die Hauptarbeit besteht nun mal darin, die Theorie in die Praxis umzusetzen...

EDIT: Ich hoffe du verstehst mich nicht falsch.
[Bild: Ready.png]
Zitieren
#18
0
Ist schon in Ordnung, aber Lust habe ich jetzt schon, mich mal damit zu befassen. Mal sehen, ob das was wird, Zeit habe ich nämlich auch nicht viel. Falls du mal eine Idee brauchst, die nichts mit Programmieren zu tun hat, bin ich gern bereit zu helfen Wink.
Und jetzt schaue ich mir nochmal deinen Quelltext an.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste