AvShad Temat założony przez niniejszego użytkownika |
Pisanie edytora map » 2014-05-18 12:51:10 Witam mam pytanie. Pisałem już prosty edytor map do gier platformowych z gui itp. ,ale jego funkcjonalność ograniczała się tylko do ustawiania kafelek i spawnu gracza w odpowiednie miejsca. Obecnie piszę grę MMO/RPG typu Tibia... co prawda zacząłem od tyłu bo mam launcher który się updatuje z mojego serwera ftp i clienta na którym można zakładać nowe konto i logować się. Oczywiście jak na razie brak zabezpieczeń ale to tylko tak żeby działało. No i po napisaniu tego zabrałem się za pisanie samej rozgrywki. Miałem napisany własny silnik fizyczny więc trochę go okroiłem... a w sumie to zostawiłem tylko wykrywanie kolizji, bo po co mi więcej w grze top-down? No i działa to tak że klient tylko wyświetla grafikę a całą fizyką i zdarzeniami zajmuje się serwer. Czyli gracz kliknie klawisz "D" serwer sprawdza co gracz kliknął, sprawdza jego eq(np. czy ma buty albo buffy) i przesuwa go o odpowiednią odległość i wysyła pozycje do gracza. Wiem że takie rozwiązanie jest bezpieczne pod względem cheatów, ale bardzo obciąża serwer i przy 1000 graczy może być problem, no ale jak już mówiłem to gra pisana w celach edukacyjnych do pogrania z może 4 kumplami :D. Chciałbym wiedzieć co myślicie o tym rozwiązaniu? Nigdy nie pisałem tak rozbudowanej gry jaką jest mmorpg, więc proszę o jakieś rady np jak najlepiej zarządzać questami? Bardzo przydatne by były jakieś linki gdzie mogę znaleźć jakąś pomoc. Mogą być po angielsku lub niemiecku aczkolwiek wole ten pierwszy język :p. Dobra troche odszedłem od tematu jaki chciałem poruszyć. Mianowicie pisanie edytora. Wiem jak takowy napisać ale nie mam kompletnie pojęcia gdzie przechowywać inne dane np czy dany kafelek ma być fizyczny czy nie? Mape przechowuje w tablicy intów więc nie wiem gdzie to upchać... albo np jak kafelek jest skrzynką i chciałbym umieścić w nim id przedmiotów to też zabardzo nie wiem gdzie... chyba że stworze 2 inty... pomożecie? Jak wy byście to zrobili? |
|
pekfos |
» 2014-05-18 13:08:04 Zasady zakładania tematów - pisanie wprowadzenia do problemu. nie mam kompletnie pojęcia gdzie przechowywać inne dane np czy dany kafelek ma być fizyczny czy nie? Mape przechowuje w tablicy intów więc nie wiem gdzie to upchać... |
Tekstury kafli też upchałeś w tym jednym incie? |
|
AvShad Temat założony przez niniejszego użytkownika |
» 2014-05-18 13:17:24 Nie tekstury były przechowywanie w spritach tyle ile tekstur tyle spritów. Ten sam texturepack był w grze, więc jeżeli na int mapa[100][10]=1 a 1 odpowiada blokowi trawy to wyświetlało trawę itp. tylko że teraz nie wiem gdzie wcisnąć np id przedmiotów w kafelku/skrzynce? Myśle że przydałaby się jakaś structura ale nie wiem dokładnie jak to zrobić... Pisał ktoś kiedyś taki edytor i znalazł jakiś sposób i może się nim podzielić? |
|
pekfos |
» 2014-05-18 13:20:17 struct kafel { short id; short extraid; }; Lub nawet na jednym int, w ten sposób. |
|
AvShad Temat założony przez niniejszego użytkownika |
» 2014-05-18 14:03:10 No dobrze, ale czegoś nie rozumiem mam troche przesilony mózg i jestem nie wyspany... zalieczenia w szkole i koncert miałem... Jeżeli zrobie to tak: struct kafel { int id; int id2; Sprite grafika; Texture textura; };
kafel trawa;
To co teraz z mapą? Jeżeli mapa składa się z intów? A jak bym zrobił tak? int mapa[ 100 ][ 100 ] int fizyka[ 100 ][ 100 ]
struct SKRZYNIA { int sloty[ 4 ]; bool wymagany_klucz; int idklucza; vec pos; Texture tex; Sprite spr; };
SKRZYNIA kufer; kufer.pos.x = 100; kufer.pos.y = 100; spr.setPosition( 100, 100 ); window->draw( kufer.spr );
A do pliku zapisywał bym po prostu te 2 mapy intów a pod tym poszczególne obiekty. Działało by to? |
|
kubawal |
» 2014-05-18 14:07:54 Co ty masz z tą tablicą intów? Zrób dwuwymiarową tablicę wskaźników do kafli alokowanych dynamicznie. Niech struktura kafel ma pole bool określające, czy jest obiektem fizycznym. Tak odrazu jest mniejszy bałagan. |
|
pekfos |
» 2014-05-18 14:14:10 mam troche przesilony mózg i jestem nie wyspany... zalieczenia w szkole i koncert miałem... |
Mało nas to obchodzi. Oczekujemy, byś myślał nad tym co piszesz i nad tym, co my piszemy. Jeśli nie jesteś w stanie tego warunku spełnić, to nie mamy o czym rozmawiać. Jaki jest sens wbijać Ci coś, co w warunkach normalnych będzie dla ciebie oczywiste? Nie tak. kafel miało być zamiennikiem inta mapy. (Struktura nie jest tu konieczna.) Chodzi o to, by int mapy przechowywał informacje o tym, co rysować i id dodatkowego zbioru danych, jak np przedmioty. Działało by. Rozwiązanie lepsze pamięciowo, ale mniej wydajne, chociaż można to pewnym nakładem pracy zoptymalizować, by nie było różnic. |
|
AvShad Temat założony przez niniejszego użytkownika |
» 2014-05-18 18:41:52 Ok to zrobie tak jak mówicie :) Po wypiciu kawy zacząłem rozumieć więc dzięki wielkie :D
|
|
« 1 » 2 |