Суббота, 20 Сентября 2025, 10:23

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
AlkoshaДата: Вторник, 25 Ноября 2014, 18:48 | Сообщение # 121 | Тема: Вопрос-Ответ (C++)
участник
Сейчас нет на сайте
Ясно.
Даже wstring to string конвертить не надо оказывается.
AlkoshaДата: Среда, 03 Декабря 2014, 11:59 | Сообщение # 122 | Тема: Работы новичков
участник
Сейчас нет на сайте
Скачал Paint dot net, осваиваюсь.





Добавлено (03 декабря 2014, 11:56)
---------------------------------------------








Сообщение отредактировал Alkosha - Среда, 03 Декабря 2014, 12:01
AlkoshaДата: Воскресенье, 14 Декабря 2014, 11:38 | Сообщение # 123 | Тема: Динамический массив объектов.
участник
Сейчас нет на сайте
Гутен морген/абенд/таг.

Как лучше сделать массив "взрывов" ?
С индексами не понятно.

Объявлен вектор объектов.
Код
class myExplosion
{
public:
float x,y;
int framenum, ft;
void update()
{
...
}
void display()
{
...
}

};
vector <myExplosion> explosion;


Код
void render (){  
if(!explosion.empty())
           {
               for(int i=0; i<explosion.size(); i++)
                   {
                       explosion[i]->display();
                   }
           }
}


проблема в том, что в разной ситуации, разное кол-во анимашек взрыва должно проигрываться. Как быть с индексами?
Каждый раз проходиться по массиву в поисках свободного от проигрывания анимации объекта , и пускать на проигрывание анимашки ?
Или есть более оптимальные варианты ?


Сообщение отредактировал Alkosha - Воскресенье, 14 Декабря 2014, 11:39
AlkoshaДата: Воскресенье, 14 Декабря 2014, 15:07 | Сообщение # 124 | Тема: Динамический массив объектов.
участник
Сейчас нет на сайте
Цитата Saitei ()
Хранить вектор объектов. У объектов хранить текущий кадр и изменять его в их Update методе. Или я что-то не догнал... Хз


Да, так я и делаю.
Но, например ,произошёл где-то один взрыв. Ему будет присвоен первый индекс.
Потом второй взрыв - второй индекс. Пока взрывался второй, первый взрыв "угас". Но тут надо произвести третий взрыв. Не расширять же вектор до бесконечности, можно воспользоваться "потухшим взрывом". Но для того, чтоб узнать, который из них потух, нужно проходиться по образованному массиву, проверяя флаг активности взрыва.


Сообщение отредактировал Alkosha - Воскресенье, 14 Декабря 2014, 15:07
AlkoshaДата: Воскресенье, 14 Декабря 2014, 16:24 | Сообщение # 125 | Тема: Работы новичков
участник
Сейчас нет на сайте
Снова paint net


Сообщение отредактировал Alkosha - Воскресенье, 14 Декабря 2014, 16:24
AlkoshaДата: Воскресенье, 14 Декабря 2014, 21:15 | Сообщение # 126 | Тема: Динамический массив объектов.
участник
Сейчас нет на сайте
Как удалить последний элемент вектора я ещё знаю. Но перемещать элементы я не знаю как.
AlkoshaДата: Понедельник, 15 Декабря 2014, 22:13 | Сообщение # 127 | Тема: Пиксель - арт.
участник
Сейчас нет на сайте
Мой пиксель-арт на зэт икс спектрум.
Sieg Heil Spectrum!














Сообщение отредактировал Alkosha - Понедельник, 15 Декабря 2014, 22:22
AlkoshaДата: Среда, 24 Декабря 2014, 08:22 | Сообщение # 128 | Тема: "Отражения" SDL2.
участник
Сейчас нет на сайте
Вот скетч, набросал в графическом редакторе, но хочу реализовать подобное (отражение в "воде") на SDL2.



Поначалу казалось, что задачка элементарная. Но не тут-то было.
До данной затеи была одна таргет-текстура, на которую я рендерил всё подряд SDL_SetRenderTarget(renderer, texTarget);. Зачем она нужна, спросите вы? Чтоб зумить, создавать эффект приближения\удаления камеры относительно сцены.

Создал две таргет-текстуры.
На одной рисую бэкграунд, на второй то, что будет выводиться как в нормальном виде, так и в отзеркаленном... Но нужно очищать область рендеринга. Именно таким образом, чтоб вся текстура была прозрачной в следующем цикле рендеринга.

как поступить в таком случае ? Каждый раз дэстроить текстуру (SDL_DestroyTexture(texTarget);) и создавать заново? Не затратно ли это в плане производительности ?

Добавлено (24 декабря 2014, 08:22)
---------------------------------------------

Цитата Alkosha ()
Каждый раз дэстроить текстуру (SDL_DestroyTexture(texTarget);) и создавать заново?


Именно так я и сделал.

Теперь вторую таргет-текстуру я в нормальном виде вывожу, и её же флипаю по вертикали.

Правда оффсет не подобрал ещё.



