Sutikku
-
Postów
738 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
3
Typ zawartości
Profile
Forum
Wydarzenia
Odpowiedzi opublikowane przez Sutikku
-
-
(słaba jakość, bo nie ja robiłem tego screena i wysłane było przez fb)
To jest ta gierka co mi tyle sprawia problemów ostatnio z multiplayerem ;v
-
Noo, masz rację, przy małych wygląda fajowo. A tak z ciekawości. Paleta to jest sprite, czy zapisane w zmiennych wartości?
-
Wpadł mi taki pomysł. Zadziała on chyba tylko na dwa itemy w jednym miejscu chyba.
Item1 przy kolizji z item2, zapisuje sobie id itemu2. Gracz mając kolizje z itemem1, sprawdza czy on nie ma przypisanego jakiegoś id innego obiektu. Jeśli tak, to zbieramy ten przypisany do zmiennej, jak nie to wiadomo, normalnie zbieramy item1.
-
Tak sobie teraz myślę, że zależność który jest u dołu, a u góry jest zależne od tego kolejności w której nadajesz ten sam depth. Ty chcesz podnieść pierwsze wheat, czyli depth musi być mniejszy, czyli musi sobie pierwszy nadać depth niż wooden_floor. Tak rozkminiam, ale w sumie nie wiem czy to na pewno tak działa.
-
Akurat to z funkcji holes, mi się nie podoba. Ale to co widziałem na live u threefa było ######ste.
-
Pierwsze wykonuje się kod z wooden_floor, a potem jest zarysowywany wheat. To może w wheat daj depth=y*-1-1; ?
A wydaje mi sie, że podnosi ten obiekt niżej, bo właśnie w tej "kolejce wykonywania kodu" on jest wcześniej niż wheat.
-
Musiałby mieć chyba XPka, bo teraz od razu się ma coś do zipów,rarów tak mi się wydaje.
-
Można zostawić czas żeby cały czas go dodawało, a potem dzielić bez reszty, ale chyba zmienna w końcu straci miejsce ;d
-
Masz game maker8, czy game maker studio?
Musisz wypakować tego RARa.
-
Lepszą wersję gamemakera? Przecież mnie nie stać xd
Ten edytor jest zrobiony pod starą wersję gamemakera, ale jest cały opatrzony w komentarze i banalnie prosty. Eksportuj sobie do gma i przeanalizuj cały. Jeśli czegoś nie rozumiesz to pisz na pw, albo tutaj.
-
Jeśli mam dezaktywowane np. wszystkie obiekty solid, a potem użyje with(solid_blocks), to with() się wykona tylko w aktywowanych, czy we wszystkich obiektach?
-
Trochę stary, ale łatwy w analizie.
-
Jaki będzie cel gry?
-
Bo nie podałem całego skryptu i końcówkę sam dodałem, mogłem zapomnieć dać klamerkę.
Bo tam dalej są jakieśtam pojedyncze case, ale za dużo to tam nie ma.
-
Nie sprawdziłem jeszcze czy to rozwiązanie, ale pewnie tak.
A mam takie pytanie, czemu to tak działa, że ja sam tego problemu nie mam? Routery same "obcinają" pakiety, by zwiększyć szybkość odbierania danych?
-
Żadne tam tajne, wysłałbym nawet cały projekt, ale jakby ktoś zobaczył kod, to wstyd ;d
GML///Wysyłanie pozycjibuffer_write( Buffer, buffer_s8, 1 );
buffer_write( Buffer, buffer_u8, instance_number(obj_player) );
with(obj_player)
{
buffer_write( other.Buffer, buffer_u8, iid );
buffer_write( other.Buffer, buffer_u16, x );
buffer_write( other.Buffer, buffer_u16, y );
buffer_write( other.Buffer, buffer_u8, image_angle/2 );
buffer_write( other.Buffer, buffer_bool, key
);
buffer_write( other.Buffer, buffer_bool, key[UP] );
buffer_write( other.Buffer, buffer_bool, key
);
buffer_write( other.Buffer, buffer_bool, key[DOWN] );
}
for(var i=0; i<MaxClients; i++)
{
if!(player==-1)
network_send_packet( i, Buffer, buffer_get_size(Buffer) );
}
To jest najczęstszy kod który się wykonuje w kwestiach wysyłania.
A odbieram tak
GMLvar type_event = ds_map_find_value( async_load, "type" );switch( type_event )
{
case network_type_data:
var buffer = ds_map_find_value( async_load, "buffer" );
buffer_seek( buffer, buffer_seek_start, 0 );
ReceivedPacket( buffer );
break;
}
I jeszcze skrypt ReceivedPacket (okrojony)
GMLvar buffer = argument[0];var msgid = buffer_read( buffer, buffer_s8 );
switch( msgid )
{
case 1:
//Zmiana pozycji graczy
var num=buffer_read( buffer, buffer_u8 );
for(var i=0; i<num; i++)
{
var iid=buffer_read( buffer, buffer_u8 );
var xx=buffer_read( buffer, buffer_u16 );
var yy=buffer_read( buffer, buffer_u16 );
var ang=buffer_read( buffer, buffer_u8 );
var p=player[iid];
var right=buffer_read( buffer, buffer_bool );
var up=buffer_read( buffer, buffer_bool );
var left=buffer_read( buffer, buffer_bool );
var down=buffer_read( buffer, buffer_bool );
break;
}
Kodu trochę mam, więc nie wiem co dokładnie mam pokazać. Każde miejsce w którym wysyłam i odbieram?
-
Używam TCP. A wyżej dodałem po edycji link do czegoś, co może jest związane z problemem którego może doświadczam.
-
Ostatnio się trochę więcej bawię gmsowym networkingiem i ciągle mam nowe problemy. W sumie ten problem doświadczam od zawsze. Przyjmijmy, że po stronie serwera wysyłam do wszystkich klientów
1 <-id komendy
23 <- x
12 <- y
Wszystkie trzy są zapisane jako buffer_u8. I jednemu z klientów wyrzuca błąd, po którym można wywnioskować, że odebrane dane to
0
-102
xxx
Oczywiście te liczby to przykłady, ale takie coś jest powiedzmy znacznym problemem. I nigdy nie występuje u mnie jak testuje, tylko dopiero gdy testuje to z kimś innym. I tak się zastanawiam. Czy jeśli w ciągu jednego stepu, użyję dla jednego klienta dwa razy network_send_packet(), to może to być problemem?
edit:
natrafiłem na coś takiego
http://gmc.yoyogames.com/index.php?showtopic=650252
i z tego co rozumiem, czasem pakiety są "ucięte", a następnie dostaje to co zostało ucięte. I nie wiem jak sobie z tym radzić.
-
-
Zaawansowany to ja nie jestem, ale brzmi fajnie. A co tam, raz się tyje, spróbuję.
-
Jest duża różnica, czy wysyłam 1 bajt, a nie 2?
-
Robię sobie standardowo gierkę multiplayer i taki mam problem.
Ogarnąłem już jak robić poruszanie, tak żeby wyglądało w miarę dobrze. Powtarzam ostatnio dostane komendy od serwera. Czyli jeśli ktoś szedł ostatnio w lewo, to teraz pewnie też idzie w lewo, aż nie dostanę nowego pakietu. Wtedy staram się płynnie zmieniać pozycję u klienta, na taką jaką dostałem od serwera.
Ale jak to zrobić z image_angle? Postać jest zawsze zwrócona w stronę kursora. Wysyłanie ciągle image_angle, to chyba nie najlepsze wyjście. A jeśli przyjmiemy, że w grze się strzela, to byłoby dziwne gdyby ktoś zaczął strzelać plecami.
-
Cześć, problem jest taki.
Jeśli poruszam obiektem manipulując x i y, to np. mam x+=spd, gdzie spd=4;
A jeśli zrobię move_towards_point(celx,cely, spd), to dochodzę do wrażenia, że move_towards_point(), porusza się szybciej.
Jak więc to ogarnąć, żeby to było sobie równe?
-
A co to za człowieczek z stopami większymi od głowy
Nad czym aktualnie pracujesz?
w Zapowiedzi
Opublikowano
Aktualnie niby wszystko działa. Ale to chyba tylko pozory ;v