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

Nahdar

Frischling

  • »Nahdar« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

1

14.04.2012, 10:17

Terrain implementierung in Breakanoid Beispiel!

Ich versuch es mal anders:

Ich habe mir vorgenommen aus dem Buchbeispiel "Breakanoid" den Auszug:

C-/C++-Quelltext

1
2
3
// Levelmodell laden
    m_pLevelModel = new tbModel;
    if(m_pLevelModel->Init("Data\\LEvel.tbm", "Data\\")) TB_ERROR("Fehler beim Laden des Levelmodells!", TB_ERROR);


Mit dem Terrain aus dem Beispiel 3.2 3D-Grafik mit der TriBase-Engine zu ersetzen.
Dafür wollte ich folgende Schritte durchgehen:
1. Das wabbern rausnehmen -> Das habe ich durch den Werteaustausch bei

C-/C++-Quelltext

1
2
//Den Zeitzähler aktualisieren
    g_fTime += 0; //fNumSecsPassed;
geschafft.
2. Wollte ich die Skybox entnehmen. Allerdings ist das Programm wehement abgestürzt ohne mir einen Fehler auszugeben.
3. Wollte ich das dann einfach per (ja ich weiss ist dumm) Copy+Paste am Ende der Game.cpp von Breakanoid kopieren. Klappt auch.. Allerdings wird mir das Level nicht angezeigt.
Mein Ansatz war bislang: Ich habe versucht die Struct, und Globalen Variablen des Terrains in die einzelnen .h Dateien auszulagern, funktionierte nicht, da dann die initialisierung behauptet das die Variablen nicht deklariert wurden.
Alles in allem ein reiner Reinfall..
Ein Freund von mir sagt, er habe das Terrain-Modell soweit runtergebrochen, das weder die Skybox, noch die Bewegungen noch sonst irgendwas vorhanden ist, und das vom eigentlichen Beispiel noch wenige Zeilen zum implementieren vorhanden wären. Allerdings sehe ICH keinen Ansatz.

So far

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Nahdar« (14.04.2012, 12:56)


Sp3iky

Treue Seele

Beiträge: 232

Beruf: Entwicklungsingenieur

  • Private Nachricht senden

2

14.04.2012, 10:59

Tut mir leid, aber mit der Fehlerbeschreibung kann dir niemand helfen.

3

14.04.2012, 11:06

Versuchs mal hiermit:

http://www.tty1.net/smart-questions_de.html

(nein, das ist kein Witz, das ist ernst gemeint!)
Lieber dumm fragen, als dumm bleiben!

Sp3iky

Treue Seele

Beiträge: 232

Beruf: Entwicklungsingenieur

  • Private Nachricht senden

4

14.04.2012, 11:30

Also ernsthaft, sei mal ehrlich zu dir selbst.. Wenn ich dir 1600 Zeilen Code vor die Füße klatschen würde und sage "geht nicht", würdest du mir dann helfen? Und ich meine unabhängig davon, ob du helfen wollen würdest, oder nicht, könntest du es überhaupt mit diesen Informationen?

Nahdar

Frischling

  • »Nahdar« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

5

14.04.2012, 11:33

Also ernsthaft, sei mal ehrlich zu dir selbst.. Wenn ich dir 1600 Zeilen Code vor die Füße klatschen würde und sage "geht nicht", würdest du mir dann helfen? Und ich meine unabhängig davon, ob du helfen wollen würdest, oder nicht, könntest du es überhaupt mit diesen Informationen?

Siehe Eingangspost. Cu

Sp3iky

Treue Seele

Beiträge: 232

Beruf: Entwicklungsingenieur

  • Private Nachricht senden

6

14.04.2012, 11:49

Wir wollen dich hier wirklich nicht loswerden, aber du musst erstmal ein wenig Eigeninitiative beweisen und den Fehler soweit eingrenzen, dass man per Ferndiagnose etwas damit anfangen kann.

Schau einfach mal, warum das Terrain nicht da ist. Wird es nicht geladen, wird es nur nicht angezeigt, wird es an der falschen Stelle angezeigt usw. Das sind alles Dinge, die man selbst herausfinden kann.

7

14.04.2012, 11:51

Sei nicht beleidigt. Es geht nicht darum, dass dir niemand helfen will, es geht darum, dass dir niemand helfen kann, wenn du deine Fragen so stellst.
UND: Mir ist es schon oft so gegangen, dass ich eine gute Frage stellen wollte, beim schreiben das Problem reflektiert habe und die fertig formulierte Frage gar nicht mehr stellen musste, weil ich schon selber auf die Lösung gekommen bin.
Und: Die Eingangspost wegzueditieren ist ein wenig unhöflich, weil so niemand mehr weiß, worum es ging.
Und: Es geht auch nicht darum, keine peinlichen Fragen zu stellen, das tut jeder. Fehler sind dafür da, um aus ihnen zu lernen. Wenn du aus Angst, eine dumme Frage zu stellen, gar nichts sagst, lernst du auch gar nichts.
Lieber dumm fragen, als dumm bleiben!

