Welch sprache/programm benutzen 3D spiele

Danielsun

Cadet 4th Year
Registriert
Apr. 2003
Beiträge
83
[???]welch sprache/programm benutzen 3D spiele

Hi!

ich wollte fragen welche sprache bzw welches programm zum proggen von mehr oder weniger aufwendigen 3D spielen wie z.b Counterstrike oder Morrowind o.ä. benutzt wird?

und ob jemand von euch sowas schonmal gemacht hat?
oder einen guten "workshop" im i-net kennt oder ne grobe einführung in das gebiet..

mit google hab ichs schon probiert da kommt man nur auf hacker seiten....
 
Bin zwar nicht wirklich Progger, aber imho werden Spiele in C(++) programmiert. Eine grobe Einführung gibt es dafür nicht. Da hilft nur lesen, studieren, recherchieren, am-Ball-bleiben. Eine Einführung/Referenz/Nachschlagewerk auf Papüros - sprich Buch - sollte gekauft werden: das sind die besten Schritt-für-Schritt-Anleitungen in das Gebiet. Tutorials sind kaum brauchbar für so ein komplexes Thema.
 
cool danke!

hey in c++ hab ich ja schon ein bissel geübt wusste nur nicht das es dafür genutzt wird..


Danke!!!
 
Ja, entweder C++ oder Assembler. Jetzt werden wieder einige kommen und sagen das Assembler kaum noch benutzt wird. Ist auch richtig, allerdings hat John Carmack für seine Engines auch in Assembler gecoded und die gehören zu den besten. Ist allerdings sehr schwierig zu beherrschen, da sehr maschienennah. Na ja was solls. C++ Code wird ja eh in Assembler zurückkompiliert. Da kann man eigentlich auch gleich C++ lernen, ist einfacher.
 
Also John Carmacks Engines sind in C programmiert.
Ansonsten würde ich empfehlen sich z.b den Q3 Moding Code runter zu laden und damit rum zu spielen da die Entwicklung einer guten 3D Engine ne ganze Menge Know-How und Erfahrung benötigt.
 
Heh.. Rein in Assembler wird keine Game-Engine der Welt mehr gecoded. Dafür ist das alles einfach viel zu aufwendig.
Was gemacht wird, ist die zeitkritischen Teile der Engine in
Assembler einzubinden. Zum Beispiel die Rendering-Paths.

-Ronny
 
assembler wäre zwar schön schnell, aber eine komplette 3D engine in assembler zu proggen ist dann doch zu viel des guten.
die meissten dinge werden mittlerweile mit c(++) gemacht, ist praktischer...
machs einfach wie die anderen sagten: nimm dir einen offenen code und spiel dran rum..
 
hehe ich habe mir mal eine eigene 3D-Engine gebastelt, das ganze Programm bestand nur aus etwa 200 Zeilen:

ein Raytracer, der texturierte 90° Wände, Boden und Decke anzeigen konnte, die in der Entfernung dunkler wurden, horizontal konnte man sich frei bewegen

lief auf meinem 486er aber nicht sooo flüssig, wie ich es gerne hätte :p

wurde in C programmiert
 
die meisten sind in C++ geschrieben zum beispiel half life 2
splinter cell ist allerdings ( ich weiß nicht ob teilweise oder ganz ) in java geschrieben
C ist für ein modernes spiel leider etwas zu alt
 
java wird in den nächsten Jahren sowieso (hoffentlich) immer mehr bedeutung haben, ... wer den Artikel der CT gesehen hat weis dass die Perfomance langsam aber sicher zunimmt, ...

Mich würde einen nativen Compiler interessieren, aber naja dann wären wohl die meisten Vorteile auch hin, seufz
 
Original erstellt von Loopo
ein Raytracer, der texturierte 90° Wände, Boden und Decke anzeigen konnte, die in der Entfernung dunkler wurden, horizontal konnte man sich frei bewegen


hehe, raytracing ist ja momentan nicht state of the art bei echtzeitanimationen. ;)
wird aber noch kommen, wenn die rechenpower ausreicht. spiele werden ausschließlich in c und auch c++ geschrieben. assembler macht hier keinen sinn, da der maschinencode moderner c/c++ compiler von hand nicht mehr zu verbessern ist! in c++ wird dann eben wahlweise opengl oder directX integriert.
das ganze ist so ein dermassen weit umfassendes feld, dass man sich mal eben hobbymässig ziemlich schwer tun wird um sich dort einzuarbeiten.
für die animationen braucht man fundierte physik-kenntnisse, und insgesamt eben umfassende programmierkenntnisse, und auch kenntnisse der aktuellen hardware, um so auch effizienten code zu entwickeln.
um mal ein bisschen rumzuspielen kann ich das buch "jetzt lerne ich opengl" empfehlen von markt & technik.

