Minimalist Compo

Übersicht Sonstiges Projekte

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen

BladeRunner

Moderator

Betreff: Minimalist Compo

BeitragSa, Jan 26, 2013 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ihr Lieben,
ein zugegeben recht spontaner Schnellschuss meinerseits, entstanden aus einem Gespräch im Chat.

Willkommen zur (vorläufig einmaligen) Minimalist-Compo.

Worum geht es?
Wir haben uns im Chat über alte Konsolen unterhalten und kamen dabei auch auf die Atari 2600 zu sprechen.

Diese hatte sagenhafte 128 Byte RAM zur Verfügung, und für diese Konsole wurden (und werden noch heute) mehr als 1200 Spiele geschrieben, trotz der unglaublich geringen Speicherkapazität.

Das hat mich ins Nachdenken gebracht - wieviel Platz braucht ein Spiel?
Da wir hier kein Assemblerforum sind wollte ich die Begrenzung im Rahmen der Blitzmöglichkeiten setzen:

Schreibt ein Spiel welches maximal 256 Befehle/Operanden benutzt.

Zur Erläuterung ein paar Beispiele
:
- Drawline x,y,x1,y1 benötigt 5 'Byte', da es aus Befehl und vier Operanden besteht.
- a = b+c benötigt 3 'Byte'; da es sich um 3 Operanden handelt - Zuweisungen und +-*/ sind umsonst.
- Strings benötigen soviele 'byte' wie sie Zeichen haben. Ausnahme sind Dateinamen für LoadBefehle, die sind kostenlos.
- Function/EndFunction bzw. Method sind kostenlos, es zählen die Befehle in der Function und jeder Aufruf.
- Ausser Konkurrenz zählt das initialisieren des Programms für die Grafik, die Atari war ja immer im Grafikmodus.
Ebenso die Mainloop mit Grafiklöschen und dem obligatorischen Flip bzw. einem "Ausschalter" für die Konsole in Form der Escape-Taste.
Folgender Code ist also für alle Teilnehmer kostenlos:
BlitzMax: [AUSKLAPPEN]
Graphics 640,400
Repeat
Cls

Flip
Until KeyHit (KEY_ESCAPE)
(bzw. der adäquate Code für BB, Monkey)

Das Thema des Spieles ist vollkommen egal, die einzigen Beschränkung liegen in den 256 virtuellen 'Byte' Code und der Tatsache dass das ROM der Konsole auf 4096 Byte begrenzt ist, d.h. Bilder die ihr einladen und verwenden wollt müssen -in ihrer unkomprimierten Form- in diese 4096 Byte passen.
Dazu gilt: Anzahl der Pixel * Farbtiefe(verwendete Farben), ein Bild von 16*16 Pixeln in Schwarz-Weiss würde also 256 bit (32 Byte) benötigen, ein gleichgroßes Bild mit 2^4(=16) Farben benötigt schon 128 Byte.
Den Sound möchte ich nicht regeln, da der damals ja on the fly generiert wurde. Wenn ihr also genretypische Piepslaute erzeugen wollt zahlt ihr nur für den Ladebefehl und die Ausführung, der Sound selbst ist frei.

Da dies vollkommen spontan ist, würde ich mal sagen gebe ich euch Zeit bis Sonntag, den 10.02.13, 23.59.

Bitte alle Games als Exe und Code einstellen, erlaubt sind auch alle Zusatzmodule für die jeweiligen Sprachen, aber bedenkt: jeder Befehl und jedes Argument / Datum zählen als ein 'Byte', das wird schnell knapp.

Kommentiert reichlich - Wir wollen was lernen!

Viel Erfolg, und ich hoffe die Idee kommt gut an.

Wenn ihr Fragen habt, gern Smile


FAQ:
Zählen local und Global als Befehle?
Nein, auf diesen Konsolen gibt es rein technisch nur Globale. Um es für euch ein wenig einfacher zu machen sind die Befehle erlaubt und kostenlos: local a=22 kostet also 2 Byte, keine 3.

Was ist mit mehreren Befehlen in einer Zeile, geht das?
Ja, der Trenner ist ebenfalls umsonst. Tut mir und euch einen Gefallen und fügt als Kommentar in jeder Zeile hinzu wieviele Bytes sie kostet und wieviel ihr gesamt verbraucht habt. Macht die Kontrolle wesentlich leichter.

