zatzen hat geschrieben:Das ist die Frage...
Erstmal, das Genre.
Bei Mir wäre das ganz grob Plattform - zweispieler Jump&Kill
oder 2 Spieler Plattform Jump & Help...
Bei mir ist es alles, was in 2D geht. Neulich habe ich einen "Animator" programmiert im Modus 400x300 (ModeX). Mit 400x300 kann man 2 Bildschirmseiten haben (also Double Buffering möglich). Ist einer der vielen VGA.Modes, die meine Grafik-Unit supportet. Wäre an sich schick - weil er aber ein Tweaked Mode ist, wäre natürlich fraglich, ob er auf "modernen Maschinen" läuft - nicht, daß das wirklich wichtig wäre, denn auf "modernen Maschinen" kann man meinen Mist sowieso nicht mehr spielen - außer im Emulator...
zatzen hat geschrieben:Aber wovon ich eigentlich schon ewig Träume wäre ein Adventure.
Nun ist die Frage, wenn ich wirklich ein Adventure machen will,
soll ich wirklich alles selbst coden mit all der Arbeit und den Bugfixes
bis das endlich mal läuft... Oder nutze ich die Allgemein frei zu Verfügung
stehende Enginge, natürlich Windows-Kompatibel, namens AGS (Adventure Game Studio)...
Ich für meinen Teil code nie direkt für Windows. Wenn's unter Windows läuft - Glück gehabt. Wenn nicht - es ist nunmal primär für DOS, d.h. man kann nicht erwarten, daß es auf einem Fremd-OS läuft, auch wenn rudimentäre DOS-Fragmente darin enthalten sind...
zatzen hat geschrieben:Viel mehr als ein DOS-fanatischer Programmierer zu sein bin ich einfach nur auf Pascal eingeschossen, und mit Freepascal komme ich sehr gut klar. Ich habe mich nur noch nicht darum gekümmert, wie ich davon aus Ton und Bild Ansteuere.
Ich bin auch nicht DOS-fanatisch. DOS ist sozusagen das "kleinste gemeinsame Vielfache". Das Gute an DOS ist für mich nicht das, was es
hat - sondern das, was es
nicht hat - als da wäre der völlig überflüssige und ressourcenfressende Überbau, den andere OS so benutzen (inkl. Dingen, die mich daran hindern, VGA-Grafikmodes abweichend der "Norm" zu nutzen oder den Ticker auf hoche Frequenzen zu setzen... - nur um einige Beispiele zu nennen). Ich weiß, daß dieser Kram nötig ist, um Multitasking zu realisieren - aber während man ein Spiel spielt, macht man ja ohnehin selten etwas anderes gleichzeitig auf dem Rechner - eine "Schalte in no-Multitask-Direkt-Modus"-Funktion, z.B. über einen INT, wäre sehr nützlich gewesen. Ja,ich weiß - das korrumpiert die Systemsicherheit. Zur Not kann man das ja vom OS sperren lassen, wenn man das nicht will... Ich habe zu viele Ideen...
zatzen hat geschrieben:Nach wie vor liebe ich aber das sinnvolle und kompakte Strukturieren von Daten, gerade so als müsse man sich mit 640K abgeben.
So geht's mir auch. Und ich muß mich ja in der Tat mit 640kB (bzw 600) abgeben (man kann nicht erwarten, daß jedser User es schafft, 610 oder 620 kB freizuschaufeln... auch wenn's schön wäre).
Ich code ja in RealMode (16bit)... höherer Speicher erschließt sich mir höchstens per XMS - und das ist natürlich nichts für "Echtzeit-Zugriffe"...
zatzen hat geschrieben:Wie seht ihr das?
Was würdet ihr an Spielen in die Tat umsetzen, und würdet ihr auf DOS beharren oder
doch einmal sowas wie Freepascal eine Chance geben, und die dort erweiterten Grenzen
sinnvoll(!) nutzen und nicht z.B. für Hintergrundmusik einfach eine 320kbps mp3 reinklatschen.
Das Problem ist, daß ich nicht nur Pascal, sondern auch ASM nutze - ASM, den ich direkt in den Pascal-Source einbauen bzw damit verzahnen kann. Mit FreePascal sehe ich da keine Möglichkeit, denn ich weiß nicht, inwieweit das dann noch kompatibel zu meinen "Tricks" wäre. Außerdem müßte man da, wenn ASM überhaupt supportet ist, dies wohl im PM machen - damit würden meine Routinen ja nicht arbeiten... Ja - ich bin wirklich von der Sorte, die sogar im Codesegment während der Laufzeit rummurksen - selbstmanipulierender Code - meist durch Registermangel...
zatzen hat geschrieben:Wo wir bei Musik sind: @ DOSferatu:
Wie sieht mittlerweile dein geplanter Musikplayer aus? Du wolltest ja die Notendefinitionen
nicht so wie in einem Trackerpattern strukturieren sondern eher wie bei MIDI durch die
Länge einer Note definieren wie lang sie gespielt wird, wann die nächste kommt usw.
Ist das danm tatsächlich kleiner in den Daten? Und wie steht es mit Effekten wie
Portamento, Vibrato oder gar Arpeggio?
Ich bin momentan noch gar nicht am Bauen des Musikplayers. Aber WENN - dann wird er wohl anders als das, was man von MOD so kennt... Das liegt einfach daran, daß ich aus der 8-Bit-Ära stamme und alles so mache wie damals. Und Musikdaten / -Player würde ich einfach instinktiv zu coden wie aufm C64. - Der Musik-Abspieler wäre in seiner Funktionsweise sowas wie der SID - auch wenn ich manche Funktionen wie Filter nur auf eine sehr kranke Weise simulieren würde/könnte, die Musikdaten wären dementsprechend so, wie man es von einem Tracker für C64-Mucke kennen würde. Ich habe von Musik und der ganzen Dynamik der Klangerzeugung wenig Ahnung, ich tue alles, was ich mache, auf rein mathematische Weise: Grafik, Musik, Steuerung... - ich kann nicht anders, weil mein Gehirn nur so funktioniert...
Aber momentan bin ich immer noch am Zusammenschustern des Sprite-/Block-/Leveleditors. Da sind noch einige Bugs, die wirklich nerven und die entfernt werden müssen. Außerdem will ich den längerfristig "zweigleisig" bauen - eine EXE für die Levels mit 16x16-Pixel-Blocks und eine EXE für die Levels mit 32x32-Pixel-Blocks. (d.h. mit Compilerschaltern). Will nicht beides gleichzeitig in dieselbe EXE tun: mehr Code = weniger Platz für Daten...
Das ganze Menüsystem (die GUI) ist schon komplett ausgelagert und wird mit so einer Art Mini-Skript gebaut. Selbst dafür habe ich einen Editor gebaut. D.h. der Editor ist nur dazu da, die Menüs zusammenzubauen (Fenster, Buttons, Eingabefelder, Pulldowns, etc...)
Also zu allem, was Klang angeht, habe ich hier noch keine aktuellen Sachen vorliegen. Geplant ist ein System, das aus 128 Befehlen besteht - mit 9bit breiten Daten, d.h. jeder Befehl belegt 16bit.
Die Befehle sind: 96, die einen Ton starten, diese enthalten gleich im Befehl den Ton selbst (96 = 12*8, also 12 Töne à 8 Oktaven), die Frequenzen werden aus einer Tabelle ausgelesen. Ich weiß, man kann die Frequenzen berechnen und auch, daß sich diese bei jeder Oktave verdoppelt - aber eine 192 Byte große Tabelle halte ich für vertretbar und es minimiert den Rechenzeitaufwand. Der Parameter des Ton-Befehls wäre die Länge.
Die restlichen 32 Befehle sind dann für administratives Zeug gedacht, z.B. um Schleifen und Subroutinen zu starten oder Dinge wie Portamento und +/-Transponieren zu ermöglichen u.ä.
Außerdem gibt es dann zwei "wechsle Instrument" Befehle. Einer generiert ein "Instrument", indem er eine 256 Byte große "Welle" erzeugt. Diese Welle kann dabei eine Mischung aus Dreieck, Sägezahn und Rechteck enthalten, mit "Umkehrpunkt"... oder eben Rauschen, das mit einem Zufallsgenerator erzeugt wird, andere legen die Hüllkurve fest - vielleicht wird es auch einen "Instrument-Header" geben. Der andere lädt Samples - nach Möglichkeit will ich Samples aber vermeiden, da diese bekanntermaßen wahre Speicherfresser sind. Abgespielt wird das auf die gleiche Art - d.h. die "Instrumente" werden auch als "Sample" generiert. Ich weiß nicht, ob ich es verständlich genug ausdrücken kann.
Das Ganze (die Daten) sieht am Ende dann jedenfalls aus wie eine Art von Maschinenprogramm, der "Player" holt die Klangwellen der einzelnen Stimmen und mischt sie zusammen. Das Ganze wird so minimalistisch ausgelegt, Lautstärken und Hüllkurven mit 4bit-Werten (um die Multiplikationstabellen nicht zu groß werden zu lassen). Für einen Klangfetischisten und Musikfanatiker wird das alles am Ende überhaupt nichts sein - meine Grafiken sind ja auch nur 8-Bit und sehen aus wie 5-Bit... alles sehr "alte Konsole" mäßig.
Ich ahne auch, daß sich die Begeisterung aller Anwesenden (außer echter "Retro" Fans) in engen Grenzen halten wird - etwas besseres als die häßliche Xpyderz-Grafik wird von meiner Seite kaum jemals zu erwarten sein, obwohl ich dieses Mal vorhabe, die Grafik von Hand zu zeichnen und zu scannen und dann mit dem Editor entsprechend auszuschneiden und in "Spielformat" für die Engines zu bringen. Und klangtechnisch ist von mir auch eher sehr Bescheidenes zu erwarten. Ich bin eben ein Coder, ich kann sonst nichts außer Coden - und selbst das nicht besonders gut..
Nun können sich freecrac und andere wieder über meinen altmodischen Müll auslassen - wird wahrscheinlich trotzdem nicht dazu führen, daß ich etwas anderes tue.
Übrigens bin ich immer noch am Überlegen, ob ich als erstes mein geplantes Jump&Run oder das Shoot'em'up (in der Art wie Katakis/R-Type/Gradius) umsetzen werden - die Engines/Editoren sind für beides ausgelegt. Das Shoot'em'up wird wohl einfacher werden, da es einfach nur das wird, "was es ist": Keine Story drumherum und keine der "krassen" Dinge, die ich mit dem Jump&Run vorhabe... Es wäre aber trotzdem auch mit Liebe und Hingabe gemacht (und mit Programmierung), und es wäre wenigstens erst einmal ein sichtbares Ergebnis meiner jahrelangen Bemühungen...
Anmerkung: Ich denke übrigens auch öfter mal wieder über Multiplayer-Systeme nach - aber das hat schon in Xpyderz nicht so geklappt wie es sollte (ja, Xpyderz war ursprünglich als Multiplayer für biszu 16 Spieler gedacht), muß da mal von Grund auf etwas an meinen IP-TCP/UDP Routinen ändern, sowie am darauf aufliegenden Multiplayer-Protokoll. Allerdings wäre die Realisierung dieser Dinge eine weitere Baustelle, die ich gern erst einmal auf später verschieben würde.
OK, erst einmal genug davon. Ich ahne schon: Wenn ich es überhaupt 2013 schaffen werden würde, ein fertiges Spiel zu präsentieren, wäre das schon eine großartige Sache... Momentan verliere ich mich wieder in Kleinigkeiten... Naja, der Fluch des Single-Programmierers. Im Team würde man sich wohl gegenseitig motivieren und etwas stringenter vorgehen - wenn es ein
gutes Team ist.
Genug Gelaber für heute.