Skocz do zawartości

GRY MMO


swiatcienia

Rekomendowane odpowiedzi

Cześć nie było mnie już długo (z pół roku), uczyłem się o c++, mmo i o zabezpieczeniach.

Pisze do wszystkich którzy robią gry mmo ponieważ chce się podzielić moimi doświadczeniami.

Pierwsze gry jakie robiłem miały dużo błędów i były proste do zcrakowania.

 

Dlatego teraz wam chce dać parę rad:

1.Wszystkie informacje muszą znajdować się na serwerze

2.Klient tylko się pyta "czy mogę ruszyć do góry"(nie możesz serwera powiadamiać o fakcie dokonanym)

3.Serwer odpowiada Tak albo Nie zależy czy nie jest zablokowany,

potem wysyła co się stało i inne efekty.

4.Mapa MUSI(!!!) być na serwerze i nie koniecznie u gracza

5.Widzisz tylko graczy blisko siebie

6.Tak zwany Exhause albo opóźnienie

 

Może się zastanawiasz poco nam to mówisz to zobacz na przykład poniżej.

Przykład gry z małymi zabezpieczeniami to Almora, dlaczego?

-cała mapa jest u klienta(dało się przechodzić przez ściany)

-szybkość zależała tylko od klienta(p. 2 i 6)

-tak zwany teleport bug dało się skakać na drugi koniec mapy(p 2 i 3)

Odnośnik do komentarza
Udostępnij na innych stronach

Cześć nie było mnie już długo (z pół roku),

1.08.2007 - 19:42, tak więc nie było cię całe 10 dni.

Może się zastanawiasz poco nam to mówisz to zobacz na przykład poniżej.

Przykład gry z małymi zabezpieczeniami to Almora, dlaczego?

-cała mapa jest u klienta(dało się przechodzić przez ściany)

-szybkość zależała tylko od klienta(p. 2 i 6)

-tak zwany teleport bug dało się skakać na drugi koniec mapy(p 2 i 3)

I co w związku z tym? :)

Odnośnik do komentarza
Udostępnij na innych stronach

-cała mapa jest u klienta(dało się przechodzić przez ściany)
No i co z tego jak kolizje były sprawdzane na serwerze :F

-szybkość zależała tylko od klienta(p. 2 i 6)
To samo

-tak zwany teleport bug dało się skakać na drugi koniec mapy(p 2 i 3)
...

W innych grach, np. WoW mapa też trzymana jest u klienta. I to jest plus. Mniej wczytywania - mniejsze lagi. Można bez problemu chodzić po świecie nawet jeżeli utraci się połączenie z serwerem, ale dane (pozycje graczy, NPC nie są aktualizowane - normalne chyba :)).

Przykład gry z małymi zabezpieczeniami to Almora, dlaczego?
Eee zabezpieczenia?? Gra po prostu tak była zrobiona.

 

4.Mapa MUSI(!!!) być na serwerze i nie koniecznie u gracza
Taaakkk, szczególnie jeżeli jest to 3d, jest dużo modeli, obiektów i mapa zajmuje megabajty.

Heh czemu wszystkie rady wypisałeś wzorując się na Tibii?

I teraz kilka słów ode mnie: jak tworzy się tak ambitny projekt jak MMO to przewiduje się takie sytuacje jakie opisałeś i rozwiązuje się je w sposób taki lub owaki.

Odnośnik do komentarza
Udostępnij na innych stronach

Zmusiłeś mnie do napisania tego posta :] gdyby nie to, że poruszyłeś temat Almory...

 

Nie rozumiem dlaczego postawiłeś Almorę na dywaniku, skoro nie widziałeś nawet jeden zmiennej zapisanej w kodzie źródłowym ;) To co widać z poziomu klienta podczas grania, to można jedynie opisać, ale nie stwierdzić ze strony źródła kodu.

 

Mapa była zapisana u klienta i na serwerze, także system kolizji był sprawdzany na serwerze, a teleport to tylko ja miałem i mogłem używać, bo jeżeli serwer wyczułby, że przenosisz się z miejsca na miejsca o za dużą ilość pikseli bez powodu to by cię wyrzucił z serwera. Chyba, że czasami jakieś przekłamanie mogło być, w świecie TCP/IP różne rzeczy się dzieją.

 