Was ist mit If-Then, sind das zwei Byte?
Nein, das Then (ebenso wie zB auch das To bei For-Next) gehört implizit zum Befehl dazu und kostet nichts. Allerdings würde ein Else durchaus zu Buche schlagen.
  • Zuletzt bearbeitet von BladeRunner am Mo, Feb 11, 2013 8:22, insgesamt 5-mal bearbeitet

BlitzMoritz

BeitragSa, Jan 26, 2013 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
An sich wieder eine spannende Sache.
Ich gebe nur zu bedenken, dass mit dieser Initiative und dem MiniBCC am nächsten Wochenende drei Code-Wettbewerbe gleichzeitig laufen, wobei für den aktuellen BCC eineinhalb Monate, deine im Chat angeregte MiniCompo über eine Woche, aber dem kommenden MiniBCC nur drei Tage reserviert sind. Man kann mutmaßen, welcher auf der Strecke bleiben und keine oder die wenigsten Teilnehmer haben wird. Zumindest halte ich die Gleichzeitigkeit dreier Projekte nicht gerade für förderlich, um der allseits beklagten geringen Resonanz entgegenzuwirken.
Man hätte ja per PN anfragen können, dieses Thema als nächsten MiniBCC zu starten, ich hätte nichts dagegen gehabt. So aber bleibt nur die Skepsis, ob nächstes Wochenende überhaupt jemand mitmachen wird, welche Mühe auch immer ich mir bei der Themenstellung geben werde.

BladeRunner

Moderator

BeitragSa, Jan 26, 2013 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Oha, den Mini BCC hätte ich in der Tat verschwitzt. Um dem Aus dem Weg zu gehen verlängere ich die Abgabe für diesen Wettbewerb um eine Weitere Woche, Startpost editiere ich passend.
Damit können die MiniBCCler ungestört arbeiten und es bleibt hinterher 'ne Woche Zeit um hier zu arbeiten.
Ich hoffe dieser Kompromiss ist tragbar Smile
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

PSY

BeitragSa, Jan 26, 2013 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Geile Idee. Ich glaub ich mach da mal mit ^^


PSY
PSY LABS Games
Coders don't die, they just gosub without return

BladeRunner

Moderator

BeitragSo, Jan 27, 2013 0:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur um zu zeigen dass es absolut möglich ist hier ein kleiner Appetithappen:
Shoot-OUT
Ein simples Shootergame in 109 virtuellen Bytes.
Spieler 1: W-hoch, S-runter, X- Schiessen
Spieler 2: Cursor Up/Down und Enter
Das Spiel läuft endlos bis mit Escape die Konsole abgeschaltet wird.

Da ich beim Versuch dieses Schmankerl zu erstellen gemerkt habe dass der Platz extremst knapp ist stelle ich zur Diskussion das RAM zu erhöhen auf 256 Byte (der Tatsache geschuldet dass BASIC was anderes als ASM ist), immerhin ist die Contestidee wirklich on-the-fly entstanden und daher denke ich man sollte flexibel reagieren. Eure Meinung interessiert mich.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

PSY

BeitragSo, Jan 27, 2013 2:12
Antworten mit Zitat
Benutzer-Profile anzeigen
vote for 256 Smile
PSY LABS Games
Coders don't die, they just gosub without return
 

dont_know_to_use

BeitragSo, Jan 27, 2013 11:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Muss es eine EXE sein? Mein Windows funktioniert gerade nicht. Confused

Aber immerhin eine coole Idee.

BladeRunner

Moderator

BeitragSo, Jan 27, 2013 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Da der überwiegende Teil der Nutzer Windows nutzt und nicht jeder jeden Blitzdialekt besitzt wäre es in der Tat von Vorteil. Allerdings soll es nicht an mir scheitern ein oder zwei Exen selbst zu erstellen. Nur bei Monkey bin ich außen vor.

Falls ihr also Eurer Game vor Einsendeschluss schon zeigen wollt und nicht kompilieren könnt sendet den Source+Medias per PM an mich und ich erstelle die Exe für euch.