Сообщение отредактировал Alkosha - Воскресенье, 21 Декабря 2014, 00:11
AlkoshaДата: Среда, 24 Декабря 2014, 08:43 | Сообщение # 129 | Тема: "Отражения" SDL2.
участник
Сейчас нет на сайте
Цитата Saitei ()
Можно ещё для флипнутой текстуры в случае с водой сделать эффект волны


SDL2 не умеет шейдеры. А а getpixel \ setpixel для такого массива пикселей будут адски грузить проц.

Добавлено (24 декабря 2014, 08:43)
---------------------------------------------
Я попросту приплюсну по вертикали. Но тут гемор с оффсетом, так как камера у меня ещё должна двигаться по Z (масштабирование картинки), и оффсет зависит от зума.


Сообщение отредактировал Alkosha - Среда, 24 Декабря 2014, 08:45
AlkoshaДата: Среда, 24 Декабря 2014, 20:23 | Сообщение # 130 | Тема: Хочу сделать игру типа гта!
участник
Сейчас нет на сайте
"хочу сделать игру типа [%videogame name%]"...

Любопытно, автору удалось таки?

Добавлено (24 декабря 2014, 20:23)
---------------------------------------------
Тож хочу сделать игру на подобии "варфейса","Скайрима", "Зомби-фермы", "танков-онлаин", "доты", "жта5", "тюряги ВКонтакте", "майнкрафта".

AlkoshaДата: Суббота, 27 Декабря 2014, 15:25 | Сообщение # 131 | Тема: "Отражения" SDL2.
участник
Сейчас нет на сайте
Цитата Snake174 ()
Можно в принципе ещё делать всё на чистом OpenGL, а SDL использовать только для создания окна и обработки ввода.


Про это я знаю. А я говорил про чистый SDL2.

Добавлено (24 декабря 2014, 11:51)
---------------------------------------------
Когда-то давно пытался настроить проект кодблокса на openGL+SDL, так ничего и не получилось. Раздельно openGL-проект и SDL-проект пашут, а в одном проекте - шляпа. С тех пор я и забил.

Добавлено (24 декабря 2014, 11:54)
---------------------------------------------
Цитата Snake174 ()
а SDL использовать только для создания окна и обработки ввода.


По сути, тот же glut можно использовать, не обязательно SDL

Добавлено (27 декабря 2014, 15:25)
---------------------------------------------
wink никак не могу расчитать оффсет при масштабировании.

Textarget - нормальное изображение, Textarget2 - отзеркаленное.

(cum - класс камеры)
Спрайты на textarget размещаются по X-cum.x, Y-cum.y

Код

        SDL_Rect dstrect;
        dstrect.w=800*cum.z;
        dstrect.h=600*cum.z;
        dstrect.x=400-400*cum.z;
        dstrect.y=300-300*cum.z;
        SDL_Point center;
        center.x=400;
        center.y=300;

        SDL_SetTextureBlendMode(texTarget,SDL_BLENDMODE_BLEND);
        SDL_SetTextureBlendMode(texTarget2,SDL_BLENDMODE_BLEND);

        SDL_SetRenderTarget(renderer, NULL);
        SDL_RenderCopyEx(renderer, texTarget, NULL, &dstrect, cum.angle,
        ¢er, SDL_FLIP_NONE); //БЭКГРАУНД (1-ый план)

    SDL_RenderCopyEx(renderer, texTarget2, NULL, &dstrect, cum.angle,
      ¢er, SDL_FLIP_NONE); // НОРМАЛЬНОЕ ИЗОБРАЖЕНИЕ (2-ой план)

        dstrect.y=-300*cum.z; // ВОТ ТУТА НАДО КАК-ТО РАСЧИТАТь ПОЗИЦИОНИРОВАНИЕ ТЕКСТУРЫ ПО Y

        SDL_SetTextureAlphaMod(texTarget2,100);
        SDL_RenderCopyEx(renderer, texTarget2, NULL, &dstrect, cum.angle,
        ¢er, SDL_FLIP_VERTICAL); // ОТРАЖЕНИЕ

        effects.shading();
        gui.display();
        dialog.display();
        SDL_RenderPresent(renderer);
        SDL_DestroyTexture(texTarget2);


Сообщение отредактировал Alkosha - Суббота, 27 Декабря 2014, 16:02
AlkoshaДата: Четверг, 01 Января 2015, 15:46 | Сообщение # 132 | Тема: Работы новичков
участник
Сейчас нет на сайте
Несколько дней назад приобрёл диджитайзер.
Пока вот такая мазня получается.



Набросал концепт-арт к "Металикс-Зоне"



AlkoshaДата: Суббота, 03 Января 2015, 01:21 | Сообщение # 133 | Тема: Нужны 2д художники и аниматоры
участник
Сейчас нет на сайте
Заманчиво. Но увы, мой скилл пока ещё слабоват. sad
AlkoshaДата: Воскресенье, 04 Января 2015, 19:51 | Сообщение # 134 | Тема: Нужны 2д художники и аниматоры
участник
Сейчас нет на сайте
Ну а само очертание "игры" хоть есть?