ps: zum raytracing, mein grafik-prof hat mir mal vor 3 monaten ein demo gezeigt, wo eine echtzeitanimation mit raytracing realisiert wurde. die rendering-pipeline der grafikkarte wurde zur berechnung quasi "misbraucht", und konnte so den prozessor bei der arbeit etwas unterstützen. sah echt klasse aus, effekte (vor allem spiegel-effekte und speculare indirekte reflexion) waren möglich die eigentlich bei den aktuellen rendering-paths nicht möglich sind. allerdings ruckelte das ganze noch ganz schön bei einer auflösung von ~400x300. ;)
 
Original erstellt von daemon777
splinter cell ist allerdings ( ich weiß nicht ob teilweise oder ganz ) in java geschrieben
Du hast noch nicht so viel mit Java zu tun gehabt, oder?

Die einzige Version von Splinter Cell, die in Java programmiert wurde ist das komische Handy Game, das man derzeit bei Vodafone bekommt.
Kein zurechnungsfähiger Programmierer würde jemals Java für ein aktuelles Spiel mit so einer Grafik wie in Splinter cell benutzen. Das wäre einfach total schwachsinnig, weils mit der schnellsten Hardware jenseits von gut und böse ruckeln würde.

Die Sprache wäre prinzipiell ziemlich egal. C und C++ sind aber momentan das hardwarenaheste, mit dem man dennoch ein Projekt wie ein Spiel hinbekommt.
Außerdem gibts für C/C++ die beste Unterstützung seitens OpenGL und DirectX, die momentan für die Spieleentwicklung nicht wegzudenken sind.

Auch Physikengines wie Havoc (z.B. in Max Payne 2) oder Karma (UT2 / UT 2003) sind in und für C++ entwickelt worden.
Mit großem Aufwand könnte man auch Delphi und Visual Basic u.ä. dafür missbrauchen aber richtig schell wäre es dadurch auch nicht.

John Carmack hat soweit ich weiß für den Software Renderer von Quake 2 noch Assembler benutzt. In den Q3 Source hab ich noch keinen Blick geworfen.

Wie einige andere auch schon geschrieben haben, wird der einfachste Einstieg durch das Modding vorhandener Spiele sein, da es da meist gute Tutorials gibt und eine gute Engine für einen einzelnen zur Lebensaufgabe ausartet.
 
Zuletzt bearbeitet:
du hast recht das wird das handy game gewesen sein
mich hat das schon irgendwie gewundert das splinter cell in java geschrieben sein soll
außerdem währ das dann deutlich mehr arbeitsspeicher brauchen, da java im vergleich zu c++ ja ziemlich langsam ist
 
das wird auch mit mehr arbeitsspeicher nicht schneller. der grund dafür dass java langsamer ist als c++ ist der dass es nicht direkt auf der hardware läuft, und der compilierte programm-code nur so ne art zwischencode namens "byte-code" ist, der erst noch beim ablauf durch einen interpreter läuft. das teil nennt man dann virtual machine. dieses teil bietet aus der sicht des java-programms eine standardisierte hard- und software-umgebung. dadurch ist java dann plattformunabhängig! :)
 
C/C++ ist grundsätzlich zu empfehlen, da es mittlierweile Industriestandard geworden ist.

Interessant ist jedoch Microsofts MischSprache *NET. Mischung aus Java und C++. Verbindet wie schon C++ die Vorteile aus beiden WElten. Zudem gibt es von Intel als auch von AMD neuerdings bereits DLLs für 3Dnow bzw. SSE zur Architekturoptimierung für C++

Von Assembler wird dir jeder vernünftiger Programmierer abraten, es sei denn du hast vor Betriebssysteme zu programmieren die auf eine Diskette passen und so mal zum Einstieg einen 500-seitigen Wälzer über effiziente Speicherbelegung nicht nur zu lesen, sondern auch zu verstehen.
 
es gibt meiner meinung nach auch keinen grund mehr in assembler zu programmieren. die compiler erzeugen so einen optimalen code, dass da von hand eh nix mehr zu machen wäre!
 
Zurück
Oben