Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

07.08.2008, 12:56

Absturz der TriBase Engine

Hallo,
einige der Anwendungen (siehe Link unten) stürzen beim Starten ab, andere brechen mit einer Fehlermeldung ab.

Die Abstürze/Fehlermeldungen treten allerdings nur mit der fehlerfrei (!) selbstkompilierten Version der TriBase(D).dll auf.
Wenn ich die TriBase(D).dll von der CD verwende, funktionieren einige der Programme, aber das ist nicht so ideal, da man mit der "falschen" Version der DLL nicht debuggen kann.

Ich habe die Programme auf mehreren PCs getestet -> Es kann nicht an meinem PC liegen.

Hier meine Daten:
VS 2005 Professional (keine Express Edition!) auf Windows XP x64 SP2, DirectX SDK April 2007, neuestes Platform SDK (Server 2008, v6.1), 3. Ausgabe des Buchs

Programme, die abstürzen/abbrechen:
https://www.spieleprogrammierer.de/phpBB2/viewtopic.php?p=109010#109010
Die beiden Spiele stürzen übrigens auch gleich nach dem Starten ab. Debuggen kann man sie nicht, da sie die IDE gleich mitreißen..

Nochmal als Hinweis, da es in meinem alten Thread falsch verstanden wurde: Kompilieren kann ich ohne Fehler, aber beim Ausführen stürzen die Anwendungen ab!

MfG,
Max

BlazeX

Alter Hase

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

2

08.08.2008, 13:00

Das war auch mal mein Problem: Die Effekte und D3DX
D3DX verbietet seit neustem Variablen die so heißen wie Typen.

David hat aber zu seiner Zeit jedesmal TEXTURE Texture benutzt.
Also entweder du durchforstest die Engine und alle Effektdatein nach "Texture" oder du benutzt das SDK von der CD.

Zur Sicherheit solltest du mal die Logs durchsuchen, wenn da bei Galactica im Log ein Fehler bei den Fonts ist, war das dein Problem.

blub

Frischling

  • Private Nachricht senden

3

09.08.2008, 08:44

Du meinst sicher nur die DirectX-Version, oder? Das SDK kann doch damit nichts zu tun haben, denn bei mir kommt der Absturz auch bei den von David auf der CD mitgelieferten exen (mit dem gleichen Log).

Ich nutze DX10, Revan DX9.? wobei ich nicht weiß ob bei Revan auch die mitgelieferten exen abstürzen oder nur seine selbstkompilierten Sachen.
Ich werde die mitgelieferten (vorkompilierten) Programme mal auf anderen (älteren) Rechnern ausprobieren, vermute dort wird es ohne Installation irgendwelcher SDKs funktionieren. Zumindest musste ich bisher noch nie ein DirectX-SDK installieren um ein Spiel zu spielen.

Es scheint aber das Problem zu sein, was du beschrieben hast. Der Log sieht genauso aus wie bei Keydo:

https://www.spieleprogrammierer.de/phpBB…p=109283#109283

BlazeX

Alter Hase

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

4

09.08.2008, 12:15

Mit der DX-SDK Version hat es hier folgendes auf sich:
Direct3D ist abwärtskompatibel, soll heißen du kannst auch alten Source mit neuem SDK kompilieren.
Bei D3DX ist das anders: Manchmal haben sich innerhalb von wenigen SDK-Updates die Parameter mancher Funktion mehrfach geändert.
Wenn du also älteren Source hast, der D3DX vergangener Zeiten benutzt, dann benutze auch das SDK von damals.

DX10 ist deine installierte Version. Aber Davids TriBase-Engine nutzt DX9.

Dass du noch nie ein SDK installieren musstest um ein Spiel zu spielen ist klar, aber du installierst automatisch die benötigen DLLs aus dem SDK mit. Das ganze nennt man Redist.

blub

Frischling

  • Private Nachricht senden

5

09.08.2008, 15:46

Ich werde deine Lösung aus dem anderen Thread morgen mal ausprobieren, aber fürs Verständnis der Problematik ich würd gern noch wissen was es mit den redistributables und D3DX auf sich hat. Fasse mal kurz zusammen wie ich die Microsoft-Erklärungen dazu verstanden hab. Wäre nett, wenn du mir sagen kannst wo ich falsch liege.

Microsoft bietet folgende Downloads zu DirectX an:

http://www.microsoft.com/downloads/Browse.aspx?displaylang=de&categoryid=2

Die redist enthält nichts weiter als die DirectX-Endbenutzer-Runtime, und zwar in der Form, dass man sie ohne Internetzugang installieren kann(stattdessen z.B. von Festplatte oder CD).
D3DX ist in allen DirectX-Endbenutzer-Runtimes enthalten. D3DX lässt sich also nicht deinstallieren, da sich die Runtime nicht deinstallieren lässt.
Zum reinen Spielen benötigt man kein SDK, sondern nur die DirectX-Endbenutzer-Runtime.

