Skocz do zawartości

Threef

Moderatorzy
  • Postów

    2 911
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    14

Treść opublikowana przez Threef

  1. Bardzo proste. Otwórz swój sprite i znajdź przycisk "Modify Mask". Zaznacz "Manual" i albo narysuj ją obok na sprite, albo wpisz odpowiednie numerki. Ustawiasz tu tak punk kolizji. Nie chcesz aby kolidowała góra kaktusa a sama część przy ziemi. To samo zrób dla postaci i innych obiektów. ;)
  2. Threef

    Animacja

    O! Właśnie jeszcze jedna ważna sprawa. Matematyka! Zamierzasz nakręcić odcinek który ma 10 minut. Czyli 600 sekund. Na sekundę animacji potrzebujesz w zależności 24, 30 albo 60 FPS. Tak więc przeliczając 600*24=14400 albo 600*30=18000. Załóżmy że nie będzie to 10 minut, ale wystarczy Ci informacja że musisz narysować ponad 12 tysięcy klatek animacji. Tak tworzy się animacje odręcznie jak w starych filmach Disneya. Arek używając GM zaoszczędzał tylko na tym że nie animował każdej klatki a dla jakiejś postaci mógł zaanimować 10 klatek które wyświetlały się przez kilka sekund. Szukaj programu jakiegoś.
  3. Threef

    Animacja

    Tak. Arek kręcił filmy w GM, ale nigdy by nie nazwał tego łatwą robotą. Z tego co pamiętam jak rozmawialiśmy to każda scena była osobnym projektem, do którego rysował tła i wszystkie animacje ręcznie w PS a potem to wszystko wsadzał do GMa i nagrywał z okna. To nie ułatwia za dużo. I lepiej zapomnij o tym. Na 100% są lepsze rozwiązania.
  4. Już 3 osoby mi powiedziały żebym to wydał na mobilki. Chyba będę musiał. Oczywiście przerobię żeby nie było wszystko w draw event. :D
  5. Wyzwanie było fajne. I generowanie wszystkich zasobów z kodu jest maga interesujące. Robienie wszystkiego w jednym evencie też jest mega, ale jak już zwróciłem uwagę w temacie OSG, ograniczenie w użyciu zmiennych nie ma sensu bo niesamowicie łatwo to obejść. Sposoby były dwa: - Mój czyli użycie jakiejś struktury i sprawdzanie czy ona istnieje pod id=0. - Sprawdzanie czy plik na dysku istnieje.
  6. Używałem buforów dotąd tylko 2 razy i nawet nie wiedziałem że dodali tę funkcję dopiero teraz. W ogóle teraz musiałem wysłać poprawki na Jam z powodu właśnie tej funkcji bo projekty są kompilowane na starszej wersji. :D Ale jak zobaczycie w kodzie jak jest użyte buffer_exists() to się uśmiechniecie.
  7. BXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXX XXXXXXXX XXXXX XXX XXXXX XXXXXXXXXXX X X X X X XX X XX X X X XXXXX XX XXX XX XXX X XXX XXXXX XX X X XX X XX XX X X XXXX X XXX X XXX X XXX XXXX X X XXXXXX X X X X X X XXXX XXX X XXX X XXX XXXX X X X X X X X X XXXXX XXX X XXX X XXX XXXXX X X X X X X X X X X X XXXXXX XXX X XXX X XXX XXXXXX X X X X X X X X X X X XXXXXXX XXX X XXX X XXX XXXXXXX X XXXXXX X X X X X X X X XXXXXX XXX X XXX X XXX XXXXXX X XXXXXX X X X X X X X X XXXXXX XXX X XXX X XXX XXXXXX X X X X X X X X X XX X XXXXXX XXX X XXX X XXX XXXXXX X X X X X X XXX X XXXXX XXX X XXX X XXX XXXXX X X X XX X XX XX XXXX X XXXX XXX X XXX X XXX XXXX X X X XXX X XXX XX XXX X X XXXX XXX X XXX X XXX X XXXX XXXXXX XXXXXX XXXXXXXX XXXX X XXXX X X XX XXXXX XXX XX XXX XX XXX X XX XXXXX XXXXXX XXXXXX XXXXXXX XXX X XXX X X XXXXXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXXXXXX XXXXXXXXXXX X X X X X XX X X X X X XX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXX Gatunek: Zręcznościówka Opis: Klon Flappy Bird oczywiście z kilkoma zmianami. Za każdym razem gdy zginiemy nasza śmierć nie pójdzie na darmo. Przeszkoda w jaką trafiliśmy zniknie, a od tego momentu nasz duch będzie nam wskazywać drogę. Im więcej gramy tym łatwiejsza się robi gra. Ale cały progres jest zerowany codziennie o północy wraz z nowym seed i nową mapą. Gra została wykonana na Game Jam o nazwie One Script Games, który narzucał dość ciekawe zasady: Gra musiała być cała w jednym skrypcie który będzie odpalony w Draw Event pustego obiektu. Nie można było używać zmiennych i wszystkie assety musiały być wygenerowane w kodzie. Załączony jest cały kod oryginalnej wersji. DOWNLOAD ANDROID | PC Albo zobacz źródła! Autorzy: Oryginalny pomysł: Dong Nguyen Wykonanie: Damian 'Threef' Komorowski Screeny:
  8. Który nic by nie dał bo aby cokolwiek skompilować musiałby dostać od YYG moduł PS, a YYG rozdaje go tylko zweryfikowanym developerom Sony. A skoro byłby zweryfikowanym developerem Sony to miałby dostęp do Dev-kita.
  9. Threef

    Galeria Grafik

    Gra gdzie wszystko wliczając grafikę, czcionki i dźwięki jest generowane z kodu. 3 dni roboty.
  10. Nie da się kupić GM8 ani GM8.1. Nawet jak się kupiło to już nie można pobrać instalatora. A nawet jak się ma swój instalator to nie można już aktywować klucza.
  11. No bo nie będzie reagować bo nie po to został GM stworzony. Jedyna twoja szansa to szukać jakiegoś dll.
  12. Threef

    PHP vs Java

    Ups. Widzę że nie doprecyzowałem. Chodziło mi nie o miesięczne wynagrodzenie. A jednorazowe zlecenie dla startupu. ;) I nie dla seniorów a właśnie dla newbie.
  13. Threef

    PHP vs Java

    O Javie się nie wypowiem bo nie mam doświadczenia ale co nieco wiem o PHP: Jeżeli chcesz sobie dorobić na PHP to spóźniłeś się o 10 lat. Dalej można znaleźć kogoś szukającego odpłatnej pomocy z PHP ale to są propozycje od amatorów i nie ma takich dużo. Zdarza się dalej że ktoś próbuje rozbudować istniejące rozwiązania. Na przykład moduły do sklepów Magento albo PrestaShop. I tu da się zarobić ale musisz znać silnik sklepu. Więc poświęcić z 2-3 miesiące na jego poznanie. Aktualne propozycje dla programistów web szukających zleceń to startupy. Ale tu nie ma mowy o samym PHP/SQL, zaraz wymagane są JS, AngularJS, Node.js albo inne. Tylko że tu od razu można mówić o zarobkach w 10k-30k.
  14. draw_background_tiled() powinno zadziałać.
  15. Threef

    Tweaki

    Hmm... Zmienianie metody kompresji grafik PNG które masz w projekcie nie ma najmniejszej szansy pomóc zmniejszyć rozmiar plików. O tym raczej wiesz, ale wytłumaczę innym bo ty tego nie zrobiłeś. Przy tworzeniu pliku wyjściowego gry GM:S tworzy w asset cache atlasy (texture pages). Silnik korzysta z atlasów w grze i to je trzeba by skompresować. Skompresowanie grafik przed tym jak GM:S umieści je na atlasie nie ma sensu, bo GM:S użyje potem innych argumentów dla kompresji. I nie pamiętam już ale jest to możliwe chyba tylko dla HTML5 bo po kompilacji dostajemy zip w którym assety są w środku. Rozumiem że zależy ci na optymalizacji rozmiaru gry? Nie na wydajności? Wśród innych pomysłów jest to że możesz dołożyć grafiki już po uruchomieniu gry poprzez sprite_add(). Ten jako argument pliku przyjmuje także URL. Dzięki temu możesz pobrać zasoby graficzne po tym jak już gra się odpali.
  16. Rozumiem że reinstalowałeś dziś? W takim razie musisz spróbować innym razem. Sytuacja wygląda tak że GM:S przy uruchomieniu łączy się serwerami YYG i sprawdza twoje licencje, jeżeli jakiejś brakuje a masz ją podłączoną do konta to będzie próbować ją pobrać wraz z potrzebnymi plikami. I tu jest teraz problem bo serwery YYG są teraz obciążone z powodu Humble Bundle.
  17. Wibracje będą działać tylko i wyłącznie na padach polegających na XInput dll czyli prawdopodobnie x360, X1 i PS4.
  18. Ach zapomniałem dać linku do wersji z LD: http://ludumdare.com/compo/ludum-dare-36/?...w&uid=15219 Ale już się powoli rozwija kolejny side project. Ignatus jest na sztywno skryptowane ale staram się aby było jak najwięcej zmiennych w równaniu. Kilka przykładów: GML if(who[?"job"]=jobs.free) { if((jobs_count[|jobs.gatherer]<=4 || (food_needed>jobs_count[|jobs.gatherer]*4+jobs_count[|jobs.fisher]*5+jobs_count[|jobs.hunter]*10 && food<ds_list_size(settlers)*2)) && who[?"age"]>=10 && (who[?"sex"]=FEMALE || (female_jobs_count[|jobs.free]=0 || irandom(100)<10))) { who[?"job"]=jobs.gatherer jobs_count[|who[?"job"]]++ log_add(who[?"name"]+who[?"title"]+" is now a gatherer.",priority.low,logtype.job) } } GML if(a[?"type"]=alert.most_beautiful) { var who=a[?"who"]; var t; if(who[?"title"]="") { if(who[?"sex"]=FEMALE){who[?"title"]=" the Beautiful";t="beautiful woman"} else {who[?"title"]=" the Handsome";t="handsome man"} log_add("From now on everyone will know that "+who[?"name"]+" is the most "+t+" in village!",priority.low,logtype.event) who[?"stat happines"]*=1.05 who[?"stat happines"]=clamp(who[?"stat happines"],0,1) } } Poza tym to klon Dwarf Fortress w które dalej nie umiem grać. :D A ten plik którym chciałbym się pochwalić to plik save. Chyba wrzucę go wam do zobaczenia. Edit: A macie i sobie zobaczcie jak przechowuję dane. Usunąłem tylko kilka tysięcy wpisów w "river". http://pastebin.com/7g2n5HBk
  19. Chciałem się pochwalić co robię ale interesująca rzecz zajmuje ponad 4000 linii tekstu. :unsure: Na LudumDare stałem się bogiem. Stworzyłem (kolejny raz) własny proceduralnie generowany świat, a potem stworzyłem ludzi którzy próbują tam żyć. I teraz bawię się w jak najbardziej skomplikowane AI. Więc ludziki sobie żyją, zbierają jagódki, chodzą łowić ryby, polują w lesie i uprawiają sex. Jest sporo losowości praktycznie gracz nie ma na nic wpływu. Na razie. Mój cel to sprawić że ktoś w wiosce postanowi iść zwiedzać świat. Odkryje coś ciekawego jak ogromne drzewo albo dziwny kamień. Wróci do wioski powiedzieć o tym innym. Ktoś kto ma dużą wyobraźnię, trochę odwagi oraz dużą charyzmę pójdzie tam po usłyszeniu o tym i uzna że to bożek. Większość ludzi zacznie w to wierzyć do momentu gdy będzie się działo w wiosce źle (Brak deszczu? Brak zwierzyny? Choroba?). Wtedy dojdzie w wiosce do podziałów i zaczną się spory. Jeżeli zobaczę że ktoś kogoś zabije za przekonania religijne to będę usatysfakcjonowany.
  20. No właśnie to jest ta głupia sytuacja. Nie da się napisać gry a potem przerobić ją na multiplayer. Ale też nie da się napisać gry multiplayer jeżeli wcześniej się nie napisało takiej gry.
  21. Tylko tu oto chodzi że do stworzenia multiplayera potrzebujesz mieć od samego początku przygotowany pełen szkielet gry. Nie możesz nagle w połowie projektu sobie wymyślić że jednostki będzie można ulepszać, albo że jednostki mogą się trasformować i z robić jedną dużą z kilku małych. Przy projektach multiplayer nie ma też łatania bugów. Wszystko musi być zrobione za pierwszym razem, albo napisane od nowa. I spokojnie, gdybyśmy chcieli cię zdemotywować to od razu powiedzielibyśmy ci że to jest niemożliwe do wykonania. Bo nie masz fizycznej możliwości teraz usiąść do tego projektu i za x lat go oddać. Nie ważne jak uparty będziesz to będziesz musiał go zaczynać od nowa poprawiając wszystko od nowa na podstawie tego co się przed chwilą nauczyłeś. Jeżeli chcesz to zacznij od prostego design documentu w którym opisz najważniejsze zasady gier RTS. Nie twojej gry, ale jakiejś na której chcesz się wzorować. Jak buduje się jednostki? Jak kontroluje się jednostki? Jaki jest cel gracza? etc. Jeżeli po odpowiedzi na jakiekolwiek pytanie pojawi się więcej pytań to też musisz na nie odpowiedzieć. I pisz tak długo aż nie będzie więcej pytań. Jeżeli dasz to koledze a on przeczyta że "aby poruszać jednostkami trzeba je zaznaczyć a następnie wybrać ich cel" a nie opiszesz nigdzie co znaczy "zaznaczanie jednostek" i co znaczy "cel" to znaczy że nie potrafisz tego jeszcze zrobić bo nawet nie pomyślałeś o takim elemencie. Tam wyżej w poprzednim poście napisałem To się tyczy prototypu, nie gry. Prostego połączenia dwóch graczy gdzie będzie kilka obiektów z własnym HP i które będzie można poruszać i niszczyć. Po pytaniach jakie zadałeś oceniam że aby ukończyć Multiplayer RTS potrzeba Ci ok 12 lat programowania po godzinach. Tak. To było demotywujace. Teraz udowodnij że się mylimy.
  22. Zacznij od samego RTS. To Ci wystarczy. Po 2 miesiącach skasuj to co zrobiłeś i spróbuj teraz zrobić multiplayer.
  23. No więc tak. Zacznę od podstaw: Nie da się najpierw napisać gry a potem dorobić do niej multiplayer. Ale w drugą stronę też to nie działa. Zadajesz naprawdę podstawowe pytania (o rozróżnianie jednostek, ilość obiektów) które świadczą o tym że gry RTS też nie robiłeś. Zakładam że masz jeszcze przed sobą 4 lata zanim będziesz mieć działający prototyp multiplayer gry RTS, oczywiście o ile po drodze się nie poddasz. Zacznij od obejrzenia całego tamtego tutorialu. I każdego innego jaki znajdziesz. Pomogą ci one zrozumieć w jaki sposób w ogóle zarządza się informacjami w grach multiplayer. A teraz do pytań. 1 i 3. Każda jednostka kusi pamiętać kto jest jej właścicielem. To wszystko. Wystarczy jedna zmienna. 2. Potrzebujesz serwera lobby. Są chyba dwa sposoby: Jeden to taki że gracze łączą się z jednym serwerem który zarządza komunikacją, ale wtedy serwer jest bardzo obciążony. Drugi to taki że gra łączy się z serwerem a serwer jedynie pamięta adresy IP ludzi grających. Wtedy można z tej listy wybrać adresy i połączyć gracza do innego gracza który hostuje. 4. Mi się udało płynnie zasymulować 12000 obiektów używając Pentium 4. Ale to były proste obiekty które tylko latały, rysowały się i sprawdzały kolizje. Jeżeli każdy z twoich obiektów ma wyliczać patchfinding, AI strzelania i inne obliczenia to możesz mieć problemy z nawet 300 obiektami. Wszystko zależy od optymalizacji, a to już odrębna dziedzina.
  24. Możesz sprawdzać czy dźwięk już gra. I możesz robić to na dwa sposoby. GML if(!audio_is_playing(sound01)) { audio_sound_play(sound01,0,0) } albo GML (create) s=-4 GML if(!audio_is_playing(s)) { s=audio_sound_play(sound01,0,0) } Różnica pomiędzy nimi jest taka że pierwszy sprawdza czy ten plik dźwiękowy jest odtwarzany. Drugi przykład zapisuje id dla dźwięku który teraz leci przez głośniki i sprawdza czy już się skończył odtwarzać. Różnica jest taka że drugi sposób może być odtwarzany przez wiele instance.
×
×
  • Dodaj nową pozycję...