Skocz do zawartości

Madness

Użytkownicy
  • Postów

    551
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Madness

  1. Co do uniezależnienia prędkości obiektu od ilości klatek, to chyba można skorzystać np. z takiego czegoś: boost = maksymalna_ilość_klatek/aktualną_ilość_klatek A potem np. hspeed = prędkość*boost. Wydaje mi się, że to da rade. Przykładowo: maxFPS - 60, ilość FPS - 60, prędkość - 3 prędkość = 3*(60/60) prędkość = 3 --------------------------- maxFPS - 60, ilość FPS - 30, prędkość - 3 prędkość = 3*(60/30) prędkość = 6 Myśle, że to wystarczy. EDIT: Ale widze, że YXE już wstawił wersje standardową.
  2. Madness

    wxWidgets + SFML 2.1

    Wielokrotnie poległem na łączeniu tych dwóch bibliotek, ale na forum sfml'a udało mi się znaleźć kod który mi w tym pomógł. Po paru poprawkach, aplikacja skompilowała się. Napotkałem jednak dziwaczny problem, pomimo tego że mogę sobie rysować co chce poprzez sfml'a, to wygląda to tak: (Standardowa tekstura 128x128 z ikoną Code::Blocks'a i window.clear(sf::Color::Black)) Kolor tła mogę zmieniać na całej powierzchni, ale rysować niestety tylko na takiej (na dole, po lewej widać czerwony kwadrat to właśnie ten kawałek tekstury). Jakieś pomysły ? #include <wx/wx.h> #include <SFML/Graphics.hpp> #ifdef __WXGTK__ #include <gdk/gdkx.h> #include <gtk/gtk.h> #include <gdk/gdkprivate.h> #include <gtk/gtkwidget.h> #endif class SFMLRenderWindow : public wxControl, public sf::RenderWindow { public: sf::Texture tex; sf::Sprite spr; sf::View view; sf::RenderTexture rt; SFMLRenderWindow(wxWindow * parent, int id) : wxControl(parent,id) { //wxControl(parent,id); #ifdef __WXGTK__ gtk_widget_realize(m_wxwindow); gtk_widget_set_double_buffered(m_wxwindow, false); GdkWindow* Win = gtk_widget_get_window(m_wxwindow); XFlush(GDK_WINDOW_XDISPLAY(Win)); sf::RenderWindow::Create(GDK_WINDOW_XWINDOW(Win)); #else sf::ContextSettings settings; settings.depthBits = 32; settings.antialiasingLevel = 6; sf::RenderWindow::create(GetHandle(),settings); #endif sf::RenderWindow::setSize(sf::Vector2u(800,600)); Bind(wxEVT_PAINT, &SFMLRenderWindow::onPaint, this); Bind(wxEVT_ERASE_BACKGROUND, &SFMLRenderWindow::onEraseBackground, this); Bind(wxEVT_IDLE, &SFMLRenderWindow::onIdle, this); Bind(wxEVT_KEY_DOWN, &SFMLRenderWindow::onKeyDown, this); tex.loadFromFile("cb.bmp"); tex.setRepeated(true); spr.setTexture(tex); // view.setCenter(0,0); // view.setViewport(sf::FloatRect(0.0f,0.0f,1.0f,1.0f)); // rt.create(800,600,true); // rt.clear(); // spr.setTexture(rt.getTexture()); //setView(view); } ~SFMLRenderWindow() {} void onPaint(wxPaintEvent& e) { wxPaintDC(this); sf::RenderWindow::setActive(); //sf::RenderWindow::resetGLStates(); sf::RenderWindow::clear(sf::Color::Black); sf::RenderWindow::draw(spr); spr.move(-0.01f,-0.01f); sf::RenderWindow::display(); } void onEraseBackground(wxEraseEvent& e) { // Do nothing } void onIdle(wxIdleEvent& e) { Refresh(); } void onKeyDown(wxKeyEvent& e) { if (e.GetKeyCode() == WXK_F11) { printf("F11"); } else e.Skip(); } }; // Test application class wxMiniApp : public wxApp { public: virtual bool OnInit(); }; IMPLEMENT_APP(wxMiniApp) bool wxMiniApp::OnInit() { wxFrame* frame = new wxFrame(NULL, -1, "SFML RenderWindow", wxDefaultPosition, wxSize(800, 600)); new SFMLRenderWindow(frame, -1); frame->Show(); return true; } EDIT: Dobra, udało mi się. Odpowiednio pomieszałem kod z tutka dla SFML 1.6 z powyższym i działa jak trzeba.
  3. Madness

    Borderlands multi

    Odpowiedź jest prosta Hamachi/Tunngle. :) Początkowo też wybrałem hamachi, ale borderlands nie wyszukiwał serwera kolegi, jak na tunngle wbiłem na czyjś serwer, widziałem w borderlandsie serwery innych osób, tak jak i mojego kolegi. Gwarancji 100% nie ma, zawsze może pojawić się jakiś problem, ale raczej zagrasz. Wiele gier w trybie multi działało mi na Tunngle, a na hamaku raczej rzadziej. Ja akurat nie mam dostępu do router'a więc nie moge sobie odblokować portów, a co za tym idzie Tunngle to dla mnie dobre rozwiązanie.
  4. Najprostszy sposób, to stworzenie obiektu o danym sprite, np. jakimś szlamem. W momencie, kiedy zaczynasz chodzić uruchamiasz alarm a w nim tworzysz nowy obiekt (szlam) na pozycji gracza. Kiedy się zatrzymujesz, wyłączasz alarm. Co do skoku, no to np. szlam tworzysz przed skokiem/podczas upadku na platforme.
  5. Co znaczy "przełączyć między postaciami"? Chcesz, żeby po wciśnięciu spacji dało się sterować tą drugą? Jeśli tak, to wystarczy sobie stworzyć obiekt kontrolujący która postać ma być pod naszą kontrolą i np. to dzięki niemu sterować postacią. Np. GML // Zdarzenie Create target = standardowy_obiekt; //Zdarzenie Step /* Poruszanie się postaci przy pomocy target np.: if( keyboard_check(...) ) target.x += predkosc; ... */ Ten sposób może Ci nie wystarczać. Drugim sposobem (prostszym) jest stworzenie zmiennej globalnej, na podstawie której sprawdzamy który z obiektów ma się teraz poruszać. GML /* 1.W jakims obiekcie tworzymy zmienna global.character_index ktora bedzie miala wartosc np. 0 2.Następnie w każdym obiekcie ktorym bedzie mozna sterowac tworzymy zmienna myIndex = jakiejs tam liczbie 3.W zdarzeniu step na samym poczatku sprawdzasz czy global.character_index != myIndex, jesli tak to exit; jesli nie to ten instrukcja tego if'a zostanie pominieta i kod ponizej sie wykona. 4.Ostatnim krokiem bedzie to, zeby w jakims obiekcie, kiedy wcisniesz spacje zmieniala sie wartosc global.character_index na ustalona rzecz jasna. Przykladowo, jesli masz dwie postacie o myIndex = 0 i myIndex = 1, to przy wcisnieciu spacji z 0 zmieniasz na 1 a z 1 na 0 itp. */
  6. Wiesz chociaż na czym ten błąd polega, czy w ogóle nie masz pojęcia i dlatego nie wiesz jak to naprawić ? Chcesz to napisz na pw, pomoge Ci. Btw. nie wiem z czym masz problem, w twojej grze wszystko porusza się równo z kamerą, tylko ten napis nie.
  7. Tak każdy blok(obiekt) ma swoje id , ale możesz też sam sobie stworzyć zmienną id i na tej podstawie wysyłać odpowiednią informacje. :) Wybór należy do ciebie, choć wydaje mi się że własny identyfikator bloku byłby lepszy.
  8. show_message_ext(str,but1,but2,but3) Ok, nie ważne... :rolleyes:
  9. Madness

    Top Hat

    Jakoś pusto, te odznaczenie słabo przez to wygląda (jak dla mnie), a ty się przecież tym chcesz pokazać, że twój projekt został nagrodzony. Może jakiś medal, albo tarcza i na niej wyryty napis ? Medal i kapelutek postaci w powiększeniu, oraz np. karteczka na której jest ten napis "Best Indie PC game...." ? Reszta jest spoko, nieźle się prezentuje :) . Nawet jakbyś nie skorzystał z powyższych propozycji, to może chociaż zrób dla tego napisu białą otoczke, żeby był bardziej widoczny na tym tle. ;)
  10. Pierw pan powiedz, co się dzieje ? Błędy w kompilacji, a może kod nie działa jakbyś chciał ?
  11. Najprostszy sposób, to postawienie sobie na mapie punktów w odpowiednich odstępach (np. co 32px), po tym jak je utworzysz, stawianie bloczków to prościzna. (Zakładając, że korzystasz z GML) Algorytm wygląda następująco: Jeśli gracz kliknął LPM Znajdź najbliższy punkt Jesli takowy istnieje (mamy gdzie postawic bloczek, tudzież nie ma innego bloczku postawionego w tym punkcie) Tworzymy tam bloczek funkcją instance_create(nazwa_obiektu,x,y); Przez postawienie sobie punktu rozumiem utworzenie tablicy dwuwymiarowej, żeby ustalić w niej współrzędne, bądź utworzenie obiektów punkt i szukanie najbliższego (jeśli poszukasz w dokumentacji zapewne znajdziesz tam odpowiednią funkcje od tego, jeśli nie to musisz je gdzieś przechowywać (chodźby i w tablicy)). Krótko mówiąc, jeśli nigdy nie programowałeś to musisz się poduczyć, ew. skorzystaj z bloczków. PS: Jakbyś potrzebował z tym pomocy, napisz na pw.
  12. Mój kolega nie umie pisać shaderów, a z cell shadingu korzystał. Znaczy to tyle, że możesz go skądś dostać :) ... Generalnie mówienie, że Unity w wersji Free za mało oferuje żeby zrobić coś porządniejszego to pieprzenie. Nie masz czegoś? - zrób to sam, albo przynajmniej kogoś o to poproś, może ktoś udzieli Ci pomocy. Gdyby wszyscy jechali na assetach, to co by to było ? ^^ Po co uczyć się czegokolwiek, jak możesz wykorzystać cudzą prace, no nie ? :( Żeby gra dobrze wypadła/sprzedała się nie musisz mieć grafiki z najnowszych gier. Nie wierze, że w Unity Free nie da rady zrobić np. Gothica, albo czegoś podobnego. Znaczy to tyle, że musisz się więcej nauczyć i koniec. Takie jest moje zdanie na ten temat.
  13. Siatka + rysowanie kwadracików. :) Potem sprawdzać czy jest dokładnie pokolorowane, poprzez siatke. Innymi słowy coś w stylu edytora room'ów w GM'ie. Stwórz sobie siatke punktów, a w momencie kiedy klikniesz np. LMP to szukasz punktu który jest najbliżej myszy i na jego współrzędnych ustawiasz nowy kwadracik (tudzież piksel). Potem mógłbyś sprawdzać, czy 'piksele' są w odpowiednich miejscach.
  14. Mój brat ma np. na kompie win7 i ma to samo. Na profilu, który założył podczas instalacji niby ma prawa admina, a jednak jak się okazuje wiele programów i gier przy włączaniu wywala komunikat, że do włączenia potrzeba praw administratora. Zrobił test i stworzył nowy profil i tam chodzi już wszystko.
  15. Madness

    Tura #140

    @szmalu - giera, jak dla mnie świetna. Tylko nawet jak wyniszczyłem wszystkich i się skułem, to i tak byłem drugi ^^
  16. Wyciek pamięci jest wtedy, kiedy masz wskaźnik który alokuje pamięć dla jakiegoś obiektu np.: int *pointer = new int(3); a następnie nie zwolniwszy wcześniej zaalokowanej pamięci przestawiasz wskaźnik na coś innego: pointer = &obiekt; Wtedy nie masz jak dostać się już do tego int'a którego zaalokowałeś, no bo nic innego na niego nie wskazuje, a ty się możesz tylko domyślać w której komórce został on utworzony... Konrad-GM ma racje, wskaźniki przestawia się na NULL żeby przypadkiem nie wskazały na coś na co nie powinny + kiedy wskaźnik wskazuje na NULL, to delete nie da żadnego efektu. Ty w swoim kodzie już ustawiłeś inny wskaźnik na odpowiedni adres, więc nadal masz do niego dostęp i w każdej chwili możesz zwolnić ten obszar pamięci, gdyby było inaczej to tak, miałbyś wyciek.
  17. Polski lub angielski, bo u ciebie nazwy metod to setWartość, getWartość, setRozmiar. Kiedyś zaczniesz się mylić bo nie będziesz pewny czy funkcje zapisałeś jakoś po angielsku, czy po polsku. Lepiej wybrać sobie jeden język i nim zapisywać nazwy zmiennych, funkcji. Ja np. ostatnio jak coś kodze, to nazwy danych pisze po angielsku, tylko komentarze są po polsku. A i wcześniej zdarzało mi się robić tak, jak ty i z czasem musiałem patrzeć np. jak dana zmienna się nazywała, zamiast pisać od strzała co ma się dziać w programiku.
  18. Ja z wieczora już nie myśle, ale czy ty przypadkiem nie usuwasz sobie tej tablicy ? EDIT: I warto zdecydować się na jeden język, bo można się pogubić w kodzie, jak się korzysta z kilku na raz w nazewnictwie.
  19. Ja z początku uczyłem się z CPP0X, a tak z książek to Symfonia C++. Na cpp0x masz też kursy do różnych bibliotek, choć niektóre są już stare. EDIT: Co do IDE, to całkiem fajny (przynajmniej dla mnie) jest Code::Blocks.
  20. A gdzie zmieniasz hspeed, i na ile? Tutaj jest tylko zmiana sprite'a, a ona jest zależna od hspeed.
  21. Madness

    Warlocks

    Ale postać pod feniksem jest zbyt statyczna, moim zdaniem anty powinieneś dodać chociaż jakieś zachowanie do sytuacji dla tego człowieczka. Jeśli on nawet w ogóle nie ma atakować, to żeby coś jednak robił prócz chodzenia. Mógłby też karmić czymś tego feniksa, żeby go wzmocnić w jakiś sposób na krótką chwile, np. że płomienie feniksa robią się niebieskie i zadaje większy dmg, ew. jego spell'e miałyby inne właściwości.
  22. Madness

    Szukam Teamu

    Ja tam nic do dzymka nie mam, ale o ile mi wiadomo to nikogo jeszcze niczym nie zachwycił (jeśli się myle to poprawcie), pomimo tego że już na tym forum troche siedzi i mógłby się wiele nauczyć. Jeśli istnieje jakiś jego projekt, który jest warty uwagi, albo udowodni to że może pomóc komuś z przyszłym projektem, to nie ma sprawy. Jednak jeśli nie zrobił dotychczas większego progress'u (przykładowo od roku 2009), to nie wiem czy to ma sens. I jeśli udowodni, że potrafi pomóc w jakimś przyszłym projekcie, to nie mam nic przeciwko żeby z nim współpracować i coś skodzić, jeśli będzie tego chciał, być może i ja bym się czegoś od niego nauczył. Niech pokaże w tym temacie coś, co ujawni jego mocne strony i wtedy będzie można pogadać na poważnie. Krótko mówiąc napisałem tutaj mniej, więcej to co i gmclan'owicze mi napisali, kiedy ja napisałem podobnego posta do dzymkowego. @Dzymek pokaż coś sobą, pokaż innym czemu mieliby z tobą współpracować, co możesz zaoferować, a reszta to już łud szczęścia. Jeśli nie masz niczego, dzięki czemu mógłbyś pokazać się z tej lepszej strony to postaraj się to zmienić. Tyle na ten temat ode mnie.
  23. Madness

    Szukam Teamu

    On trolluje, czy to tak na serio ? :blink:
×
×
  • Dodaj nową pozycję...