2009-11-13 10 views
8

W skrócie tworzę grę wieloosobową opartą na Flashu i teraz zaczynam pracować nad kodem po stronie serwera. Cóż, jestem jedynym programistą projektu, więc szukam biblioteki gniazd wysokiego poziomu, która dobrze współpracuje z grami, aby przyspieszyć mój czas rozwoju.Poszukiwanie biblioteki wysokiego poziomu do programowania w gnieździe (Java lub Python)

Próbowałem użyć Twisted Framework (dla Pythona), ale mam pewne osobiste problemy z tym, więc szukam innego rozwiązania.

Jestem otwarty na bibliotekę Java lub opartą na Pythonie. Najważniejsze jest to, że biblioteka jest wystarczająco stabilna dla gier wieloosobowych, a biblioteka musi być "na wysokim poziomie" (abstrakcyjna), ponieważ jestem nowy w programowaniu gniazd dla gier.

Chcę również zauważyć, że będę używał surowego gniazda binarnego do mojej gry Flash (Actionscript 3.0), ponieważ zakładam, że będzie szybszy niż tradycyjne gniazdo Flash XML.

+2

Można opracować co dokładnie zrozumieć z „biblioteki wysokiego poziomu do programowania gniazd Gniazda”, jak nie są wysokość poziomu. Czy szukasz sieci lub oprogramowania pośredniego (biblioteki)? – tuergeist

+0

Właściwie przez ostatnie kilka miesięcy spędzałem część mojego wolnego czasu na programowaniu gniazd (ogólnie) i jest to bardzo zdumiewające, a właściwie CHCĘ stworzyć własny serwer gniazd w C, ale chcę wydobyć tę grę do wersji beta jak najszybciej. Jeśli chodzi o mnie szukając ... tak, mam pytona, wydawało się, że Twisted był niezrozumiale, ale dla Javy nie jestem pewien ... Zaprogramowałem kilka małych rzeczy typu klient-serwer przy użyciu domyślnej biblioteki Java. ale było znacznie inaczej niż programowanie serwera gniazd dla gry. –

+0

@ CodeJustin.com: Proszę nie komentować na własne pytanie. Jesteś właścicielem pytania. ZAKTUALIZUJ pytanie z dodatkowymi faktami. –

Odpowiedz

7

Opcja dla Pythona ramy Concurrence. Użyłem go całkiem niedawno, w połączeniu z Stackless Python, do symulacji środowiska, w którym potencjalnie były tysiące żądań na sekundę, z których każda musiała zostać przetworzona w czasie krótszym niż 2 sekundy. Interfejs API jest bardzo prosty i dobrze udokumentowany.

Bardzo zbliżyłem się do implementacji w Javie przy użyciu Netty, który jest projektem JBoss.

+0

Wow, nie mogę uwierzyć, że wcześniej nie natknąłem się na Concurrence. Wygląda na to, że jest to dobre rozwiązanie dla mnie (nawet zbudowane w klasie mysql). Dokumentacja jest dobrze rozplanowana, dziękuję. W tej chwili nadal jestem otwarty na kolejne sugestie, ale mam zamiar sprawdzić Concurrence, aby zobaczyć, czy mi się podoba. –

+0

+1 dla Netty, którego aktualnie używam jako serwer dla klienta gniazda Flash. To jest wybuch, szczerze mówiąc. –

+0

Mam zaimplementowaną bibliotekę, czy chciałbyś ją obejrzeć: https://github.com/czifro-development/JSocket – czifro

0

Wysoki poziom z jednej strony i nieprzetworzone gniazda binarne z drugiej strony nie będą działać. Przepraszamy, ale musisz też przejść na niski poziom po stronie serwera.

EDYCJA: w odpowiedzi na komentarz PO. Nie znam żadnego "wysokiego poziomu" interfejsu natury, o którym mówisz w Javie. I szczerze mówiąc nie sądzę, żeby miało to sens. Jeśli zamierzasz mówić bajtami przez strumienie gniazd, naprawdę musisz zrozumieć standardowe interfejsy API JDK Socket/ServerSocket; na przykład limity czasu, utrzymywanie aktywności itp.

+0

Cóż, mam na myśli wysoki poziom tego, że nazywanie konwencje są laikami. Właściwie "znam" koncepcje gniazd BASIC i miałem nadzieję, że mój serwer gniazd będzie działał od podstaw, ale ja po prostu nie mam takiego czasu. Miałem nadzieję, że znajdę rozwiązanie, które obsłuży większość standardowych procesów gniazdowych (takich jak timeout), a następnie spakuje je do łatwego w obsłudze interfejsu API, który ma dobrą dokumentację. Zobacz nawet nie ZNAJDĄ, że to mniej więcej ja pytam, czy ktoś zna dobre rozwiązanie. (Nie chcę ponownie programować serwera w ciągu kilku miesięcy z powodu mojego złego wyboru w bibliotece gniazd). –

+0

Co jest nie tak z przeprogramowaniem czegoś później? Nazywa się to "uczeniem się na błędach". To wszystko jest częścią procesu uczenia się. –

+0

Zgadzam się w 100% i chyba tak długo, jak długo nie będę musiał zmieniać strony klienta api, to nie będzie miało większego znaczenia. Trochę zaniepokojony budowaniem mojej gry wokół wadliwego projektu (ze względu na moją część), a następnie w połączeniu z moim brakiem wiedzy na temat programowania gniazdek byłby wyłączony, jeśli spróbuję stworzyć własny serwer (od zera) bez pomocy biblioteka gniazd obsługująca procesy, takie jak aktualizowanie wszystkich klientów nowymi danymi. Wiem, że jeśli gra minie koniec roku, to nie będę robił przepisywania serwera, ale chcę iść w przygotowanym. –

0

Zobacz "A Quick Guide to ActionScript 3 and Flash Programming". Zawiera szczegółowy przykład kodu klienta ActionScript, który wykorzystuje gniazda do komunikacji z serwerem Python (z dołączonym kodem). Nie to, co ktokolwiek nazwie wysokiego poziomu, korzysta z podstawowego modułu gniazda Python do komunikacji.

(Uwaga: przykład serwer Python jest nie pythonic Po zdobyciu ogólnej idei za pomocą gniazd w Pythonie, napisać coś prostszego i nr from socket import *.)

+0

Dzięki za tą gimelę, to to mam na myśli. Właściwie kilka dni temu uruchomiłem serwer z rdzeniowym modułem gniazd Python, ALE zacząłem być nieco przytłoczony tym, jak wiele mądrego projektu musiałbym zrobić, zanim jeszcze otrzymam przyzwoity zestaw metod pracy z grą. Tyle się martwię i tak bardzo nie wiem ... wtedy widziałem strukturę Twisted, która zrobiła większość tego "małego materiału", z którym miałem problemy, ale z osobistych powodów nie chcę używać Twisted. –

+0

Nie ma za co. Zobacz http://stackoverflow.com/questions/1157245/creating-a-board-game-simulator-python-pygame w celu omówienia strategii komunikacji. Nie komplikuj. – gimel

+0

Dzięki jeszcze raz gimel, to było szybkie i brudne zaniedbanie projektu klient-serwer dla turowych gier. Pomocne –

Powiązane problemy