Вторник, 16 Апреля 2024, 08:19

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Форум игроделов » Записи участника » Renus [113]
Результаты поиска
RenusДата: Среда, 01 Октября 2014, 16:53 | Сообщение # 21 | Тема: Физическая симуляция механики(автомобиля)
почетный гость
Сейчас нет на сайте
allods, wheel collider плоский а катки могут быть широкими, да и он какой то громоздкий честно говоря и порой тоже не адекватно работает. может конечно я чего не знаю или примеры тугие попадались...

Добавлено (01.10.2014, 16:53)
---------------------------------------------
Кстати еще, заметил такую особенность, что качество сцепки объектов(подверженность соединения деформации) зависит от массы присоединяемых обьектов dry
Поясню, есть телега массой 1300 к ней я присоединяю четыре колеса по 25, при падении с высоты колеса немного прижимает вверх, через секунду конструкция восстанавливается, но если я уменьшаю вес колес до 5, то при падении их вжимает гораздо дальше и при движении вся конструкция трясется...
Как может влиять вес колес(присоединенных Hinge Joint) на силу сцепки их с телегой?!!!! wink wink wink

RenusДата: Среда, 01 Октября 2014, 15:09 | Сообщение # 22 | Тема: Физическая симуляция механики(автомобиля)
почетный гость
Сейчас нет на сайте
Подскажите как реализовать осевое соединение с помощью физики, нужно сделать катки или колеса у механизма. Пробовал Hinge Joint, но не смотря на то что указываю только одну ось при взаимодействии с другими объектами колесо все равно выгибает на угол ((( а нужно его закрепить жёстко на одной оси!
Помогите пожалуйста...


Сообщение отредактировал Renus - Воскресенье, 05 Октября 2014, 20:47
RenusДата: Понедельник, 25 Августа 2014, 23:17 | Сообщение # 23 | Тема: [2D] Paper Tower Defence
почетный гость
Сейчас нет на сайте
Вот гад!))
Отключи защиту от фишинга и вредоносного ПО, он все туда зпихивает...
http://webznam.ru/publ....-1-0-64
RenusДата: Понедельник, 25 Августа 2014, 17:08 | Сообщение # 24 | Тема: [2D] Paper Tower Defence
почетный гость
Сейчас нет на сайте
Cre-game, согласен, думаю использовать 2 цвета ручки и карандаш))
Но на данный момент задача графики не стоит, щас пилится чисто механика.
Кстати, залил новую демку...

Добавлено (25.08.2014, 17:08)
---------------------------------------------
Новая версия 0.05, смотрим))

RenusДата: Пятница, 22 Августа 2014, 16:34 | Сообщение # 25 | Тема: Интерфейс и нажатие конопок
почетный гость
Сейчас нет на сайте
Да, встал сегодня со свежей головой и проблема решилась за пару часов))
XDominator, на сколько я знаю глобальные клики обрабатываются после кликов по объекту, поэтому так проверять не получиться...

Решил не делать глобальный маус контроллер, а просто повставлять код в нужные объекты, используя родительские пустышки, вообще довольно удобно что есть хоть какое то подобие ООП, хотя отсутствие возможности создавать методы обьектам, очень сильно напрягает.
Вот код на клик в родительском обьекте для которого вылазит меню:
RenusДата: Четверг, 21 Августа 2014, 20:57 | Сообщение # 26 | Тема: Интерфейс и нажатие конопок
почетный гость
Сейчас нет на сайте
Добрый вечер комрады.
Столкнулся с такой сложностью, есть игровые объекты строения, юниты там разные, не важно, при нажатии на них выскакивает их меню с кнопками улучшения, продажи и т.д. Менюшка и кнопки рисуются чуть выше объекта, но если под кнопкой оказался другой объект, другой юнит к примеру, то при нажатии начинаются вакханалии, срабатывает и кнопка и переключение на другой обьект и запуск его меню и т.д...
Как сделать что бы нажимались только кнопки? Верхний слой так сказать, что бы в пределах меню не срабатывали нажатия на другие объекты?

