Landschaften ala Gothic

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2, 3, 4  Weiter

Neue Antwort erstellen

NightPhoenix

Betreff: Landschaften ala Gothic

BeitragMi, Jan 17, 2007 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Wollte mal fragen wie die Entwickler von Gothic I und II (vielleicht auch III k.a.) es gemacht haben, dass sie eine so riesige Landschaft mit so vielen detailierten Texturen und Objekten ohne Ladezeiten geschaffen haben. Gut eigentlich gibt es schon Ladezeiten, aber eben so schön schrittweise aufgeteilt, dass dem Spieler kein Ladebildschirm vor die Nase geknallt wird, wenn er zum Beispiel in die Nähe einer Stadt kommt.
Was meint ihr wie die Macher von Gothic es realisiert haben?
Schließlich würde es eine totale Überlastung geben, wenn alle Texturen geladen wären (insgesamt vielleicht 500MB Texturen) (was ja in keinen normalen Grafikspeicher rein passen würde)
MfG.
 

Dreamora

BeitragMi, Jan 17, 2007 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Sie haben es so gemacht wie alle: Threaded loading. Das geht in Blitz nicht, du kannst nur in einem Thread arbeiten und deswegen nicht im hintergrund laden.

Etwas weiteres ist halt das die ganze Engine für genau diesen Zweck ausgelegt ist. Das geht mit Blitz3D ebenfalls nicht da es eine "Allgemein" Engine ist ...

Aber gewisse Dinge davon sind ohne Probleme umsetzbar wenn du gewillt bist den dafür notwendigen Code zu schreiben.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

NightPhoenix

BeitragMi, Jan 17, 2007 17:42
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würds ja mit
Code: [AUSKLAPPEN]

x=aktuelles Objekt
if entitydistance < 100 then m+x=loadtexture("Tex"+x+".bmp") else freetexture m+x

...machen
aber mir hat mal einer gesagt, dass viele "IF" Befehle tierisch auf die Leistung gehen... man soll doch lieber mit "SELECT CASE" arbeiten, das soll schneller sein als "IF"... stimmt das?
Bremsen solche Bedingungsbefehle die Anwendun generell sehr, oder ist der Leistungsverlust eher gering?
 

Dreamora

BeitragMi, Jan 17, 2007 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Leistungsverlust geht gegen 0, Select kostet gleich viel Zeit, wenn die letzten cases häufig eintreffen.

allerdings hilft das nix, deine zuweisung da ist falsch, m + x = irgendEineInt ???
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

NightPhoenix

BeitragMi, Jan 17, 2007 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
weiß jetz auch nicht genau... es soll so sein, dass er das m stehen lässt und diesem wort die variable x anhängt ... also wenn x jetz = 12 dann soll das sein
m12 = loadtexture, wobei 12 der x wert eines Objektes ist, auf welches die textur gelegt werden soll...

glaube "m"+x=loadtexture wäre richtig oder?

somit kann man das dann universell im ganzen code einsetzen für die distance befehle....

Phalastos

BeitragMi, Jan 17, 2007 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Also der größte Trick von den Jungs ist das eigene virtuelle Dateisystem.
Dadurch ist es möglich jegliche Medien in Echtzeit nachzuladen. Somit wäre es sogar möglich eine unendliche Landschaft zu erschaffen, welche sich dynamisch vor dem Spieler aufbaut.
Wie aber Dreamora schon schrieb ist es ohne Threads nicht umsetzbar, da sonst bei jedem Ladevorgang das Spiel stehen würde.
Forbiddenmagic - Warfare of Forgotten Power

NightPhoenix

BeitragMi, Jan 17, 2007 18:11
Antworten mit Zitat
Benutzer-Profile anzeigen
clever die jungs Wink
mmmh... Nun ist es nicht so, dass der Ladevorgang einer 512er Textur relativ schnell geht? so schnell, das der spieler nichts weiter merken würde, als ein kleiner winziger Ruckler? Man könnte ja die größeren geladen lassen und nur kleinere immer neu laden und verwalten!?

