Skocz do zawartości

Konrad-GM

Użytkownicy
  • Zawartość

    2626
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    14

Ostatnia wygrana Konrad-GM w Rankingu w dniu 12 Czerwiec

Konrad-GM posiada najczęściej lubianą zawartość!

Reputacja

32 Mała Cegła Społeczności

O Konrad-GM

  • Tytuł
    Legendary Hobo
  • Urodziny 07/31/1992

Contact Methods

  • Website URL
    https://lethiandev.github.io/

Previous Fields

  • Steam
    samael_x92
  • Użytkownik GameMaker Studio 2
    Nie
  • Użytkownik GameMaker Studio
    Tak
  • Użytkownik GameMaker 8
    Nie
  • Użytkownik GameMaker 7 i wcześniejszych wersji
    Nie
  • Użytkownik Unity
    Nie
  • Uytkownik Godot
    Tak

Profile Fields

  • Płeć
    Mężczyzna

Ostatnie wizyty

21445 wyświetleń profilu
  1. Ale jeżeli dotkniesz jakiś obiekt, to Collision Event też wykonuje się co Step. Z obiektami obj_hazzard np. kolce to z tego co widzę robisz instance_destroy, to ok, wykona się tylko raz. Ale jak przerzucisz to do obj_enemy to tutaj musisz jeszcze sprawdzać, czy global.hp jest mniejsze równe 0 i też dopiero usunąć obiekt instance_destroy.
  2. Bezmyślne kopiowanie kodu jest Twoim największym wrogiem teraz Postaraj się, powoli ale do przodu, zrozumieć jak działa Twój kod i dlaczego on tam w ogóle jest. Sprawdź każdy skrypt, każde wywołanie funkcji, gdzie masz przechodzenie do następnego poziomu room_goto, prześledź, co i dlaczego Ci wykonuje ten skrypt. Ja tu widzę dwa główne problemy: 1. W obj_game_controler w evencie Step masz taką linijkę: if (global.life > 0) { global.life -=1; } // (...) Czy to Cię nie niepokoi? Przecież co Step tracisz życie, czyli 60x na sekundę tracisz życie. Czy na pewno tak to powinno wyglądać? 2. Nie trzymasz żadnego formatowania kodu, co dzieląc się kodem tutaj z nami na forum, to kompletnie nie mam ochoty tego czytać, ale pewnie inni też tak mają Szanuj nas i nasz czas w zrozumieniu Twojego kodu, jeżeli Ty nie możesz tego zrobić/nie chcesz, to tym bardziej komuś się nie będzie chciało.
  3. Znana gra w innym wydaniu

    Ja też spróbuję coś wyciosać, w Godocie pewnie, ale czasu nie mam praktycznie więc będzie coś durnie prostego A ten FPP AoE fajny jest nawet x)
  4. Kod jest jak najbardziej poprawny, ale kolejność wykonywania zdarzeń Step tutaj Ci już przeszkadza. Zrób poruszanie planetą (keyboard_checki) w Begin Step zamiast Step. Kolejność wykonywanych zdarzeń w tym wypadku jest ważna, ponieważ wygląda to tak: 1. Aktualizuj Drzewa - ustaw pozycję i użyj stary obrót planety 2. Aktualizuj Planetę - ustaw nowy obrót planety 3. Rysuj scenę - rysuje Ci Drzewa i Planetę, ale Drzewa pamiętają tylko stary obrót Planety Jak w obiekcie Planeta zmienisz Step na Begin Step, to będzie wyglądać to tak: 1. Aktualizuj Planetę - ustaw nowy obrót 2. Aktualizuj Drzewa - ustaw pozycję i użyj nowy obrót planety 3. Rysuj scenę - Drzewa jak i Planeta już są dobrze rysowane
  5. Przetestuj różne ustawienia, które najlepiej będą działać dla Twojego projektu. Tutaj nie ma najlepszego, jedynie słusznego wyboru, staraj się, żeby wykonywać jak najmniej tzw. "draw calls", jeżeli chcesz optymalizować rendering oczywiście. Rozmiar tekstur do potęgi dwójki ma na celu zoptymalizowanie rysowania jak i zachować kompatybilność z prawie każdym GPU. Większość nowszych GPU wspiera tekstury NPOT, ale najwyraźniej GM idzie bardziej w kompatybilność sprzętową.
  6. Nie zostaną pewnie nawet podzielone na texture pages, bo dwie tekstury 3840x2160 (i więcej oczywiście) nie mieszczą się w atlasie o rozmiarze 4096x4096. Chyba, że inne sprite dołączą się do tego samego texture page. Tła musiałyby być podzielone na 2048x2048 (a właściwie to 2046x2046, ale to poniżej dlaczego), żeby zmieściły się 4 w jednym atlasie, bądź po prostu trzymaj się rozmiarów 4096x4096 na tła. To już decyzja którą sam musisz podjąć mając na uwadze wymagania projektu. Jeszcze pozostaje kwestia obramowania - jeżeli zmieścisz więcej jak jedną teksturę na atlasie, to pozostaje problem z wrapowaniem pikseli przy interpolacji. Defaultowo GM2 używa opcji 'clamped' co rozwiąże Ci większość problemów z interpolacją pikseli. A więc wynikowy rozmiar wrzucony do texture page i tak będzie większy niż 3840x2160 (zapewne zostanie rozszerzony do 3842x2162): Opcję tę można wyłączyć wymuszając ładowanie tła na oddzielnym texture page. Pamiętaj również, że jak tekstura będzie większa jak texture page, to zostanie zeskalowana w dół.
  7. 1. Tekstura i tak zapewne zostanie przydzielona do texture page 4096x4096, ale trzymałbym się pociętych tekstur, żeby w razie zmniejszenia texture page (każdy export ma inny limit) GM nie rzygał błędami przy kompilacji. 2. Nie widzę przeciwwskazań. 3. Texture page jest inaczej zwanym atlasem tekstur, a rozmiar ograniczony jest na każdy export ponieważ niektóre GPU nie obsłużą Ci tak dużych rozmiarów tekstur. https://docs2.yoyogames.com/source/_build/1_overview/3_additional_information/texture_pages.html
  8. Game Maker Studio 2

    Backgrounds wyrzucili z drzewka zasobów oraz usunęli powiązanie z tłami API background_index, background_colour itd.. Przy imporcie tła powinny być skonwertowane na warstwy i w razie używania backgroundowych API, powinno Ci automatycznie podmienić również kod na API warstw. https://help.yoyogames.com/hc/en-us/articles/231719468-Porting-A-GMS-1-4-Game-To-GameMaker-Studio-2
  9. Animowana mgła 2D

    Jest to prosty shader, wystarczy większość kodu po prostu skopiować do fragment shadera. Port zrobiony w 5min: https://gmclan.org/up1717_16_FogShader.html
  10. Tablice odczyt,zapis

    To tak jeszcze dodam od siebie przy postinkrementacji (ta sama zasada przy postdekrementacji) var a = 3; show_message(string(a++) + ", " + string(a++)); show_message(a); Da wynik "3, 4" i "5", ponieważ postinkrementacja (jak i również postdekrementacja) działa jak funkcja, bo po każdym a++ zwracana jest stara wartość i dopiero dodawana 1. Gdyby w GM istniały referencje, to wyglądałoby to mniej-więcej tak (kod dla przykładu w C): int postinc(int &var) { int temp = var; var += 1; return temp; } I wywołanie postinc wygląda tak: // A tutaj kod w pseudo-C, więc też nie do kopiowania :) int a = 3; show_message(string(postinc(a)) + ", " + string(postinc(a))); show_message(a); Dlatego czasami może być szybsze używanie ++a zamiast a++ (względem wykonywania kodu, nie jego tworzenia ), bo pomijamy etap kopiowania wartości do zmiennej tymczasowej. Chociaż taka mikro-optymalizacja w GM jest bezużyteczna, z wiadomych chyba względów. Oraz warto pamiętać, że używanie kilka razy a++ w jednym wywołaniu skryptu/funkcji może dać nieoczekiwany wynik.
  11. poziomy trudności w grze

    Globalna zmienna, tak jak to opisuje @SimianVirus7, jest jak najbardziej spoko opcją, ale dodatkowo zrobiłbym to jak @gnysek proponuje, wystarczy dodać stałe do projektu difficult_easy, difficult_medium i difficult_hard. Ale zrezygnowałbym ze switchy, są mega brzydkie
  12. Tablice odczyt,zapis

    Nie do końca, a++ nie da wyniku 4, a 3. var a = 3; show_message(a++); show_message(a);
  13. HTML5 i przycisk "wstecz"

    Panowie, a co z window.addEventListener? Można przecież podpiąć eventy tj. 'beforeunload' albo/i 'unload'. Jeżeli chodzi o attachEvent, to IE i canvasy to i tak odpadają, więc można pominąć w ogóle.
  14. Hosting dla GM'owego programu

    Cześć, podeślij jeszcze konfigurację GM Web-api. Znak '%' oznacza po prostu "dowolny ciąg znaków" w tym wypadku adres klienta kończący się na ".devil" (to pewnie jakiś wewnętrzny DNS MyDevila). Jeżeli @gnysek używał MyDevila to powinien wiedzieć jak odpowiednio skonfigurować bazę.
  15. Niestety sporo drobnych, acz użytecznych funkcji brakuje Visual Studio, które by mi ułatwiły z pisaniem w C++ i TypeScript/JavaScript. Dlatego w większości czasu i tak korzystam z VisualStudio Code. Chociażby wyświetlanie białych znaków, żeby nie commitować tabulatorów zamiast spacji (ofc. linter przed commitem też może pomóc, ale jakoś wygodniej mi mieć bieżący podgląd co robi IDE), albo zamiana zakończeń linii z CRLF (Windows) na LF (Uinx like) to po prostu koszmar pod Visual Studio, to samo dotyczy się kodowania znaków na UTF-8...
×