Skocz do zawartości

Jeremiah

Użytkownicy
  • Postów

    145
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Jeremiah

  1. Dałem w pytania zaawansowanych :)) Ponieważ pewien bug od kilku lat jest zgłoszony i na razie chyba nie będzie naprawiany (http://bugs.yoyogames.com/view.php?id=16962), a Game Maker nie ma żadnej funkcjonalności, która sprawdzi, czy capslock jest włączony, czy nie, chciałem was zapytać, czy macie jakieś rozwiązanie tego problemu? Potrzebuję to do chatu na serwerze, ręcznie ustawiłem, że alt + A wrzuci nam w keyboard_string znak "ą", a z przytrzymanym shiftem "Ą", ale nie dam rady tego zrobić dla capslocka. Może jakieś rozszerzenia?
  2. Do jednej działa, do wszystkich też mogę, jeśli tylko zrezygnuję z "ds_list_find_value(global.clients, i)" na rzecz po prostu "i+1". GML ds_map_add( global.clients, sock, sok ); show_message(ds_list_find_value(global.clients, 0)) Ale nic dziwnego jak pod show_message mam undefined. Nie wiem o co chodzi.
  3. Pomoże ktoś z jakimś dziwnym błędem? Opieram się na tym opisie: https://forum.gmclan.org/index.php?showtopi...p;hl=networking ale nie działa mi wysyłanie. Gdy ktoś się łączy mam: GML sok++ ds_list_add( global.socketlist, sock ) ds_map_add( global.clients, sock, sok ) Ale gdy coś wysyłam: GML var buff = buffer_create(256, buffer_grow, 1) buffer_seek(buff, buffer_seek_start, 0) buffer_write(buff, buffer_s16,99) buffer_write(buff, buffer_string, mesedz) for (var i = 0; i < ds_list_size(global.socketlist); i++) { network_send_packet(ds_list_find_value(global.clients, i), buff, buffer_tell(buff)); } ... w ogóle nie wysyła, wywala błąd "network_send_packet argument 1 incorrect type (5) expecting a Number (YYGI32)" A gdy sobie zerkam co jest pod ds_list_find_value(global.clients, i) to okazuje się, że "undefined". Dlaczego? Jak podmieniam na "network_send_packet(i+1, buff, buffer_tell(buff));" to niby wysyła, ale dlaczego nie chce mi działać to powyżej?
  4. Panowie, skorzystałem z funkcji zaproponowanej przez Threefa, ale z zastosowaniem pr_linestrip, jak podpowiedział ediepl :) Dzięki!
  5. Znacie może jakieś przystępne sposoby rysowania zaokrąglonych linii (na przykład jak narysować połowę albo 1/4 koła a nie całość?) http://gmc.yoyogames.com/index.php?showtopic=416670 - znalazłem tylko coś takiego, ale średnio się sprawdza. Chociażby zaznaczam, że narysować ma połowę koła (180 stopni) a rysuje około 190. Czy istnieje jakiś normalny sposób?
  6. Jeremiah

    DORG

    Guns of Icarus Online.
  7. Miewam mało czasu, ale jeśli to aktualne to zgłaszam się, czemu nie...
  8. Mam Xperię Mini Pro, ale na Xperii M jest to samo.
  9. 1. No właśnie nie. W create jest tylko zadeklarowanie prędkości, kierunku i jeszcze jednej zmiennej. 2. Mam odznaczone ;/ 3. Super, dzięki! Niby oczywiste rozwiązanie, a nie pomyślałem o tym. Hm... co jakiś czas tworzyły się małe obiekty rysujące przezroczysty okrąg... po ich wywaleniu fps-y jakby trochę lepsze, na razie nie spadały poniżej 25. Co i tak nie jest rewelacją, bo widziałem bardziej rozbudowane i ambitne projekty na telefony wykonane dzięki GM. Niemniej, projekt traci trochę na tym wizualnie. Nie da się w ogóle przezroczystych obiektów stosować czy jak? I czy trzeba się z tym pogodzić, czy też kiedyś zostanie to załatane w jakiejś aktualizacji? Coś mi tu ciągle nie pasuje, a nie wydaje mi się, bym miał aż tak źle zoptymalizowany kod. Zwłaszcza, że wiele go nie ma :P Potestuję jeszcze później i zobaczę, czy przy okazji eksport do YYC w końcu wyrobi więcej niż 20 fps. Sytuacja i tak trochę załamuje.
  10. Witam! Majstruję sobie czasem po robocie małą gierkę na telefony. Nic specjalnego, taki tower defense. Co jakiś czas z góry ekranu nacierają przeciwnicy i toczą walkę z ustawionymi przez nas jednostkami. Niemniej trochę zaskoczyło mnie jak bardzo trzeba się skupić na optymalizacji nawet bardzo prostych projektów. Chyba że jest coś nie tak z samym GM lub jego konfiguracją... Napotkałem następujące problemy: 1. Fala przeciwników pojawia się 10 sekund po pokonaniu ostatniego wroga z poprzedniej. Wtedy co sekundę, w zależności od aktualnej rundy, realizowany jest kod: GML repeat (5) instance_create(choose(15,60,105,150,195,240,285,330,375,420),(random(200)*-1),corsair) Na PC działa normalnie, na zwykłym eksporcie do Androida też było ok (stałe 30 fps). Przy użyciu YYC fps-y spadają do około 20... niby gry miały być szybsze, a tu co? To problem optymalizacji czy konfiguracji GM? Bo plany biorą w łeb, jeśli będę musiał ograniczyć ilość wrogów. 2. Kolejny problem. Przeciwnik może wpaść w obiekt jego wielkości, który ma spowolnić jego ruch. Kod w step jest następujący: GML if !place_meeting(x,y,wodorosty) then speed=3 else speed=1 Tutaj też zauważyłem spadek FPS i to również mnie dziwi, ponieważ kod nie jest zbyt skomplikowany. 3. Kolejna sprawa. Aby przeciwnicy nie nachodzili na siebie zastosowałem poniższy kod: GML var rendz; for (rendz=0;rendz<8;rendz+=1) { if place_meeting(x,y+rendz,enemy) { speed=0 } } Być może trochę łopatologiczny, ale nie wpadłem na lepszy pomysł, w jaki sposób obiekt miałby reagować na inny o tej samej wartości x, a większej do 8 wartości y. Podejrzewam, że to może być kolejną przyczyną spadku fps-ów, jedna z jednostek gracza na tej samej zasadzie oblicza dystans przeciwnika od siebie, aby oddawać strzały. Normalnie zastosowałbym po prostu "distance_to_object", ale aby doszło do jakiejś interakcji oba obiekty muszą posiadać tę samą wartość x. 4. Stosuję surface na całym ekranie, ale kiedy go usuwam, to nie zauważam dużej różnicy w fps-ach. Swoją drogą, czy na PC i Androidzie używamy inaczej surface czy tak samo? Na razie to tyle. Generalnie jestem zaniepokojony, bo na ekranie naraz znajdować się będzie co najmniej kilkadziesiąt integrujących ze sobą obiektów, a jeśli gm-owy eksport do Androida nie daje rady przy ledwie kilku-kilkunastu, to plan się strasznie sypie. W dodatku co wnosi YYC, jeśli działa wolniej od zwykłego eksportu?... Liczę na to, że to nie problemy z kiepskim kodem, tylko coś nie tak z konfiguracją GM.
  11. Gdyby ktoś miał kiedyś podobny problem, to rozwiązaniem jest właśnie "update license". Jeśli dobrze pamiętam, to problem bierze się z dorzucenia nam YYC, a po samej aktualizacji GM do 1.4 brakuje jakichś plików do tych modułów i może się coś krzaczyć :)
  12. Jeremiah

    Top Hat

    Gratulacje! Zakupię po wypłacie :)
  13. Rozważam przerobienie swojej gierki na wersję dla trzech graczy i póki co zabrałem się za tworzenie najzwyklejszego w świecie menu. Potrzebuję paru wskazówek i informacji. Generalnie połączenie się trzeciego gracza raczej działa. Każdy gracz ma nadane prawidłowe ID, widzi ilu jest graczy na serwerze. "global.otherplayer" czyli gracz, do którego wysyłamy informacje to dla hosta drugi gracz, a dla obydwu graczy host. "global.otherplayer2" to dla hosta i drugiego gracza gracz numer 3, a dla gracza numer 3 gracz numer 2 Gracze wysyłają do siebie prośby o przesłanie ich nicku. Między hostem i drugim graczem oraz hostem i graczem numer 3 jest on wysyłany bezproblemowo. Ale między graczem 2 i 3 nie da się nic wysłać. Założyłem więc, że bez pośrednictwo hosta się to po prostu nie da. Poprawcie mnie, jeśli się pomyliłem w tym założeniu. No to zrobiłem coś takiego, że jeśli host otrzyma od gracza numer 3 informacje o jego nicku (działa bezproblemowo) to wysyła do gracza numer 2 nick gracza numer 3. Tutaj już kompletnie się pogubiłem... z jakichś przyczyn gracz numer 2 chyba nie uznaje tego, by przesłać mu nick gracza numer 3 nawet za pośrednictwem hosta xp przesyłam kod" Host otrzymuje informację o nicku gracza numer 3 i przesyła ją do gracza numer 2: GML case 211: global.gracz3nick=readstring() clearbuffer() writebyte(212) writestring(global.gracz3nick) sendmessage(global.otherplayer) break; Gracz numer 2 otrzymuje tę informację. GML case 212: global.gracz3nick=readstring() break; Nie wiem czemu, ale to nie działa. EDIT coś gdzieś tam zmieniłem i działa, muszę tylko ogarnąć co :D Niemniej pozostaje pytanie: nie da się wysyłać informacji między graczem 2 i 3 bez pośrednictwa hosta?
  14. Jeremiah

    Tizen Game Drive

    Dzięki! Zobaczymy jak to będzie.
  15. Jeremiah

    Tizen Game Drive

    Czy ktoś wykonuje pracę na ten konkurs? Ja kończę jeden projekt, ale kompletnie nie wiem do kiedy powinienem go zrobić... niby czas do 31 stycznia, ale to jest czas na wysłanie gry do certyfikacji czy jej przejściu przez certyfikację? Jak mniemam, to drugie. I tu pytanie brzmi - ile ona trwa? Bo jak tydzień to już nie mam co przy tym siedzieć...
  16. Witam, problem jest następujący" GML kolor=choose(4030946,924927,4414207) Powyższy kod w Create zawsze wybiera ostatnią wartość z podanych ;) Żeby było śmieszniej, łaskawie losuje kolor dopiero gdy kod wykonuje się po wciśnięciu jakiegoś klawisza, a nie w create ;) Niech mi ktoś to logicznie wytłumaczy i napisze, czy gdzieś coś trzeba w Game Makerze odznaczyć, żeby to znowu działało, czy też mam zmienić kod i losowy wybór dwóch wartości rozpisać na dwadzieścia linijek zamiast jednej? EDIT: NOTE: This function will return the same value every time the game is run afresh due to the fact that GameMaker:Studio generates the same initial random seed every time to make debugging code a far easier task. To avoid this behaviour use randomize or random_set_seed at the start of your game. Kiedyś życie było prostsze...
  17. No właśnie przerabiam teraz kod tak, że pozycja gracza wysyłana będzie tylko po wciśnięciu klawiszy ruchu, a raz na jakiś czas (sekunda będzie ok?) wysyłać będzie dokładną pozycję x i y. Tak prawdę powiedziawszy wydaje mi się to dziwną metodą na likwidację lagów. Nie siedziałem nigdy jeszcze w kodzie multi, więc może to normalne, a tylko mi wydaje się dziwne. Hipotetyczna sytuacja. Czy wysyłane co step info o pozycji obiektu tak samo obciąża serw co tworzenie co step jakiegoś obiektu, na przykład pocisku?
  18. Cóż, to wiele tłumaczy. Spróbuję jeszcze jednej sztuczki, a jeśli nie pomoże to niestety, będę musiał porzucić projektu. Pozycje postaci muszą być jednak aktualizowane dość często ;/ chyba, że jest jakiś sposób, żeby zachować płynność ruchów graczy, którzy dynamicznie zmieniają swoją pozycję? I czy ten faucet networking byłby tutaj lepszy? Jedno mnie tylko dziwi - dlaczego praktycznie we wszystkich tutorialach autorzy wysyłają coś co step? Edit: a jak to wygląda z tymi nowymi funkcjami do tworzenia gier sieciowych, które zawarto w Studio?
  19. Ogarnąłem tamto jakoś. Teraz problem to lagi XD Co step wysyłam pozycje x i y postaci graczy. W dodatku serwer wysyła w ciągu sekundy około kilkunastu informacji z pozycjami x, y, a czasem speed i direction tworzonych w grze obiektów. Czy tak monstrualne rozmiary informacji mogą być przyczyną tego, że gra laguje? Na localu działa ok. Przekierowywałem porty, wyłączałem jakieś pierdoły, hamachi i takie tam. Wątpię, by to była wina routera, jeśli z gościem, z którym gram w o wiele bardziej wymagające gry bez lagów ten dziwaczny problem występował.
  20. No tak mam zrobione. WSZYSTKIE obiekty tworzone są przez serwer, serwer nadaje im ID i wysyła do klienta. Podczas testów wyświetlam sobie przy obiektach ich id i jego nadawanie działa poprawnie :/ Nie wiem co jeszcze może być nie tak. Pewnie po prostu jak jest 10 lub więcej obiektów na ekranie to 39dll nie wyrabia. Na to gubienie pakietów można jakoś poradzić?
  21. Ogarnę kiedyś ten faucet networking, bo ten 39dlll chyba faktycznie do niczego się nie nadaje. Po przypisaniu własnych id problem nie zniknął choć jest trochę rzadszy. Z jakichś powodów czasem obiekt zamiast się usunąć przyklei się do celu i tak sobie do ciężkiej cholery tkwią... mam wrażenie, że cały wysiłek na marne idzie. Co może być jeszcze przyczyną? To, że w roomie jest do kilkudziesięciu obiektów naraz? Tylko pozycje x i y postaci graczy wysyłane są co step, WSZYSTKIE inne wysyłane są wyłącznie w momencie tworzenia. Mnie zaraz szlag z tym trafi.
  22. Ogarniam sobie 39dll i w ramach tego majstruję małą gierkę. Z góry schodzą przeciwnicy i rzucają piłeczkami w postacie graczy. Generalnie ruch postaci, botów i pocisków ogarnąłem. Przy graczach wysyłam co stepa info o pozycjach x i y, przy pociskach i botach informacja jest wysyłana tylko raz z serwera do klienta - z informacjami na temat początkowych pozycji x, y oraz speed i direction. Generalnie raczej działało cacy i nie było problemów. Problemy mam, kiedy dochodzi do trafienia bota przez pocisk gracza. Czasem działa poprawnie, ale cóż... raz na jakiś czas zdarzy się, że klient będzie widział tylko pocisk "przyklejony" do przeciwnika i obydwa nie raczą się usunąć z mapy. Dobra, a teraz jak to wygląda technicznie. Obiekt: bot; event: kolizja z pociskiem if global.host { with (other) instance_destroy() clearbuffer() writebyte(13) writeint(id) sendmessage(global.otherplayer) instance_destroy() } Obiekt: pocisk; event: destroy if global.host { clearbuffer() writebyte(9) writeint(id) sendmessage(global.otherplayer) } Obiekt: gracz 2; event: step case 9: var delette; delette=readint() with (delette) instance_destroy() break; Co do case 13 to tak samo to wygląda. Z początku we wszystkich usuwanych obiektach wysyłało 9, ale szukając rozwiązania dodałem dodatkowe, sądząc, że być może po prostu za dużo tego wysyła czy coś. Tak to wygląda, ma ktoś jakiś pomysł, radę? Przypomnę, że czasem pocisk i bot nie usuną się po kolizji na ekranie klienta.
  23. A taki myk... dzięki. Tylko czy ta opcja jeszcze istnieje w Game Maker Studio? W takich momentach żałuje pieniędzy wydanych na ten program :/
  24. Odświeżam sobie zabawę z 39dll i bazując na starych przykładach podczas testowania gierki wyskakują mi w GM błędy tego typu: In Object object0, in Event UserEvent0 action number 1 at line 6 : function "sendmessage" expects 4 arguments, 1 provided Co ciekawe, po wyeksportowaniu aplikacji do exe działa prawidłowo i bez jakichkolwiek problemów. Błąd pojawia się tylko w okienku "Compile Errors" podczas testowania gry bez exportu. Jak się pozbyć tego problemu, aby móc normalnie testować grę, a nie za każdym razem exportować do exe?
×
×
  • Dodaj nową pozycję...