Можно писать код для каждого объекта что бы если какое то меню есть то нажатия на него не работали или сделать маус контроллер, который сам определять на что было нажато в какой зоне и т.д. Мне кажется такая проблема выскакивает при написании любых стратегий, рпг и т.п.
Подскажите как решить... спс.
RenusДата: Воскресенье, 17 Августа 2014, 13:16 | Сообщение # 27 | Тема: [2D] Paper Tower Defence
почетный гость
Сейчас нет на сайте
Название игры: Paper Tower Defence
Жанр игры: tower defence
Инструменты: GameMaker: Studio, Flash CS6
Пространство: 2D
Вид: сверху
Платформа: пока что только Windows
Тип лицензии: смотря что получиться...
Состав команды: только я

Описание: Классический TD, с той лишь особенность что все происходит на тетрадном листике, хотелось бы реализовать именно рисованную графику времен школьных учебников biggrin Естественно будет достаточный набор башен со своими особенностями и апгрейдами, большая вариация врагов, волн и карт. На данный момент прописывается базовая механика игры, потом будет расширяться остальной функционал.
Хотелось пораньше сюда выложить что бы сразу получать советы и выявлять ошибки happy
В идеале, по мере развития понадобиться дизайнер/художник.

Скриншоты:


Лог разрботки:


Демка.
Paper Tower Defense v.0.05.exe

Заменил скриншоты, прошу вашу критику biggrin


Сообщение отредактировал Renus - Четверг, 28 Августа 2014, 12:47
RenusДата: Понедельник, 11 Августа 2014, 13:43 | Сообщение # 28 | Тема: Физика взрыва Box2D
почетный гость
Сейчас нет на сайте
Raven84, да я думал о таком варианте, но мне он показался не реалистичным, ваши видео я посмотрел, у вас все симпатично получилось, мне понравилось))) Тем более как я понял это игра на мобильное устройство, там производительность превыше всего... biggrin

Я думал-думал, перебирал варианты и таки написал что то годное и более менее оптимизированное(хотя я знаю как еще, но пока лень), как по мне все весьма реалистично(единственное в реале ударная волна угасает кубически от расстояния, а у меня квадратически, так как то симпатичнее). На моем ноуте подтармаживает когда начинаешь все взрывать, падает на 5 фпс, на стационарном думаю все норм будет.

Вот екзешник: http://rghost.ru/57407126
Кому интересно и не влом, посмотрите)

А вот код снаряда:
В Create:
Код
phy_bullet = true;      //Режим физической пули
P = 50;                 //Сила взрыва
Imin = 0.5              //Минимальный импульс ударной волны, до которого считать          

//Параметры траектории
direction = point_direction(xstart, ystart, mouse_x, mouse_y);
phy_rotation = -1*direction;
physics_apply_local_impulse(0, 0, 10, 0);


В столкновении:
Код
distmax = P / Imin;        //Максимальный радиус расчета взрыва

//Перебираем объекты
with (dynamic_obj)
{    
     //Проверяем на попадние в зону взрыва
     if rectangle_in_circle(bbox_left, bbox_top, bbox_right, bbox_bottom, other.x, other.y, other.distmax) > 0
     {
         //Перебираем линии
         ang0 = point_direction(other.x, other.y, x, y);  //устанавливаем угол на объект
         ang = ang0;
         cw_flag = false;
         acw_flag = false;
          
         while (!cw_flag || !acw_flag)
         {
             collision = false;
              
             //Определяем точку попадания
             for(dist = 1; dist <= other.distmax; dist += 2)
             {
                 xcol = other.x + lengthdir_x(dist, ang);
                 ycol = other.y + lengthdir_y(dist, ang);
                      
                 if collision_point(xcol, ycol, id, true, false)
                 {
                     I = other.P / dist;
                     xI = lengthdir_x(I, ang);
                     yI = lengthdir_y(I, ang);
                     collision = true;
                      
                     physics_apply_impulse(xcol, ycol, xI, yI);
                     //effect_create_above(ef_spark, xcol, ycol, 0, c_yellow); //светим попадание
                     break;
                 }
             }
             if(collision)
             {
                 if(!cw_flag) {ang -= 1;}
                 else {ang += 1;}
             }
             else
             {
                 if(!cw_flag)
                 {
                     cw_flag = true;
                     ang = ang0 + 1;
                 }
                 else {acw_flag = true;}
             }     
         }
     }
}