Po drugie wiesz, wiele osób czytało tematy o grach MMORPG, ale od teorii do praktyki jest jak stąd do Afryki... Tak samo jak malujesz obraz, wiesz jak powinien wyglądać, ale jak go zaczynasz malować, okazuje się, że wychodzi trochę inaczej - mimo to efekt jest zadowalający... Chyba, że jesteś malarzem, w tym przypadku mega programistą, a mega programiści nie potrzebują takich rad jak te opisane przez ciebie. A ci początkujący jak już zabierają się za grę MMORPG, to sami na własną rekę szukają tego czego potrzebują do jej zrobienia :)

Odnośnik do komentarza
Udostępnij na innych stronach

Zmusiłeś mnie do napisania tego posta :] gdyby nie to, że poruszyłeś temat Almory...

 

Nie rozumiem dlaczego postawiłeś Almorę na dywaniku, skoro nie widziałeś nawet jeden zmiennej zapisanej w kodzie źródłowym ;) To co widać z poziomu klienta podczas grania, to można jedynie opisać, ale nie stwierdzić ze strony źródła kodu.

 

Mapa była zapisana u klienta i na serwerze, także system kolizji był sprawdzany na serwerze, a teleport to tylko ja miałem i mogłem używać, bo jeżeli serwer wyczułby, że przenosisz się z miejsca na miejsca o za dużą ilość pikseli bez powodu to by cię wyrzucił z serwera. Chyba, że czasami jakieś przekłamanie mogło być, w świecie TCP/IP różne rzeczy się dzieją.

 

Po drugie wiesz, wiele osób czytało tematy o grach MMORPG, ale od teorii do praktyki jest jak stąd do Afryki... Tak samo jak malujesz obraz, wiesz jak powinien wyglądać, ale jak go zaczynasz malować, okazuje się, że wychodzi trochę inaczej - mimo to efekt jest zadowalający... Chyba, że jesteś malarzem, w tym przypadku mega programistą, a mega programiści nie potrzebują takich rad jak te opisane przez ciebie. A ci początkujący jak już zabierają się za grę MMORPG, to sami na własną rekę szukają tego czego potrzebują do jej zrobienia :)

Aha robienie gier jest nieporównywalnie trudniejsze od malowanie i w grach nic nie może iść nie tak jak ma.

I mylisz się przeglądałem cały kod almory i różne skrypty

 

 

OK to wytłumacz mi 2 sprawy:

-czemu jak przerobiłem trochę silnik klienta to dałem rade przechodzić przez ściany i się teleportować i jak wyłączyłem odbierania potworów to żaden mnie nie zaatakował?

-Czemu dałem rady otworzyć skrzynkę oraz gadać z NPC z każdego miejsca?

 

 

Eee zabezpieczenia?? Gra po prostu tak była zrobiona.

 

Taaakkk, szczególnie jeżeli jest to 3d, jest dużo modeli, obiektów i mapa zajmuje megabajty.

Heh czemu wszystkie rady wypisałeś wzorując się na Tibii?

I teraz kilka słów ode mnie: jak tworzy się tak ambitny projekt jak MMO to przewiduje się takie sytuacje jakie opisałeś i rozwiązuje się je w sposób taki lub owaki.

Tak mapa też musi być na serwerze nie koniecznie cała tylko wersja 2D, gdzie się wzorowałem na Tibii

Taki lub owaki sposób (haha) tylko chciałem jeszcze dodać że np. szyfrowanie gówno ci da!

 

blackmaul: tak nie było mnie pół roku temu na forum tylko czasami zaglądałem co się dzieje

Odnośnik do komentarza
Udostępnij na innych stronach

Aha robienie gier jest nieporównywalnie trudniejsze od malowanie i w grach nic nie może iść nie tak jak ma.

I mylisz się przeglądałem cały kod almory i różne skrypty

 

Z malowaniem, to był tylko przykład - widocznie nie zrozumiałeś. Przeglądałeś cały kod Almory? hmm... zdeasemblowałeś plik .exe? ^^

 

OK to wytłumacz mi 2 sprawy:

