PsichiX Opublikowano 22 Maja 2010 Udostępnij Opublikowano 22 Maja 2010 Tytuł: Ether - Biblioteka sieciowa dla GM Gatunek: Silnik sieciowy Download: http://psichix.com/wp-content/uploads/2010/05/Ether.zip Rozmiar pliku: 116 kb. Autorzy: Programowanie: PsichiX (XenoN Core), Snake (GMApi) Opis: Ether jest biblioteką sieciową dla GM łączącą w sobie cechy wielu innych bibliotek. Obsługuje sockety do komunikacji sieciowej, bufory do przechowywania danych, sesje sieciowe do zautomatyzowanej komunikacji klient-serwer (dla gier multiplayer przede wszystkim), żądania HTTP do komunikacji z serwerami stron WWW (asynchroniczne pobieranie/wysyłanie plików i danych z/na serwer), oraz obsługuje tagi języków znaczników typu XML (odczyt treści stron HTML). W pliku projektu znajdują się przykłady użycia różnych części biblioteki. Kolejne (opisujące dokładniej specyficzne zagadnienia) przykłady już w drodze! Obecnie przykłady opisane w języku angielskim (w sposób prosty) ale zabieram się za ich tłumaczenie. Szykuję przykład wyszukiwarki sieciowej na bazie odczytu tagów HTML z wyników wyszukiwarki Google, oraz przykład transmisji strumieniowej (a'la radio sieciowe). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Darlix Opublikowano 22 Maja 2010 Udostępnij Opublikowano 22 Maja 2010 Dobry, przykład + biblioteka. Może kiedyś mi się przyda choć nie rozumiem do czego służą sesje sieciowe? Będę musiał poczytać. Daję 5 bo to dobra robota. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 22 Maja 2010 Autor Udostępnij Opublikowano 22 Maja 2010 sesje sieciowe to coś jak GMowe Mplay - Ty tylko ustalasz czy tworzysz sesje (jesteś serwerem) czy dołączasz do jakiejś innej sesji (jesteś klientem), ustalasz skrypty które będą się wykonywały przy połączeniu, rozłączeniu oraz aktualizacji serwera i klienta, a o resztę się martwić nie trzeba - biblioteka sama zarządza co kiedy ma się wykonać :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 22 Maja 2010 Udostępnij Opublikowano 22 Maja 2010 Jako ze nie znam sie zupelnie na grach sieciowych w GM-ie, mam 2 pytania: 1. To jest cos takiego jak 39dll? 2. Jesli tak, to co jest lepsze? :D Moze niedlugo podejme przedostatni krok w poznawaniu GM-a - zrobie gre sieciowa :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DobryZiom Opublikowano 22 Maja 2010 Udostępnij Opublikowano 22 Maja 2010 Czy zrobiłeś jakieś kursy czy coś do dllka? Interesowały by mnie połączenia sieciowe ;] Jedynie tworzenie servera i clienta oraz wysyłanie przez server do wszystkich podłączonych clientów stringa po naciśnięciu klawisza. Mógłbyś zrobić taki przykład? Bo inna rzeczy odwracają tylko uwagę... i w polskim języku jeśli to możliwe:) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 23 Maja 2010 Autor Udostępnij Opublikowano 23 Maja 2010 Muuczek: 1. Tak, cos jak 39dll oraz pare innych, takie all in one 2. autor zawsze powie ze jego twor jest lepszy od innych, ale jesli mam byc obiektywny to powiem tak, ze moja biblioteka jest lepsza ze wzgledu na posiadanie ulatwien typu wlasnie sesje, sciaganie / wysylanie plikow na www, odczyt tagow HTML(XML) i paru innych ficzerow DobryZiom: wszystkie przyklady dostepne sa w pliku projektu gm6. Przyklad ktory poszukujesz to wlasnie przyklad sesji, ale robie tez jego dokladniejsza wersje, bardziej opisana rozbudowana, taki maly silniek malej gry mmo :) oczywiscie wszystkie przyklady beda przetlumaczone na jezyk polski ;) INFO: Dodalem nowa wersje biblioteki. Poprawilem w niej buga z sciaganiem asynchronicznym plikow, oraz dodalem przy okazji przyklad jak sciagac duze pliki + wyswietlany postep sciagania. Download: http://psichix.com/wp-content/uploads/2010/05/Ether.zip Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 23 Maja 2010 Udostępnij Opublikowano 23 Maja 2010 Wydaje się być niezłe a jak z wydajnością? Jest szybsze niż 39 czy może takie same? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 23 Maja 2010 Autor Udostępnij Opublikowano 23 Maja 2010 roznica szybkosci ma znaczenie raczej przy operacjach na buforach (39dll z tego co widzialem za duzo razy tworzy i usuwa tymczasowe bufory dla oryginalow (przy odbieraniu/wysylaniu danych i paru innych operacjach a lepiej operowac na oryginalach bezposdrednio)), ale jak na dzisiejsze procesory to sa milisekundy roznicy (wieksze znaczenie ma to dla pamieci RAM) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 23 Maja 2010 Udostępnij Opublikowano 23 Maja 2010 dobra le znalazłem buga: GML (STEP) var b; // create temporary data buffer b = EtBufferCreate() // if last pozition is not equal to current position then: if( x != xprevious || y != yprevious ) { // write unsigned char value to buffer EtBufferWriteUchar( b, // buffer element 10 // value (10 as position update message) ) // write number value to buffer EtBufferWrite( b, socket ) // player socket on server to identify player EtBufferWrite( b, x ) EtBufferWrite( b, y ) // send buffer data to all session clients EtSessionSend( session, b ) // free data buffer EtBufferFree( b ) } // destroy temporary data buffer EtBufferDestroy( b ) Jeżeli dobrze to zrozumiałem wysyłasz pozycje co stepa co jest bardzo złe a jeżeli chodzi o przykład silnika to naganne. No i nigdzie nie mogę znaleźć gdzie ustawiasz te ludziki na serwie... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 23 Maja 2010 Autor Udostępnij Opublikowano 23 Maja 2010 // if last pozition is not equal to current position then: if( x != xprevious || y != yprevious ) czyli tylko wtedy gdy zmienia pozycje czyli nie do konca co stepa :P ale mozna to zmienic na wysylanie docelowej pozycji co 5 klatek i podazanie do niej, to jest tylko przyklad by zrozumiec jak komunikacja dziala :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 23 Maja 2010 Udostępnij Opublikowano 23 Maja 2010 Spoko, ale wiesz jednak pasowało by zrobić to już dobrze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 23 Maja 2010 Udostępnij Opublikowano 23 Maja 2010 To JEST dobrze :) Wydaje sie latwe, a nawet bardzo latwe. E: a takie tworzenie buffera co step i niszczenie go jest w porzadku? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 23 Maja 2010 Autor Udostępnij Opublikowano 23 Maja 2010 bufor ten zajmuje 0 przy utworzeniu a 25 bajtow w czasie wysylania danych (czyli po ich wpisaniu w bufor) wiec jest jak najbardziej dozwolone. 39dll natomiast wpisywal do bufora glownego i przy wysylaniu kopiowal go, czyi robil podwojna robote, tutaj natomiast od razu wpisujesz do tego bufora ktory wysylasz Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 23 Maja 2010 Udostępnij Opublikowano 23 Maja 2010 Czyli ze jest to szybsze, zajmuje mniej pamieci, czy oba naraz? Podejrzewam, ze ta trzecia opcja :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 23 Maja 2010 Autor Udostępnij Opublikowano 23 Maja 2010 zgadza sie, dziala szybciej i zzera mniej pamieci. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 23 Maja 2010 Udostępnij Opublikowano 23 Maja 2010 i to wszystko przez bufor? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lunatyk Opublikowano 23 Maja 2010 Udostępnij Opublikowano 23 Maja 2010 Czy to jest szybsze od 39dll? ;P Topica nie chce mi się czytać... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 23 Maja 2010 Udostępnij Opublikowano 23 Maja 2010 psysio ile zajeło ci zrobienie tej biblioteki ;>? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DobryZiom Opublikowano 23 Maja 2010 Udostępnij Opublikowano 23 Maja 2010 Podoba mi się ;] Jak byś mógł to wiesz...ja czekam na przykład serva i clienta ;D Samo wysyłanie z serva do wszystkich clientów stronga lub real :] będę wdzięczny ;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 24 Maja 2010 Autor Udostępnij Opublikowano 24 Maja 2010 No i nigdzie nie mogę znaleźć gdzie ustawiasz te ludziki na serwie... skrypt: OnServerClientUpdate - po utworzeniu sesji podpina sie skrypty zdarzen i silnik sam je wywoluje kiedy trzeba :) i to wszystko przez bufor? yep. szybosci samego procesu przesylania danych niestety nie da sie zwiekszyc. Czy to jest szybsze od 39dll? ;P Topica nie chce mi się czytać... w gruncie rzeczy tak. psysio ile zajeło ci zrobienie tej biblioteki ;>? z dwa tygodnie :P Podoba mi się ;] Jak byś mógł to wiesz...ja czekam na przykład serva i clienta ;D Samo wysyłanie z serva do wszystkich clientów stronga lub real :] będę wdzięczny ;] jasne, sie robi :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 24 Maja 2010 Udostępnij Opublikowano 24 Maja 2010 fajna sprawa, widać, że mega uproszczona. Może w niedalekiej przyszłości skorzystam :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DobryZiom Opublikowano 24 Maja 2010 Udostępnij Opublikowano 24 Maja 2010 to ja czekam na ten przykład serva i clienta ;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Broccatee Opublikowano 25 Maja 2010 Udostępnij Opublikowano 25 Maja 2010 fajna sprawa, widać, że mega uproszczona. Może w niedalekiej przyszłości skorzystam :) Dokładnie. Lubie minimalizm, a tutaj jest on szczególny. Ja prawdopodobnie ją wykorzystam :] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DobryZiom Opublikowano 25 Maja 2010 Udostępnij Opublikowano 25 Maja 2010 ja chyba też będę z tego korzystał... po tym jak wykona te example serva i clienta ;D czyli jutro :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 25 Maja 2010 Udostępnij Opublikowano 25 Maja 2010 musze przyznać że puki co ładnie sie prezentuje, jeszcze nie kminie wszystkiego ale to przyjdzie z czasem, przydały by sie jakieś przykłady lub tutki ale pewnie z czasem napiszesz ;] @edit. już chyba pojełem większość z tego DLL'a i musze przyznac ze nauka idzie bardzo szybko. Sesje obcykane, minigierka zrobiona, czas zająć się zapytaniami do serwerów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 26 Maja 2010 Autor Udostępnij Opublikowano 26 Maja 2010 Dobry Ziom, niestety jutro dopiero dostaniesz przykład specjalnie dla Ciebie, ponieważ wczoraj usprawniałem wysyłanie i odbieranie danych ale zostało mi troche robótki do dokończenia na dziś i sesje nie działają na razie poprawnie, póki nie skończę dziś naprawiać tego. Niezmiernie się cieszę że biblioteka okazała się przydatna :D Będę pracował nad kolejnymi ułatwieniami, kolejnym dodatkiem będzie upload plików na serwer www oraz komunikacja z serwerem poczty. A może Wy macie jakieś pomysły na różne protokoły których obsługę można dodać do silnika? :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 26 Maja 2010 Udostępnij Opublikowano 26 Maja 2010 psysiu jeśli możesz wytłumacz mi do czego służą : EtSocketAsync i EtSocketNagle. Do czego dokładnie służą ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 26 Maja 2010 Autor Udostępnij Opublikowano 26 Maja 2010 Async sluzy do wlaczenia trybu asynchronicznego odbierania danych, czyli trybu nie blokujacego aplikacji. Normalnie socket dziala w trybie blokowanym, czyli podczas wywolania EtSocketReceive() aplikacja jest blokowana dopoki nie dostanie wiadomosci, a z Async na true nie blokuje aplikacji. Nagle umozliwia wysylanie malych wiadomosci, bez niego sa one buforowane w socketach i wysylane gdy przekrocza magiczny rozmiar (tyle zrozumialem z info na necie i z eksperymentow ;P) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 26 Maja 2010 Udostępnij Opublikowano 26 Maja 2010 dzieki ;] ogolnie fajnie to zbudowales, to jest po prostu proste, jak skonczysz przykład może pomyśl nad jakimś tutkiem, hm? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 26 Maja 2010 Autor Udostępnij Opublikowano 26 Maja 2010 tutek, masz na mysli prosta gra multiplayer - jak najefektowniej zarzadzac komunikacja klient-serwer? :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę