Skocz do zawartości

Ranmus

Filar Społeczności
  • Postów

    3 205
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    4

Treść opublikowana przez Ranmus

  1. Pograłem z minutę i wyłączyłem. Szybko nużące, a poza tym jest błąd, jeżeli te liczby pod punktami wskazują liczbę zestrzelonych kul, bo na początku wybijam wszystkie a mi pokazuje, że nie mam 100% skuteczności czyli niektóre kule przelatują poza planszą.
  2. Ano nie będzie miał tego samego id. Ale jeśli obiekty w stylu goomba nie będą tworzone w czasie gry tylko rozlokujesz je w roomie to będą miały to samo id. Inaczej trzeba by było zrobić coś takiego, że wysyłasz komendę tworzenia goombasa i sam tworzysz jakiś unikalny numerek, który posłuży do identyfikacji na drugim kompie.
  3. To trzeba było pisać w D. :]
  4. A czemu to piszesz w C# a nie np. C++.
  5. Warto by było wysłać unikalne id obiektu, nieprawdaż? :) A potem klient sprawdza czy obiekt o danym id istnieje i jeżeli tak, to przypisuje mu pozycję. :) Nigdy nie robiłem gier sieciowych, więc dokładniej to nie powiem.
  6. 1) Ostrzeżenie dla Littlefish, następnym razem będzie czasowe zawieszenie. Jak komuś chcesz coś wytłumaczyć, to zrób to normalnie, bez chamskich docinek. Widziałeś bym ja kogoś tyrał, za to, że nie zna np. GM'a? 2) Rzeczywiście jest się o co kłócić, o przysłowiową marchewkę. :| A co do exe pod linuxem, to BeWuO akurat tutaj się nie zgodzę, ponieważ może przecież pod to rozszerzenie exe podmontować autostart Wine czego tutaj nikt nie wymienił, ale to jest i tak mało sensowne. ;) 3) Littlefish: Zwaliłeś z tym C#. Bo jeżeli dobrze pamiętam, to trzeba mieć bibliotekę .NET. Masz to zamiar skonwertować jakoś do programu nie wymagającego tego frameworka? Jak nie, to nie wróżę wielkiego sukcesu.
  7. Tymon: Oj rzeczywiście nie pomyślałem o tym aby zaokrąglić także pozycję drugiego końca odcinka, dzięki. :) Ale tak czy siak warto by było to Markowi Overmarsowi zakomunikować. edit: Jednak zaokrąglanie w funkcji collision_line to niezbyt wydajny pomysł. Wywaliłem także ceil - zaokrąglanie w górę przy wyliczaniu przekątnej sprita. W sumie niepotrzebne. Tym razem już zoptymalizowany skrypcik: var x1,y1,x2,y2,ob,dyst; dyst = maksdyst; x1 = round(x); y1 = round(y); x2 = 0; y2 = 0; while ( true ) { x2 = round(x1 + sin(degtorad( direction + 90 ))*dyst); y2 = round(y1 + cos(degtorad( direction + 90 ))*dyst); ob = collision_line(x1,y1,x2,y2,all,1,1); if ( ob ) { dyst = point_distance(x1,y1,ob.x,ob.y) - sqrt(sqr(ob.sprite_width)+sqr(ob.sprite_height)); while ( true ) { x2 = round(x1 + sin(degtorad( direction + 90 ))*dyst); y2 = round(y1 + cos(degtorad( direction + 90 ))*dyst); ob = collision_line(x1,y1,x2,y2,all,1,1); if ( ob ) { dyst -= 1; break; } else dyst += 1; } } else break; } Cekol: Dopisz w przykładzie skąd zaczerpnąłeś część przykładu, to wrzucę na gmclan. :)
  8. No i co z tego, że prostszy. Gracza nie będzie obchodziło jakie skrypty użyłeś, tylko czemu gra mu tak wolno chodzi. :) Proste rysowanie linii w twoim przykładzie pomiędzy ścianą a startową pozycją na moim komputerze daje wynik 140fps, a mój algorytm 900fps. :] edit: Obadałem dokładnie błąd GM'a i jednak to nie kwestia ułamkowych wartości x i y lecz niezbyt precyzyjnego działania funkcji collision_line, dlatego lepiej by np. części ściany nachodziły lekko na siebie, np. 1 piksel albo żeby miały większą maskę kolizji.
  9. Tak wygląda funkcja dokładnego wyznaczania odcinka między dwoma punktami gdzie nie ma obiektów: var x2,y2, ob, dyst; dyst = maksdyst; x2 = 0; y2 = 0; while ( true ) { x2 = x + sin(degtorad( direction + 90 ))*dyst; y2 = y + cos(degtorad( direction + 90 ))*dyst; ob = collision_line(round(x),round(y),round(x2),round(y2),all,1,1); if ( ob ) { dyst = point_distance(x,y,ob.x,ob.y) - ceil(sqrt(sqr(ob.sprite_width)+sqr(ob.sprite_height ))); while ( true ) { x2 = x + sin(degtorad( direction + 90 ))*dyst; y2 = y + cos(degtorad( direction + 90 ))*dyst; ob = collision_line(round(x),round(y),round(x2),round(y2),all,1,1); if ( ob ) { dyst -= 1; break; } else dyst += 1; } } else break; } //mamy juz x2 i y2 Ten algorytm różni się od tego co podał cekol tym, że nie jest sprawdzana kolizja co jeden piksel zaczynając od obiektu, lecz szukamy kolizji z linią o początku x,y i maksymalnym dystansie maksdyst. Jezeli jest jakis obiekt, to dystans jest skracany o wartosc gwarantujaca brak kolizji z tymze obiektem (za taka bezpieczna odleglosc przyjąłem odleglosc miedzy A(x,y) a B(x,y) obiektu kolidujacego pomniejszoną o długość przekatnej jego sprita). Nastepnie jezeli pomiedzy punktami A i B nie ma innych obiektow, to dodajemy do dystansu po jednym pikselku tak, aby uzyskac dokladna odleglosc promienia do styku obiektem. Dzieki temu sposobowi mozna znacznie przyspieszyc dzialanie skryptu lasera w pewnych momentach. Przy okazji odkrylem niestety blad GM'a. Otóż jeżeli mam pionową ścianę zbudowaną z kolejnych klocków, to jeżeli skierujemy promień lasera dokładnie w poziom i pomiędzy klockami ściany, to jeśli obiekt "wystrzeliwujący" promień lasera ma np. pozycję y zapisaną jako ułamek, np. 300.5, to laser może przejść przez obiekty. Dlatego też najlepiej w begin step dać x=round(x); i y=round(y);
  10. A czy to nie jest przyklad zrobiony na podstawie jakiegos zagranicznego? Bo nie ma opisow oraz pomieszanie uzycia polskiego i angielskiego slownictwa oraz skrypt z warunkami jest pomieszany z klockami z warunkami? Mów jak na spowiedzi. :) I laser sie robi troszke inaczej, dam zaraz przyklad i najwyzej zamieszcze oba zeby bylo do wyboru.
  11. A czemu aż tyle różnych obiektów? Zrób tylko jeden i nadawaj mu parametry zaraz potem, które będą pobierane z tablicy.
  12. Ranmus

    Blad na GMClan !!

    Ojojoj, lekko nie na temat Maximalu... ja się wypowiedziałem tylko na temat alternatywnych możliwości promocji gier, które stoją na bardzo wysokim poziomie czyli zahaczających lekko o sferę profesjonalizmu, a raczej półprofesjonalizmu. A ty dopasowałeś moją odpowiedź do sfery najpopularniejszej - amatorskości w dosadnym tego słowa znaczeniu, a przecież nie o nich mi chodził. To już jest całkiem inna bajka i w ogóle... Czy widziałeś bym jechał po kogoś produkcji, że nie jest jest super dobra? Albo że omuś zabraniam prezentowania swoich gier? Nie? To masz już kontrę na twoją odpowiedź. ;P Dobra, kończmy już tą dyskusję. Chodziło o to, że pierwszą Maenardila zrozumiałem tak, że lepiej jest sobie siedzieć na forum i stworzyć kółko własnej adoracji i COŚ robić (chodzi o produkcje a nie o pomoc), tak dokładnie nie wiadomo co, niż zwracać uwagę na takie osoby jak Borek itd., które rzadko postują, ale postują! I przecież Borek zrobił więcej gier niż większość osób na tym forum, dlatego też to by było zatraceniem sensu zajmowanie się np. tylko jałowym pomaganiem nie przynoszącym żadnych efektów. A dlaczego tak zrozumiałem? Bo jeśli porównuje się Borka czyli osobę niewyimaginowaną oraz jego twórczość, FAKTÓW, do "znam osoby, które nawet nie słyszały o istnieniu tego forum, a ich umiętności stoja na poziomie wyższym niż wszyscy gmclanowicze razem wzięci", "MITÓW" czyli wypowiedzi niczym nie popartych, to tu jest coś nie tak? Bo to nie jest właśnie ten sam tok rozumowania! Zamykam temat.
  13. Ranmus

    Blad na GMClan !!

    Powiedzmy tak, jeżeli jesteś bardzo dobry, to możesz całą tą otoczkę związaną z forami przeskoczyć, ewentualnie dać na jakimś przedpremierę. Jeżeli jesteś tylko dobry, to pomoc będzie niezbędna, ale... dobrymi nikt większy się nie interesuje. To nie jest tak. Jakby to ująć... bo ty jesteś świeży na tym forum i masz jeszcze taką nazbyt optymistyczną postawę co do tzw. bezinteresownej pomocy. A czy zadałeś sobie pytanie ile jesteś w stanie tej pomocy zaoferować i za jaką cenę (żadną)? Ja już po prostu ograniczam pomoc do takich tematów, gdzie jest to niezbędne i dane pytanie nie pojawia się co drugi dzień. :) Ja już tu siedzę 4 lata i jeszcze mi się nie znudziło poza jednym - pomocą ściśle określonej grupie osób, z których na pierwszy rzut oka przejawia postawę brać ile wlezie, a potem zapomnieć, bo znudziło się już nazajutrz robienie gier. Ja od razu poznaję takie osoby. :)
  14. Ranmus

    Głupawy problem...

    A ja powrócę ontopic. Co wy chcecie zgłaszać jak żadnego błędu nie ma? I dlaczego niby na windows98 też miało blokować plik? Czy ktoś czytał to co wcześniej napisałem? Nie? To jeszcze raz powtórzę. :-) Gdy otwierasz jakiś plik gm'em, to funkcja wywolujaca zwraca identyfikator otwarcia. Jest to wlasnie namiar na uchwyt. Taki uchwyt blokuje mozliwosc skasowania takiego pliku, poniewaz jest on aktualnie w uzyciu. Tak samo jest z windowsem. Wersja XP ma bardziej odpicowany eksplorer, który wyświetla thumbnaile i takie tam. A żeby wyswietlić np. thumbnail, to trzeba go odczytać plik, prawda? Poza tym jest chyba taki ficzer, że można przeglądać zawartość przy zaznaczaniu obiektu. I to jest wlasnie to! Gdy zaznaczasz plik, to on już wchodzi w korelacje z windowsem. Nie jak go wykasujesz, nie jak go uruchomisz, ale juz jak zaznaczasz! A po co? A różnie, np. otwarcie pliku z wyprzedzeniem i takie tam. Windows 98 to stary system i takich ficzersów nie posiada. Tam zaznaczanie nie powoduje jeszcze żadnej akcji na pliku. A to, że plik, który sobie tworzycie nie da się usunąć, to nie dlatego, że jest błąd, tylko dlatego, że nie zostało wywołanie poprawnego zamknięcia i uchwyty do niego wciąż istnieją. A windows nie jest jeszcze taki mądry żeby wywnioskować, że ten plik został naprawdę zamknięty przez użytkownika, bo takie były jego intencje czy też, że powinień działać. Błąd to by był, jakby memory leaka puszczał albo coś w tym stylu.
  15. Ranmus

    Blad na GMClan !!

    E tam, wcale nie piękne powiedzane, bo po prostu nie ma racji. Przecież to jest jakiś wyidealizowany stan rzeczy, którego nigdy nie było, nie ma i nie będzie. To było po uno. Po drugie tak naprawdę wolę jak Borek wyda demo jakiejś gry raz na rok, a nie sterta ludzi jakieś cieńkusze, i to z prostej przyczyny. Bo takie osoby po wydaniu swojej pierwszej czy drugiej gry, bardzo niskich lotów zresztą, już więcej się tutaj nie pojawią. I tak jest dokładnie od początku. Ot było minęło, cyrkulacja była jest i będzie. A perły pokroju Buziola i Borka zdarzają się naprawdę rzadko. Ostatnio pojawił się tylko taki nieoszlifowany diamencik - Propaganja. I to właśnie takie osoby promują GM'a, jakością swoich produkcji, a nie sterta cosiów w stylu "moja pierwsza gra", które przynoszą odwrotny efekt i politowanie ludzi. I po ostatnie Meanderil - masz bardzo złe podejście, bo oczekujesz od kogoś, że ma pomagać. A to się pytam z jakiej racji? To jest jakiś przymus? Prawda jest taka, że 95% pytań się ciągle powtarza i stoi na iście nooberskim poziome, a to bardzo niedobrze. Tworzy nam się powoli taka sytuacja, że forum zaczyna być traktowane tylko i wyłącznie jako polski żywy poradnik game makera. Manuala się nie chce otworzyć, a co dopiero opis funkcji przeczytać... A gdzie tu samozaparcie? Takim osobom powinniśmy powiedzieć NIE, ponieważ w ten sposób się niczego nie nauczą. Czy ja kiedyś zadałem tutaj jakieś pytanie o GM'a bo czegoś nie umiałem? Internet rozleniwia i zabija kreatywność, a forum nie temu ma służyć, by ktoś od razu zaraz leciał z pytaniem na forum, które sam jest w stanie rozwiązać, ale mu się nie chce bo tak jest wygodniej. Kiedy było jakieś ciekawe pytanie na temat algorytmiki, rozważań na ten temat albo coś w tym stylu? Nie przypominam sobie, jedynie podjąłem próbę sprawdzenia możliwości GM'a pod względem rozbudowanego AI, do czego mnie Cekol zainspirował. A tak to prawie tylko ciągle te "jak zmienić kursor", "jak zrobić by obiekt się patrzył w jakąś stronę". Przecież to już wiadome, że taka osoba nigdy nie zrobi dobrej gry, bo ma kłopoty z kreatywnym myśleniem. Poza tym piszesz tak jakby Borek niczego nie wydał. Grałeś chociaż w jego gry?
  16. Ranmus

    Blad na GMClan !!

    Tak jest, łącznie postów wyświetla licznik, natomiast jeśli chodzi o aktywność, to tam jest liczba rzeczywistych odpowiedzi a nie stan licznika. Trochę to głupio wygląda.
  17. Ja bym się nie bawił w oskryptowanie tego w GML tylko podpiął gotowy silnik fizyczny. GMODE, Tokamak itp. Jakieś jeszcze obsługuje GM?
  18. Ranmus

    Głupawy problem...

    Dlatego, bo TC nie obsluguje thumbnaili i innych bajerow. ;P
  19. Ranmus

    Głupawy problem...

    Moho: tu chodzi o to, że przy uruchamianiu lub zwykłym zaznaczaniu takiego pliku, tworzy się "handle" - uchwyt między explorer.exe a twoim plikiem. Tylko, że w tym wypadku one nie są normalnie zamykane, więc albo ubijesz je jakimś programem na to pozwalającym, albo zresetujesz kompa. I potem usuwasz tak jak pisałem czyli "Uruchom" z menu i komenda del, a nie eksplorerem, bo on utworzy nowy uchwyt przy zaznaczaniu i bedziesz musial znowu resetowac kompa. :]
  20. Ranmus

    Głupawy problem...

    Też zrobiłem ten teścik i rzeczywiście. :] Jak to usunąć? Ja akurat nie używam wbudowanego menedżera zadań windows tylko process explorer. Tam mam opcję szukania uchwytu. Wpisuję nazwę pliku i killuje wszystkie wyniki. Następnie nie zaznaczam tego pliku do usunięcia, bo przy zaznaczaniu tworzy się nowy uchwyt, tylko w menu windows daję "uruchom..." a potem "del sciezkadopliku/plik.exe" :-)
  21. Ranmus

    Bouncy 2

    A ja opierdziele. Rozumiem, że komercyjne gry mają instalacje i jest to spowodowane często zabezpieczeniami itp. Ale kurna po co amatorskiej grze takie coś? Nie mam zamiaru instalować tego, przypomniały mi się czasy TGF gdzie każdy dorabiał ten wbudowany klikowy instalator. A fu! Daj wersję bez instalacji jako alternatywę.
  22. Ranmus

    Robimy FAQ

    LionX: To jest za długie na FAQ. Zrób z tego przykład a my zamieścimy.
  23. Bardzo dziwne, myślałem, że mój przykład tego typu jest na gmclan, jednak go nie ma. Zaraz wrzucę. Edit: Gotowe. Przykład nazywa się "Kombosy" i był coprawda robiony jeszcze za czasów GM5, ale działa jeszcze w GM6, sprawdziłem. https://gmclan.org/index.php?plik=77
  24. Ranmus

    Robimy FAQ

    Jak postawić serwer Tibii? Odp: www.otserv.pl :] Ciekawe ile osób by skorzystało z tej rady. :>
  25. Musisz pobrać liczbę klatek sprite'a do jakiejś zmiennej. Dalej tworzymy surface o wielkości sprite'a, następnie tworzymy pętlę for gdzie warunkiem ograniczającym będzie wcześniej pobrana liczba klatek, no i co tyknięcie wyrysowujemy sprite'a na tym surface i zapisujemy surface do pliku o nazwie numeru wyrysowanej klatki. var lk,sur,i,sw,sh,sr; sw = sprite_get_width(argument0); sh = sprite_get_height(argument0); sr = 360/argument1; sur = surface_create(sw,sh); surface_set_target(sur); draw_rectangle(0,0,sw,sh,0); for ( i=0; i <= argument1; i += 1 ) { draw_sprite_ext(argument0,0,sw/2,sh/2,1,1,i*sr,c_white,1); surface_save(sur,string(i)+'.bmp'); draw_rectangle(0,0,sw,sh,0); } surface_reset_target(); surface_free(sur); Ten skrypt należy wywołać w evencie draw tylko jeden raz! Argument0 to nazwa sprita, argument1 to liczba klatek animacji. Pętla zapisuje pełny obrót (360 stopni). Origin, ucinannie krawędzi itd, to już sam sobie porobisz.
×
×
  • Dodaj nową pozycję...