-czemu jak przerobiłem trochę silnik klienta to dałem rade przechodzić przez ściany i się teleportować i jak wyłączyłem odbierania potworów to żaden mnie nie zaatakował?

 

Nie wiem jak przerobiłeś silnik, ale jedynie co mogłeś zrobić to użyć sniffera, który i tak nie wiele by ci pomógł. Wyłączyłeś odbieranie potworów? He he he :lol2: Jak mogłeś wyłączyć odbieranie potworów jak potwory są na serwerze i na serwerze się poruszają. Klient jedynie dostawał info, że potwór go uderzył i ile zabrał mu energii, klient nie miał z tym nic wspólnego, nawet jakbyś miał czarną całą planszę bez obiektów, to i tak na serwerze byś zginął.

 

Czemu dałem rady otworzyć skrzynkę oraz gadać z NPC z każdego miejsca?

 

Gadać z NPC? To można było?

 

Tak mapa też musi być na serwerze nie koniecznie cała tylko wersja 2D, gdzie się wzorowałem na Tibii

Taki lub owaki sposób (haha) tylko chciałem jeszcze dodać że np. szyfrowanie gówno ci da!

 

Szyfrowanie czego? Mapy? Chłopie nałykałeś się za dużo teorii, a jeszcze niczego nie uczyniłeś. Zastanów się co piszesz i trochę grzeczniej, bo ja do ciebie takich słów nie używam.

 

Dodam tylko, że ja nie twierdzę, iż Almora była super zabezpieczona, ale akurat to co ty wypisujesz to nie trzyma się kupy. Almorę sam robiłem - trudno wszystko przewidzieć i od razu wiedzieć...

Odnośnik do komentarza
Udostępnij na innych stronach

Almory użyłem jak przykładu, i nie miałem zamiaru cię urazić,

nie zdeasemblowałem pliku tylko przejrzałem kod przez hex edytor.

Przerobiłem go bo GM źle zapisuje pliki.

No nie wiem jakoś na 1 lvl byłem na najlepszych potworach

Tak można było a nawet dało się przerobić tak żeby miał inne itemy

Ta ostatnia część nie była do ciebie zobacz na posta

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem jak to zrobiłeś... My z BlaXun'em ( taki użytkownik forum GMC ) hakowaliśmy Almorę podglądaniem pamięci i snifferami. Snifferami się udało i to poprawiłem, a dokładnie chodzi o strzelanie z łuku jak z karabinu maszynowego. Próbowaliśmy też sztuczek z przenoszeniem postaci przez ingerowanie w pamięć gry, co prawda przenosiła się postać, ale następował auto-kick z powodu zabezpieczeń. Może był jakiś przeciek i ci się udało - nie wiem...

 

Druga sprawa odnosząca się do głównej idei tematu:

Tak naprawdę nigdy nie zabezpieczysz dobrze gry typu MMORPG, zawsze znajdzie się rozwiązanie. Wystarczy popatrzyć na newsy o WoW'ie gdzie co miesiąc banują konta za hakerstwo. Tak naprawdę grę można tylko zabezpieczyć poprzez wyliczanie prawdopodobieństwa uzyskania takich statystyk jakie się posiada naprawdę. Czyli, jeżeli gracz założył konto wczoraj a ma już 10 LVL, to jest auto-ban...

 

Zabezpieczenia robią się coraz słabsze, zależy to od popularności gry.

 

Myślę, że możemy zakończyć już ten temat :)

Odnośnik do komentarza
Udostępnij na innych stronach

Cześć nie było mnie już długo (z pół roku), uczyłem się o c++, mmo i o zabezpieczeniach.

Pisze do wszystkich którzy robią gry mmo ponieważ chce się podzielić moimi doświadczeniami.

Pierwsze gry jakie robiłem miały dużo błędów i były proste do zcrakowania.

 

Dlatego teraz wam chce dać parę rad:

1.Wszystkie informacje muszą znajdować się na serwerze

2.Klient tylko się pyta "czy mogę ruszyć do góry"(nie możesz serwera powiadamiać o fakcie dokonanym)

3.Serwer odpowiada Tak albo Nie zależy czy nie jest zablokowany,

