Skocz do zawartości

LolikZabijaka

Użytkownicy
  • Postów

    1 180
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    6

Treść opublikowana przez LolikZabijaka

  1. Można w jakiś sposób wypróbować gmsa? Niekoniecznie go wykupując, bo nie wiem, czy ten silnik, który mam w ogóle pójdzie.
  2. Czyli to oznacza, że nic nie da się zrobić ?
  3. Znalazłem w pomocy zakładkę "Drawing Surface" - oto wpis: Note that there are no functions to copy part of the screen to a surface. (This is impossible due to possible format differences between the screen and the surfaces.) If this is required you must set a surface as render target and next draw the room. You can then use the surface copying routines to get parts of it. Note that you can also create sprites and backgrounds from surfaces. See the section on changing resources for more information. Some care must be taken when using these functions. In particular please notice the following: You should never change the drawing target while you are actually drawing on the screen, that is, never use it in drawing events. This will cause serious problems with the projection and viewport. Surfaces do not work correctly with 3D mode. You can use them while not in 3D mode (by calling d3d_end() before using them), but once you start 3D mode again the surfaces will be destroyed. For reasons of speed, the surface is maintained in videomemory only. As a result, you might loose the surface when e.g. the screen resolution changes or the screensaver pops up. Surfaces will not be saved when saving a game. Oraz wpis o titlesach: The following functions deal with layers of tiles, that is, collections of tiles at the same depth. tile_layer_hide(depth) Hides all tiles at the indicated depth layer. tile_layer_show(depth) Shows all tiles at the indicated depth layer. tile_layer_delete(depth) Deletes all tiles at the indicated depth layer. tile_layer_shift(depth,x,y) Shifts all tiles at the indicated depth layer over the vector x,y. Can be used to create scrolling layers of tiles. tile_layer_find(depth,x,y) Returns the id of the tile with the given depth at position (x,y). When no tile exists at the position -1 is returned. When multiple tiles with the given depth exist at the position the first one is returned. tile_layer_delete_at(depth,x,y) Deletes the tile with the given depth at position (x,y). When multiple tiles with the given depth exist at the position they are all deleted. tile_layer_depth(depth,newdepth) Changes the depth of all tiles at the indicated depth to the new depth. With this function you can move whole tile layers to a new depth.
  4. Sorki, mam mały remont na kwadracie, nie miałem jak odpisać. Sprawa wygląda tak: Każdy kawałek, krew itp jest osobnym obiektem, które ma zapisane w create np. losowy kierunek itp. Po drugie, programuję w GM8 (nie w 8.1 - bo jest jakiś niedorobiony) Wiem, że to prehistoryczny program, ale jakoś nie mam ochoty łożyć na GMSa, grami zajmuję się w charakterze hobby ^^ A co do kradnięcia pamięci, to wiele obiektów robi cienie, za pomocą draw, po drugie, same ciała, ze względu na zastosowany ragdoll mogą mulić(aczkolwiek same ciała chyba aż tak nie szkodzą) w każdym poziomie jest sporo titlesetów. Także jeszcze raz, co powinienem zrobić, niekoniecznie zmieniając efekty, które już zaimplementowałem. Pozdro @Edit Same ciała nie mulą, bardziej te wszystkie flaki, odłamki itp, podejrzewam, że solidy też mogą mieć swój wkład w to.
  5. Oparte na tamtym silniku Szkieletówki, za to przerobione na własne potrzeby Proszę :D Lewy myszy, robisz nowe ciało Enter - Reset
  6. Może, ale według mnie są potrzebne, bo przy takiej sytuacji FPS zaczyna spadać
  7. Próbowałem na różne sposoby i nadal się ów proceder powtarzał, poza tym z samej deaktywacji niewiele wynika, bo czasem się ostro odwala w samym polu widzenia (przy jakiejś ostrzejszej wymianie ognia wszystko fruwa) Uważam, że deaktywacja, tylko po części rozwiązuje problem, potrzebne też są surface.
  8. Mam swój własny, ale nie widać żadnego. Zamieniłem rozmiar rooma, na view, zrobił się jeszcze większy bajzel, nadal tnie, a przy okazji wszystko zniknęło. Draw if (!surface_exists(surf)) { surf = surface_create( x+view_xview, y+view_yview ); } surface_set_target(surf); draw_set_color( c_white ) draw_rectangle( 0 , 0 , x+view_xview , y+view_yview , 0 ) for( i = 0 ; i < instance_number( cialo_par ) ; i += 1 ) { ID = instance_find( cialo_par , i ) draw_sprite_ext( ID. sprite_index , 0 , ID.x , ID.y , ID.image_xscale , ID.image_yscale , ID.image_angle , -1 , 1 ) } surface_reset_target(); draw_surface(surf, x+view_xview[0] , y+view_yview[0]);
  9. No okej, obiekty wróciły, ale zniknął kursor za to, jakim cudem ? Taki kod w DRAW, nie dość, że kursora ni ma, to FPS spadł bardziej, niż wcześniej xd if (!surface_exists(surf)) { surf = surface_create( room_width , room_height ); } surface_set_target(surf); draw_set_color( c_white ) draw_rectangle( 0 , 0 , room_width , room_height , 0 ) for( i = 0 ; i < instance_number( cialo_par ) ; i += 1 ) { ID = instance_find( cialo_par , i ) draw_sprite_ext( ID. sprite_index , 0 , ID.x , ID.y , ID.image_xscale , ID.image_yscale , ID.image_angle , -1 , 1 ) } surface_reset_target(); draw_surface(surf,room_width , room_height);
  10. Hej, kolejne pytanie dotyczyć będzie optymalizacji, z racji tego, iż zacząłem bawić się w efekty cząsteczkowe, oraz, że w roomach znajduje się często dużo obiektów, zaczęły ostro spadać FPSy. Zauważyłem, że najwięcej zżerają ściany i podobne obiekty solid, oraz wszelkiego rodzaju pierdoły(kamyki, patyki, śmieci). Dezaktywacja się średnio spisuje, ponieważ mimo tego samego punktu wyłączania przeciwników i obiektów solid, po ponownej aktywacji wrogowie potrafią siedzieć w ścianach, albo w innych dziwnych miejscach, generalnie słabo. Postanowiłem spróbować z surface, które nie wiem, czy w ogóle w jakimkolwiek stopniu działa, ponieważ po jego włączeniu obiekty typu ściany i w sumie wszystkie objęte surfem stają się... cieniami, przez które można przeniknąć. Screen - bez surface Screen - z surface Kod surface wygląda następująco : Create: surface = surface_create( room_width , room_height ) surface_set_target( surface ) draw_set_color( c_white ) draw_rectangle( 0 , 0 , room_width , room_height , 0 ) for( i = 0 ; i < instance_number( cialo_par ) ; i += 1 ) { ID = instance_find( cialo_par , i ) draw_sprite_ext( ID. sprite_index , 0 , ID.x , ID.y , ID.image_xscale , ID.image_yscale , ID.image_angle , -1 , 1 ) } surface_reset_target() with( cialo_par ) instance_destroy() Draw: draw_set_blend_mode_ext( bm_dest_color , bm_zero ) draw_surface( surface , 0 , 0 ) draw_set_blend_mode( bm_normal ) "cialo_par" - To rodzina tych obiektów, które mają być optymalizowane. Dlaczego pojawia się taki durny efekt ?
  11. Rozwiązałem ten problem niezwykle trywialnie Wystarczyło dezaktywować oponenta, poza viewem i bajka jest
  12. Wybaczcie double-posta. Udało mi się stworzyć ów silnik Mam tylko jeszcze jedno małe pytanie. Jak ustawić losowy zakres wartości np. Prędkość (od -15 do 15), jak taki random zamknąć w kodzie ?
  13. Tu jest ów fragment kodu: if on_turret { if df < inaccuracy+turret_nearest.inaccuracy*2 && collision_line(x,y,x+lengthdir_x(turret_nearest.max_range,dir),y+lengthdir_y(turret_nearest.max_range,dir),enemy_nearest,prec_wall_collision,1) && !collision_line(x,y,x+lengthdir_x(turret_nearest.max_range,dir),y+lengthdir_y(turret_nearest.max_range,dir),ally,prec_wall_collision,1) { event_user(1) // shoot shooting = 1 } } else { if df < inaccuracy*2 && collision_line(x,y,x+lengthdir_x(max_range,dir),y+lengthdir_y(max_range,dir),enemy_nearest,prec_wall_collision,1) && !collision_line(x,y,x+lengthdir_x(max_range,dir),y+lengthdir_y(max_range,dir),ally,prec_wall_collision,1) { event_user(1) // shoot shooting = 1 } } Podmianka max_range, na te dane vx vw itp sprawiło, że oponent nie strzela wcale.
  14. Inaczej, zacząłem bawić się z Animacją szkieletową od Psyhixa, podczas ruchów, nadal rozłączają się kończyny :/ Oto kod z draw: Gdzie jest babol ? // lewe udo d3d_transform_set_identity() d3d_transform_add_rotation_z(kr_udo1) // pierw obracamy uklad wzgledem kierunku ramienia d3d_transform_add_translation(-6,16,0) // potem przesuwamy uklad o 14 pixeli wstecz aby znalesc sie tam gdzie ma konczyc sie ramie (kosc ramienia rowna 14 pixeli) d3d_transform_add_rotation_z(kr_tw) d3d_transform_add_translation(x,y,0) draw_sprite(s_udo,0,0,0) // lewa łyda d3d_transform_set_identity() d3d_transform_add_rotation_z(kr_lyda1) // obrot ukladu wzgledem kierunku reki d3d_transform_add_translation(0,0,0) // przesuniecie reki o 8 pixeli (dlugosc reki) d3d_transform_add_rotation_z(kr_udo1) d3d_transform_add_translation(-6,48,0) d3d_transform_add_rotation_z(kr_tw) d3d_transform_add_translation(x,y,0) draw_sprite(s_lyda,0,0,0) // tulow d3d_transform_set_identity() // resetujemy transformacje d3d_transform_add_rotation_z(kr_tw) // obracamy uklad wzgledem kierunku tulowia d3d_transform_add_translation(x,y,0) // przesuwamy uklad na pozycje obiektu draw_sprite(s_korp,0,0,0) // rysujemy przetransformowanego sprajta // nga
  15. No łapię, a co chodzi, a nie dałoby się tego jakoś zaimplementować w CREATE ?
  16. Udało mi się w miarę dobrze wyrysować nogę na korpusie, ale przy obracaniu obydwu części, noga gdzieś ucieka, wnika w korpus, oto kod ze step nogi: image_angle=direction x=o_korp.x+lengthdir_x(-6, -30) y=o_korp.y+lengthdir_y(32, -30)
  17. Szybki temat, nie wiem jak się za to zabrać: To jest zmienna, która odpowiada za to, że na tej długości pikseli wróg widzi i strzela do mnie: max_range = 600 - czyli w promieniu 600 pxl widzi i naparza. Chciałbym to zamienić, aby to 600 stało się zakresem viewa gracza, czyli krótko mówiąc, aby strzelał, tylko gdy go widzę na ekranie. Pozdro
  18. Nadal średnio to łapię Zróbmy inaczej, wrzucę grafikę poglądową korpusu jego mać. Żółty, to orgin. Teraz, czy posiłkować się trójkątem nr.1, czy nr.2 ? Jak to nie trzeba bawić się Pitagorasem, wybacz, ale nadal nie do końca wiem jak to robić:D Korpus jego mać
  19. Witajcie, zdaję sobie sprawę, iż temat był maglowany setki razy, mimo przetrzepania forum i wuja google, nie jestem w stanie uzyskać zadowalającego efektu. Przejdę do meritum: Próbuję stworzyć coś, w rodzaju prymitywnego ragdolla, w rzucie 2D (Top-Down). Sama mechanika zachowania ciała nie sprawia większej trudności, poza jedną sprawą: Jak wiadomo, aby uzyskać taki efekt, musiałem podzielić ciało na osiem segmentów(nie licząc korpusu). Efekt ten uzyskuję przy "instance_create" Tutaj pojawia się problem, ponieważ poszczególne segmenty "uciekają od siebie" przy zmianie kąta/kierunku, przykładowo, podczas obracania korpusu z już gotowymi "nogami" owe odnóża w czasie obrotu nie pozostają idealnie w punktach pierwotnego tworzenia. Wiem, iż w takim przyadku należy użyć funkcji lengthdir. Tutaj kilka pytań z mojej strony: 1. Wiem, że należy użyć twierdzenia pyta-golasa, aby obliczyć tę przeciwprostokątną, to pamiętam ze szkoły, ale czy orientacja sprite'a (poziom/pion) ma tu jakieś znaczenie? 2. Jeśli orgin korpusu jest centralny, to czy dane do twierdzenia wyliczać od orginu, czy od wielkości tekstury? 3. Największa bolączka - kąt - z matmy nigdy nie byłem orłem, mimo zdania matury na 50%, nie zmienia to faktu, że tego kąta za cholerę nie mogę wyliczyć, nie wiem jakie dane i w jakiej kolejności podstawić, prosiłbym o łopatologiczne wyjaśnienie mi tego zagadnienia, bez zbędnej matematycznej terminologii Będę wdzięczny, ponieważ wczoraj kilka godzin z tym wojowałem i wyszedł jeden wielki(TU WIADOMO CO) Oto grafika poglądowa korpusu: Korpus
  20. A dziękuję Ci bardzo, miło to słyszeć, mimo, iż screen pochodzi z poziomu w fazie rozwoju, który w tym momencie, według mnie wygląda słabo Tutaj mały bonus (bynajmniej nie BGC) Udało mi się zrobić na podstawie przykładu Psichixa prymitywnego ragdolla, co mocno urozmaica zabawę, tutaj screen z wersji testowej
  21. No na to wygląda Bo wiadomo, że jako twórca, potrafię się lepiej poruszać, znam mechaniki itp. A przyjdzie osobnik, który pierwszy raz to ogrywa i pada przy pierwszym przeciwniku Z drugiej strony udało mi się spełnić pewne pierwotne założenie, aby pilnować się, przy każdym kroku, wiadomo, protagonista jest jeden, przeciw całemu oddziałowi i w realnym świecie byłoby równie trudno się przez to przebić
  22. Również pochwalę się swoimi postępami, po małej przerwie, wróciłem do Dywersanta, silnik w zasadzie już gotów, pousuwałem drobne utrapienia. Niby ukończony, ale jednak ciągle wpadam na nowe pomysły, w wersji demo brakowało moim zdaniem wydarzeń o charakterze "Pirotechnicznym" Dodałem ręczny miotacz granatów, możliwość wysadzenia pojazdów(wcześniej chciałem zrobić możliwość poruszania się nimi, ale w zasadzie po jaką cholerę?) Nasi wrogowie po wpadnięciu na "kąsek piromana" randomowo rozwalają się na kawałki po całej mapie. Z fabularnych smaczków, naszymi wrogami nie będą jedynie Niemcy, ale również Amerykanie, a także Polacy - tak zwani zdrajcy. Jak na razie to chyba trochę przesadziłem z poziomem trudności, bo na chwilę obecną jest on w ch** wysoki Sam miewam problemy z testowaniem, bo obrywam za często, albo to może kwestia wyjścia z wprawy Pozdrawiam Screen
×
×
  • Dodaj nową pozycję...