Skocz do zawartości

Konrad-GM

Użytkownicy
  • Postów

    2 729
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    44

Odpowiedzi opublikowane przez Konrad-GM

  1. Pisze sobie swojego Game Maker-a. Hue-hue. ^^

    Na razie taki proof-of-concept. Rysowanie/window/input z GLFW, tekstury SOIL2, język skryptowy AngelScript. Póki co proste rzeczy typu rysowanie prostokąta (patrz: kod). Działa.

    GML
    float s;

    void _atstart() {

    s = 0;

    }

    void _mainloop() {

    s += .0125;

    float x = cos(s) * 24;

    float y = sin(s) * 24;

    drawRectangle(16 + x, 16 + y, 32 + x, 32 + y);

    }

    Nawet GameMaker ma własny "mainloop". Bo chyba o to chodzi w Game Engine'ach. Modding a'la Unity czy UDK jest ok... :P

  2. nie chodzi jak ma wyglądać, tylko jak go zrobić.

    Wiem tyle że trzeba to robić na x i y viewa używanego.

    Napisy itp. W evencie Draw ( Czy Draw HUD w game maker studio trzeba użyć ?)

    Tak, Draw GUI jest od rysowania HUDa i innych elementów niezależnych od zmian perspektywy ani pozycji 'kamery'. Zatem niezależnie od view_xview,view_yview, w evencie Draw GUI rysuje się pod X,Y przyjmując 0,0 jako lewy-górny róg ekranu.

     

    GML
    draw_text(5, 5, string(health));
  3. @EDIT:

    Gdyby ktoś szukał takiego rozwiązania to napisałem coś takiego(działa :D ):

    void gotoxy(int x, int y)
    {
    COORD c;
    c.X = x - 1;
    c.Y = y - 1;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
    }
    

    Nie lubię tego rozwiązania od twórców borlandowego "conio". Bo nie indeksuje pozycji kursora od '0', co dla języka C/C++/etc jest rzeczą naturalną i powszechnie stosowaną, odwrotną co do Pascalowego '1'.

  4. Ja tam polecam Eclipse z pluginami CDT.

    Eclipse moim zdaniem do C++ nijak się nie nadaje. Jest pamięciożerną kobyłą, można niekiedy się zniechęcić do niego. Code::Blocks (polecam nightly builds), tak jak Dev-C++, jest lekki i oba są zaopatrzone w kompilator MinGW (do C::B nightly builds trzeba ściągać osobno). Visual co prawda też po instalacji nie potrzebuje dodatkowego oprogramowania, ale chyba twórcy bardziej celują w technologię .NET i C# zatem różnice między Visual C# a Visual C++ są spore. :)

  5. Czy chodzi ci o to, że ja wymazuję obszar pamięci gdzie rezyduje tablica? Bo nie jestem pewny czy dobrze pomyślałem :) [/size][/i]

     

    EDIT - WIN:

     

    Udało mi się :) Zaczeło działać kiedy zmieniłem

    delete[] puTablica;
    puTablica = puNowaTablica;
    delete[] puNowaTablica;

    Na:

    	
    puTablica = NULL;
    delete[] puTablica;
    puTablica = puNowaTablica;
    puNowaTablica = NULL;
    delete[] puNowaTablica;

     

    Tak więc dzięki wszystkim :)

    puNowaTablica = NULL;
    delete[] puNowaTablica;

    Wywal to całkiem. O,o

     

    Usuwanie wskaźnika na 'nullptr' nie daje żadnego efektu. Więc ta część kodu w ogóle nie jest potrzebna.

  6. Przybrałeś zły sposób na iterowanie po danych w tablicy, konkretnie chodzi o: puTablica[uIndeks1 * uIndeks2]. Tak nie może być. :)

     

    Jeżeli chcesz użyć liniowej metody dostępu do adresu pamięci w postaci 2-wymiarowej tablicy blablabla, musisz daną pozycję Y pomnożyć przez "szerokość" tablicy aby wyznaczyć wiersz, i dodać "przejście" X po komórkach:

    puTablica[uIndeksY*muRozmiarX + uIndeksX]

     

    Proponuję zmienić konwencję kodowania, gdyż ciężko "to" się czyta... To taka moja luźna propozycja. :)

     

    Tak samo jak zasada ze zmiennymi 'n' (ilość), jak i 'i' (pozycja). Z X/Y-ami postępuje się podobnie. X-y podawaj na początku argumentów, Y jako drugi.

     

    #EDIT:

    Proponuję abyś jeszcze raz zbadał metodę cInt2dArray::ChangeRozmiar, możesz być niemile zaskoczony. Konkretnie chodzi o delete[] puNowaTablica;

  7. Cóż, zagrałem w każdą część, i przyznam że każdy epizod trzyma poziom :) Ciekawa historia, wciągająca fabuła. W najnowszej części Memories bardzo podoba mi się motyw z rysunkami. Podziwiam za pomysł, cała seria zdecydowanie zasługuje na 5/5 ;)

  8.  

    NAJNOWSZY GAMEPLAY Z TOBHAD [COOL]

    Mam nadzieję, że się spodoba, a jak nie to walcie uwagi swoje. :D

    Wszystko fajnie i wgl. Ale ogień który wydaje pocisk to chyba standardowy efekt GMa, może coś bardziej "rozpixelowanego" tam wstawić można? :P

  9. Źródła tej "biblioteki" są dostępne. Wykorzystuje WinAPI, którego dokumentację znajdziesz pod tym linkiem.

     

    Forum jest do wymiany swoich spostrzeżeń jak i wiedzy. Gdybyś miał z czymś problem, pisz na forum. W miarę możliwości nie tylko ja będę mógł Ci pomóc. ;)

     

    Polecam zapoznać się z takową funkcją: WriteConsoleOutput

  10. https://github.com/konrad92/libconsole Nie jest to jakoś szczególnie rozbudowana biblioteka - raczej zabawka.

     

    Możesz zmienić rozmiar konsoli poprzez:

    void ConsoleSize( unsigned short width, unsigned short height ) const
    {
        SMALL_RECT windowSize = {
            0, 0,
            width - 1,
            height - 1,
        };
    
        SetConsoleWindowInfo( stdOutputHandle, true, &windowSize );
        SetConsoleScreenBufferSize( stdOutputHandle, *((COORD*)&width) );
    
        // show/hide cursor
        CONSOLE_CURSOR_INFO curInfo = {
            100, !m_hideCursor
        };
    
        SetConsoleCursorInfo( stdOutputHandle, &curInfo );
    }

     

    A podział, obiekty i "okienka" to nic innego jak generowanie interfejsu przez wyjście. Np. żeby zmienić pozycję kursora:

    unsigned short x = 0, y = 0;
    SetConsoleCursorPosition( stdOutputHandle, *((COORD*)&x) );

     

    I nie zapomnij o jednym...

    HANDLE stdOutputHandle = GetStdHandle( STD_OUTPUT_HANDLE );

    Przed dokonywaniem zmian na konsoli potrzebujemy wskaźnika na jego wyjście ;p

  11. Mam nadzieję że wiesz co to znaczy LOD? Generuj teren "dynamicznie" - im dalsza część siatki terenu tym rozleglejsze plane'y. A modele stwórz w kilku poziomach LOD, i wywołaj rysowanie odpowiedniego np. względem odległości kamery od obiektu.

     

    Możesz też zainteresować się Ultimate3D.

    Fully automatic generation of levels of detail

  12. po czesci dobrze myslales - to zadziala tylko z konstruktorami bez parametrow, te z parametrami trzeba explicite wywolac w konstruktorze klasy dziedziczacej:

    class A

    {

    A(int v)

    {

    value = v;

    }

    int value;

    };

     

    class B : public A

    {

    B()

    {

    A(10);

    }

    };

    O Borze... :)

     

    class A
    {
    A(int v)
    {
    value = v;
    }
    int value;
    };
    
    class B : public A
    {
    B()
    : A(10)
    {
    }
    };

    Twój kod YXE tworzy nową instancję klasy A, sorry bro.

  13. Wstawiając jakąś grę na jakąkolwiek platformę ciesząc japę a później tylko narzekać - w sumie niewiele to zdziała. Nie ważne jaka by nie była ta gra, rzadkością jest "samoistne" wypłynięcie czegokolwiek. Nie jestem specem od marketingu (:)), ale chyba każdy wie że reklama to podstawa. :)

  14. Ok, rozwiązałem problem. Zmieniłem "createPattern>fillStyle>fillRect" na "drawImage". Już jest ok :)

     

    Dzięki temu: http://vaughnroyko.com/jsfiddle/nearest-neighbor.html

     

    presentViaDrawImage: function(canvas) {
        var ctx = canvas.getContext("2d");
    
        ctx.scale(canvas.width/this.width,
                  canvas.height/this.height);
    
        ctx.webkitImageSmoothingEnabled = 
        ctx.mozImageSmoothingEnabled =
        ctx.msImageSmoothingEnabled =
        ctx.oImageSmoothingEnabled =
        ctx.imageSmoothingEnabled = false;
    
        ctx.drawImage(this.canvas, 0, 0);
    }

×
×
  • Dodaj nową pozycję...