potem wysyła co się stało i inne efekty.

4.Mapa MUSI(!!!) być na serwerze i nie koniecznie u gracza

5.Widzisz tylko graczy blisko siebie

6.Tak zwany Exhause albo opóźnienie

 

Może się zastanawiasz poco nam to mówisz to zobacz na przykład poniżej.

Przykład gry z małymi zabezpieczeniami to Almora, dlaczego?

-cała mapa jest u klienta(dało się przechodzić przez ściany)

-szybkość zależała tylko od klienta(p. 2 i 6)

-tak zwany teleport bug dało się skakać na drugi koniec mapy(p 2 i 3)

no i ładnie opisałeś nam działanie Tibi... Widzę że bawiłeś się w analizatora servera OT...
Odnośnik do komentarza
Udostępnij na innych stronach

Tak naprawdę grę można tylko zabezpieczyć poprzez wyliczanie prawdopodobieństwa uzyskania takich statystyk jakie się posiada naprawdę. Czyli, jeżeli gracz założył konto wczoraj a ma już 10 LVL, to jest auto-ban...

Ech, ja na Anarchy Online zrobilem kiedys na czysto w jeden dzien do 1 do 32 lev...

potem zwolnilem tempo ale musialem sie odgimpiac tak ze na 3 dzien mialem

docelowe 60 i zalozone 80% sprzetu.

 

00081eb0:6f 6e 74 2e 43 6f 6c 6f 72 07 0c 63 6c 57 69 6e ont.Color..clWin

00081ec0:64 6f 77 54 65 78 74 0b 46 6f 6e 74 2e 48 65 69 dowText.Font.Hei

00081ed0:67 68 74 02 f5 09 46 6f 6e 74 2e 4e 61 6d 65 06 ght.ő.Font.Name.

00081ee0:0b 43 6f 75 72 69 65 72 20 4e 65 77 0a 46 6f 6e .Courier New.Fon

00081ef0:74 2e 53 74 79 6c 65 0b 00 0a 50 61 72 65 6e 74 t.Style...Parent

00081f00:46 6f 6e 74 08 08 52 65 61 64 4f 6e 6c 79 09 0a Font..ReadOnly..

00081f10:53 63 72 6f 6c 6c 42 61 72 73 07 0a 73 73 56 65 ScrollBars..ssVe

00081f20:72 74 69 63 61 6c 08 54 61 62 4f 72 64 65 72 02 rtical.TabOrder.

 

fragment Jestem_Blu_i_nikt_mnie_nie_lubi w hexeditorze

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...
Bardzo prosze abyście mi podali w punktach jak zrobic taka MMORPG. Według mnie bardzo dużo userów by na tym skorzystało, Bardzo was prosze

 

:P

 

Z góry dzięku

 

Watpie by Ci ktos zrobil . To jest taka szansa jak wskoczyc na tory prosto w pospieszny pociag i przezyc :)

 

Tak duzo userow by zyskalo ale polowa gmclanu mogla by wykitowac widzac fale mmo gier zalewajaca nas ,

Odnośnik do komentarza
Udostępnij na innych stronach

Tak duzo userow by zyskalo ale polowa gmclanu mogla by wykitowac widzac fale mmo gier zalewajaca nas ,

 

nie nie nie nie, nie zaleje nas fala gier tylko pytan czemu inni gracze sie nie ruszaja/nie pojawiaja/nie strzelaja itp/itd...

Odnośnik do komentarza
Udostępnij na innych stronach

nie nie nie nie, nie zaleje nas fala gier tylko pytan czemu inni gracze sie nie ruszaja/nie pojawiaja/nie strzelaja itp/itd...

 

A no w sumie racja , przed ta fala co ja podalem pierw by musiala przejsc powódz z tymi pytaniami o ktorych mowisz :P

Odnośnik do komentarza
Udostępnij na innych stronach

Bardzo prosze abyście mi podali w punktach jak zrobic taka MMORPG. Według mnie bardzo dużo userów by na tym skorzystało, Bardzo was prosze

 

:P

 

Z góry dzięku

Dobra :thumbsup:

Oto plan wydarzeń w punktach jak zrobić mmo:

