Skocz do zawartości

Danielus

Użytkownicy
  • Postów

    391
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Danielus

  1. Tytuł: Mental Asylum Gatunek: Logiczna Opis: Moja pierwsza opublikowana na play store gra. Wymęczone przez ostatnie pół roku we współpracy z osobą z Indii. Zasady są bardzo proste - Mamy siatkę 5x5 i musimy dojść do celu. Rozgrywkę urozmaicą nam różne rodzaje płytek. Jest plan by ulepszyć grafikę i zrobić więcej poziomów bo teraz to wygląda trochę surowo. AD FREE póki co, więc nic nie bedzie przeszkadzać podczas tego niesamowitego doświadczenia :f Zapraszam do niekoniecznie konstruktywnej krytyki. UPDATE 2.0 - Usunięty pasek ładowania - teraz poziomy ładują się natychmiast - Duży upgrade graficzny - Dodano "Stars rating" - teraz oprócz prostego przejścia poziomu można także powalczyć o jak najmniejszą ilość ruchów - Nieco lepsza instrukcja - Nowe poziomy - Now specjalne płytki Download: Rozmiar pliku: ~20 MB Autorzy: Programowanie: Ja(Danielus/Arrekin) Grafika: Praveen Kumar + coś tam z Internetów Level Design: Praveen Kumar Screeny:
  2. popatrz czy nie ma czegoś takiego jak image_angle. Np image_angle = 45 I przejdź na studio zamiast się męczyć ze starociem.
  3. Do czego chcesz się tam logować? Obok logowania masz "Submit a request"
  4. Najwyższa pora zacząć korzystać z jakiegoś systemu kontroli wersji. Polecam bitbucket + sourcetree. Co do pytania to nie sądzę by były robione kopie tak same z siebie.
  5. Danielus

    funkcja undeclared

    Trochę stary temat, ale myślę że się przyda czytającym w przyszłości: double plus(int x) { double xx; bool znak; while (znak==false) { deklarujesz zmienne bez inicjalizacji. To znaczy że w tym momencie są tam śmieci. Następnie masz pętle while sprawdzającą czy znak==false. Skoro jednak tam jest śmieć to może się zdarzyć że zmienna od razu będzie ustawiona na true i while się nigdy nie wykona. Jeśli tak się stanie to przejdzie od razu do return xx; Ale w xx tez jest śmieć więc zwrócisz śmieciowa wartość, która może być ujemna chociaż w pętli masz warunki mające wykluczyć taką możliwość. W ten sposób otrzymujesz bugi które ciężko znaleźć bo raz się reprodukują a raz nie. W nieprzyjemnych przypadkach u ciebie zawsze będzie działać a przestanie np dopiero po przeniesieniu na inny komputer.
  6. Jako workaround możesz podzielić plik na 2. Najpierw odtwarzasz ten do którego już nie chcesz wracać i potem włączasz ten który już normalnie w całości się loopuje
  7. https://docs.yoyogames.com/source/dadiospic...engthdir_x.html https://docs.yoyogames.com/source/dadiospic...engthdir_y.html
  8. @Jakim ale czas w sumie może być wymiarem geometrycznym, tylko my potrafimy poruszać się po nim tylko w jedną stronę. Wyobraź sobie to po prostu jako kolejna składowa. Istnieje przestrzeń w której istnieją kolejne klatki naszego świata. Osobiście nie uważam "czasu" za wymiar, ale jak najbardziej taka interpretacja może mieć sens. czas może niczym nie różnić się od pozostałych wymiarów oprócz tego że nie potrafimy się po nim świadomie poruszać. Dla uproszczenia można to sobie wyobrazić na niższym wymiarze. Masz dwuwymiarowy świat w którym masz kwadrat i koło, one się poruszają i w każdym stepie nakładasz kolejne wersje świata jeden na drugi. W taki sposób otrzymasz pokręcony prostopadłościan i pokręcony walec( zaleznie od ruchu koła i kwadratu ). Mamy tylko trzy wymiary i trzeci w tym przypadku jest czasem. I jest on nadal poprawnym wymiarem geometrycznym, po prostu świat 2d nie ma do niego dostępu, jest uwięziony w danej klatce(przekroju).
  9. dlaczego zakładasz że 4D to cztery wymiary geometryczne? Jest taka nomenklatura? Dla mnie to D zawsze oznaczało wymiary bez podawania ich "typu".
  10. zgadza się to jest najlepsza interpretacja. Dlatego czas czasem podaje się jako czwarty wymiar jako zbiór takich 3 wymiarowych stanów świata( tak jak sześcian składa się z wielu ułożonych w stosik kwadratów, tak czas to ułożone w stoik stany naszego świata ). Oczywiście mówienie o tym jako czwarty wymiar to trochę nadużycie bo czas to zawsze ilość wymiarów przestrzennych( może innych też? ) +1 Jedyne czego jesteśmy pewni to trzy wymiary przestrzenne. Cała reszta to kwestia interpetacji matematycznej.
  11. wygląda na to że gm ma lerpa wbudowanego: https://docs.yoyogames.com/source/dadiospic...tions/lerp.html ogólnie polega to na tym że zwraca Ci pozycje która jest pomiędzy podanymi punktami( w % ) np. lerp(0, 100, 0.5) powinno Ci dać 50 bo to punkt w połowie między 0 a 100 Tylko musisz użyć tego osobno dla współrzędnej x i osobno dla y
  12. możesz w obiekcie scieżki przechowywac punkty krańcowe. Gdy jest kolizja z obiektem który ma się poruszać po ścieżce po prostu obliczasz następny krok względem obecnej pozycji za pomocą np interpolacji liniowej <matma on>. Wymaga to oczywiście prostych ścieżek, bo przy krzywych zaczyna się kombinowanie.
  13. Przeanalizuj kod który wkleiłeś. GML if (keyboard_check_pressed(vk_space)) and (global.tura2r == 1) { global.tura1r = 1; global.tura2r = 0; } czy ten if kiedykolwiek się wykona? przecież parę linijek wyżej masz ustawione że jak global.tura2r = 1 to ustaw ją na 0. więc jaki jest sens pytac potem czy jest równa 1 skoro nie może być. z global.tura1r jest to samo. Wklej jeszcze raz kod który ty uważasz że powinien działać, a nie działa. w komentarzach do KAŻDEJ linijki opisz co sądzisz że się dzieje dzięki czemu będziemy w stanie znaleźć gdzie popełniasz logiczne błędy. To co tutaj mamy to podstawowe rzeczy w programowaniu więc ważne jest żebyś dokładnie rozumiał co się dzieje. Warto trochę sie pomęczyć żeby w przyszłości mieć spokój.
  14. Kod Sheriff99 będzie działał ale ma być tylko w jednym obiekcie. Zrób sobie jakiś kontroler który tym steruje a nie że każdy obiekt sobie sam zmienia
  15. @Ignatus jak dla mnie to twoja wypowiedź to zupełny brak szacunku dla autora. Nawet nie przeczytałeś treści jego posta. Co do tematu: Weź to na logikę, chcesz wrócić do starych punktów więc musisz miec stare gdzieś zapisane. np kiedy uda mu się przejść poziom zapamiętaj ile ma punktów GML global.stare_punkty = aktualne_punkty a kiedy gracz umrze to wróc do starych GML aktualne_punkty = global.stare_punkty Oczywiście jak dodajesz mu punkty w trakcie grania to dodawaj do aktualne_punkty
  16. Ale jeżeli umiesz C++ to GML'a będziesz nienawidził. Ogólnie wyznaję prostą zasadę - Jeżeli jeszcze nie umiesz programować albo znasz głównie języki skryptowe to możesz spokojnie brać się za GM'a Jeżeli natomiast znasz się już na programowaniu to bierz silniki, które pozwalają pisać w normalnych językach.
  17. Chociaż to jest ewidentny brak szacunku wobec użytkowników, bo postawić osobny serwer specjalnie pod aktywacje to nie jest dużo roboty. A brak odpalenia już aktywowanego produktu z pewnością podpada pod niewywiązanie się z umowy jaką jest dostarczenie działającej funkcjonalności. No ale cóż, niektóre firmy już tak mają, a nie sądze by ktoś się chciał o takie coś procesować : f
  18. Ale zdajesz sobie sprawę że to jest wolniejsze niż używanie po prostu intów? Jeżeli nie masz specjalistycznego zapotrzebowania to lepiej zostawić to kompilatorowi by sobie dopasował pamięć jak mu lepiej, a nie samemu definiować po ile bajtów maja liczby i odkąd je wczytywać. To ma zwłaszcza znaczenie przy przesyłaniu danych do SSE gdzie ładowanie zmiennych nie wyrównanych do konkretnych wartości znacząco spowalnia proces(i ogólnie wiele komponentów wymaga by adres był podzielny przez konkretną liczbę i jeśli nie jest, to kompilator musi to przepisać na adres spełniający warunki). Tak więc jak potrzeba do konkretnych rzeczy to ok. np do trzymania zserializowanych obiektów o różnej ilości bajtów, ale to trzymania zwykłych liczb jest to zupełnie nieopłacalne.
  19. właściwie dlaczego użyłes tablicy charowej by potem castować na inty? Czym twoje rozwiązanie różni się od używania zwykłej tablicy intów?
  20. niezbyt dobry pomysł. Jak system na którym to puścisz będzie miał inny rozmiar inta niż sobie założyłeś to dostaniesz śmieci.
  21. @ediepl Pytasz jaki sposób nie działa liniowo i podajesz mapy, które działają logarytmicznie. sprytne : f
  22. Jak już wklejasz kod to wkleiłbyś cały kontekst. Wywołujesz 2 metody z myFunctionsClass i ich nie pokazujesz. Jeśli nie masz nic udziwnionego z dodatkowymi wątkami to Aplication.Exit() powinno Ci zamknąć aplikację bez problemu. Spróbuj zamiast zamykać aplikacje z myFunctionsClass zwrócić nulla albo rzucić wyjątek i odebrać to w BriefingForm() i wtedy zamknąć aplikację.
  23. Nie ma czegoś takiego że wszystko się tyczy "klasy". Wszystko się tyczy tego do czego się odwołasz. C# jest takim językim że jak użyjesz po prostu zmiennych to będą one się tyczyć zmiennych klasowych. Chcesz inne zmienne? Odwołaj się do nich lub przekaż je jako argumenty( ale wszystko jest klasą, nie ma wolnych zmiennych. Zawsze natomiast można zrobić klasę statyczną która będzie imitować zmienne globalne ). Nie ma żadnego doklejania bo można to uzyskać innymi metodami, a doklejanie kodu gdziekolwiek ręcznie jest sprzeczne ze zdrowym rozsądkiem( o takie rzeczy dba kompliator by wszystko poskładać, nie programista ) Opisz mi co chcesz osiągnąć to powiem Ci jak to zrobić. Najelpiej jakiś przypadek użycia / historyjka i z czym masz problem, bo na ten moment nie rozumiem na czym tak naprawdę utkąłeś.
  24. Oczywiście że da się przerobić gotową grę na multiplayer. Niestety trzeba być już znacznie bardziej doświadczonym i od początku umieć budować kod tak by potem dało się go przerobić na multi( Choć mam tu oczywiście na myśli tak naprawdę sklonowanie gry w grze i budowanie multi w opraciu o to co już zakodziłeś tylko w logice multi ). W takim przypadku GM jest jednak złym wyborem i w tym programie nie wyobrażam sobie innego podejścia jak od razu pisać pod multi. Tak naprawdę napisanie bardzo prostego RTSa w wersji z multi może być w twoim zasięgu już teraz. Musisz jednak wszystko ograniczyć do minimum i potraktować to jako naukę jednocześnie multi i podejścia do gier rts. Gwarantuję Ci że nawet gdy będziesz zaawansowany to przy bardziej skomplikowanych projektach które nie są bardzo dokładnie rozplanowane czeka Cie wielokortne kasowanie projektów i przepisywanie ich od nowa. Takie życie : f
×
×
  • Dodaj nową pozycję...