Skocz do zawartości

Cała aktywność

Kanał aktualizowany automatycznie

  1. Ostatni tydzień
  2. Wygląda już całkiem grywalnie, na poziomie rogalików/dungeon crawlerów które można spotkać na Steam. Powiedziałbym, że takich gier jest milion, więc ciężko się wybić - ale ile z nich ma dinozaura? Jak w grze będzie więcej wykręconych i szalonych pomysłów, to wbrew pozorom - może na siebie zarobić.
  3. Cholerka, AI odmienia moje życie pod kątem designowania Robię gówniany kształt tego co chcę uzyskać, potem AI generuje różne wersje, wybieram najlepsze i łącze je a potem jeszcze dochodzi kolorowanie jako drugi krok i mam fajne graficzki. Podobnie wygenerowałem sobie sztabki i patyczki Jakby kto chciał się też tym pobawić to pozostawiam linka do tego czego użyłem (to też generuje obrazy ala artworki itp): https://github.com/sd-webui/stable-diffusion-webui
  4. Wcześniejsza
  5. Ale to ładne karabin może trochę zbyt małe pikselki w porównaniu z resztą, ale tak to ok #EDIT: założyłem profil na ArtStation https://www.artstation.com/vitofiori
  6. Wróciłem do robienia dinozaura z bronią po dłuższej przerwie. Chciałem najpierw zrobić krótkie zestawienie co od tamtej pory zakodowałem, ale dzisiaj zrobiłem możliwość podpalenia dosłownie każdego obiektu w grze i jestem na tyle zadowolony, że się pochwalę (tak, wiem o dropie fpsów) DUG_iseeworlonfire.mp4
  7. różnie bywa z ilością trójkątów, przy tych najnowszych strojach to łącznie wychodzi nawet 1300 tris jak widać niżej, ale zwykle jest dużo mniej. Łatwiej by było gdyby całość była jednym modelem. @EDIT: 24 modele samych armorów, niektóre po kilka skinów, łącznie 50 różnych armorów
  8. Dobre jak zwykle Tak z ciekawości, możesz pokazać siatkę tych postaci?
  9. Nikt nic nie pisze to wrzucam dalej
  10. można, jak najbardziej. Surface zapewne zapisuje się w "%LOCALAPPDATA%/NazwaGry".
  11. surface_save_part nie działa wcale. Próbuję wywołać funkcję zapisu obrazu, nic żadnej reakcji, żaden plik nie powstaje :(. Program jest już trochę rozbudowany, dlatego trochę ciężko mi wrzucić tu kod, ale spróbuję. W programie jest obiekt o_cursor, który jest zwyczajnie kursorem zawierającym kilka narzędzi do modyfikacji grafiki. W evencie Room Start: global.DEFAULTSURFACE = surface_create(226, 226); Jest też obiekt o_swordPreview, który służy do generowania wyglądu miecza 16x16 (w programie widoczne w powiększeniu przez viewport x4). W Draw: surface_set_target(global.DEFAULTSURFACE); draw_self();//tu wyświetla samą rękojeść ...// dalej wyświetla różne elementy przez funkcję draw_sprite_ext surface_reset_target(); I jest obiekt o_block_base, który zapisuje obszar jako grafikę w postaci pliku. Draw GUI (bez znaczenia czy Draw GUI czy zwykły Draw): surface_set_target(global.DEFAULTSURFACE); ... tu jest ustalenie daty i formatu jej zapisywania żeby nazwa pliku ją zawierała dla porządku var mult = 4;//niestety muszę mnożyć wielkość zapisywanego obszaru x4, bo inaczej obejmie tylko mały fragment miecza a nie całość... screen_save_part("swords "+string(date_get_day(date_current_datetime()))+"-"+string(monthFix)+"-"+string(date_get_year(date_current_datetime()))+"/sword_" + string(name) + ".png", (o_swordPreview.x - 8)*mult, (o_swordPreview.y - 8)*mult, (16*mult), (16*mult)); surface_reset_target(); Sporo zabawy a nadal nie działa. Teraz nawet nie zapisuje obrazu do pliku. Pamiętam, że kilka lat temu jakoś udało mi się to zrobić bez surface'ów, w sensie przezroczyste tło, tylko nie pamiętam, jak to zrobiłem, a użyłem screen_save_part wtedy. Podejrzewam, że surface'ów nie zapisuje się globalami, ale bez globala o_block_base wypluwa błąd, że DEFAULTSURFACE nie zostało zadeklarowane. A zostało, tylko w o_cursor. Ewentualnie zamiast global.DEFAULTSURFACE mogę użyć o_cursor.DEFAULTSURFACE... tylko czy to zadziała, moment sprawdzę
  12. Jest jeszcze takie rozwiązanie - utworzyć surface, dać surface_set_target() przed pierwszym rysowanym elementem (czyli jakieś wysokie depth), oraz kolejny obiekt z surface_reset_target() z niskim depth i wtedy wyrenderujesz to co chcesz dokładnie na surface i będzie przeźroczyste tło. Żeby nie bawić się w przesuwanie koordynatów z 0,0 do miejsca które chcesz, możesz użyć camera_apply() - ale wtedy kamera na tę jedną klatkę musi zaczynać się tam, gdzie ma zaczynać się screen. Będzie z tym troche zabawy, ale GM na pewno pozwala na generowanie przeźroczystych PNG, bo generowałem tak kiedyś stripy z fontem.
  13. Niestety nie działa. A w zasadzie działa identycznie co screen_save_part. Wpisuję surface_save_part(application_surface, dalej koordynaty i rozmiar...). Przezroczystości nie ma, bo tło obrazów nadal jest czarne, a rozdzielczość to 64x64, a powinna być 16x16 (4x większe piksele, a takie powinny być tylko w podglądzie w programie)
  14. GMCLAN meetup - 20 lat GMCLANu!
  15. Próbowałeś korzystać a application_surface i to ten surface zapisywać? Ten surface będzie mieć chyba rozmiar jaki trzeba.
  16. Siema 🖖. Próbuję zrobić mały programik, który zapisuje fragment wybranego obszaru z podanych koordynatów i szerokości pola, jednak wymiary w roździelczościach się różnią, bo camera to 226x226 a viewport to 904x904 (viewport jest dokładnie 4x większy). I mam teraz dwa problemy. 1. Piksele w programie sa 4 razy większe (bo chcę, żeby użytkownik widział lepiej wygenerowany pixelart), jednak fragment zrzutu ekranu (czyli wybrany przeze mnie obszar) nie dososowuje się do tego rozmiaru i muszę ręcznie zwiększyć jego wielkość o 4x. To skutkuje 4x większym wygenerowanym obrazem, niż potrzeba. Chciałbym zmniejszyć wygenerowany obraz 4x, bo to pixelart, którego piksele mają być 4x większe tylko w podglądzie programu, a wygenerowane już obrazy powinny mieć piksele w skali 1, nie 4. 2. Wygenerowane obrazy albo nieposiadają kanału alpha i mają czarne tło, albo posiadają kanał alpha ale nadal mają czarne tło. Nie wiem, jak się tego tła pozbyć, żeby obrazy generowane z mojego programu miały już przezroczyste tło.
  17. Dobra, teraz zrozumiałem. Np. obj_a ma zmienną sndPlayer, a obj_b ma zmienną sndEnemy i chcesz odtwarzać właśnie je, ale zawsze mają inne nazwy. Tyle, że tę nazwę też gdzieś musisz przetrzymywać (np. sndVariabke = "sndEnemy"), więc chyba lepiej po prostu ujednolicić nazwę zmiennej
  18. tak tak, problem mam z tym, że ja w funkcji nie wiem jaka jest nazwa tej zmiennej w instancji. Niektóre mają sndPlayer a inne inaczej, dlatego chciałbym przesyłać odwołanie do zmiennej. Odwołanie, a nie przypisanie, bo chciałby też wiedzieć kiedy ta zmienna jest wykorzystywana (audio_is_playing). No nie potrafię tłumaczyć albo za dużo wymyślam
  19. Ale jak każda instancja ma inny dźwięk, to jego id w zmiennej zupełnie wystarczy - wywołując skrypt np. za pomocą with() możesz ustawić kontekst instancji z której kod się wykona i wtedy "widzi" jej lokalne zmienne, nie trzeba ich przekazać w argumencie.
  20. O! Bardzo prawdopodobnie, że tego właśnie szukałem. Robiłem też return sound_player zamiast true, ale to nic nie dało. Na razie zrobiłem to po normalnemu, czyli tak jak Gnysek napisał, ale chciałem to sobie zrobić bardziej elastycznie. Prościej mówiąc, chcę uniknąć pisania za każdym razem if(!audio_is_playing(sndPlayer)) a dodatkowo kiedyś też miałem problem właśnie z tym przesyłaniem zmiennych, gdzie zmienna w funkcji i instancji miała być tą samą.
  21. A dziękuję Oba punkty niezwykle zasadne - cała grafika jest zrobiona przeze mnie, a ponieważ moje zdolności są jakie są to wyszło jak wyszło A co do prędkości statków to był dla mnie jeden z głównych problemów odnoście znalezienia 'złotego środka', więc doskonale rozumiem, że mogą być dla kogoś za wolne/za szybkie. Może faktycznie jeszcze je minimalnie spowolnię. Szczerze to nawet nie wiem - użyłem domyślnej opcji w GM odnośnie kompresji audio. Gra też ma 200+ efektów dźwiękowych, więc to wszystko pewnie się kumuluje na taką wielkość.
  22. Zastanawia mnie rozmiar gry, tam jest zdekompresowana muzyka, że aż tyle?
  23. Jak dla mnie wygląda to na shadowing zmiennych, puszczasz wartość `-1` w argumentach: function play_sound(snd, gain = 1, pitch = 1, sound_player = -1) <--- tutaj Definiujesz to jako zmienną lokalną funkcji (nie instancji), a potem zamieniasz jej wartość tutaj: sound_player = audio_play_sound Wygląda mi to na zwyczajny shadowing, a ta zmienna ma scope funkcji a nie instancji w której ta funkcja jest odtwarzana, zwyczajnie `sound_player` zawsze jest `-1` (zakładając, że podstawiasz do niej wartość -1 z innej zmiennej podczas jej wywołania, bądź pozostawiasz argument "pusty", który jest zastępowany wartością domyślną, `-1`). Pewnie szukasz czegoś w rodzaju: variable_instance_set (yoyogames.com) variable_instance_get (yoyogames.com) Ewentualnie po prostu zwracaj ID (wartość po wywołaniu audio_play_sound) odtworzonego dżwięku zamiast posiłkować się taką "adresacją".
  24. Pograłem chwilę i wrzuciłem dolca Jedyne co przychodzi mi do głowy to to że można by delikatnie poprawić portrety postaci w dialogach i zmniejszyć podstawową prędkość statków, poza tym super. Bardzo solidnie wykonany projekt, fajny dynamiczny gameplay. A i muzyka mi się też bardzo podobała, ogólnie polecam
  25. Teraz działa spoko 👌 Fajna i dość rozbudowana gierka, chowanie się za przeszkodami, różne rodzaje broni, może AI wymaga trochę dopracowania, bo jak raz zaalarmujesz przeciwnika to ten leci bezpośrednio do nas a nie ostatniej znanej pozycji, byłoby to nawet ciekawe do ściągania i flankowania wrogów.
  26. Tytuł: Proxy Quest Gatunek: Roguelike Bullet-Hell shooter Opis: Mój osobisty 'passion project', który powstał w większych, lub mniejszych bólach, przez ostatnie 3-4 lata. Celem Twojego zadania jest ochronienie planety, przed kosmiczną flotą piratów X-Blade, poprzez wyruszenie w podróż mającą na celu przejęcie tajemniczej broni od Twoich wrogów. Gra jest w dosyć oczywisty sposób inspirowana przez wszystkie nowoczesne 'roguelike-i', głównie EtG, Nuclear Throne, Monolith czy Steredenn. Głównie stawna ona na dynamikę rozgrywki - udany 'run' trwa około 20-30 minut. Gra posiada 20 bossów do pokonania, prawie 200 ulepszeń statku, 9 różnych statków do gry, 1000+ różnych 'roomów', oraz masę dodatkowych wyzwań, zadań i sekretów. Dodatkowo jest również pełna obsługa pada, tabela high-score, obsługa 3 save'ów jednocześnie, konfigurację wyglądu kursora itp. Download: https://tonyx.itch.io/proxy-quest Rozmiar pliku: 300MB Autorzy: Ja - Tomasz Screeny:
  27. Nie bardzo rozumiem co to ma do rzeczy ze wskaźnikami audio_is_playing przyjmuje albo ID dźwięku, albo id instancji dźwięku, zwróconej przez audio_play_sound. W twoim (pierwszym) kodzie: snd => id assetu dźwięku sound_player => id instancji odtwarzania dźwięku Może chodzi Ci o efekt, który uzyskasz pisząc: if(!audio_is_playing(sound_player) and !audio_is_playing(snd)) Btw. domyślnie nie zalecam ustawiania wartości 1. Najlepiej "undefined".
  1. Pokaż więcej elementów aktywności
×
×
  • Dodaj nową pozycję...