Nahdar

Frischling

  • »Nahdar« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

8

14.04.2012, 17:00

Habe meinen eingangspost nochmal bearbeitet.. vllt. ist das ja hilfreicher.

mfg

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

9

14.04.2012, 18:11

Es ist immer schwer einzuschätzen bei solchen Sachen, was die Leute schon können. Wichtig ist das aber für die Fehlersuche. Wenn man den Ansatz verfolgt den du grad hast, sollte man möglichst einen guten Überblick über das Programm haben. Das heisst, man sollte genau wissen was an welcher Stelle passiert. In dem Fall geht das ja noch "relativ" einfach, da im Buch das meiste beschrieben ist. Trotzdem vergisst man schnell mal gewisse Stellen. Versuch mal, falls noch nicht geschehen, eine neue Anwendung zu erstellen und ein Modell zu laden und anzuzeigen. Möglichst dabei nicht einfach copy&paste sondern mit Verständnis. Wenn das soweit klappt, solltest du ein gutes Verständnis darüber haben, wie du das mit der TriBaseEngine umsetzen kannst. Dann kannst du noch mal das Breakout Spiel im Buch durchgehen. Du willst ja einfach das Level austauschen, von daher sind die Stellen an denen das behandelt wird dann wichtig. Als nächsten kannst du dann versuchen das Modell auszutauschen. Dabei kannst du dir die nötigen Stellen vom Beispiel im Buch angucken. Dann baust du es mit Hilfe des Buches nach. Dabei musst du dann die Bewegung erst gar nicht einbauen. Das sollte dann normal leichter Fallen.
Wenn dann immer noch Probleme vorhanden sind, solltest du vielleicht einfach mal ein paar Breakpoints setzen und das ganze mit dem Debugger durchgehen, Werte checken und gucken wo es schief geht. Damit solltest du schon mal weiter kommen dann.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Nahdar

Frischling

  • »Nahdar« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

10

15.04.2012, 12:42

Also, ich habe nun ein paar Breakpoints gesetzt (Hoffentlich sinnvoll nach jeder Funktion) und tatsächlich hat er mir angezeigt das er vom Breakpoint vor dieser Funktion:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
{
    // TriBase-Engine initialisieren
    tbInit();

    // Konfiguration abfragen
    tbResult r;
    if(r = tbDoConfigDialog(&g_Config))
    {
        if(r == TB_CANCELED) return 0;
        else
        {
            // Fehler!
            MessageBox(NULL, "Fehler im Konfigurationsdialog!", "Fehler",
                    MB_OK | MB_ICONEXCLAMATION);
            return 1;
        }
    }

    // Direct3D initialisieren
    if(tbDirect3D::Instance().Init(&g_Config,
                                   "Beispielprogramm Nr. 1: tbDirect3D",
                                   NULL,
                                   LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1))))
    {
        // Fehler!
        MessageBox(NULL, "Fehler bei der Direct3D-Initialisierung!", "Fehler",
                MB_OK | MB_ICONEXCLAMATION);
        CleanUp();
        return 1;
    }

    // Den Texturmanager initialisieren
    if(tbTextureManager::Instance().Init())
    {
        MessageBox(tbDirect3D::Instance().GetWindow(), "Fehler beim Initialisieren des Texturmanagers!",
                "Fehler", MB_OK | MB_ICONEXCLAMATION);
        CleanUp();
        return 1;
    }

    // Das Wasser initialisieren
    if(InitWater())
    {
        MessageBox(tbDirect3D::Instance().GetWindow(), "Fehler beim Initialisieren der Wasseroberfläche!",
                "Fehler", MB_OK | MB_ICONEXCLAMATION);
        CleanUp();
        return 1;
    }

    /*if(tbDoMessageLoop(MoveProc, RenderProc))
    {
        MessageBox(tbDirect3D::Instance().GetWindow(), "Fehler beim Zeichnen!",
                "Fehler", MB_OK | MB_ICONEXCLAMATION);
        CleanUp();
        return 1;
    } */

    // Aufräumen
    CleanUp();

    return 0;
}

// ******************************************************************


Nicht zum letzten kommt! Woran könnte das liegen? Ich wollte die Aktualisierung des Buffers für die Wellenbewegung deaktivieren und seitdem ich das gemacht habe, startet die Anwendung gar nicht.
Hoffe das erläutert mein Problem besser?

Werbeanzeige