Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dialogi w grach- jak to jest zrobione?

Ostatnio zmodyfikowano 2010-08-13 02:01
Autor Wiadomość
MAKONDE
Temat założony przez niniejszego użytkownika
Dialogi w grach- jak to jest zrobione?
» 2010-08-13 01:29:33
Witam wszystkich...
mam problem...a raczej pytanie dotyczące dialogów w grach...
dajmy na to jakąś grę RPG...są tam dialogi...naciska się je...
te napisy...
i te napisy są pewnie zapisane w jakimś pliku...zapewne tekstowym...
i te dialogi są odczytywane z tego pliku...

czy tak się to odbywa? :P


a jak już wczytają ten tekst to pewnie zapisuję je do zmiennych typu string tak?
P-20764
ison
» 2010-08-13 01:41:01
apropo samych dialogów to zależnie od gry najczęściej robione są jakieś powiązania między wypowiedziami. Przykładowo jeśli wybierzemy daną opcję dialogu to pojawia nam się kilka nowych opcji do wyboru. Nie jest to prosta sprawa. Zależnie jak sobie autor gry wymyśli tak będzie zrobiony dialog, nie ma raczej jednego konkretnego sposobu. Jedną z możliwości może być wczytywanie samego tekstu z pliku i potem wiązanie wypowiedzi w kodzie i wypisywanie w danym momencie. Inną bardziej zaawansowaną, korzystanie z jakiegoś skryptu bądź pliku (tekstowego chociażby) znajdującego się w plikach gry, który opisuje nam całe 'drzewo opcji wypowiedzi' (tym sposobem możemy w bardzo prosty sposób tworzyć nowe dialogi bez ingerowania w kod źródłowy gry).

Jeśli chcesz zrobić prosty dialog możesz wczytywać z pliku kolejno:
wypowiedź01.txt
wypowiedź02.txt
wypowiedź03.txt
wypowiedź04.txt
i potem w kodzie wypisywać gdzie chcesz

przykładowo jeśli chcesz wczytać jedną wypowiedź:
C/C++
string wypowiedz1 = "", slowo;
ifstream in( "wypowiedź01.txt" );
while( in >> slowo ) wypowiedz1 += slowo + " ";

P-20765
MAKONDE
Temat założony przez niniejszego użytkownika
» 2010-08-13 01:43:55
mhm...rozumiem że tym sposobem co podałeś musiał bym robić tyle plików .txt ile wypowiedzi...:P
tyle że która opcja byłą by najszybsza...(podczas działania a nie do napisania)
P-20766
ison
» 2010-08-13 01:46:13
dokładnie, tylko pamiętaj aby nie wczytywać ręcznie w programie wszystkich wypowiedzi ;) u góry podałem ci przykład wczytywania z jednego pliku, ale to nie znaczy że dla każdego masz to samo kopiować bo wtedy kod będzie wyglądał co najmniej nieestetycznie

//edit najszybsza? obie działają wystarczająco szybko; jedyna kwestia to na jaką skalę robisz tego RPG'a. (pamiętaj że RPG to najtrudniejsze gry do zakodzenia, i 99% amatorskich projektów umiera). Należy wziąć pod uwagę trudność zakodzenia danego sposobu wypisywania dialogów i czas na to poświęcony. Ja bym ci radził wczytywać zwyczajnie każdą wypowiedź, przypisywać ją do zmiennej i wypisywać w jakim momencie chcesz

kodzik do wczytywania wypowiedzi:
C/C++
string wypowiedzi[ ILO Ś Ć ];

int WczytajWypowiedzi()
{
    char sciezka[ 200 ];
    string slowo;
    for( int i = 0; i < ILO Ś Ć; ++i )
    {
        sprintf( sciezka, "wypowiedź%.2d.txt", i );
        ifstream in( sciezka );
        if( !in ) return 1; //błąd pliku
        else
        {
            while( in >> slowo ) wypowiedzi[ i ] += slowo + " ";
           
        }
        in.close();
    }
    return 0;
}
P-20767
MAKONDE
Temat założony przez niniejszego użytkownika
» 2010-08-13 01:55:18
eee...tyle że nie napisałem że robię RPG :P
dałem przykład gier w których zazwyczaj jest dużo dialogów :P
P-20768
ison
» 2010-08-13 01:58:18
raczej dialogi najczęściej są wykorzystywane w RPG'ach, myślałem że takowego piszesz. Wiem że większość ludzi, którzy chcą pisać gry zaczynają właśnie od tego typu gier, potem ten projekt jest porzucany bo nie dają rady dokończyć
P-20769
MAKONDE
Temat założony przez niniejszego użytkownika
» 2010-08-13 02:01:11
nie zaczynałem od rpg...miałem świadomość tego że nie skończę jej...pomimo to i tak będę pisał gry RPG :P

//edit

obecnie pracuję na platformówką 2D :P
jak uda mi się ją skończyć to zacznę brać się za DirectX'a :)
P-20770
« 1 »
  Strona 1 z 1