Skocz do zawartości

Nubosabuk

Użytkownicy
  • Postów

    45
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Nubosabuk

  1. witam Mam taki problem: w mojej grze poruszamy się statkiem pomiędzy układami planetarnymi (2D), chcę aby pomiędzy ostatnimi dziesięcioma odwiedzonymi układami była rysowana linia, tak aby było widać trasę którą przebyliśmy. Najwygodniejsze wydawało mi się użycie kolejki, ale w kolejce można odczytywać tylko pierwszą i ostatnią pozycję, a chciałbym móc odczytać ich 10. Macie jakieś rady jak to ugryźć?
  2. Nubosabuk

    Izometria, kilka grafik

    Może dobrym pomysłem było by stworzenie gór tak jak to było zrobione np w Heroes III (lub wcześniejsze)- w edytorze było dostępnych kilka różnych wariantów wielkościowych góry (duży łańcuch, pojedyncza góra, pagórek), można było układać jedną górę na drugą, przez co można było uzyskać fajnie wyglądające łańcuchy górskie. Bardzo mi się podobają Twoje grafiki. Na pewno wiele pracy i cierpliwości jest w nie włożone:)
  3. na pewno może, mam dwa viewy, których współrzędne początkowe to x=-200000 y=-200000, tam też są obiekty i wszystko działa normalnie:)
  4. pracując nad moim projektem zauważyłem, że GM chyba może obsłużyć nieograniczoną wielkość rooma. Co prawda wymiary maksymalne to 999999x999999 ale przecież obiekty, rysowanie, czy viewy mogą być poza granicami rooma (nawet tak wielkiego), nawet na współrzędnych minusowych. Wystarczy więc mały room, a generowany świat może być nieograniczony:)
  5. to co tutaj widać jest mapą tworzoną po wygenerowaniu galaktyki, którą potem można sobie obejrzeć klikając ikonę mapy na panelu w grze. Sam widok w grze obejmuje tylko niewielką część galaktyki i zawiera kilkanaście do kilkuset gwiazd w zależności od oddalenia. Nie ma opcji oddalenia widoku by objął całą galaktykę, bo jest za duża no i zbt wiele gwiazd do wyświetlenia. Może potem coś wykombinuję że wraz ze wzrostem oddalenia mniej gwiazd będzie się wyświetlało. Samych planet póki co nie widać, no ale powolutku powolutku będę dziubał w kodzie by planetki też były fizycznie w grze:) No i galaktyka, w sensie jej zawartość(gwiazdy i obiekty podobne) będą raczej statyczne. Ewentualnie planetom nadam jakąś niewielką rotację wokół gwiazdy. Zresztą: zobaczy się, nie mam jak na razie sprecyzowanej ścieżki, którą podążę tworząc tą grę, więc wszystko może się jeszcze zmienić. Dzięki za miłe słowa:)
  6. Jakiś czas temu zamieściłem pierwszą rzecz jaką zrobiłem i którą można było już pokazać światu- wygenerowaną galaktykę eliptyczną(https://forum.gmclan.org/index.php?s=&s...st&p=359576). Pracowałem nad ulepszeniem generatora jak i całej gry. Gry jeszcze niema co pokazywać, ale chcę pokazać mój postęp w generowaniu galaktyki. Generator teraz robi galaktyki spiralne. Udało mi się zrobić duuużo gwiazd bez wpływu na FPSy. W poniżej zaprezentowanych obrazkach są galaktyki mające około 30 do 60 tysięcy układów gwiezdnych. Planety póki co wygenerowane są do tablic podpiętych do każdej gwiazdy, jest ich około 5 razy więcej niż gwiazd. Są gwiazdy co nie mają planet a są takie co mają ich dużo. Starałem się używać sporo matematyki i statystyki, tak więc spirala galaktyki jest opisana zmiksowanym wzorem na spiralę Archimedesa i ciągu Fibonacciego, są różne zależności: liniowe,wykładnicze i hiperboliczne, liczba planet dla każdej gwiazdy jest opisana przybliżonym rozkładem normalnym( przybliżonym bo nie wymyśliłem póki co jak go zrealizować w GM).
  7. dzięki za szybką odpowiedź:)
  8. Zrobiłem przybliżanie i oddalanie mapy za pomocą rolki myszki, lecz zoomowanie ma wpływ także na panel, który powinien mieć cały czas tą samą wielkość. Zoom działa na zasadzie manipulacji szerokością i wysokością viewu. Co zrobić aby zoom nie miał wpływu na panel(i inne podobne obiekty)?
  9. no właśnie tak w końcu zrobiłem, w każdym razie z "/" liczyło mi się jakieś 52s a z "div" około 51, więc div jest nieznacznie szybszy (pewnie o jakąś nanosekundę:) ) a ta wiadomość potrzebna mi, bo staram się trochę przyspieszyć wykonywanie mojego kodu i szukam co by tu odjąć :)
  10. co jest szybsze: dzielenie za pomocą "/", czy "div"?
  11. brzmi bardzo ciekawie, zainteresuję się tym. Gwiazdy będą "klikalne", oraz będzie na nich rysowana np przynależność do gracza, różne powiązania z innymi gwiazdami. Czy to rozwiązanie będzie pasowało do tego? BTW na widoku wyświetlane jest maksymalnie kilkanaście gwiazd, resztę dezaktywuję.
  12. m@rcixxx: mam tak zrobione, jak się przyjrzysz dokładniej mapce, to każda kropka ma swój unikatowy kolor. Akurat temperatura jest chyba najdokładniej odwzorowana ze wszystkich parametrów. Od czerwonych po niebieskie.Podobnie z wielkościami od karłów do hiper olbrzymów. Nie mam jeszcze innych obiektów takich jak czarne dziury itp, ale planuję dodać. karolo320: W tej chwili jak sprawdzałem przy 42tysiacach gwiazd, mam 60fps, ale to dla rooma 200000x200000, gdy go zwiększam na 999999x999999(czyli max) fps-y spadają mi do 30. Chciałbym to jakoś naprawić, ale póki co nie mam pomysłu jak. Threef: jest to robione na obiektach. Jak mógłbym jeszcze inaczej do tego podejść?. Jestem początkujący i robię to wszystko skrupulatnie się ucząc:) Chciałbym zrobić tez opcje aby generowała się galaktyka spiralna, ale na razie nie mam pomysłu jak to zrobić
  13. hej:) robię grę, której stadium jeszcze nie jest na tyle zaawansowane aby dać to w zapowiedziach, ale tutaj jest miejsce w sam raz aby się pochwalić/pogrążyć:) Jest to moja pierwsza gra i mam nadzieję, że za parę lat ją skończę:P Będzie to gra ekonomiczno-strategiczna osadzona w kosmosie, miks Master of Orion, Spore(etapu kosmosu) oraz Ogame. Póki co najwięcej czasu zajęło mi stworzenie galaktyki, w której gra będzie się odbywać. Mam taki kaprys, aby świat był przeogromny. Stworzyłem generator, który tworzy galaktykę eliptyczną, wypełnioną układami planetarnymi. Parametry takie jak wielkość gwiazdy, jej kolor, temperatura itp bazują na parametrach rzeczywistych gwiazd. Połowę pracy nad grą to przesiedziałem na Wikipedii i stronach astronomicznych:) Wklejam obrazek, na którym jest mapa stworzonej galaktyki- każda kropka na mapie symbolizuje gwiazdę wraz z układem planetarnym. Na mapce jest około 50tys układów planetarnych które wypełniają rooma mającego maksymalną wielkość.
  14. zrobiłem jeszcze inaczej GML //tworzenie surfacea dla panelu panelSurf=surface_create(l,view_hview[0]) //ładowanie grafik do panelu textura_panelu=sprite_add('zasoby/textura_panel_192x192.png',1,0,0,0,0); //wypełnienie surface tekstura surface_set_target(panelSurf); for (a=0;a<view_hview[0];a+=192) { draw_sprite(textura_panelu,0,0,a); } surface_reset_target(); //usuwanie wykorzystanej grafiki sprite_delete(textura_panelu); teraz śmiga B)
  15. 192 na 1050 w moim wypadku, a tekstura ma 192x192
  16. z tym surfejsem gra wczytuje się 32 sekundy, bez niego zaledwie około 1s. Karta graficzna to GeForce 8800GTS 512, co prawda ma już parę latek ale nadal wymiata w innych grach, więc wątpię aby to było przyczyną.
  17. Chcę stworzyć panel, na którym będą wszelakie przyciski. Chcę wykorzystać do tego surface, lecz dodanie kodu, który jest poniżej, powoduje, że gra bardzo długo się uruchamia. Wydaje mi się, że coś robię nie tak. To jest moje pierwsze wykorzystanie surface i nie znam jeszcze wszystkich aspektów z nimi związanych. //W create mam coś takiego: GML //tworzenie surfacea dla panelu panelSurf=surface_create(l,view_hview[0]) //ładowanie grafik do panelu textura_panelu=sprite_add('zasoby/textura_panel_192x192.png',1,0,0,0,0); //wypełnienie surface tekstura surface_set_target(panelSurf); draw_sprite_tiled(textura_panelu,0,0,0); surface_reset_target(); //usuwanie wykorzystanej grafiki sprite_delete(textura_panelu); // a w Draw rysuję surface
  18. mam problem: tworzę mapę całego rooma, w którym znajduje się galaktyka. Wcześniej działało to bardzo ładnie lecz mało optymalnie, bo cały poniższy kod(oprócz ostatnich kilku linijek) był wykonywany w draw. Teraz chcę zrobić mapę, którą zapisuję do pliku, a następnie gdy w grze chcę wyświetlić mapę ładuję ten plik. Problem w tym, że obrazek mapy jest czarno-biały. Poniższy kod działał wcześniej poprawnie ze wszystkimi kolorami jakie chciałem. Co jest nie tak? GML { //czarny prostokat na ktorym zostana wyrysowane gwiazdy draw_set_color(c_black); global.x1=view_xview[0]+obj_panel.l; global.y1=view_yview[0]; global.x2=view_xview[0]+view_wview[0]; global.y2=view_yview[0]+view_hview[0]; draw_rectangle(global.x1,global.y1,global.x2,global.y2,0); //obliczenie skali dla mapy global.skala_x=round(room_width/(global.x2-global.x1)); global.skala_y=round(room_height/(global.y2-global.y1)); //rysowanie............................................... instance_activate_object(obj_gwiazda); with(obj_gwiazda) //wyświetlanie gwiazd na mapie { if l_planet<=5 { draw_sprite_ext(spr_minimapa_kropki,0,global.x1+round(x/global.skala_x),global.y1+round(y/global.skala_y),1,1,direction,image_blend,image_alpha); //kolor gwiazdy na mapie image_blend=col1; } else { draw_sprite_ext(spr_minimapa_kropki,1,global.x1+round(x/global.skala_x),global.y1+round(y/global.skala_y),1,1,direction,image_blend,image_alpha); image_blend=col1; } } //zapisywanie mapy do pliku................................. { var fname; fname = 'map'; screen_save_part(fname+".png",obj_panel.l,0,view_wview[0]-panel.l,view_hview[0]); } instance_deactivate_object(obj_gwiazda); //wczytywanie mapy jako sprite global.map=sprite_add('map.png',1,0,0,0,0); } EDIT: Już sobie poradziłem, nie wiem dla czego, ale wystarczyło w miejsce image_blend w draw_sprite_ext od razu wpisać zmienną col1, zamiast zmieniać ją potem. w sumie nie wiem dlaczego tak zrobiłem wcześniej, bez sensu:)
  19. no mam w kodzie coś takiego co tak działa- wykorzystałem lenghdiry. Problem pojawia się w momencie gdy statek jest już na orbicie i pałeczkę przejmuje algorytm odpowiedzialny za ruch po okręgu, zdarza się, że przejście zostanie wykonane w miare płynnie ale zazwyczaj statek wariuje:) właśnie zaczynam kolejne podejście do problemu może coś wykminię, albo może zastosuję tak jak podpowiedziałeś grawitację i inne fizyczne sprawy :) EDIT: Udało się! Tak jak doradziłeś użyłem grawitacji i pierwszej prędkości kosmicznej, okazało się to dużo prostsze niż sądziłem.Może jeszcze nie mam do końca tego czego oczekiwałem, ale jest co najmniej zadowalająco. dzięki:)
  20. chciałem aby ten ruch nie był skomplikowany tak i dla mnie jak i dla gracza. Zabawa z grawitacją na pewno była by ciekawa, ale chyba póki co chciałbym zrobić coś takiego: statkiem porusza się na zasadzie: strzałka w przód/w dół- speed+/-=przyspieszenie, strzałka lewo/prawo- direction+/-=jakaśtamliczba. chciałbym aby statek w pewnej odległości od gwiazdy skierował się w stronę orbity tak, aby dotrzeć na nią prostej stycznej do okręgu orbity- w ten sposób statek gwałtownie nie zmieni swojego kierunku tak, jak to by było w wypadku, gdyby statek po dotarciu np prostopadle do orbity zaczął naglę poruszać się ruchem po okręgu(widać by było szybki przeskok i zmiene kierunku lotu o 90 stopni) czyli: 1. w przestrzeni poruszamy się strzałkami 2. w pewnej odległości od gwiazdy, gdy kierunek statku "celuje" w gwiazdę kierunek zmienia się na kierunek stycznej do okręgu orbity 3. po dotarciu do punktu na orbicie, ruch stałby się ruchem po okręgu
  21. witam! jest to mój pierwszy post, lecz forum przeglądam już jakiś czas. W końcu zabrałem się za projekt, z którego kiedyś może coś będzie. Póki co wszystkie problemy rozwiązywałem szukając odpowiedzi na podobne pytania lecz z tym problemem już nie wiem co robić. Problem jest taki: statkiem kosmicznym porusza się przy użyciu prędkości oraz kierunku, lecz chciałbym żeby statek po zbliżeniu się do gwiazdy/planety wpadł w jej "pole grawitacyjne" i zaczął poruszać się ruchem po okręgu do czasu, aż gracz zwiększy prędkość i odleci statkiem z pola grawitacyjnego. Napisałem kod, w którym ruch po okręgu udało się osiągnąć lecz nie potrafię naprowadzić statku tak, aby łagodnie przeszedł z ruchu liniowego w ruch okrężny. Statek przeskakuje, czasem się zacina i chaotycznie się porusza w polu oddziaływania. Poradźcie mi jakich funkcji/sztuczek użyć by osiągnąć mój cel. Nie wiem czy to coś pomoże, ale wrzucam mój kod(działałem troche po omacku więć wyszło to co wyszło :) ). GML //spotkanie z gwiazda var _id,odl; _id=instance_nearest(x,y,obj_gwiazda); //zapisanie id gwiazdy do zmiennej odl=point_distance(x,y,_id.x,_id.y) //obliczenie odległości od gwiazdy if odl<=_id.r*10 and speed<5 { if odl>_id.r*5 //resetowanie zmiennych po opuszczeniu orbity { orbita=false; ww=false; } //zblizanie sie do orbity gwiazdy po stycznej do orbity if direction< point_direction(x,y,_id.x,_id.y) and orbita==false //jezeli kierunek podchodzenia jest mniejszy od kierunku na gwiazde to pojazd zbliza sie stycznie z lewej strony { mp_linear_step(_id.x+lengthdir_x(_id.r*5,direction-90),_id.y+lengthdir_y(_id.r*5,direction-90),speed,false) orbita=true; } if direction>= point_direction(x,y,_id.x,_id.y) and orbita==false// to samo ale z prawej { mp_linear_step(_id.x+lengthdir_x(_id.r*5,direction+90),_id.y+lengthdir_y(_id.r*5,direction+90),speed,false) orbita=true; } if orbita==true and odl<=_id.r*5 { if ww==false { w=direction; //nadanie wartości poczatkowej dla kata obrotu ww=true } x=_id.x+lengthdir_x(_id.r*5,w); y=_id.y+lengthdir_y(_id.r*5,w); w+=speed; //kat obrotu direction=w+90; } }
×
×
  • Dodaj nową pozycję...