Landschaften ala Gothic
Übersicht

Gehe zu Seite 1, 2, 3, 4 Weiter
![]() |
NightPhoenixBetreff: Landschaften ala Gothic |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
clever die jungs ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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ß. ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke jetz weiß ich endlich wie der Speicher verwaltet wird ![]() Ja gut die 2048er waren nur für die ultimative Feinauflösung... ![]() 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?? ![]() so jetz wurde die frage immernoch nicht geklärt: "tex"+x = loadtexture ("abc+x.bmp") oder? |
||
![]() |
pixelshooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
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? ![]() |
||
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc |
![]() |
FreetimeCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
konstantin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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?
![]() Blitz3D verbraucht den kompletten Rest der CPU. Zwei Blitz3D-Anwendungen nebeneinander machen sich deswegen (vorallem auf langserem Systemen) gegenseitig platt. |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Gehe zu Seite 1, 2, 3, 4 Weiter
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group