Womit werden Spiele programmiert?
-
1. debuggen könnte scheisse sein, es haben sich schon öfters bei mir systeme aufgehängt, wenn ich ein breakpoint in einem multithread programm setzte.. ich weiß nicht weshalb.. vielleicht bug im devstudio?
2. es gibt öfters vielzuviel verschleiss z.B. die schlaue idee in einem thread bei niedrigster priorität auf den soundbuffer zuwarten
3. es gibt noch schlauere, die render und logic in seperaten threads machen, da kann man sich dann in den kopf schiessen wenn in ein und demselben bild objeckte nichtzueinander passen
4. wenn irgendein modul in einem spiel länger als 33ms zum durchlauf braucht, dann ist es scheissen programmiert oder die mindestanforderung ist zu hoch, wobei, was gibt es schon bei einem spiel das bei einer verzögerung von 32ms nicht korrekt funktioniert?... also braucht man, wenn man ein spiel plant, keinen zusätzlichen thread.threads sollte man nur bei multiprozessor und server anwendungen machen... was ein spiel nur als server braucht.
seh ich da wat total falsch?
rapso->greets();
-
quatsch. fast jedes aktuelle spiele benutzt threads. und zwar nicht zu wenig. 10 - 15 stück meistens
-
Original erstellt von rapso:
**threads sollte man nur bei multiprozessor und server anwendungen machen... was ein spiel nur als server braucht.seh ich da wat total falsch?**
Jipp, wenn das Spiel als Client in einem Netzwerkspiel läuft, dann sollte man Threads auch verwenden.
-
@<fiel>
komisch, soviele threads in einem spiel, wow. dann macht es EA, die firma bei der ich arbeite und andere firmen von denen ich das gegenteil weiss seit jahren falsch :D... selten dass ich bei einem spiel mehr als 2 threads insgesammt sah, und das auch nur dann im ladescreen, weil manche festplattenzugriffe länger als 100ms dauern und somit das rendering einer "loading..." animation nicht flüssig wäre... (oder biste doch nur ein troll?, die vermutung liegt nahe )@TGGC wenn man blocking benutzt beim socket, dann schon, man kann das aber auch per callbacks realisieren. Es gab letztens erst ne untersuchung (ich glaube von IBM) und die meinten im resúme, dass per callbacks (also system events) die http-server mehr seiten liefern könnten als per multithreading, weil der verschleiss wegen den threads die nur in einer schleife warten viel zu hoch ist.
rapso->greets();
-
Ich wundere mich ja selbst warum die Spiele mit sovielen Threads arbeiten. Ich weiss auch nicht was die da alles machen. Hab nochmal geguckt.
Praetorians - 13 Threads
Splinter Cell - 10 ThreadsBeides im Spiel, nachgeguckt mit dem Windows XP Taskmanager. Andere Spiele haben auch soviele Threads, hab nur gerade die beiden drauf.
-
oder auch MS Visual C++ 7 -> 13 Threads. Was machen die damit?
-
@rapso:
Aber woher wird denn diese callback dann aufgerufen, wenn nicht aus einem anderem Thread? Bei DPlay8 ist's zumindest so, das dies aus einem anderen Thread geschieht.Mensch, den Headhunter wollten die doch auch schon, EA nimmt tatsächlich jeden 8).
-
und trotzdem hat EA noch so die ziemlich besten Spiele auf dem Markt. Echt verblüffend
-
Naja - die besten Games von EA???
Mhhh - das halte ich für ein Gerücht. Das ist doch meist nur das 10. Sequel vom 10 Sequel und dann der abklatsch vom 5. Sequel.Ein paar verschönerungen in der Grafik - und ändern der Teamnamen - das reicht :-S
Mir währs lieber, EA würde sich mal wieder auf die guten alten Zeiten besinnen und doch Bards Tale 4 fertig stellen
-
@SnorreDev:
Na und, Hauptsache viel verkauft 8).
-
Jupp - komischerweise kaufen es die Leute noch. Die Firman haben doch schon Angst was neues zu bringen, da die meisten inovativen Sachen leider floppen :-S
Siehe z.B. Looking Glass...
-
die callbacks werden wohl so gehandhabt wie schon seit eh und je, oder glaubst du, dass es irgendwo in windows einen thread gibt der die ganze zeit z.B. den tastaturstatus abfragt.. den netzwerk status, den soundkarten status?
und wozu hat ein pc dann interrupts...
die callbacks werden als message an jede applikation geschickt, ganz normal, und solange die die nicht annimt, stopfen interrupts die in buffer.
as easy as it is
ps. nö, mit EA hab ich noch nicht wirklich kontakt, ich kenne bloss leute von da, weil die mal meine mitarbeiter waren :).. wie auch von anderen firmen.
die vielen threads sind keine von den programmen selbst ausgelösten, das können welche vom treiber sein, denn das sind dann nur sowat wie haltepunkte die nicht ausgeführt werden, bis ein event auftaucht (z.B. drawindexprimitiv ist fertig), dass sind aber nicht wirklich mehrere parallel ablaufende dinge...
rapso->greets();
-
Original erstellt von SnorreDev:
**Jupp - komischerweise kaufen es die Leute noch. Die Firman haben doch schon Angst was neues zu bringen, da die meisten inovativen Sachen leider floppen :-SSiehe z.B. Looking Glass...**
stimmt
man muss sich da nur z.B. den FM2003 anschauen oder fifa, jedes jahr bekommt der ein leicht anderes styling und ein neues features und das verkaufen die dann als vollversion und schöpfen so den markt auf günstige weise ab.
rapso->greets();
-
Um mal zurück zum Thema zu kommen :
Spiele in VisualBasic und Java geschrieben werden.
Die erstgenannte Sprache wird wegen ihrer Stabilität und ihrer Intuitiven Semantic
sehr bevorzugt genommen, die letztere wegen OOP und hauptsächlich wegen Geschwindigkeit.
-
lol
nene Qbasic und java-script, damit kann man nur was erreichen...
also weder basic noch java werden genutzt, sicherlich gibt es vielleicht ein paar ausnahmen, aber bei java ist immer im hintergrnd der gedanken, dass dort ne schlechte performance ist und wegen dem garbage collector ne menge müll rumliegen kann. VB hingegen ist dafür da leicht oberflächen zu stöpseln und nicht rechenaufwändige spiele zu machen.. sicherlich, du kannst auch ein javaspiel fürs handy coden
aber normalerweise wird c++ genutzt, in den meißten fällen bei pcspiele der von M$ und bei konsolen der vom devkit.
rapso->greetS();
-
http://www.chrissawyer.com/faq3.htm
"What language was RollerCoaster Tycoon programmed in?
It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX."Naja, das glaube ich trotzdem nicht. Glaubt das eigentlich irgendwer hier?? Sicher, über JavaScript und PHP kann man sich lustig machen, aber wie sieht dat hiermit aus?!? Allein mit BNE und dem Kack 'ne vernünftige Schleife zu coden is' doch schon übel. Geschweige denn Eingabedaten der Maus zu bearbeiten, und den Scheiß zu zeichnen... najaaa...
Gut, aufwendige 3D-Berechnungen gibt's ja nicht... okay...Ahhhhrg, und Sgt. Nukem hat's verraten, da werden wohl bald ein paar Leute in schwarzen Anzügen (oder was auch immer die tragen) an seiner Tür klopfen .
NEEEEEEEEEEEEEEEEEEEEEEEEIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIINNNNNNNNNNNNNNNNNNNNNNNNNN.....................!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
Original erstellt von rapso:
threads sollte man nur bei multiprozessor und server anwendungen machen... was ein spiel nur als server braucht.Also ich weiß nicht, ich mag Anwendungen die gut parallelisierbar sind sehr gerne, die laufen auf meinem Rechner so schön schnell wenn ich ihn wiedermal an den openMosix-Cluster meines Cousins angeschlossen habe!
Warum soll fortschrittliche Technologie nur für Server gut sein? (Das mit der Komplexität allein zählt nicht, wenn das so wäre dürfte man auch kein C programmieren, denn VisualBasic ist schließlich viel einfacher aufgebaut...)edit: Und dass Rollercoaster Tycoon fast nur in Assembly programmiert wurde glaube ich auch nicht.
[ Dieser Beitrag wurde am 18.03.2003 um 22:10 Uhr von nman editiert. ]
-
soweit ich weiß, wäre es schwachsinn ein cluster im singlethread zu haben... das ist ein ganz anderer zusammenhang.
wozu parallesieren, wenn man nur eine cpu hat, das bringt nur performance verlust.
aber ich gebe dir recht, sowas macht auch spass, ich lasse in der firma auch manchmal meine raytracer auf 100maschinen die nacht durchlaufen ...
rapso->greets();
-
Original erstellt von rapso:
soweit ich weiß, wäre es schwachsinn ein cluster im singlethread zu haben... das ist ein ganz anderer zusammenhang.Genau das ist der Punkt, darum freue ich mich immer wieder über Programme die MT laufen!
(Stimmt dennoch nicht immer - wenn ich SingleThreaded Anwendungen auf meinem Rechner starte und der damit überfordert ist werden diese automatisch an einen stärkeren Rechner im Netz abgegeben, das ist überaus praktisch...)
-
muss man beim cluster wenn man das programmiert irgendwas mit kommunikation regeln oder läuft das wie ein standart multiprozessor system?
rapso->greets();