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

[SDL]Kilka pytań o budowę silnika 2D

Ostatnio zmodyfikowano 2014-10-16 19:07
Autor Wiadomość
Yoninde
Temat założony przez niniejszego użytkownika
[SDL]Kilka pytań o budowę silnika 2D
» 2014-10-16 18:29:49
Cześć. Mam kilka pytań odnośnie budowy silnika gry 2d top-down ( widok z góry ). Otóż chciałbym wiedzieć kilka rzeczy.

1. Wyświetlanie spritów: Czy lepiej jest w każdej klasie np. Bohater zrobić metodę która odpowiada za wyświetlania wyglądu( Hełm, zbroja, miecz, itd. ), czy lepiej zrobić klasa "Wyswietlacz" i w niej kontener( vector z STL ) klasy która miałaby X, Y i Wyglad i metodę "Wyswietl". I potem w metodzie Wyswietlacz wyświetlać wszystkie te rzeczy z kontenera w pętli.

2. Zbroje, hełmy: Każdy mobek w grze będzie miał te same zbroje i hełmy itd. co Bohater. Więc czy lepiej w klasie mob, bohater, lub NPC, robić coś takiego jak SDL_Surface * Wyglad i tam w konstruktorze wczytywać jakoś zbroje, hełm i inne. Czy lepiej zrobić tablice( w grze będzie raczej więcej niż tam 30 zbroi, hełmów, miecz itp. na pewno ) i potem w klasie mob, czy Bohater, w konstruktorze albo gdzieś indziej zrobić coś takiego jak Wyglad = Zbroja[20]. I pliku Wczytaj.h zrobił bym funkcje Wczytaj i tam bym dał Zbroja[1] = Wczytaj( "Zbroje/Zbroja1" ) i tak wszystkie zbroje.

3. Rotacja: Jako że z bibliotek graficznych umiem tylko SDL, SFML się nie uczyłem, bo miałem problemy z zainstalowaniem, więc zostałem przy SDL 1.2. Trochę zacząłem się jeszcze uczyć SDL i OpenGL, ale jeszcze nie ogarnąłem nawet 1/8. I moje pytanie czy jest jakaś funkcja co może zrobić rotacje, czy trzeba zrobić: 1) Jeżeli bym robił tak jak mówiłem w zapytaniu drugim, że każda klasa mob, bohater, miała by coś takiego Wyglad = Wczytaj( "Zbroja1.png" ), to zamiast tego zrobić tablice Wyglad[1] - to np. wygląd gracza skierowany w górę, Wyglad[2] - to np. w dół i tak dalej. I potem jeżeli kliknę w prawo, to Strona = 3; 2) Jeżeli bym zrobił globalną tablice Zbroja[][] w pliku Wczytaj.h. Pierwsza kolumna( nie pamiętam jak się to nazywa ), oznaczała by która to jest zbroja. A druga kolumna mówiła by która to strona. Zbroja[1][1] = Wczytaj( "Zbroja1_Gora.png" ), Zbroja[1][2] = Dol, Zbroja[1][3] = Prawo, Zbroja[1][4] = Lewo i tak do każdego.

I takie szybciutkie pytanie jeszcze jedno, czy SDL 2.0 umożliwia rotacje i skalowania ?
Czy w ogóle skorzystać już z gotowego jakiegoś silnika 2D ?
P-118634
akwes
» 2014-10-16 19:07:20
Temat o silniku graficznym i wszystkie pytania o programowaniu rozgrywki :)

Zacznij od zrobienia prostej gry. Zauważysz wtedy, że pewne elementy są niewygodne, niektóre wygodne oraz to, że niektóre fragmenty kodu się powtarzają. Wtedy sobie siądziesz nad takim (skończonym projektem) i pomyślisz:
Co zrobić aby w następnym projekcie te niewygodne elementy zrealizować w wygodny sposób?
Co zrobić aby wygodne rozwiązania przenieść na inne fragmenty kodu?
Co wydzielić do silnika i jak, aby było to odpowiednio skalowalne, elastyczne i po prostu użyteczne.

Na internecie znajdziesz milion artykułów, które mówią, dlaczego nie zaczynać od gier RPG. Zacznij od najprostszego projektu i powoli zwiększaj poziom trudności. W pewnym momencie naturalnie zaczniesz zauważać co należy wydzielić do własnego "frameworka" oraz co się przyda w kolejnym projekcie. Wtedy łatwo określić jak stworzyć sobie "własny" silnik graficzny czy framework do gier.

Decyzje projektowe, o które pytasz mogą w różnych kontekstach mieć różne odpowiedzi. Nigdy nic nie jest jednoznacznie dobre ani uniwersalnie dobre. Projektowanie to heurystyka. Jeżeli chcesz gotowych odpowiedzi na pierwsze problemy z jakimi się spotkasz to poczytaj książki o projektowaniu gier. Na pewno będą tam opisane menadżery grafiki, przechowywanie stanu gry czy ogarnianie mapy.
P-118635
« 1 »
  Strona 1 z 1