Dann hab ich noch kurz Fragen zur Speicherverwaltung:
Werden 3d objekte in den grafikspeicher geladen?
Ich hatte schonmal mehr als 140MB Texturen, aber nur 128mb Grafikspeicher, also gehen größere Texturen in den RAM (oder?)... das Spiel ist deshalb auch von 200FPS auf 12FPS runter gegangen, kann man das optimieren?
Werden Terrains auch in den Grafikspeicher gepackt, oder in den RAM (sie sind ja dynamisch)?

danke ^^
 

Dreamora

BeitragMi, Jan 17, 2007 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Terrains sind ziemlich intensiv. sie werden jedes Updateworld aktualisiert wenn du blitzterrains hast.
Und was gerendert wird ist immer im VRAM, ist aber kein Problem, denn dieser ist in Texturspeicher und Geometriespeicher unterteilt ^^

140MB: In jpg oder bmp, denn im VRAM werden sie im BMP format sein. (falls net DDS)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Phalastos

BeitragMi, Jan 17, 2007 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Nun ist es nicht so, dass der Ladevorgang einer 512er Textur relativ schnell geht?


So eine Landschaft besteht ja nicht nur aus einer 512 x 512er Textur, denn
da gibt es vor allem noch die Mapobjects.( Bäume, Gebäude, Karren... )
Nun stell Dir einfach ein detailiertes Dorf vor, welches mit geladen werden muß. Smile


Zitat:
Werden 3d objekte in den grafikspeicher geladen?


Zumindest bei ATI wird nachdem der VRAM voll ist auf den normalen RAM ausgewichen.
Forbiddenmagic - Warfare of Forgotten Power

NightPhoenix

BeitragMi, Jan 17, 2007 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ich (noch) die Demo Version besitze bin ich gezwungen ausschließlich mit .bmp oder .png zu arbeiten (was ja im Grafikspeicher gleich groß ist)
.JPG wären weniger MB im Speicher oder?
Also ich hatte damals 3x 2048er und paar 1024er mit 512ern alles .png... so nun war die Grafikkartenspeicherauslastung längst überschritten, wie schon gesagt 140mb. Geprüft habe ich das übrigens mit "AvailVidMem/1000000"
die FPS Zahlen sanken trastisch. Ich vermute einige Texturen wurden wegen Platzmangel in den RAM Speicher verlegt und da der Zugriff von Graka zu RAM ja nicht gerade schnell ist im Vergleich zum Graka-speicher (VRAM) gabs halt die Probleme
Aus Phalastoses Worten kann ich schließen, dass auch 3DObjekte im VRAM landen.... Nun dann würds die ersten mmmh sagen wir 50 meter vor der Stadt eben mal ein "bisschen" ruckeln Wink aber keine Sorge liebe Zocker, es liegt dann nicht an der Leistung eures 5GHz Computers sondern an dem bösen Nightphoenix, der versucht hat ein "Threaded loading" zu schaffen, wo es garkeins geben kann Razz

Mich würd jetz echt mal interessieren ob es bei bissl Echtzeit gelade wirklich extrem ruckelt, merkbar ruckelt, ein bisschen, oder überhauptnicht ruckelt...
wenn ich bedenke, dass mein Computer für die 140mb Szene 3 Sekunden zum laden braucht, kanns ja im Endeffekt garnicht so schlimm sein...
 

Dreamora

BeitragMi, Jan 17, 2007 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Im VRAM sind alle gleich gross, egal ob BMP oder JPG und zwar länge * höhe * 4 bytes bei 32bit farbtiefe.

2048x2048 kann auch das Problem sein. Das sind 22MB VRAM alleine schon so, davon abgesehen das man eine schnellere grafikkarte braucht damit sie mit gescheitem speed gehen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Eingeproggt

BeitragMi, Jan 17, 2007 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
ich werd mich bald umbenennen in "Geht_das_auch_in_2d?" ^^

Das will ich nämlich bei fast allen hier besprochenen 3d-problemen wissen. Genauer gefragt: Nimmt auch bei 2d jedes Bildformat gleich viel Platz weg?
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

NightPhoenix

BeitragMi, Jan 17, 2007 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke jetz weiß ich endlich wie der Speicher verwaltet wird Smile
Ja gut die 2048er waren nur für die ultimative Feinauflösung... Wink meine Galleone hatte zwei 2048er drauf =)

