Nochmal zu const speed

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2, 3, 4  Weiter

Neue Antwort erstellen

Lunatix

BeitragMi, Jun 14, 2006 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
DW : 5k41 meinte das gleiche wie ich!

Man könnte mein Beispiel noch so erweitern, das wenn irgendwas passiert(Cam wird bewegt, etc.) das ganze MEsh gelöscht wird, und Surface+Tris neu gemacht werden, und dann, anhand der Coordinaten, werden auch nur die Tris erstellt, die man gerade sehen kann - sollte NOCH MEHR leistung raushauen.

Somit kann man auch leicht Feuer Effekte realisieren und eben mal (DOOM3 z.b. , da gabs Viecher die haben Feuer Attacken, alles mit FeuerSprites gemacht) die aucn mal eben 200 Sprites ham - das merkt man dann nich mal...
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Dreamora

BeitragMi, Jun 14, 2006 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
330k Tris sind auch heutzutage noch ein Problem, wenn sie als einzelne Objekte a 12 Tris daherkommen. Da für jedes Objekt eine "eigene Verbindung" zur Grafikkarte erzeugt werden muss um es raufzuladen, bricht dabei relativ schnell selbst die beste Grafikkarte ein. (denn die Daten gehen jeden Frame wieder rauf!)
Deswegen ist der Hinweis mit dem Single Surface ein sehr wichtiger und auch zwingender Hinweis: Ohne kann man sich alles grössere mit vielen Objekten gleich wieder aus dem Kopf schlagen.
Die einfachste Variante ist von daher alle statischen Objekte soweit möglich mittels AddMesh zusammenzufügen, dann hat man nämlich den Vorteil das diese intern nur 1 Objekt und nur soviele Surfaces wie texturen sind. Dabei muss man jedoch ein wenig aufpassen, denn bei 32k bzw. 64k Tris und Vertices ist fertig! (bei den Tris sage ich es extra so weil GF4 MX und so keine 64k Tris schlucken) sprich die 27000 Cubes könnten auch dann nicht eine Surface werden. Aber definitiv weniger als 27000 Very Happy

Für etwas wie ein GTA like game und so macht man sich aber am besten die Mühe einen Oct oder Quadtree zu implementieren um die statischen Daten zu steuern. Dann kann man die Stadt nämlich in Unterblöcke aufteilen (einzelne surfaces und meshes), wodurch sich das ganze Problem drastisch reduziert und der Speed um einiges grösser wird.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

X0r

BeitragMi, Jun 14, 2006 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Also bei GTA werden die Objekte, die nicht mehr in Sichtweite sind einfach versteckt.

Ok, du meinst addmesh und sowas, aber wie soll ich das bei einem Menschen model machen? Da geht doch garnicht.


Und wenn dort mal 20 Menschen sind, die vielleicht was weiß ich wie viele Polygone haben, dann gibt es Ärger.
 

Dreamora

BeitragMi, Jun 14, 2006 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn sie was weiss ich wieviele Polygone haben kannst du es eh gleich vergessen Smile
Du solltest vielleicht erst einmal die Grundzüge von B3D lernen und darauf aufbauen fortgeschritteneres Wissen wie Single Surface und effiziente Objekthandhabung kennenlernen und richtig erlernen.
Und dann etwas in der Grössenordnung von GTA in Angriff nehmen ... denn GTA 3 ist definitiv etwas der komplexeren Sorte! (auch das die ganzen Menschen, Autos etc sich nachher selbstständig bewegen wird noch sehr viel Aufwand und Recherchen benötigen. Kannst davon ausgehen, das du die nächsten 3-4 Jahre dran bist, bis es einigermassen so läuft wie GTA 3+)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

X0r

BeitragMi, Jun 14, 2006 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Also KI Programmierung kann ich.
Kannst du mir mal Single Surface genau erklären?
 

Dreamora

BeitragMi, Jun 14, 2006 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, da du scheinbar noch nicht über das wissen verfügst, was eine Surface überhaupt ist, womit es keinen Sinn macht Single Surface Techniken zu erläutern.

Mach dich dazu erst einmal in der Hilfe schlau und lerne erst die Grundlagen.

Es macht keinen Sinn, fortgeschrittene Dinge zu lernen, bevor du die Grundlagen kannst, so hart das auch scheinen mag.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

X0r

BeitragMi, Jun 14, 2006 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Grundlagen sind Schleife, ENtscheidungen u.s.w, ja? Du glaubst doch nicht, dass ich ohne diese Grundlagen ein Ego-Shooter programmieren kann, oder?

Lunatix