Nachdem PSY als einziger geantwortet und sich für eine Erweiterung ausgesprochen hat (was mEn auch wirklich sinnvoll ist), werde ich die Grenze auf 256 Byte anheben. Startpost wird angepasst.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

DAK

BeitragSo, Jan 27, 2013 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich find die Idee genial. Ich hab letztens für die Uni just-for-fun einen Emulator für den Micro16 (ein Demo-Prozessor, der nur für die Vorlesung Technische Grundlagen der Informatik an der TUWien verwendet wird) geschrieben (den verwenden sie auch jetzt in den Vorlesungen).
Das Ding hat zwar 128kb RAM, aber das ist ein reiner Datenspeicher. Der Programmspeicher liegt auf einem anderen Speicher, und hat nur 256 Zeilen Platz. Auf dem Ding hab ich schon einen fast funktionsfähigen Pong-Klon geschrieben, mit derzeit 68 Zeilen.

Ich werd mit guter Wahrscheinlichkeit mitmachen.
Gewinner der 6. und der 68. BlitzCodeCompo

PSY

BeitragDo, Jan 31, 2013 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
@Bladerunner

Ich hab ne Frage zu der Aufloesung. Die original Console hatte ja 160*200.
Das Codebeispiel hier benutzt 640*400.

Ist die Aufloesung jedem frei ueberlassen oder sollten wir uns lieber auf eine Aufloesung einigen, die jeder benutzen muss?
Ich finde eine einheitliche Aufloesung besser. Das macht den Contest irgendwie spannender und bringt das Retro-Feeling besser rueber...

PSY
PSY LABS Games
Coders don't die, they just gosub without return

BladeRunner

Moderator

BeitragDo, Jan 31, 2013 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte 640*480 aus Gründen der Größe im Fenster gewählt, möchte es aber jedem frei überlassen. Die Begrenzung des ROM wird dafür sorgen dass es keine großen Ausreisser geben wird, schätze ich.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Jan_

Ehemaliger Admin

BeitragFr, Feb 01, 2013 9:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Global enemy%[5,2] '= 11byte?

5x2= 10 und 1 für das deklarieren?

sind
Code: [AUSKLAPPEN]
For i=0 To 20

4 oder 3 byte?=
between angels and insects

BladeRunner

Moderator

BeitragFr, Feb 01, 2013 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrays zählen ein Byte pro Variable die sie enthalten.
Deklarationen sind kostenlos, erst die Zuweisung kostet.
For i = 0 to 20: blub():Next
for(1)
i(1)
=(0)
0(1)
to(0)
20(1)
Blub() (1)
next(0)

-> 5 Byte gesamt für diese Schleife.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

PSY

BeitragFr, Feb 01, 2013 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich finde die Idee echt spitze.

Da die Codes relativ simpel sind, eignen sich die Compos auch fuer Neulinge. Pro's koennen ihre Kreativitaet und Codeeffizienz trainieren...

Es gibt ja genug Konsolen vor dem 80er Crash, zB Atari 2600, PhilipsG7000, Coleco Vision, Atari 5200, SG-1000, Vectrex, Interton VC4000 und was weiss ich noch alles.
Koennte man vllt nen regelmaessigen Retro-Contest draus machen Exclamation
Waer halt sehr nice, wenn man sich an die Aufloesung der jeweiligen Console halten muss.

PSY
PSY LABS Games
Coders don't die, they just gosub without return

BladeRunner

Moderator

BeitragFr, Feb 01, 2013 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Sollte es zu einer Neuauflage kommen werd ich die Regeln deutlich durchdachter angehen. War ja wie erwähnt ein Schnellschuss.
Aber erstmal bin ich auf die Resonanz gespannt.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

PSY

BeitragDi, Feb 05, 2013 1:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoi,

hab noch ne Frage:
Kann ich verschiedene Farbtiefen mit verschiedenen Bildern benutzen, zB ein Bild das insgesamt 16 Farben benoetigt (4 Bit) und ein anderes, das ingesamt 256 Farben benoetigt (8 Bit)?

Beispiel:
1. Bild 20px * 20px * 4Bit Farbtiefe(016 Farben) = 1600 Bit = 200 Byte
2. Bild 10px * 10px * 8Bit Farbtiefe(256 Farben) = 0800 Bit = 100 Byte
Arrow Insgesamt 300 Byte

