Spieleprogrammierung groß rauskommen
-
master_tradiaz schrieb:
ich glaube sogar mal gelesen zu haben, dass da asm gar nichts bringe, weil man das kaum mehr so gut optimieren könne wie die heutigen c/c++ compiler.
och, _können_ schon. wenn man verdammt viel zeit dafür verschwenden will und sich am besten noch in die besonderheiten einzelner prozessoren einarbeiten will. aber dann würde wahrscheinlich kein spiel in unter 20jahren geschrieben werden *fg*.
es hilft allerdings, wenn man beim programmieren solche sachen im hinterkopf hat und einfach ein paar regeln beachtet. den cache nicht vorne und hinten sabotieren (z.b. durch lauter if-anweisungen in einer engen schleife), aufwand minimiert und manchmal sachen macht, die nicht intuitiv sind (z.b. variablen IN einer engen schleife deklarieren, wenn man insgesamt so wenige verwendet, daß der compiler sie alle in registern unterbringen kann). kurz: man kann auch schon einiges rausholen, wenn man in der höheren sprache mitdenkt. und die wirklich häßlichen dinge braucht man heute ja nicht mehr (multiplizieren als schleife oder bitshifts etc.)
-
Trienco schrieb:
und die wirklich häßlichen dinge braucht man heute ja nicht mehr (multiplizieren als schleife oder bitshifts etc.)
Wenn man sie braucht, dann macht sie der Compiler schon.
Bye, TGGC (Dem beste BdT)
-
Real schrieb:
@Gleiter: Wenn du dir mal die Links angeschaut hättest, dann wüsstest du, dass Restricted Area in PureBasic entwickelt wurde.
Liebe Grüße
RealityHabe ich gelesen. Ich habe auch den Scheiß mit Assembler und der laaangsammen Sprache C/C++ gelesen. Die sind ja alle dumm die Leute von ID und Valve und CryTek und und und. Die immer noch in C/C++ programmieren.
-
Die sagen nicht, dass C++ langsam wäre, sondern langsamer!
Und für das Spiel haben sie nur 50 000 Zeilen Code gebraucht, wofür man in C++ das 10-fach gebraucht hätte.
Ich habe mir mal ein Tutorial angeschaut und war erstaunt wie leicht man ein Fenster kreiren kann. Nicht nur das, wenn du willst, dass es auf Linux laufen soll, überträgst du den Code 1:1 in ein PureBasic für Linux und kompilierst es.Was mich bis her stört ist: Ich konnte bis jetzt nicht herausfinden, dass PureBasic OOP unterstützt.
Liebe Grüße
Real
-
PureBasic scheint somit schon ne feine Sache zu sein, aber die Frage ist, woran es liegt, dass es schneller ist.
Wenn die Implementierung der Standardlibrary von C++ schlecht ist, dann sollte man sich
eine bessere holen, oder selber schnellere Algorithmen implementieren (da die
Standardlibrary ja immer allgemein gehalten ist und nicht auf eine Aufgabe spezialisiert ist).Also GUIs kann man in C++ auch recht einfach machen mit ner komfortablen Library wie GTKmm.
Hat PureBasic für alle großen Librarys nen Wrapper, oder wie läuft das?
Anscheinend unterstützt es GUIs (was wird da verwenden, da man ja anscheinend sowohl unter win als auch linux das programm benutzen kann),
DirectX ebenfalls (gibts unter Linux aber nicht, wie läuft das da dann?)
und was unterstützt es sonst so?
-
Gleiter schrieb:
Real schrieb:
@Gleiter: Wenn du dir mal die Links angeschaut hättest, dann wüsstest du, dass Restricted Area in PureBasic entwickelt wurde.
Liebe Grüße
RealityHabe ich gelesen. Ich habe auch den Scheiß mit Assembler und der laaangsammen Sprache C/C++ gelesen. Die sind ja alle dumm die Leute von ID und Valve und CryTek und und und. Die immer noch in C/C++ programmieren.
wieso, zeitkritische dinge codet man doch immer noch in assembler. ist halt nur sehr viel weniger als früher, aber es gibt noch vieles was man optimieren kann und mittels benchmarks nachweislich schneller hinbekommt als die compiler das heutzutage in c(++). aber sowas ist von den meißten ihr kleines gehütetes geheimniss.
manchmal gestalltet sich assemblerprogrammierung auch ein wenig anders, man schaut was der compiler rausschmeisst (von c in assembler) und schreibt seinen c code so um dass der gewünschte assembler code rauskommt. ist dann nichtmehr ein schöner und sauberer c code, aber schnellrapso->greets();
-
50000 Zeilen nur für das Spiel.
Was ist mit dem Zeug das im Hintergrund abläuft.
Ich will dir ein Beispiel zeigen.
#include "gidx.h" int main() { apptitle("giDX² Test Anwendung"); graphic(640,480,0,1); while(1) { statkey(); if(ESC) return 0; } return 0; }
Dieser C Code verwendet einen DirectX Wrapper und initialisiert DirectX, ändert den Fenstertext und wartet danach das ESC gedrückt wird.
Das gleiche mit BlitzBasic
AppTitle "Blitz Basic Anwendung" Graphics 640,480,0,0 While(1) If(KeyDown(1)) Exit Wend End
Jetzt sag bitte nicht das C schwieriger ist.
Was ich sagen will. Man kann DX Funktionen kappseln um ihre Verwendung zu vereinfachen.
Man sollte immer wissen was man machen will. Willst du ein Spiel programmieren und hast keine Lust C/C++ zu lernen und das ganze DX Zeug, nimmst du eine fertige Engine oder ein Basic Dialekt. Man sollte schon bedenken das auch diese Basic Dialekte in C/C++ (bischen ASM) programmiert werden.
Und da sieht man wieder den Unterschied. C/C++ gibt einem alle Möglichkeiten. Du kannst auch ein Betriebssystem damit programmieren. Mach das mal mit Basic.
Ich habe nichts gegen Basic, aber mal sollte nicht mit solchen Sprüchen kommen das C/C++ langsam ist und man das genze von Hand optimiert hat weil ja der Compiler nicht so gut optimieren kann.
Wenn das John Carmack sagt würde ich es glauben, aber nicht bei diesen Jungs
-
Gleiter schrieb:
Jetzt sag bitte nicht das C schwieriger ist.
Schau dir mal die Tuts für PureBasic an:
http://www.purebasic.de/tutorium.shtmlHier z.B. ein OK-Fenster:
MessageRequester("Nachricht","Hallo Welt",#PB_MessageRequester_Ok) ; ExecutableFormat=Windows ; DisableDebugger
Dieses Programm ist ca. 6 kB groß.
Man sollte immer wissen was man machen will. Willst du ein Spiel programmieren und hast keine Lust C/C++ zu lernen und das ganze DX Zeug, nimmst du eine fertige Engine oder ein Basic Dialekt. Man sollte schon bedenken das auch diese Basic Dialekte in C/C++ (bischen ASM) programmiert werden.
Du kannst die anderen Basic-Dialekte nicht mit PureBasic vergleichen, da sie ganz anders funktionieren. Basic steht in diesem Zusammenhang, dass es eine einfache Sprache ist. Du kannst damit ebenfalls Office-Anwendungen schreiben.
Und da sieht man wieder den Unterschied. C/C++ gibt einem alle Möglichkeiten. Du kannst auch ein Betriebssystem damit programmieren. Mach das mal mit Basic.
Jede Sprache hat sein Gebiet...
Ich habe nichts gegen Basic, aber mal sollte nicht mit solchen Sprüchen kommen das C/C++ langsam ist und man das genze von Hand optimiert hat weil ja der Compiler nicht so gut optimieren kann.
Wieso verdrehst du wieder die Wörter?! Die Aussage von den Entwicklern war, C++ ist langsamer!!!! nicht langsam. Verstehst du?!
Ich habe jetzt übrigens herausgefunden, dass PureBasic kein OOP unterstützt.
Ich mag die Sprache übrigens auch nicht, da sie keine richtige Logik hat. (<= Meine Meinung)Liebe Grüße
Real
-
Real schrieb:
Ich mag die Sprache übrigens auch nicht, da sie keine richtige Logik hat. (<= Meine Meinung)
Ich mag Frauen auch lieber als Programmiersprachen. Obwohl Frauen auch keine Logik haben
-
ich habe das Spiel mal angespielt.. und ich muss ehrlich sagen.. das Spiel ist schlecht.
Ich finde es echt Schei**e, dass ein Spiel so ge-hyped wird, nur weil es aus Deutschland kommt. Massig Bugs.. ein super schlechtes Menü.. Keine Munition??? Beine die man irgendwo findet und sich einfach "anlegen" kann, weil ist ja ein "Rollenspiel"..Dann läuft der Character schneller, wenn man schräg läuft.. und er rennt eh schon wie verrückt. Man kann an bestimmten stellen durch/über/unter Sachen durch laufen, wo anscheinend irgendwas vergessen wurde (z.B. erste Karte unten Rechts ist ein "Raumgleiter", daneben sind 2 ?Treppen?.. kann man einfach quer drüber latschen). Das ganze Menü ist einfach nur Blau mit Strichen.. und smoothes scrollen habe ich nicht entdecken können.
Giga, Gamigo, PC-Games, Computerbild usw. Alle haben dieses Spiel als "SEHR GUT" und "Besser als Diablo" bewertet.. ich finde es nur peinlich. Das Spiel ist nicht annähernd so gut wie Diablo und meiner Meinung nach wurden die Titel und Bewertungen alle verschenkt, weil Made in Germany. Das einzig gute ist die Synchronisationsstimme vom Character.
edit:
hier die demo, falls ihr euch selbst überzeugen wollt..
http://www.gamershell.com/news/18228.html