BeitragMi, Jun 14, 2006 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
neeee!

Dreamora meinte, Surfaces/MEshes/Vertices und so beherschen.... also verstanden ham, wie das geht. (oder?)

[EDIT]

zu langsam^^
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
  • Zuletzt bearbeitet von Lunatix am Mi, Jun 14, 2006 20:17, insgesamt einmal bearbeitet
 

Dreamora

BeitragMi, Jun 14, 2006 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sind Programmiergrundlagen.
Nicht die Grundlagen von 3D oder Blitz3D ...

Bevor es wirklich Sinn hat, über fortgeschrittene Techniken nachzudenken, musst du dir erst eine gewisse Erfahrung bezüglich "wie arbeitet B3D intern" aufbauen, denn all diese Optimierung und Tricks basieren vollumfänglich darauf. Wie Surfaces funktionieren, wie man selbst Surfaces befüllt etc sind einige Dinge davon, die du dann brauchen wirst.

Ja sicher ich/wir könnten dir Source liefern der das direkt zeigt und den du nur anpassen müsstest. Nur möchte ich das nicht und werde ich das nicht tun, sondern dir mit Ideen zur Seite stehen. Denn der Umfang in welchem diese Tricks eingebaut werden müssen wird ziemlich umfangreich, nicht nur an einer Stelle und gut ist.



Und zum Thema Shooter: Wenn das so die Herausforderung wäre, gäbe es nicht 3D Shooter wie Sand am Meer, sorry. Für mich ist ein 3D Shooter einer der Projekttypen die ein fortgeschrittener Anfänger nach BreakOut und so in Angriff nehmen kann um mit den restlichen Befehlen in Kontakt zu kommen. Es benötigt jedoch relativ wenig bis 0 Ahnung davon, wie das ganze wirklich funktioniert "dahinter", damit er funktioniert. Ganz im Unterschied zu dem, was du jetzt vor hast.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

X0r

BeitragMi, Jun 14, 2006 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, wenn du meinst. Gibt es denn Tutorials, oder soll ich das alleine lernen?

Also ich weiß eigentlich, was surfaces sind. Sind das nicht die Teile von meshes, denen man 3 triangles zuordnen kann?
Aber was hat das mit meinem Menschen model zu tun? Was soll ich denn mit dem model machen?


ICh habe eine Idee:
Du listest mit alle Methoden auf, die ich brauche, um ein Spiel flüssig und perfekt zu programmieren und ich lerne das alles dann, ok?

Es kommt mir ja nur darauf an, dass das Spiel einfach flüssiger läuft, der Schleifendurchgang nicht so lange dauert und das Programm schneller arbeitet, auch wenn ich mehrere meshes auf einer kleinen Fläche platziere.
Mehr will ich doch überhaupt nicht wissen.

Speed und Sauberkeit, das ist mein Problem mit BB, sonst nichts.

Lunatix

BeitragMi, Jun 14, 2006 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Sogut wie nix...oder?

Ne, auf Surfaces kannst du Vertices machen, und aus je drei Vertices ein Polygon(Triangle). Allerdigs sind die irgendwo begrenzt, was die Vertices angeht... weis einer wieviel?
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Dreamora

BeitragMi, Jun 14, 2006 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
64k Polygone und Vertices auf aktuellen Karten. GF2 (GF4MX) haben noch eine Begrenzung von 32k Polygonen.

Diese Begrenzung ist durch DirectX 7 gegeben.

Aber sind wir ehrlich: Bei 64k Polygonen auf einer Surface hat man eh meist schon ein Problem. Soviel haben noch nicht einmal Mesh Terrains mit alpha vertex splatting auf einer Surface.

Und was das mit animierten Objekten zu tun hat: nicht so viel. Da spielen dann andere Dinge rein. Vor allem: Anzahl Polygone. Ob man Bone Animation genommen hat und falls ja: Das man nicht zuviele Bones benutzt! Denn Bone Animationen laufen auf der CPU und nicht auf der Grafikhardware!

Etwas vom wichtigsten ist, das man nur rendert wenn es auch sinn macht. Sprich es hat keinen Sinn bei einer angepeilten Framerate von 60 FPS 300 mal zu rendern. Genau so wenig bringt es mit Flip true / flip 1 zu arbeiten. Damit wartet das Programm nur ständig anstatt der Spiellogik Laufzeit zur Verfügung zu stellen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

X0r

BeitragMi, Jun 14, 2006 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Sogut wie nix...oder?

Was meinst du damit?


Also rendern und so sagt mir nichts. Ich habe mich nie damit beschäftig. HAbe einfach frameunabhängig gemacht und die meshes draufgehauen.