Oder muessen alle Bilder die gleiche Farbtiefe nutzen?


PSY
PSY LABS Games
Coders don't die, they just gosub without return

BladeRunner

Moderator

BeitragDi, Feb 05, 2013 5:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Du darfst gerne mischen, und auch die Paletten bei mehreren Bildern gleicher Farbtiefe dürfen verschieden sein.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

aMul

Sieger des Minimalist Compo 01/13

BeitragDi, Feb 05, 2013 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Finde das hier eine super Idee, und bin froh das verlängert wurde, habs erst jetzt gesehen.

Ein paar Fragen, nur um sicher zu gehen:

Funktionen sind erlaubt und zählen nicht extra? (ihre (optionalen) Parameter?)

Sind Types erlaubt? Wenn ja, wie zählen sie? (Definition, Erstellung, Benutzung, Löschen)

Sind Goto und Gosub erlaubt, und wieviel kostet sie und kosten die Labels extra?

Kostet der return Befehl? (Und der evtl zurückgegebene Wert?)

Konstanten?

Ich verstehe ansich schon, dass es nicht wirklich ums Kleingedruckte geht, aber gerade bei so einer Aufgabe möchte ich auf alle Fälle das maximum rausholen, entsprechend die Fragen.
Mir Fallen zum Beispiel eine ganze Reihe Möglichkeiten ein Types zu initalisieren, und man möchte schon wissen, welches die günstigste ist.. Mr. Green
Wobei ich gerade beim Ausprobieren bei allen auf die gleichen Kosten komme.. zumindest so gut wie ich sie verstehe. Ich bitte um Aufklärung! Wink

BlitzBasic: [AUSKLAPPEN]
Type T
Field a
Field b
End Type

Local t.T = makeT(1, 2) ; 4?
; 4 in total

Function makeT(a, b) ; 2 (a, b)
Local t.T = New T ; 2? (t, New T)
t\a = a ; 2 (t\a, a)
t\b = b ; 2 ..
Return t ; 1?
End Function
; 9 in total


BlitzBasic: [AUSKLAPPEN]
Type T
Field a
Field b
End Type

makeT(1, 2) ; 3 (makeT, 1, 2)
Local t.T = Last T ; 2?
; 5 in total

Function makeT(a, b) ; 2 (a, b)
Local t.T = New T ; 2? (t, New T)
t\a = a ; 2 (t\a, a)
t\b = b ; 2 ..
; return ; invisible return with cost 0?
End Function
; 8 in total


BlitzBasic: [AUSKLAPPEN]
Type T
Field a
Field b
End Type

Global a = 1 ; 2
Global b = 2 ; 2
Gosub makeT ; 1?
Local t2 = Last T ; 2?
; 7 in total

.makeT
Local t.T = New T ; 2?
t\a = a ; 2
t\b = b ; 2
Return ; 0?
; 6 in total


Ich bitte um Verzeihung, sollte ich hier viel zu kompliziert denken.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver

BladeRunner

Moderator

BeitragDi, Feb 05, 2013 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktionen als auch Types sind in ihrer Definiton kostenlos - einzig die Deklaration und der Zugriff kosten.
Die von Dir geposteten Beispiele sind soweit ich das überblicke korrekt, einzig new kostet (da eine Operation) ein Byte.
Da Return unter BB implizit möglich ist, bei BMax aber nicht ist als Notbehelf ein Return pro Function kostenloser Code, danach gilt 2 Byte (Befehl + Operand).
Goto und Gosub sind erlaubt, sie kosten jeweils 2 Byte (Befehl+1 Operand) Die labels als solches sind bei Deklaration kostenfrei.
Konstanten kosten wie jede andere Variable auch, d.h. die Zuweisung des Wertes an die Konstante kostet ein Byte, später jeder Aufruf auch.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

aMul

Sieger des Minimalist Compo 01/13

BeitragDi, Feb 05, 2013 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, danke fürs erklären.
Wobei ich anmerken muss, dass die Kosten von Konstanten natürlich das Programm minimal übersichtlicher machen ohne die Funktion zu verändern.
Aber bei der größe der schreibbaren Programme lässt sich das wohl verkraften.

Happy Coding!
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group