CIVILIZATION-1 auf dem C64 möglich?

  • BastetFurry schrieb:

    Das ist dann C mit gruseligen Defines...

    was ist denn an diesen "defines" so gruselig?

    Quellcode

    1. #define STRING char *
    2. #define IF if(
    3. #define THEN ){
    4. #define ELSE } else {
    5. #define FI ;}
    6. #define WHILE while (
    7. #define DO ){
    8. #define OD ;}
    9. #define INT int
    10. #define BEGIN {
    11. #define END }
    Alles anzeigen


    BastetFurry schrieb:

    dat macht man nicht, (...)

    wer oder was hindert dich denn daran?

    BastetFurry schrieb:

    (...) ausser man will beim IOCCC mitmachen. ;)

    der sinn und zweck bei IOCCC ist doch, dass man die funktionsweise eines programms kaschieren möchte. und hier dienen diese makros deiner angemahnten "lesbarkeit", also genau dem gegenteil ; )
  • zum Test-screenhot: so geht das im charmode NICHT leider.
    Wurde aber schon gesagt meine ich?
    Man muesste dafuer echtes bitmap hires verwenden. da hat man pro 8x8 Feld echt 2 Farben frei.
    Wenn das Spiel rundenbasiert ist, waere das auch mit der geschwindigkeit kein Problem....

    KI - alle reden von KI und Problemen. Hat schonmal überhaupt wer hier irgendeine KI programmiert?
    Das geht durchaus auch in assembler. Da erst recht.
    Entweder ist KI naemlich simple - dann braucht man kein C
    oder komplex - dann nervt auch C weil es eben doch deutlich unoptimierter als asm ist und bleibt...
    Ich kenn CIV zu wenig aber Leute die bisher nur Basic machen rate ich von C fur den C64 deutlich ab!
    Nur wenn man C eh kann mag das Sinn machen - da muss man sich aber in so manche Sonderlichkeiten von cc65 eingewoehnen.
    Zoomania hat zwar C aber ich denke vor allem als Selbstzweck und Reiz den Hannenz daran hatte. Nicht weil es sein musste...

    Keiner der BASIC macht kommt jetzt mit C grossartig weiter - das ist mal meine destruktive Prognose...

    Dann lieber sone BASIC Erweiterung hernehmen oder spaeter compilieren oder was weiss ich...
    ein SIMPLES Civ - also charblocks und Rundenbasiert ist sicher auch ne feine Sache fuer Assembler-Anfänger! da man kaum hardwarenah programmiert.
    Da hilft jedes 6502-Asm-Buch weiter...

    Die Idee finde ich nett....


    Gruss,
    enthusi
  • enthusi schrieb:

    (...) Leute die bisher nur Basic machen rate ich von C fur den C64 deutlich ab! (...) Keiner der BASIC macht kommt jetzt mit C grossartig weiter - das ist mal meine destruktive Prognose...

    manches lässt sich nunmal nicht mit basic realisieren. dann kommt man mit c viel schneller zu brauchbaren ergebnissen als mit assembler. zumal jeder zweite hier im forum über zu wenig zeit für dieses oder jenes klagt.

    und sooo schwer zu lernen ist c auch wieder nicht ...
  • @enthusi:

    Jaja, ich kann mir schon denken, worauf der Angriff abziehlt.

    Bevor durch meine Argumentation der Eindruck entsteht, dass ich überhaupt kein Assembler kann: home.arcor.de/skoe/the_house_e.html, die Arcorn-Demos sind auch größtenteils Assembler. (Aber nicht lachen, die Seite ist ziemlich alt und naiv).

    Also meine Meinung:
    - BASIC ist Mist (besonders das C64-BASIC)
    - Compiliertes BASIC ist Mist, der schneller läuft
    - Mit Assembler kann man alles machen. Mehr geht nicht. JEdenfalls wenn man genug Zeit hat (die ich z.B. als Schüler hatte, jetzt nicht mehr)
    - Mit 90% C und 10% Assembler kann man sehr viel machen. Sogar auf dem C-64.
    - Mit C ohne Assembler kann man immernoch wesentlich mehr machen als mit BASIC, und auf alle Fälle strukturierter als in C

    Aber: Wo es extrem eng mit dem Speicher aussieht oder wirklich die letzten Taktzyklen rausgeknautscht werden müssen, kommt man um Assembler definitiv nicht rum. Jedenfalls nicht auf dem C64.

    Mhh, oder vielleicht hattest Du mal ein ganz böses Erlebnis mit C? :)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Bau Dir ein eigenes Modul! EasyFlash
  • Ich liebe C und arbeite damit quasi jeden Tag :)
    Auch ist es vielleicht echt sinnvoll cc65 für tools oder sonstwie zu verwenden....
    WAS ich aber meinte ist dass ich C (am C64) niemals jemanden raten wuerde der bisher nur halbwegs (halbwegs, weil BASIC durchaus durchwachsener ist als man so denken koennte) BASIC kannte.
    Basic -> C -> Assembler macht am C64 -meines Erachtens anch- überhaupt keinen Sinn als Werdegang.
    Wer schon C kann und Basic kennt, der mag das GERN probieren :)
    Ich bin der letzte der meckert wenn hinterher was bei rauskommt :)
    Und meine Aussage zu KI sollte nicht angreifen :) ich hab da selbst nur sehr begrenzte Erfahrungen....

    Na, man wird sehen :)
  • Nochmal warum KI problematisch

    enthusi schrieb:

    ...
    Und meine Aussage zu KI sollte nicht angreifen :) ich hab da selbst nur sehr begrenzte Erfahrungen....

    Na, man wird sehen :)
    Nunja, nochmal weg von Sprache, hin zu K.I. und den von mir erwarteten Schwierigkeiten.

    'Ne KI für 'ne Simulation diesen Ausmaßes werden wohl die wenigsten von uns je geschrieben haben. Ich schloss nur ganz einfach mal ganz dreist über meine Versuche mit reiner WiSi (allerdings im Gegensatz zu vielen auf dem C64 existierenden Teilen dieser Art halbwegs plausibel), dass ne Civ-KI ziemlich dauern wird, Sprache erstmal egal.

    Grund: Pro Stadt des Computergegners und Pro Einheit müssen Entscheidungen getroffen werden, Runde für Runde. Bedeutet Schleifen, die im fortgeschrittenen Spiel (und erst dann rockt Civ ja) nun mal immer länger werden... Da liegt der Hase im Pfeffer. Die Jahre 4000 BC bis 1000 AD werden nicht das Ding sein (bei guten Spielern kann das früher enden). Aber wenn erstmal ein Computer-Gegner 5 Städte kontrolliert und (Civ-1-doof wie er ist) pro Stadt ca. 8 Einheiten befehligt....
    an allem schuld (sagt Sauhund, und der ist bekanntlich nicht ohne)
  • Hi!

    Ich hab auch mal über den Screenshot vom Spectrum nachgedacht. Kann man das nicht vielleicht doch hinkriegen?
    Wenn man in den oberen 20 Zeilen die Karte darstellt und da diesen Charsetmodus mit den 4 Hintergrundfarben nutzt?!

    Man könnte mit der Charsetfarbe den Spieler angeben und mit den 4 Hintergrundfarben noch die Unterschiede zwischen Land, Meer, Wüste und noch was zeigen.

    Dann müsste man natürlich mit 64 verschiedenen Zeichen hinkommen.

    In Zeile 21 dann nen IRQ anlegen und damit Charset und Modus wechseln, so dass man darunter normalen Text anzeigen kann ?!

    Nur so ne Idee.

    Gruß,
    Andreas
  • Bin zwar kein C64 experte (habe bloß nur einen Grafikkonverter programmiert), aber bai 4 Farben (4 Hintergrundfarben ist etwas übertrieben) hast du Lowres. Es gibt da eine globale Farbe und 3 frei wählbare Farben im Bitmap-Modus, eine davon könnte man ja mit POKEs auf Spielerfarbe umfärben (bei Bewegung in Char-Grenzen kein Problem) Jedes Feld könnte dann auf eigene 3 Farben+Global zurückgreifen ohne Rastereffekte zu nutzen. Der Screen hat dann 10 Kb, bleiben also noch gut 6 Kb für Sprites (Overlay wie Straßen, Eisenbahnschienen).
    Genausogut könnte man das ganze aber auch im Hires-Modus machen. Ein guter Grafiker schafft es schon mit 2 Farben in 8x8 Feldern hervorragende Grafiken zu erstellen, und auch hier lassen sich Sprites fürs Overlay nutzen.
    Ich wollte das schockierende zum schluss aufheben: Falls es wen interessiert: Es gibt eine Spectrum 128K Umsetzung von Civilization die bessere Grafik als Anno Domini hat: worldofspectrum.org/infoseekid.cgi?id=0012774
    Da werden vielleicht jetzt ein paar von Euch Augen machen... Na ja schade dass die Vollversion nicht auffindbar ist.
    Na ja, und um die Sache perfekt zu machen: Master of Orion gibt es da auch: worldofspectrum.org/infoseekid.cgi?id=0012941
  • Ich denke er meinte den Extended Char Modus (ECM).
    Da hat man mehr Farbfreiheiten als im standard hires char aber das ist ne nervige Sache.
    2 bits des Chars selbst geben die 2. Farbe (bzw deren Quelle) naemtlich d021-d024.
    Also fuer den gesamten Screen nur 4 Hintergrundfarben.
    Dann gibt es nur noch 6 bits um das char selbst zu definieren also nur noch 64 möglich.
    Das lohnt nicht denke ich.
    Dann eher echte Hiresbitmap verwenden. Das kann man schneller machen als man denkt. Ich code selbst grade nen game das das verwendet :)
  • @LCD:
    Die Sprites können bei CIV aus bleiben oder im oberen Rahmen für Gold und Forschungspunkte "vergammeln".
    Und das MoO ist wohl eher ein Star Control Clone im MoO Universum ;)

    @enthusi:
    Meinst also in den Bitmap Modus wechseln und die Chars zu Fuß reinschreiben?
    SELECT signatur FROM dummesprueche WHERE forumsbezug > 0
    0 rows returned.
  • BastetFurry schrieb:

    Meinst also in den Bitmap Modus wechseln und die Chars zu Fuß reinschreiben?


    Jup. Das hat mehrere Vorteile.
    Man hat dann nen 256 Byte Lookup-table fuer die colorcodes.
    High nibble BG, low nibble FG.
    Dann hat man nicht nur 64 Zeichen und im Zweifel auch locker mehr als 256. Wie man eben mag,
    Im Speicher hab ich ne MAP mit z.B. ....,$35,....
    dann lda map; tax; lda color,x; sta $d800 blabla
    Und eben die passende bitmap zum char kopieren.
    Die MAP ist also lediglich pointer auf grafik und farbe. Man koennte da auch 16 bit nehmen
  • BastetFurry schrieb:

    @LCD:
    Die Sprites können bei CIV aus bleiben oder im oberen Rahmen für Gold und Forschungspunkte "vergammeln".
    Und das MoO ist wohl eher ein Star Control Clone im MoO Universum ;)


    Auch eine gute Idee, aber wie willst du bei Hires sonst die Straßen und Eisenbahnschienen machen? Dann müßte man ja die Vordergrund-Farbe nutzen, und diese kann nicht immer braun bzw Schwarz sein. Eventuell müßte man die anderen Grafikdetails (Terrain) löschen, dann kein Problem.
    Das MoO ist ein MoO Klon, und spielt sich auch so (Strategie, Forschung, Planetenupgrades, Rundenbasierende Weltraumkämpfe), Star Control kenne ich, ist nur ein Action game wo sich zwei Raumschiffe beharken: worldofspectrum.org/infoseekid.cgi?id=0004813

    @enthusi:
    Das mit dem ECM Charmode ist sehr interessant, demnach nimmt der Screen in diesem Modus 1 Kb ein (Ich nehme an dass es nur eine Vordergrundfarbe gibt). Mit CHarmode verbinde ich eher so BASIC-C64 PD Titel wie "Godzilla"
    Bei Bitmapped mode haben 256 Tiles alleine schon 9216 Bytes (wenn man die Farbattribute dazurechnet, dazu 9 Kb Screen, bleiben 46 Kb für das Spiel, 16 Bit Pointer in der Map macht da wenig Sinn, ausser man möchte noch weitere Landschaftsinformationen binär speichern. Texte und Bilder der Civilopedia kann man problemlos nachladen.
    Bei meinem Tileset (Mit Küstenlinien, Städteausbaustrufen, Wüste, Eis und ein paar Bonusfeldern komme ich momentat auf 72 Tiles, also ist die Verwendung von 128-256 Tiles durchaus realistisch. Mehr braucht man kaum.
  • Benutzer online 2

    2 Besucher