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

04.02.2005, 18:16

2 fragen

ich hab das mal zwei fragen die ihr freaks mir sicherlich beantworten könnt ^^

1) wir schaff ich es ein video im vollbildformat ruckelfrei abspielen zu lassen??
info: ich benutze die tribase engine

2) ich habe in meinem spiel ein ähnliches hauptmenü wie aus galactica implementiert. wenn jetzt bei mir der ladebildschirm startet läuft das spiel im hintergrund aber schon los...is das ein fehler von meiner render-funktion oder liegt der woanders?

danke für jegliche hilfe

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

04.02.2005, 18:28

Hmmm, zu 2. einfach den Moveaufruf für die spielklasse aussetzen, sonlange du im Menü bist.

zu 1. das hängt glaube ich mit der Vergrößerung der Textur zusammen... versuch es mal mit 3 backbuffern

3

05.02.2005, 18:18

also das erste krieg ich schon irgendwie selber raus...is bestimmt nur n blöder fehler

aber das 2. musste mir mal genauer erklären...ich bin ein nup vergiss das nich :]

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

4

05.02.2005, 18:35

also dein Spiel ruft doch immer die Funktionen Render und Move auf. Solange das Menü noch nicht geschlossen ist, darf die Move Funktion nicht aufgerufen werden, weil die ja die Bewegungen usw des Spiels berechnet, das spiel also schon los geht. Du musst also zB eine Abfrage einbauen:

C-/C++-Quelltext

1
if (MenuOpen != true) { Move(); }


bzw. wenn du die Programmschleife von der TriBase benutzt, musst du es anders machen, weil der die automatisch beide hintereinander abruft. Dann musst du einfach 1 Menüteil programmieren, mit eigener Render und Move Funktion und 1 Spielteil, in dem dann erst die Render und Move Funktion deines Spiels gestartet werden. Dieses Teil rufst du erst dann auf wenn das Menü geschlossen wurde, also das Spiel startet

5

06.02.2005, 20:42

ich hab einfach das system aus galactica übernommen:

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
//__________________________________________________________________

//Nachrichtenfunktion für das Hauptmenü

tbResult MainMenuMsgProc(int iID,
                         tbGUIMessage* pMsg,
                         tbGUI* pGUI)
{
    switch(pMsg->Type)
    {
    case TB_GMT_ELEMENTCLICKED:
        switch(iID)
        {
        case 100: //Spiel starten

            {
                pGUI->SetCurrentPage(1);
            }
            break;
        
        case 102: // Spiel beenden

            {
                PostQuitMessage(0);
            }
            break;
        }
        break;

    case TB_GMT_RENDER:
        if(pGUI->GetCurrentPage() == 1)
        {
            //Der Ladebildschirm wird angezeigt. g_bStartGame auf TRUE

            g_bStartGame = TRUE;
        }
        break;
    }

    return TB_OK;
}


und dann in der move des hauptmenüs:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//__________________________________________________________________

//Bewegt den Spielzustand

tbResult CMainMenu::Move(float fTime)
{
    //Benutzeroberfläche bewegen

    m_pGUI->Move(fTime, g_pbButtons, g_pfButtons);

    if(g_bStartGame == TRUE)
    {
        //Spiel starten

        g_pTetris->SetGameState(GS_GAME);
    }

    //Musik überprüfen

    

    return TB_OK;
}


bei galactica funzt es...bei mir irgendwie net O_o

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

6

06.02.2005, 23:25

Also wenn ich das jetzt nich falsch verstehe: (hab mich mit galactica noch nich beschäftigt, da es mit meiner geforce fx 5200 nich läuft)

C-/C++-Quelltext

1
2
3
4
5
        if(pGUI->GetCurrentPage() == 1) 
        { 
            //Der Ladebildschirm wird angezeigt. g_bStartGame auf TRUE 

            g_bStartGame = TRUE; 
        }


hier fragst du ab ob spiel starten geklickt wurde und setzt den ladebildschirm, richtig?

C-/C++-Quelltext

1
2
3
4
5
    if(g_bStartGame == TRUE) 
    { 
        //Spiel starten 

        g_pTetris->SetGameState(GS_GAME); 
    } 


und hier startet das game, sobald der ladebildschirm aufgerufen wird (wenn g_bStartGame = true). Dadurch startet das Spiel sobald der Ladebildschirm erscheint. Das musste ändern. Ich hab nu zwar auch nich so den Überblick über dein Projekt, also wenns daran nich liegt hab ich auch keine ahnung

7

07.02.2005, 18:37

also was ich gerne hätte wäre das ich nen ladebildschirm hab auf dem dann steht:

"Block1 wird geladen"
"Block2 wird geladen"

etc...

und das dann direkt das game loslegen kann...also war das system von galactica schon extrem nah dran aber bei mir funzt es net...wenn ich mir deine antowrt so durch den kopf gehen kann zu recht...aber wieso gehts dann bei galactica O_o

Werbeanzeige