effect_create_above(ef_explosion, x, y, 0, c_white);
audio_play_sound(snd_boom1, 1, 0);
instance_destroy();
RenusДата: Понедельник, 04 Августа 2014, 22:47 | Сообщение # 29 | Тема: Физика взрыва Box2D
почетный гость
Сейчас нет на сайте
OpenGOO, Вы не правы)))
Трение есть, я его сам написал, потому как Box2D не порадовал меня такой функций, он может только ящики об ящики "тереть" )))
А дампинги этот совсем другое, это как написано в мануале - сопротивление среды, а сила сопротивления среды зависит от скорости движения объекта(как в аэродинамике). Сила трения скольжения же не зависит скорости, она постоянна, как и ее момент при вращении...

Пришлось взяться за этот вопрос самому, физика, двойные интегралы и форумы для ботанов мне помогли biggrin
Вот как я моделирую трение объектов об плоскость(при учете что правильно соблюден масштаб пикселей к метрам, для реальных сил).
В Create:
Код
//Константы
fric = 0.4;             //коэффициент трения скольжения
g = 9.8                 //ускорение свободного падения

d = 0.8;                //диаметр эквивалентного круга


В step:
Код
if(!phy_sleeping)   //Только если не спит!
{
     //Сила трения скольжения
     Ff = fric * phy_mass * g;
     direction = point_direction(phy_position_x, phy_position_y, phy_position_xprevious, phy_position_yprevious);
     xFf = lengthdir_x(Ff, direction);
     yFf = lengthdir_y(Ff, direction);
      
     if (phy_speed_ms(phy_speed) > (Ff / phy_mass) / 60)
     {
         physics_apply_force(x, y, xFf, yFf);
     }
     else
     {
         phy_speed_x = 0;
         phy_speed_y = 0;
     }
      
     //Момент трения вращения
     s = (pi * power(d, 2))/4;               //площадь эквивалентного круга
     q = (phy_mass * g) / s;                 //давление на опору(для круга)
     Mf = (pi/12) * q * fric * power(d, 3);
      
     if (abs(phy_angular_velocity) > radtodeg((Mf / phy_inertia) / 60))
     {
         physics_apply_torque(sign(phy_angular_velocity) * -Mf);
     }
     else
     {
         phy_angular_velocity = 0;
     }
}


Как по мне гораздо реалистичней чем с родными дампингами...