Dreamora, das bringt mich nicht weiter, das Gerede. Kannst du mir ein Beispiel schicken? Codes helfen mir anscheinend mehr(Kleines Beispiel wie du das mit rendern und so was meinst).
Danke.



Also ich mache das immer so:
Code: [AUSKLAPPEN]

graphics3d 1024,768
setbuffer backbuffer()


mesh=loadmesh("mesh.b3d")


repeat
stime=millisecs()

moveentity mesh,0,0,1*time

..


renderworld
updateworld


time=stime-millisecs()

flip 0
forever


Schreib mir das mal bitte so um, dass es so perfekt wird, wie du meintest.
  • Zuletzt bearbeitet von X0r am Mi, Jun 14, 2006 20:53, insgesamt 4-mal bearbeitet

Bud

BeitragMi, Jun 14, 2006 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
DW hat Folgendes geschrieben:
(Kleines Beispiel wie du das mit rendern und so was meinst).

Fällt mir nur RenderWorld() ein Razz

Lunatix

BeitragMi, Jun 14, 2006 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber bei Flip 0, da bekommt mein 2ter Bildschirm (17ner, 1280*1024) Zeilensprünge, das ist aucn nich schön....

was sind 64K ?? 64.000?? 64KB ??
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

X0r

BeitragMi, Jun 14, 2006 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ahso das. Na toll, das muss man immer nutzen.

Also soweit ich weiß ist renderworld dazu da, die erstellte "Welt" oder "Scene", die von einer Kamera gesehen wird auf den Backbuffer zu zeichnen.

So, oben ist die Methode, wie ich meine 3D Spiele mache. Was ist daran jetzt schlecht? Wenn ihr was besseres habt, was speed und sauberkeit angeht, dann bitte posten. Ist wichtig.
 

Dreamora

BeitragMi, Jun 14, 2006 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ich meinte:

Anstatt immer stupid

renderworld
flip 0 / flip 1

zu machen, kann man zb auch einen Zeitmesser machen:

if millisecs() - lastUpdate > 1000/desired_FPS#
renderworld
flip 0
lastUpdate = millisecs()
endif

Dadurch erreicht deine Mainloop mehrere Zehn- bis Hundertausend durchläufe. Was Speziell bei komplexeren Dingen im Hintergrund sehr von Vorteil ist.
Die effektiv sichtbaren Frames ist dabei immer noch identisch mit dem oben. Allerdings funktionieren dieser und ähnliche Tricks nur wenn man ein wenig ahnung davon hat wie 3D und auch Zahlen auf dem PC funktionieren. Sonst könnte es bei zeitunabhängigen Implementation zum Problem kommen, das man eine 0 Division hat weil die differenz prinzipiell 0 ist bei der Zeit und so ...

Solche Dinge meine ich mit Grundlagen um "fortgeschrittene Performancetricks" einbauen zu können.

EDIT:

64k = 64 * 1024 = 64 * 2^10 = 65536
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am Mi, Jun 14, 2006 21:07, insgesamt 3-mal bearbeitet
 

X0r

BeitragMi, Jun 14, 2006 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso. Wars das? Ich glaube, du hast da oben mehr erzählt. Und was ist mit dem umschriebenen code?

Ähh, wenn ich dein code gebrauche, dann werden bei 2 Sekunden gedrückt halten irgendwie verdammt viele meshes erzeugt.

Bitte code mal dieses Würfel-Teil komplett um, so wie es professionel und perfekt wäre.
  • Zuletzt bearbeitet von X0r am Mi, Jun 14, 2006 21:18, insgesamt einmal bearbeitet
 

Dreamora

BeitragMi, Jun 14, 2006 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja ich habe mehr erzählt.
Aber du willst doch entwickeln oder?
Also recherchiere. Ich kann - werde - möchte dir nicht alles liefern und Code mit tendenz als letztes.

Für mich ist das Thema damit abgeschlossen.
Wenn du sonst jemand findest der dir advanced / Profi Tricks die er selbst erst nach unzähligen Stunden nachdenken und rumprobieren gefunden hat mitteilt: Dein Glück

Aber erwart nicht das wir dir alles einfach so liefern.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

X0r

BeitragMi, Jun 14, 2006 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Von mir aus. Ich habe auch sonst immer selber nachgedacht, rumprobiert und so und habe es dann geschafft. Das werde ich dann auch wohl schaffen.
Dann hilf mir doch nicht. Mein Problem.

Gehe zu Seite Zurück  1, 2, 3, 4  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group