Ansatzpunkt von Spielen wie Doom1/2 usw... ?



  • Original erstellt von rapso:
    schau dir infos zu raycasting an, ich hab früher auch ma sowat zur übung gecodet, hat einige monate gedauert und ich bin mir sicher, ich würde mit dem wissen was ich (auch dabei) erlangte das dingen in vielleicht ner woche coden (wenn grafik fertig wäre), aber hätte ich das nie gemacht, wüste ich es heute auch net!

    Du meinst Du würdest Doom innerhalb einer Woche komplett neu programmieren?! Mit KI? Mit Netzwerk? Mit Spiellogik? 😃 😃 😃
    Oder meinst Du nur den Raycaster an sich?

    [ Dieser Beitrag wurde am 26.03.2003 um 13:25 Uhr von TomasRiker editiert. ]


  • Mod

    doom1 hatte KI und logic?
    hmm.. also bei mir war das nur stupf auf den spieler zu bewegen sofern keine wand dazwischen war... oder hab ich da was verpasst..

    hm.. spiellogic? also den spieler durch die gegend schieben und wenn man die leertaste drückt dann ne tür aufmachen? das menü hat wohl mehr logic als das spiel.

    ich weiß auch garnicht ob doom1 netzwerk hatte, doom2 konnte man glaube ich per nullmodem verbinden... *kopfkratz*

    aber ja, sowat stupfes codet man heutzutage in einer woche.

    man muss keine fixpoint mathlib machen, man muss nicht mit try&error debuggen, lediglich die grafik darstellen und die bots auf einen zulaufen lassen und vielleicht mit playsound ne wav abspielen...

    tetris wäre schwerer.

    rapso->greets();


  • Mod

    Original erstellt von <Sgt. Nukem>:
    **Du spielst doch hoffentlich nicht auf TGGC an...!?! 😉 :p
    **

    *pfeif*
    ach nö, das würd doch hier niemand behaupten 🙂

    rapso->greets();



  • Original erstellt von rapso:
    tetris wäre schwerer.

    Das kannst Du doch wohl nicht ernst meinen!
    Dass Tetris schwerer zu programmieren ist als Doom?! Völliger Unsinn...
    Sicher haben die Gegner dort auch eine gewisse Intelligenz! Und es gab doch sicher auch Gegenstände wie Schlüssel oder ähnliches (oder nicht?). Und Aufzüge, Fallen? Endgegner?
    "Netzwerk" (Multi-Player-Modus) unterstützte Doom 1 auch.

    [ Dieser Beitrag wurde am 26.03.2003 um 14:06 Uhr von TomasRiker editiert. ]



  • Trotzdem codet man sowas immer noch nicht in einer Woche.
    Selbst wenn's im Kopf gelöst ist, muss es noch bugfrei in die Maschine.
    Diese 'Fleissarbeit', daran scheitern dann die meisten Projekte jugendlicher
    Grossmäuler. Und selbst wenn sie es theoretisch wirklich gelöst haben, ohne es wirklich zu machen, ist das nichts wert. Deshalb freue ich mich über jedes
    TGGC-Spiel und wünsche Tomas Riker das Beste für sein Buch.

    @Sgt.Nukem:
    Die Sourcen hatte ich sogar eine Weile im Netz.
    Wenn Du die Originalspiele (wegen den Daten) hast, habe ich keine Probleme sie Dir zu schicken. Doom hab ich nur als Anschauuungsmaterial genommen. Heretic und Hexen sind unter DOS/DPMI und DirectX lauffähig (sehr stabil sogar).
    Was momentan immer noch in aktuellen Projekten liegt, ist genau jenes Zerlegen und Zusammenpuzzeln von Quake2. Auf C++ compiliert's schon und das war nicht einfach. Da sind Variablennamen 'new', oder das DirectX-Interface ist etwas unterschiedlich, etc.pp. Du würdest Dich wundern wie groß Unterschiede zwischen C und C++ manchmal sein können. z.B. kannst Du nicht einfach bool'sche Variablen tatsächlich zu bool machen, weil das die size verändert und damit Strukturen ausser Gefecht setzt, die unter C ziemlich missbraucht werden.

    [ Dieser Beitrag wurde am 26.03.2003 um 16:38 Uhr von Bitsy editiert. ]



  • [QUOTE]Original erstellt von rapso:
    **doom1 hatte KI und logic?
    hmm.. also bei mir war das nur stupf auf den spieler zu bewegen sofern keine wand dazwischen war... oder hab ich da was verpasst..**Jo. Allerdings wurden die z.B. durch Geräusche geweckt, falls nicht mindestens 2 SoundBlock-Linien zwischen ihnen und der Quelle waren. Sie stürzten sich nicht selber in den Tod, etc.**hm.. spiellogic? also den spieler durch die gegend schieben und wenn man die leertaste drückt dann ne tür aufmachen? das menü hat wohl mehr logic als das spiel.**Hehe. Geht so, was?!**ich weiß auch garnicht ob doom1 netzwerk hatte, doom2 konnte man glaube ich per nullmodem verbinden... *kopfkratz***DooM konnte man über Null-Modem, Modem, und IPX-Netzwerk zocken. DooM II natürlich auch. Alles auf DOS-Level programmiert. Die Sources dazu gibt's auch online (s.o.).**aber ja, sowat stupfes codet man heutzutage in einer woche.****tetris wäre schwerer.**Hehe... die Ironie spriesst ja ganz schön bei Dir...
    Schreib' erstmal den WAD-Loader, der die Level-Daten reinlädt, den BSP-Baum aufbaut, etc. Dann sehen wir weiter.
    Für Tetris muß man überhaupt nix laden. Im Gegensatz zu Space Invaders gibt es nicht mal annähernd eine "KI", nur Zufall.



  • Original erstellt von Bitsy:
    Trotzdem codet man sowas immer noch nicht in einer Woche.
    Selbst wenn's im Kopf gelöst ist, muss es noch bugfrei in die Maschine.
    Diese 'Fleissarbeit', daran scheitern dann die meisten Projekte jugendlicher
    Grossmäuler. Und selbst wenn sie es theoretisch wirklich gelöst haben, ohne es wirklich zu machen, ist das nichts wert. Deshalb freue ich mich über jedes
    TGGC-Spiel und wünsche Tomas Riker das Beste für sein Buch.

    Jo, das denke ich auch. Sehe ich ja an mir...
    Im Kopf ist so vieles geloest... 😃

    @Sgt.Nukem:
    Die Sourcen hatte ich sogar eine Weile im Netz.
    Wenn Du die Originalspiele (wegen den Daten) hast, habe ich keine Probleme sie Dir zu schicken. Doom hab ich nur als Anschauuungsmaterial genommen. Heretic und Hexen sind unter DOS/DPMI und DirectX lauffähig (sehr stabil sogar).
    Was momentan immer noch in aktuellen Projekten liegt, ist genau jenes Zerlegen und Zusammenpuzzeln von Quake2. Auf C++ compiliert's schon und das war nicht einfach. Da sind Variablennamen 'new', oder das DirectX-Interface ist etwas unterschiedlich, etc.pp. Du würdest Dich wundern wie groß Unterschiede zwischen C und C++ manchmal sein können. z.B. kannst Du nicht einfach bool'sche Variablen tatsächlich zu bool machen, weil das die size verändert und damit Strukturen ausser Gefecht setzt, die unter C ziemlich missbraucht werden.

    Jau, das wäre toll.
    Klar habe ich die Originale.
    Und auch den Doom95-Starter für Win32.
    Den zDooM Port.
    Und neuerdings jDooM, mit 3D-Models im Quake 2 Format etc.
    Und spiele es sogar noch relativ oft. 🙂
    Also, falls Du so nett wärst... battle-axe@g*m*x.net (Die Sterne natürlich weglassen)



  • Hab's notiert.


  • Mod

    für meine GBA hab ich nen levelviewer (eigenes format) in einer nacht gecodet, ich halte es für realistisch den rest davon in einer woche fertig zu bekommen.

    ich hab auch nie bahuptet dass es fehlerfrei sein würde, aber spielbar schon. ich hab des öfteren codingprojekte von einer woche zeit... wenn mir einfällt dass wieder irgendein jubiläum mit meiner freundin ansteht und ich was fertig haben muss... darunter clones von, limings,packman,tamagothi,videokonferenzing...

    jaja, das meißte davon hat coder-art und ist recht grausam anzusehen, aber spielen kann man es und wenn bei lemings 20kleine rapsos von meiner freundin über ne klippe gedrückt werden, dann macht es (ihr) sogar spass... :-p

    außerdem geht es hier nicht darum, sondern darum dass hier jemand ein spielchen coden wollte um ein wenig praxis zu bekommen, ohne viel aufwand, aber etwas was ihm spass machen würde

    da labert man ihn von einer seite an "das kannste knicken" und von der anderen "nur doom? mach doch lieber quake"...

    das forum macht wohl jeden anfänger depressiv...

    das ist schon spassig hier...

    rapso->greets();



  • @rapso!
    du redest hier als wärst du schon total der erfahrene eliteprogger.
    dabei gibt es auf deiner ohnehin schon sehr schlecht gemachten site nicht einen einzige download!!!
    daraus schließe ich: du schaffst es kaum, irgendwas fertig zu bringen. also kannst du hier gar nicht mitreden.
    doom in einer woche 😃
    jaja, du bis schon einer, selten so gelacht! 😃 🙄 🙂



  • Nun haut mal nicht gleich wieder aufeinander ein.
    Einen Namen macht man sich sowieso nicht selbst, sondern den kriegt man von anderen und dazu braucht es eben Werke.
    Das leidige Thema mit den 3D-Shootern taucht immer wieder auf, aber mit den Informationen, Tools und Packages, die heute vorhanden sind, ist es nicht mehr so unrealistisch, wie noch vor drei Jahren. Wenn hier also die Frage nach den 'Ansatzpunkten' kommt, sollte man da vielleicht einfach mal drauf eingehen.
    Also:

    Im Gegensatz zu den heutigen Spielen war Doom eigentlich 2,5-D. Alles hat sich nur auf einem Stockwerk abgespielt. Es gab keine Brücken und keine Räume drunter oder drüber, die man besuchen konnte. Deswegen konnte man auch schön eine Automap zeichnen. Der Renderer hat die 3D-Welt gezeichnet, alle Monster und Gegenstände, sowie Schusseffekte sind als skalierte Bitmaps eingepflanzt worden. Ferner war erstens alles rechteckorientiert und dann hat man auch bei der Perspektive etwas gemogelt. Alle Lichteffekte sind übrigens mit vorberechneten Farbtafeln (256-Farben-Modus!) realisiert worden.
    Bei den Texturen hat man mit einigen Tricks diverse Modi für komplexere Wände aus zusammengesetzten Texturen geschaffen.
    Lassen wir den reinen Renderer jetzt mal aussen vor und schauen in andere wichtige Dinge.
    Jedes Level ist in Zonen unterteilt gewesen, ganz wichtig dabei verschiedene Linientypen, bei deren Überschreiten irgendwas ausgelöst worden ist. (Man bekommt durchaus ein gutes Gefühl wie was gemacht wurde durch das Anschauen diverser Editoren.) Ein Routinenpaket hat sich dann z.B. ausschliesslich mit den Traversergeschichten beschäftigt, also wie man an einer Linie/Wand lang geführt wird, ohne dauernd steckenzubleiben.
    Die 'Spielzeit' wurde in 'ticks' unterteilt. Bei einer Bewegung wurde also erst einmal geschaut, welche Traversergeschichten werden nun durchlaufen, wenn die Bewegung einen Tick weiter ist. Geht die Bewegung überhaupt? Wenn ja, ausführen.
    Alles weitere wurde nun über die sogenannte Actorqueue gemanagt. In diese Liste kam alles rein, was sich irgendwie bewegt hat, oder eben am Leben war. Jede Actionroutine eines Actors konnte neue Gegenstände 'spawnen'(erzeugen), die dann mit einem Modus und einem Geschwindigkeitsvektor in diese Liste kam. In jedem Tick wurden nun alle Actors einen Tick lang berechnet (mit den notwendigen Kollisionstests).
    Eine Kollision (oder auch Ablauf einer Zeit wäre möglich), versetzte den Actor in einen neuen Modus - oder er hat sich selbst aus der Liste entfernt, ggf. seinen Nachfolger gespawnt.
    Und jetzt kommen wir zum Thema in einer Woche programmiert: Das war es im Prinzip schon! Okay, da ist jetzt noch kein Netzwerk drin, aber das ist dann auch nicht mehr allzu schlimm.
    Wie immer liegt der Teufel natürlich im Detail und in der Masse (von unterschiedlichen Actors). Die BSP-Node-Geschichten waren damals wirklich sowas wie Black Magic. Sie dienten einfach der Vorberechnung/Sortierung von sichtbaren Elementen, um nicht ständig unsichtbaren Kram zu pinseln.
    Heute gibt es da auch schon wieder ganz andere Techniken.

    Mit diesem Grundwissen ausgestattet, kann man sich nun durchaus mal die Originalsourcen und Tausende von Mods ansehen, dann mal bei Tomas Riker oder beim Zerbie auf die Homepage gehen und schauen wie sowas heutzutage gemacht wird, ein paar Demos von anderen aktiven Mitgliedern des Forums anschauen, seinen Lieben Adieu sagen und sich darauf einstellen, dass eine Woche etwas länger dauern kann.

    [ Dieser Beitrag wurde am 26.03.2003 um 21:12 Uhr von Bitsy editiert. ]


  • Mod

    Original erstellt von <Gerd>:
    @rapso!
    du redest hier als wärst du schon total der erfahrene eliteprogger.
    dabei gibt es auf deiner ohnehin schon sehr schlecht gemachten site nicht einen einzige download!!!
    daraus schließe ich: du schaffst es kaum, irgendwas fertig zu bringen. also kannst du hier gar nicht mitreden.
    doom in einer woche 😃
    jaja, du bis schon einer, selten so gelacht! 😃 🙄 🙂

    du hast vollkommen recht, ich schäme mich so

    :-Ü

    rapso->greets();



  • Naja gut. Den TextureMapper ansich in einer Woche seh' ich ein...

    Angeblich soll Carmack den KERN der Q-Engine auch nicht an einem Wochenende geschrieben haben... 😃



  • AltC hab ich an einem Tag geschrieben, wobei die Voraussetzungen aber _etwas_ anders waren ;).



  • Original erstellt von rapso:
    **du hast vollkommen recht, ich schäme mich so

    :-Ü

    rapso->greets();**

    solltest du auch.
    immerhin gibts weit uns breit nix was uns deine ach so tollen fähigkeiten beweisen könnte *GGGGGGG* 😃
    nur ein paar screenies, die jeder mit 3ds max selbst machen kann.


  • Mod

    tja und vielleicht noch die spiele die du eventuell zoggst an derer engine ich mitgecodet habe.. aber naja, unwichtigkeiten.

    rapso->greets();



  • was sollen das denn bitte für spiele sein?
    nun werd mal konkret sonst kann man echt denken du hättest noch nie was gemacht.



  • Ach Unsinn, ich mein doch AotC. Jaja, die ganzen Abkürzungen... 😉



  • Original erstellt von Ikari:
    dann mach ein Jump'n Run! Also einen 3D Shooter coden zum anfang? Also wenn du das mit funktionen noch net ganz gerafft hast (siehe C++ Forum), noch nix von Singleton, Execptions, streams, vectoren, list, mathematik, und co verstehst aber es trotzdem willst, sag ich nur noch: Du hast mein Mitleid...

    Ich glaub exceptions, streamns, vektoren, lists und vor allem singletons (warum finden alle singletons so schwer???) sind noch das einfachste... Die mathe ist auch nicht sonderlich schwer. Aber der Rest. Man muss sich einfach viel dazu anlesen und vor allem klein anfangen...



  • Original erstellt von TGGC:
    Ach Unsinn, ich mein doch AotC. Jaja, die ganzen Abkürzungen... 😉

    Was ist AotC?

    Und ich meinte:
    Angeblich SOLL Carmack den KERN der Q-Engine an einem Wochenende geschrieben haben... 😃


Anmelden zum Antworten