Wenn ich (statt in Davids Engine die von dir genannten Codezeilen zu ändern) eine geeignete (alte) DirectX-Endbenutzer-Runtime installieren würde, könnten die mitgelieferten exen auch ohne Absturz gestartet werden.
Allerdings würde mit der Installation meine aktuelle DirectX-Runtime überschrieben.
Damit würde zwar Galactica/Breakanoid funktionieren, aber keine Spiele die die neueren Versionen von D3DX vorraussetzen.

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

6

09.08.2008, 17:10

D3DX liefern die meisten Leute deswegen selber mit. Ich arbeite hier mit einer möglichst alten SDK Version (April 2005), weil da die D3DX Sachen sogar noch statisch gelinkt wurden und neue Funktionen hab ich nicht vermisst.

BlazeX

Alter Hase

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

7

09.08.2008, 21:28

Ich fasse mal kurz zusammen.

Microsoft liefert 2 Pakete: Das SDK (für Entwickler) und das (/die/der??) Redist.

Das Redist enthält die DLLs die von Spielen benötigt werden. Jedes Update bringt neue DLLs mit. Die verschiedenen Versionen ergänzen sich. Je mehr, desto besser.
Kurz: einfach alles DirectX-EndUser-Zeug installieren, schadet nicht. Macht auch keine Fehler (wo die Spiele dran Schuld sind).
Normalerweise werden alle Redists, die das Spiel benötigt, gleich bei der Installation des Spiels mitgeliefert.

Das SDK ist für Entwickler. Es enthält Header, Libs... und das Redist, was vom Spiel zu spielen benötigt wird und du mitliefern solltest.
Wenn du ein Spiel programmierst, musst du dich an dein SDK halten.
Wenn du aber älteren Source hast (wie die TriBase-Engine von der CD), der eine andere SDK-Version benutzt, dann musst du den alten Source auch an dein neueres SDK anpassen. Damit er wieder UpToDate ist.
Bei Direct3D ist das kein Problem.
Aber D3DX macht Probleme. So kann es vorkommen, dass sich die Parameter mancher Funktionen auch bei verschiedenen Versionen mal ändern. Das sind offensichtliche Dinge, die man schnell findet, weil da dein Kompiler streikt.
Andere Dinge wie Effekt-Datein werden aber nicht beim Biuld kritisiert.
Bei deinem Problem hat sich eben mal die Syntax der Effekte geändert.
Da hilft aber nicht die Redists zu downgraden, sondern da musst der Programmierer sein SDK downgraden, oder den Source upgraden.
Letzteres ist in den meisten Fällen die bessere Variante.

Wenn es noch Fragen geben sollte, immer fragt.

blub

Frischling

  • Private Nachricht senden

8

09.08.2008, 23:52

Danke erstmal für die Antworten, Fragen habe ich auch noch einige bis ich das Problem mit D3DX verstanden habe ;).

Warum sollte ein redist-downgrade nicht helfen, wo das D3DX doch in der redist enthalten ist (und damit mit ge-downgraded würde)? Dann würde doch die Syntax der Effekte wieder mit der übereinstimmen, die David beim Entwickeln der Spiele nutzte.
Aber mit dieser (alten) D3DX-Effekt-Syntax würden dann evtl neuere Spiele nicht mehr funktionieren, wenn die unter der Annahme der neueren Syntax entwickelt wurden?

Das beste als Programmierer ist es dann wohl auf D3DX komplett zu verzichten, wenn Microsoft ständig Änderungen daran vornimmt, die nicht abwärtskompatibel sind?

Wenn nun 2 Spiele auf dem Rechner sind, die jeweils mit unterschiedlicher D3DX-Effekt-Syntax funktionieren, müsste man vor jedem Start eines Spiels sicherstellen, dass man die richtige D3DX-Version installiert hat. Ich nehme an, dass man nicht verschiedene D3DX-Versionen gleichzeitig auf dem Rechner haben kann, oder?

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

9

10.08.2008, 08:32

Zitat von »"blub"«

Ich nehme an, dass man nicht verschiedene D3DX-Versionen gleichzeitig auf dem Rechner haben kann, oder?
Doch, die Anwendungen liefern die als DLL mit. Wär ja sonst noch schöner ...

Der Endanwender merkt von den verschiedenen D3DX Versionen nur etwas, wenn der Programmierer schlampt und die DLL nicht mitliefert!

10

24.08.2008, 14:14

Anfänger-Frage: Anpassungen für Galactica und Breakanoid?

Ich habe da noch eine Frage zu dem Problem an sich. Wenn D3DX nun Variablen mit gleichem Namen wie Typen verbietet, was genau muss ich anpassen, damit ich Galactica bzw. Breakanoid nach dem Rendern korrekt starten kann?

Ich bin Anfänger und möchte einfach nur auf meiner Umgebung nach eigenem Rendern funktionierende Beispiele, mit denen ich experimentieren kann. :cry:
Vielen Dank schonmal.
_______________________________________________________________
Ich verwende VS 2008 Express auf Windows XP Prof. SP2, DirectX SDK März 2008, neuestes Platform SDK (Server 2008, v6.1), 3. Ausgabe des Buches

Werbeanzeige