А про коэффициент трения вы правильно заметили, у меня стоит 0.4 а для дерева по бетону обычно берут 0.6, поэтому они так и катаются легко.
И кстати я почти сделал предварительный вариант правильного физического взрыва, но пока что он сильно грузит пой проц на ноуте, буду оптимизировать, потом выложу)))
RenusДата: Воскресенье, 03 Августа 2014, 23:52 | Сообщение # 30 | Тема: Физика взрыва Box2D
почетный гость
Сейчас нет на сайте
OpenGOO, скачайте демку постреляйте, посмотрите, там есть визуальный эффект, мне не нравиться как разлетаются ящики...(
От этого же зависит динамика игры как никак.
RenusДата: Воскресенье, 03 Августа 2014, 21:13 | Сообщение # 31 | Тема: Физика взрыва Box2D
почетный гость
Сейчас нет на сайте
Постепенно прорабатывая макет TDS пришел к вопросу как физически правильно и красиво реализовать взрывы(эффект ударной волны), на данный момент работает упрощенная модель она толкает объекты от точки взрыва, но сила прикладывается к центру масс, следовательно вращения не происходит, ящики летят как то статично и уныло(((
Вот екзешник, погоняйте, посмотрите: http://rghost.ru/57250224
ракета правой кнопкой, добавить ящики - пробел.

Вернемся к нашим баранам))
Вот наглядная ситуация:


Сила ударной волны угасает с расстоянием, следовательно давление на объект в точке А будет больше чем в точке Б, а значит объект приобретет вращение по часовой стрелке. Ну и если совсем уже придираться то ударная волна имеет скорость распространения, а значит и к точке А она придет быстрее, из чего опять следует что объект будет вращаться...
Вот как то это все и надо грамотно организовать, иначе зачем игре физика если нет взрывов? biggrin biggrin biggrin

У меня есть один вариант решения, его я выложу позже, боюсь что он будет хорошо грузить ЦП... Ваши мнения господа, кто уже с таим сталкивался и как решил, прошу помощи... С уважением. happy
RenusДата: Суббота, 02 Августа 2014, 13:50 | Сообщение # 32 | Тема: Game Maker Физика
почетный гость
Сейчас нет на сайте
rid32, я щас активно копаю физику, и на сколько я знаю Raven84, абсолютно прав, вогнутые формы box2d не поддерживает...
А значит единственный способ засунуть один объект в другой, это сделать внешний объект составным из нескольких простых.
RenusДата: Пятница, 11 Июля 2014, 16:18 | Сообщение # 33 | Тема: Физика, реалистичное трение об пол в TDS
почетный гость
Сейчас нет на сайте
Anthem, как его использовать? менять силу в зависимости от поверхности?
Упрощенно можно использовать Linear Damping, менять его значения на разной поверхности. Но Linear Damping это сопротивление среды движению, то есть оно зависит от скорости объекта(чем быстрее движение, тем больше сопротивление, как аэродинамическое сопротивление).
А реальное трение скольжения не зависит от скорости Fтр=kN=kmg, я его прооделировал так, в step:
Код
N = phy_mass * 9.8;
F = 0.5 * N;
direction = point_direction(phy_position_x, phy_position_y, phy_position_xprevious, phy_position_yprevious);
xF = lengthdir_x(F, direction);
yF = lengthdir_y(F, direction);

if (phy_speed_ms(phy_speed)>0)
{
     physics_apply_force(x, y, xF, yF);
}


Но я все равно не могу промоделировать трение на вращение объекта wacko
Да, и скажите в чем разница между переменными x, xprevious и phy_position_x, phy_position_xprevious ???
RenusДата: Четверг, 10 Июля 2014, 23:51 | Сообщение # 34 | Тема: Физика, реалистичное трение об пол в TDS
почетный гость
Сейчас нет на сайте
Доброго времени суток товарищи!
Решил сделать TDS и возник не тривиальный вопрос: как реализовать реалистичное трение об пол(скорее всего тайловый, неважно) всевозможных объектов. Взаимодействие объектов между собой реализуется родной физикой Box2D, а она работает в одном измерении и наложить один объект на другой нельзя((
Нормально использовать Linear Damping не получается, если ставить его больше определенного значения(около 56-58), то объект резко перестает реагировать на приложенные к не нему силы и импульсы(physics_apply_impulse...), однако игроком я его потолкать могу, но объект недостаточно тормозиться и дальнейшее увеличение Linear Damping ничего не меняет(видимо этот параметр не эквивалент трения, а какой то ограничитель скорости, как то так...).
Вообщем задача не простая и может показаться не понятной на первый взгляд. Хочется моделировать поверхности: земля, лед, песок и т.д.
Если кто подскажет как буду очень благодарен!)))
Вот екзеник и проект для просмотра:
exe - http://rghost.ru/56830231
gmx.zip - http://rghost.ru/56830296



Сообщение отредактировал Renus - Пятница, 11 Июля 2014, 00:03
RenusДата: Вторник, 06 Мая 2014, 09:04 | Сообщение # 35 | Тема: GLUT! использование методов класса для CALLBACK функций
почетный гость
Сейчас нет на сайте
Доброй пятницы друзья)
Решил осваивать OpenGL понемножку, и GLUT соответственно, и вот наткнулся на проблему.
GLUT использует функции обратного вызова(так называемые CALLBACK-и), для обработки различных событий в основном для средств ввода информации(клавиатура, мышка и т.д.)