Für die unterschiedlichen PC's da draußen würde ich natürlich noch eine Grafikeinstellung "Texturdetail" einbauen.... damit die Leute mit schwächeren PC's nicht benachteiligt werden.
Für die ComputerZukunft vielleicht auch noch sorgen? mmmh... 4096er?? Very Happy ne nicht unnötig Festplattenspeicher verbrauchen.

so jetz wurde die frage immernoch nicht geklärt:
"tex"+x = loadtexture ("abc+x.bmp") oder?

pixelshooter

BeitragMi, Jan 17, 2007 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
würde es nicht sinn machen, ein 2.prog als background worker zu starten,d as über netzwerk kommuniziert? oder is das ne schwachsinnige idee? Very Happy
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc

FreetimeCoder

BeitragMi, Jan 17, 2007 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke schon. Da du die Daten sowieso übers Netz schicken musst und laden musst, dauerts noch länger, als wenn du die Daten direkt lädst.
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Jan 17, 2007 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Idee die pixeldhooter wohl meint ist, dass ein zweites Programm im Hintergrund gestartet wird welches per zB Parameterübergabe eine Textur läd und diese an die eigene IP sendet, um es dann vom Spiel aus in ein Texturpuffer Zeile für Zeile schreiben zu können.

edit1: Hierbei geht es nicht um Geschwindigkeit, sondern darum, Teturen ohne anhalten des Systems laden zu können.
 

Dreamora

BeitragMi, Jan 17, 2007 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
allerdings hat er recht, es würde beinahe noch langsamer, denn du musst die textur manuell wieder zusammenbauen via plot / writepixel / writepixelfast ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

skey-z

BeitragMi, Jan 17, 2007 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
um eine deiner Fragen zu beantworten

Zitat:
Orginal von Dreamora
Und was gerendert wird ist immer im VRAM, ist aber kein Problem, denn dieser ist in Texturspeicher und Geometriespeicher unterteilt ^^


Desweiteren, probier das Echtzwitladen doch einfach mal aus, erstelle mit einem 3D Prog einfache planes mit vielen unterteilungen, um eine gewisse Poly-Anzahl zu erreichen und setze sie in Blitz aneinander.
Lade aber nur immer eine gewisse anzahl um dich herum und andere, die zu weit weg sind löscht du wieder.
Bei dem ganzen lässt du nen Framecounter laufen um zu überprüfen, wie sich die FPS verhalten.

Nagel mich jetzt bitte nicht fest, es wird mit Sicherheit nicht ein komplettes Spiel simulieren, gibt dir aber schon mal einen Eindruck, was man vlt optimieren kann, oder ob es bei den paar Objekten schon zu starken Verzögerungen kommt.

Außerdem gibt es ja auch noch den Befehl CopyEntity und CopyMesh, somit braucht man nicht jeden Baum einzeln neu laden, was massig Speicher verbraucht, sondern wie der Name schon sagt wird ein Objekt nur kopiert und bekomt somitt als Referenz das geladen Objekt, dies erhöt lediglich die zu sehenden Polys.

Hoffe, dass ich es mit meinem Halbwissen Richtig Dargestellt habe, ansonsten verbessert mich bitte, damit ich nicht dem Irrglauben erliege.

Mfg skey-z
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

konstantin

BeitragMi, Jan 17, 2007 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
pixelshooter hat Folgendes geschrieben:
würde es nicht sinn machen, ein 2.prog als background worker zu starten,d as über netzwerk kommuniziert? oder is das ne schwachsinnige idee? Very Happy


Blitz3D verbraucht den kompletten Rest der CPU. Zwei Blitz3D-Anwendungen nebeneinander machen sich deswegen (vorallem auf langserem Systemen) gegenseitig platt.

StepTiger

BeitragMi, Jan 17, 2007 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal OT:
Das ganze erinnert mich sehr an Halo2.
Da gibt es außer der des ersten Levels keine einzige Ladezeit.
Während man spielt, werden die Level geladen.

Zum Threading: Mit speziellen funktionen und der Auseinandersetzung mit den Formaten wäre auch das möglich.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Gehe zu Seite 1, 2, 3, 4  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group