Цитата DEMON51 ()
, похожей на World Of Goo.


Ни разу не пробовал подобное рисовать. Да и не играл я в неё. Видел лишь скриншоты. Судя по всему, там векторно рисовалось всё. В corel draw, например.
AlkoshaДата: Воскресенье, 04 Января 2015, 23:44 | Сообщение # 135 | Тема: Нужны 2д художники и аниматоры
участник
Сейчас нет на сайте
Цитата Alter_Rhyme ()
Ну в прицепи вектор - гораздо легче растра.


Если собираешься нарисовать один лишь эллипс с градиентом, то да.

Но хотелось бы посмотреть, как ты бы повторил такое, например.
AlkoshaДата: Понедельник, 05 Января 2015, 16:19 | Сообщение # 136 | Тема: Работы новичков
участник
Сейчас нет на сайте
От концепта к пиксель-арту.


Добавлено (03 января 2015, 01:28)
---------------------------------------------
В память о моих преподавателях по электронике.


P.S.
я 1 минуту рисовал одной левой не судите строго



Добавлено (05 января 2015, 16:19)
---------------------------------------------
Снова Metalix Zone.





Сообщение отредактировал Alkosha - Понедельник, 05 Января 2015, 16:19
AlkoshaДата: Вторник, 06 Января 2015, 13:37 | Сообщение # 137 | Тема: Работы новичков
участник
Сейчас нет на сайте
фан-арт.


А это выжигал на ДВП, только тогда ещё калечный фотик был на телефоне (сфоткано на сименс ц75, хыыы).
AlkoshaДата: Среда, 07 Января 2015, 15:10 | Сообщение # 138 | Тема: Помогите рачитать оффсет отражённой текстуры.
участник
Сейчас нет на сайте
Вроде сперва не в тот раздел сунулся с данным вопросом. -> http://gcup.ru/forum/45-42481-1
Там относительно высокоуровневые движки обсуждаются. А я шаманю на SDL2.

Так вот, проблема в том, что не могу расчитать координаты отражённой текстуры.

Получается так, что при масштабировании отражения "съезжают"

Гиф-анимашка

Код
    SDL_Rect dstrect;
        dstrect.w=800*cum.z;
        dstrect.h=600*cum.z;
        dstrect.x=400-400*cum.z;
        dstrect.y=300-300*cum.z;
        SDL_Point center;
        center.x=400;
        center.y=300;

        SDL_SetTextureBlendMode(texTarget,SDL_BLENDMODE_BLEND);
        SDL_SetTextureBlendMode(texTarget2,SDL_BLENDMODE_BLEND);

        SDL_SetRenderTarget(renderer, NULL);
        SDL_RenderCopyEx(renderer, texTarget, NULL, &dstrect, cum.angle,
        ¢er, SDL_FLIP_NONE);

        SDL_RenderCopyEx(renderer, texTarget2, NULL, &dstrect, cum.angle,
        ¢er, SDL_FLIP_NONE);

        dstrect.y= dstrect.y+200-cum.y*2;
        dstrect.h/=2;

        SDL_SetTextureAlphaMod(texTarget2,100);
        SDL_RenderCopyEx(renderer, texTarget2, NULL, &dstrect, cum.angle,
        ¢er, SDL_FLIP_VERTICAL);


Где texTarget - бэграунд, texTarget2 = передний план, который выводится дважды, в нормальном и в зеркальном виде.
cum - класс камеры.
Вот тут нужно подобрать оффсет: dstrect.y= dstrect.y+200-cum.y*2;



И ещё.
dstrect.h/=2; - это плющит отражённую текстуру по вертикали вдвое.


Сообщение отредактировал Alkosha - Среда, 07 Января 2015, 15:21
AlkoshaДата: Среда, 07 Января 2015, 18:35 | Сообщение # 139 | Тема: Помогите рачитать оффсет отражённой текстуры.
участник
Сейчас нет на сайте
Цитата
dstrect.y = dstrect.y+dstrect.h*3/4; попробуй

Не. Всё равно чего-то не то.


Сообщение отредактировал Alkosha - Среда, 07 Января 2015, 18:35
AlkoshaДата: Среда, 07 Января 2015, 19:00 | Сообщение # 140 | Тема: Помогите рачитать оффсет отражённой текстуры.
участник
Сейчас нет на сайте
Для ясности картины, попытаюсь пояснить подробнее:

Есть текстурка texTarget2 размером на весь экран (800*600), на неё рендерятся спрайты с координатами x=x-cum.x и y=y-cum.y.
Эту же текстуру флиппаю по вертикали. Но так как "отражение" должно быть в той системе координат, к которой привязана камера, надо учитывать ещё смещение камеры по Y при выводе отражённой текстуры.

Приближение\удаление камеры происходит за счёт изменения размеров этого самого texTarget2.


Сообщение отредактировал Alkosha - Среда, 07 Января 2015, 19:01
Поиск:

Все права сохранены. GcUp.ru © 2008-2025 Рейтинг