1. Nauczyć się podstawowej składni c++ i opanować bdb programowanie obiektowe.

2. Rozpocząć pracę z jakimś silnikiem graficznym(Direct3d,OpenGL,DirectDraw etc.)

3. Opanować obsługę serwerów w .net albo sdl

4. Zakupić M$ Visual Studio 2k8.net i zacząć swoją wymarzoną grę(gta online czy jakieś inne g***o), a następnie zrobić otwarte betatesty

5. Wydać grę

No dobra, a teraz ćwiczenie. Do podanych powyżej równoważników zdań dopasujcie daty(zakończeń tych procesów) z ramki poniżej:

2010 ad ne
2018 ad ne
2012 ad ne
2060 ad ne
2030 ad ne

Odnośnik do komentarza
Udostępnij na innych stronach

Bardzo prosze abyście mi podali w punktach jak zrobic taka MMORPG. Według mnie bardzo dużo userów by na tym skorzystało, Bardzo was prosze

 

1. Opracuj mechanikę gry. Ma być tak rozbudowana że mogło by się ją sprzedawać jako książkowego rpg'a w wielu tomach.

2. Zacznij pisać serwer. Napisz proste parsery, zalążki obiektów gry.

3. Wmontuj w to kod sieciowy, powoli przystosowuj go do potrzeb mmorpga.

4. Równolegle pisz "wybiedzony" klient gry do testu.

5. Gdy przygotujesz wszystkie klasy, parsery, funkcje itd. dopisz wszystko, co zaplanowałeś w mechanice.

6. Napisz "prawdziwy" klient z prawdziwym interface i funkcjami wysyłania pakietów i odbierania, tak żeby już dało się w to grać.

7. Postaw beta serwer i przeprowadź testy "wytrzymałościowe", a potem testy zrównoważenia gry. Jeśli wyłapano błędy, wróć do kodu serwera i popraw.

8. Ustal ceny abonamentu i wyślij pudełka do sklepu.

 

Oto plan działania. Mniej więcej w skali 1:100 a nawet gorzej.

Odnośnik do komentarza
Udostępnij na innych stronach

1. Nauczyć się podstawowej składni c++ i opanować bdb programowanie obiektowe.

2. Rozpocząć pracę z jakimś silnikiem graficznym(Direct3d,OpenGL,DirectDraw etc.)

3. Opanować obsługę serwerów w .net albo sdl

4. Zakupić M$ Visual Studio 2k8.net i zacząć swoją wymarzoną grę(gta online czy jakieś inne g***o), a następnie zrobić otwarte betatesty

5. Wydać grę

Nie ma to jak świetny poradnik. Po co C++, jak zamierzasz robić w .NETowym IDE? To już lepiej C# brać, który jest lepszym i nowocześniejszym językiem (a jak musi być kompilowany natywnie jak c++, to lepszym wyborem jest D). Poza tym, nie rozumiem o co ci chodzi z tą obsługą serwerów. Wiesz co to jest .NET a co to jest SDL chociaż? Poza tym, po co kupować Visuala, skoro jego darmowa wersja pozwala na stworzenie programu?

Odnośnik do komentarza
Udostępnij na innych stronach

Nie ma to jak świetny poradnik. Po co C++, jak zamierzasz robić w .NETowym IDE? To już lepiej C# brać, który jest lepszym i nowocześniejszym językiem (a jak musi być kompilowany natywnie jak c++, to lepszym wyborem jest D). Poza tym, nie rozumiem o co ci chodzi z tą obsługą serwerów. Wiesz co to jest .NET a co to jest SDL chociaż? Poza tym, po co kupować Visuala, skoro jego darmowa wersja pozwala na stworzenie programu?

DotNet czym jest wiem, a z sdl mi się coś popipcyło. O właśnie w wizardzie znalazłem coś. Może ATL? Poza tym wersje express m$vs chyba nie obejmują dotnet. A C++, bo według mnie ma fajną składnię. A tak wogule to who cares? Przecież to była satyra(już szykowałem odpowiedź, gdyby się zapytał, a czy coś łatwiejszego od c++, hehe asembler :twisted: ). Na mmorpg nie ma przepisu.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...