Так вот когда я вставляю в них обычные глобальные функции, все работает отлично:
glutMotionFunc(MouseMove);

А когда хочу передать управление методу класса, который по моей задумке должен обрабатывать средства ввода, то выдает ошибку при компиляции:
glutMotionFunc(IOS.MouseMove);

Ошибка:
[Error] cannot convert 'IOS::MouseMove' from type 'void (IOS::)(int, int)' to type 'void (__attribute__((__cdecl__)) *)(int, int)'

Подскажите в чем проблема и как исправить, спасибо.

Добавлено (06.05.2014, 09:04)
---------------------------------------------
В общем проблему решил, кому интересно, может поможет.

Метод класса объявил как статичный:
static void MouseMove(int, int);

Но, поскольку статичные методы не работают с не статичными переменными-членами, то доступ к ним осуществляю через глобальный указатель на объект.
void IOS::MouseMove(int x, int y)
{
pIOS->MOUSE_X = x;
pIOS->MOUSE_Y = y;
}

RenusДата: Пятница, 05 Ноября 2010, 16:09 | Сообщение # 36 | Тема: Проблема с производным классом
почетный гость
Сейчас нет на сайте
Ну для этого проекта оставим так, он все таки первый...
А вообще virtual у меня используется очень даже сильно, собсно у каждого объекта есть функции Process и Render которые виртуальные и у имеют свою реализацию для каждого класса...
RenusДата: Пятница, 05 Ноября 2010, 11:35 | Сообщение # 37 | Тема: Проблема с производным классом
почетный гость
Сейчас нет на сайте
О! Заработало!!!!
Спасибо ребят, даю плюс в репы)))
НА выходных постараюсь выложить новую версию своей игрушки, а через недельку возможно версию для тестов, так заходите и смотрите)
RenusДата: Пятница, 05 Ноября 2010, 01:27 | Сообщение # 38 | Тема: Проблема с производным классом
почетный гость
Сейчас нет на сайте
Да не хочет, выдает ошибку, пишет что damage не является членом "CObject"
По моему с указателями так нельзя...

Добавлено (05.11.2010, 01:27)
---------------------------------------------
Если решать вопрос таким способом, то нужно каким либо способом привести указатель к типу CBullet*, или получить его где нибудь...
Ну, что то моих познаний тут не хватает(((

RenusДата: Четверг, 04 Ноября 2010, 19:24 | Сообщение # 39 | Тема: Проблема с производным классом
почетный гость
Сейчас нет на сайте
Ну а как нормально получить указатель на объект производного класса, имея указатель только на его базовую часть...?
Возможно у меня не правильна сама архитектура игрового цикла, если возникаю такие проблемы?)))
И самое интересное что нигде подобной информации не найдешь, а все молчат, как будто это вселенская тайна wink
Нет что бы какой то хороший человек сказал: "Я делаю так и так..."

P. S. Пожалуйста, прошу всех игроделов-программистов, расскажите как вы храните игровые объекты и осуществляете взаимодействия между ними!!!

Добавлено (04.11.2010, 19:24)
---------------------------------------------
Ну вот, и все молчат...

RenusДата: Среда, 03 Ноября 2010, 16:41 | Сообщение # 40 | Тема: Проблема с производным классом
почетный гость
Сейчас нет на сайте
В таком случае будет легче вынести все параметры объектов куда нибудь, и получать их через параметр базового класса.
К примеру дать базовому классу переменную type, и определять ее в конструкторе при создании объектов, а через функции получать доступ к всяким параметрам...
Опять навалил непонятно чего)))
Интересно просто как люди делают, неужели нет более изящного подхода...?

Добавлено (03.11.2010, 16:41)
---------------------------------------------
Можно еще правда разделить списки, сделать отдельно для всех типов объектов и обрабатывать их по очереди, тогда будет не посредственный доступ ко всем параметрам производных классов...

Жду предложений)))

Форум игроделов » Записи участника » Renus [113]
  • Страница 2 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск:

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