Allgemeine Fragen



  • Also Netzwerk?
    Könntest du mir ein paar praxisbezogene Beispiele für so Berechnungen geben?



  • Ja Netzwerk, wenn man nicht pollen möchte.
    Zum Beispiel ist ja der Versand eines Datenpaketes mit Rückschein im Internet für den Rechner eine Ewigkeit. Da braucht der Rechner ja nicht die ganze Zeit Däumchen drehen.

    Langwierige Berechnungen sind bei Spielen ja eher selten, da zuerst mal schnell auf Spielereingaben reagiert werden soll und sich daher die Situation ständig ändert.
    AI bei mehreren Einheiten wäre da z.B. was. Während der computergesteuerte Panzer noch überlegt, wie er am besten um Stein rum fährt, muss ja trotzdem das neue Stück der Hintergrundmusik an die Soundkarte geschickt werden. Und das zuverlässig, sonst gibt es störende Knistergeräusche.


  • Mod

    langeweile schrieb:

    Also Netzwerk?

    nein, bei 'netzwerk' ist das nicht so dringend noetig, oft laeuft es effizienter ueber die events vom OS(wenn man nur eine cpu/einen core hat), da das OS intern schon selbst einen "thread" dafuer hat, der ueber interrupts getriggert wird. aber oft nutzt man threads bei 'netzwerk', weil...emm... naja, simple minded.

    Könntest du mir ein paar praxisbezogene Beispiele für so Berechnungen geben?

    alles was nicht synchron laufen muss kann man auf threads verteilen. 100 gegner und jeder hat seine logik, dann verteilt man sie gleichmaessig auf die cores. 1000objekte die einen collisionstest benoetigen -> auf die cores verteilen. an sich, wie schon gesagt, alles auf threads verteilen was nicht synchron laufen _muss_. denn du wirst mehr und mehr cores haben. statisch planen dass z.b. 2 oder 4 threads ausgelastet werden ist schonwieder veraltetes denken.



  • langeweile schrieb:

    -Werden Threads genutzt? (Netzwerk/...)

    Ja.

    langeweile schrieb:

    -Werden alle Bewegungen mit Millisekunden berechnet?

    Nein.

    langeweile schrieb:

    -Was passiert, wenn ich 800x600px große Fenster erstelle und die dann auf Riesenmonitoren anschaue? Wie kann man eventuelle Nebenwirkungen verhindern?

    Sie sind 800x600 Pixel gross und was fuer Nebenwirkungen?

    langeweile schrieb:

    -Wie sieht die grobe Struktur eines 2D-Sitescroller aus? (Pseudo)

    void main(){
    while( running )
    {
    logik();
    grafik();
    boom();
    }
    }

    langeweile schrieb:

    -Wie sollten Klassen/Strukturen verwendet werden?

    Genau wie in jedem anderem Projekt.

    langeweile schrieb:

    -Brauche ich eine Art Kameraklasse? Was muss die können?

    Nein, brauch man nicht. Also muss sie auch nichts koennen.

    langeweile schrieb:

    -Welche Bücher decken sowas ab?

    Vollstaendig? Keines.f'`8k

    Autocogito

    Gruß, TGGC (making great games since 1992)



  • Nein, brauch man nicht. Also muss sie auch nichts koennen.

    Sollte man eine nutzen? Wie würde die bei dir aussehen?

    -Werden Threads genutzt? (Netzwerk/...)

    Ja.

    Wie/Wo nutzt du Threads?



  • z.T. Threads: man braucht auch für Netzwerkgeschichten nicht unbedingt Threads. Mit nonblocking sockets & UDP kann man eigentlich auch so schön arbeiten. (Mit nonblocking sockets & TCP natürlich auch, bloss findet man TCP bei Spielen seltener, gerade wenn es "Action-Spiele" sind). Allerdings kann es Sinn machen, vor allem wenn man z.B. Daten für die Übertragung komprimieren will, und mit Hardwarebeschleunigung rendert. In dem Fall hat man im Hauptthread (wo normalerweise das Rendering läuft) oft eine Pause beim "flippen" (oder auch zwischendurch) -- weil die Hardware im Hintergrund noch nicht mit Zeichnen fertig ist. Hier muss die CPU auf die Grafikkarte warten. Verwendet man einen eigenen Thread um z.B. Pakete für's Netzwerk zu komprimieren und die ganze "reliable UDP" Logik zu machen, dann kann dieser Thread in den "Pausen" des Hauptthreads schön arbeiten.

    Wo auch häufig Threads verwendet werden (aber nicht unbedingt verwendet werden müssen) ist beim Sound abspielen. Ist einfach praktisch wenn Thread im Hintergrund längere Soundfiles laden und entpacken kann. Macht man das ohne eigenen Thread muss man darauf achten dass keine zu langen Pausen entstehen können in denen die Sound Klassen nicht aufgerufen werden, sonst kann der Sound zu "stottern" anfangen.

    @rapso: "alles auf Threads verteilen wo geht" ist ja gut, bloss ... also gerade Anfänger tendieren dazu entweder garnicht zu synchronisieren (pöse), oder viel zu oft (auch pöse). Ist alles nicht so einfach 🙂



  • Das ist doch mal ne schöne klare Aussage, sowas habe ich gesucht! 😃

    Danke an euch alle, werd mich dann mal einlesen... 😋


  • Mod

    hustbaer schrieb:

    @rapso: "alles auf Threads verteilen wo geht" ist ja gut, bloss ... also gerade Anfänger tendieren dazu entweder garnicht zu synchronisieren (pöse), oder viel zu oft (auch pöse). Ist alles nicht so einfach 🙂

    daran hast du mit deinem langen 'gedicht' auch nichts geaendert ;);)

    synchronisation ist grundsaetzlich evil, wenn man es nicht macht ein einer stelle an der es sein sollte, bekommt man eeecht boese ergebnisse die man auch sehr schlecht debuggen kann. (z.b. mal beim refcouter)
    andererseits, hat man ueberall sync, wird es mit den threads langsammer als ohne. eventuell sogar deatlocks. threading ist evil 🙂



  • rapso schrieb:

    synchronisation ist grundsaetzlich evil, wenn man es nicht macht ein einer stelle an der es sein sollte, bekommt man eeecht boese ergebnisse die man auch sehr schlecht debuggen kann. (z.b. mal beim refcouter)
    andererseits, hat man ueberall sync, wird es mit den threads langsammer als ohne. eventuell sogar deatlocks. threading ist evil 🙂

    shared-state threading :p



  • Es gibt *NUR* shared state threading.
    Irgendwo ist der pöse pöse shared state nämlich immer, und seis in der VM/Runtime/whatever.
    Message passing ohne jeglichen shared state: möchte ich bitte sehen.

    @rapso: Gedicht? Wo? Wie? Was? 🙂


Anmelden zum Antworten