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

Pisanie edytora map

Ostatnio zmodyfikowano 2014-05-22 18:54
Autor Wiadomość
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?
P-110262
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?
P-110266
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ć?
P-110271
pekfos
» 2014-05-18 13:20:17
C/C++
struct kafel
{
    short id;
    short extraid;
};
Lub nawet na jednym int, w ten sposób.
P-110274
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:
C/C++
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?
C/C++
int mapa[ 100 ][ 100 ] //kafle mapy
int fizyka[ 100 ][ 100 ] //czy pole jest obiektem fizycznym

//I teraz cała interaktywna część nie będzie na siatce kafelkowej tylko np.

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?

P-110290
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.
P-110292
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?

Jeżeli zrobie to tak:
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 to?
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.
P-110294
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
P-110324
« 1 » 2
  Strona 1 z 2 Następna strona