forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   Самопальная физика. (http://forum.boolean.name/showthread.php?t=3549)

moka 07.06.2007 01:48

Самопальная физика.
 
Тут на днях с велеколепного BlitzEtc нарыл хорошую функцию, которую и искал: Пересекаются ли отрезок и окружность?

Значит, после махинаций над функцией, с моими функциями нахождений угла, и дистанций, модернизировал функцию, и что она теперь умеет:
1. Возвращает: Пересекаются ли?
2. Угол пересечения, от ближайшей точки к центру окружности.
3. Сила заступа.
4. И ещё другие значения.
Итого у нас есть основа для физики, основывающейся, на окружностях и линиях. Осталось сделать трение и отсок, и сочления окружностей, и это я сделал. Итого вышло, за 7,5 часов немного багованая, бесконечная игрулька, с транспортом, у которого 2 колеса, тело, и дополнительная точка, отвечающая за то что-бы сочления не бадялись как заблагоросудится (LineRider - хороший пример, когда у некоторых моделей выворачивались части). Так вот, ну и замутил, небольшую демо, начит на 2 начинаем, W - газуем, S - тормозим. A\D - наклоняем. Ну собственно и всё, если значит появились внезапно заного, то это вы разбились =).
Уровень генерируется постоянно, и абсолютно рандомно, и бесконечно.
Может быть и не линейный, а очень разнообразный уровень, это я так что-бы показать ;) .
Сорс правда забыл, но принесу обязательно! ;)

Вот дема.
Коментарии приветствуются :super:

HolyDel 07.06.2007 02:21

Re: Самопальная физика.
 
Цитата:

функцию, которую и искал: Пересекаются ли отрезок и окружность?
а в полезных функциях посмотреть не догадался?
онаж там лежит ужо месяца 4 (если не большн)

Пример классный! Респект.

impersonalis 07.06.2007 02:34

Re: Самопальная физика.
 
Шустро! Только, касаемо демы: почему модель периодически возвращается назад?

moka 07.06.2007 02:56

Re: Самопальная физика.
 
не назад, а сразу над машиной когда Разбился, тоесть есть условия, если нагрузка на калёса разная, то по задумке, колёса ломаются, тока я не все условия прописал, там баги ух как много. =) Да и кстать, эта машинка, и 4к линий, на моём компе держит стабильно.

HolyDel 07.06.2007 03:00

Re: Самопальная физика.
 
Цитата:

Только, касаемо демы: почему модель периодически возвращается назад?
ну там же написанно:
Цитата:

если значит появились внезапно заного, то это вы разбились =)

Matt Merkulov 07.06.2007 04:03

Re: Самопальная физика.
 
Вот, думаю, может пригодиться: http://uk.geocities.com/olivier_rebellion/Polycolly.zip
Это хорошо объясненный алгоритм детекции коллизии полигонов (на английском правда).

magpro 07.06.2007 09:29

Re: Самопальная физика.
 
УХТЫ РЕСПЕКТ. НЕ ПЛОХО.
Похвально даже очень. По времени с функцией долго мучался?

jimon 07.06.2007 13:37

Re: Самопальная физика.
 
прикольно чуствуется динамика "машинки" :) мне понравилось

johnk 07.06.2007 13:40

Re: Самопальная физика.
 
Мне тоже понравилось. МоКа говорил, что за 6 часов сделал.

ЛысыЙ_Чук-Иванчук 07.06.2007 14:19

Re: Самопальная физика.
 
Молодец сделано неплохо, учитывая сколько время потрачено!

moka 07.06.2007 19:56

Re: Самопальная физика.
 
Спасибо! Даже не думал что так классно вышло! ;)
Цитата:

По времени с функцией долго мучался?
На самом деле не мучался, а удовольствовался ;), где-то 2-3 часа её отрабатывал. А написал сперва за минут 20-30, ну думаю это неважно...
Просто эти 7 часов, я много творил, что и небыло в демке, нужно было же сделать отскок от линий, это оказалось не совсем просто, что-бы отскакивало корректно, в нужную сторону, да и по секрету: и щас не совсем правильно с точки зрения физики.
Сегодня сорс выложу. ;)

Raiter 08.06.2007 02:11

Re: Самопальная физика.
 
кульно! респект! даёш красивую графику!

devolonter 08.06.2007 03:24

Re: Самопальная физика.
 
Реально супер! За такой короткий срок!!! Так держать!!!

moka 09.06.2007 01:34

Re: Самопальная физика.
 
Ура!!! Наконец я поборол эти углы! Всё никак не мог сделать правельный отскок, проблема была в нахождении угла отскока, зная перпендикулярный угол линии (угол коллизии с линией) и угол перемещения, исходя из них я только смог узнать угол отскока. Угол=Угол_Коллизии+(Угол_Колизии-Угол_Скорости). Оказалось всё просто, но я спешил, хотел сделать побыстрее, и маялся всё не мог сообразить, потом сел так, продумал, какие у нас есть углы, чему должен быть равен угол отскока, ведь угол отскока, это в два раза больше чем угол между точкой соприкосновения, и двумя точками: центром окружности и точкой которая получается от угла коллизии. Всё на самом деле было проще чем мне казалось, вот и я сделал Правильные отскоки! Я рад за себя! :)

Ещё добавил совсем чуток графики – землю

Да и баг исправил, что транспорт, сам потихоньку ехал, и что иногда отскакивал (это было что я проверял на коллизию со всеми линиями, и если коллизились сразу 2 линии то от них отталкивал, поэтому и был такой вот артефакт. Теперь я проверяю на самую близкую точку коллизии, и только от неё отталкиваю)

Короче говоря, теперь отталкивается всё правильно, на трамплинах подлетает нормально. И если в огромном падении, аккуратно приземляется на склон, то не разбивается, т.к. теперь отскок правильный, и по физике он должен будет ускориться, тоесть скорость по Y начнёт переходить в скорость по X, когда спуск начнёт выравниваться, впрочем это всё за счёт правильного отскока :).

Выкладываю сорс как и обещал. (Только я ещё не успел там навести порядок ;) И разложить всё по полочкам :) )

Ой, забыл добавить, что разрешение поменяйте =) А то я там поставил 1280х960, поставте к примеру 800х600.


johnk 09.06.2007 03:41

Re: Самопальная физика.
 
За сорс Спасибо! :)

Raiter 09.06.2007 03:44

Re: Самопальная физика.
 
Дай ЕХЕ ;)

HolyDel 10.06.2007 01:26

Re: Самопальная физика.
 
Дай ЕХЕ.

alcoSHoLiK 10.06.2007 02:09

Re: Самопальная физика.
 
Вложений: 2
Ловите.

moka 11.06.2007 20:12

Re: Самопальная физика.
 
Исправил глупый баг, относительно выбора ближайшей линии, с которой производить коллизию, теперь пропали порой непонятные разломы машины, и разбиваться стало реже, и ездить стало лучше.
Вот нарисовал набросок машинки.
Сделал амортизаторы.
Колёса, крутятся по-моему очень реалистично, на самом деле это фэйк ;) Они не исходя физики крутятся, а из определённых условий.
Немого отконфигурировал положения тел, для большей динамичности.
Добавил Партиклы, и прикрепил источники к машинке, теперь гонять стало намного эффектнее, с рёвом плазмы задних трубок, и пыли из под колёс. :)
Сделал подобие радара.
Начал работать с оружием, но решил не делать всякой стрельбы.

Вот у меня есть вопрос: Как я понял в старых версиях была команда, что-то типо: FlushMem – которая отчищала оперативку, и удаляла неиспользуемые объекты (так?), так вот, но у меня её нету :( И поэтому если добавляю пули, и удаляю их (Как и в первом сорсе я удаляю линии, тоесть в списке, делаю remove), так вот как я понял они только удаляются из списка, но не из памяти, а мне надо из памяти, как это сделать? Пробовал Delete что-то ругается, по разному пробовал, и не катит :(.

Вот очередная дема (EXE). :)
И скриншотик ;):

Raiter 11.06.2007 20:31

Re: Самопальная физика.
 
Мега круто! Мне очень понравилось! Супер! Даже не смотря на однообразность, геймплей затягивает! Сделай ешо препятствия всякие, тамплины и т.д. и добавь жизни. Смысл игры - проехать карту как можно скорее и не разбиццо. имхо будет прикольно. На мобильнике была подобная игра, только там мотоцыкл :)

кстать самый реальный способ не разбццо в твоей игре - падать пузом кверху, крышей вниз :) так выживаеш, падая с любой высоты

devolonter 12.06.2007 00:44

Re: Самопальная физика.
 
2Moka Попробуй поставить ссылку на объект Null (но это скорее всего не поможет) Delete как написано в хелпе зарезервирован для каких-то целей (пока наверное не придумали для каких :)) А флушмем еще с 1.14 ушла куда-то... :(

alcoSHoLiK 12.06.2007 00:50

Re: Самопальная физика.
 

moka 15.06.2007 03:15

Re: Самопальная физика.
 
Народ! Я бы хотел узнать ваши предложения, чтобы вы хотели добавить в "игру"! И опишите это! А я постараюсь добавить! :)

Да и с проблеммой утечки памяти всё решил, но где-то утечка всёравно есть =( И немогу понять где. Просто ставлю на 15 минут на месте машинку, и потом Такие лаги будут, притом возрастают.

alcoSHoLiK 15.06.2007 12:03

Re: Самопальная физика.
 
Попробуй вместо PNG другой формат использовать.

HolyDel 15.06.2007 13:16

Re: Самопальная физика.
 
Мое мнение ты уже слышал, но скажу еще раз - таймер, ну и кто дальше проедет.

SBJoker 15.06.2007 13:25

Re: Самопальная физика.
 
Цитата:

Сообщение от devolonter
2Moka Попробуй поставить ссылку на объект Null (но это скорее всего не поможет) Delete как написано в хелпе зарезервирован для каких-то целей (пока наверное не придумали для каких :)) А флушмем еще с 1.14 ушла куда-то... :(

Мдя ну и каша у вас в голове :)

0. приравнивание к Null освобождает память занимаемую переменной (если только эта одна переменная ссылается на эту память)
1. Delete - стандартный деструктор, этот метод по умолчанию уничтожает данные объекта в памяти (сложно структурированные данные неумеет уничтожать)
2. Можно писать свой метод Delete и уничтожать данные как вам удобнее и правильнее.
3. В любом случае ваш или стандартный деструктор Delete объекта вызывается автоматически при присваивании переменной Null.
4. Утечки памяти в 99% случаев по вине программиста и менее 1% по вине софта на которм он пишет.
5. FlushMem переименована в GCollect()

Пока всё...

jimon 15.06.2007 14:02

Re: Самопальная физика.
 

SBJoker
исходя из моих знаний C++ то
Image:TImage ето обьект
и при Image = loadblablabla("yo") ето копирование обьекта
(создается новая копия)

но если Image просто переменная, то при Image = loadblablabla("yo")
то передается указатель

при втором случае понято что память сама не очистится
но при первом она сама очищается ?
или нужно тоже удалять обьект ?

как его удалять ? :) Image.Remove(Image) ? :)

ps. нубские вопросы, потому что ооп к которому я привык тут не особо явно показано

или Image:TImage ето указатель с типом TImage ?

SBJoker 15.06.2007 16:42

Re: Самопальная физика.
 
Для тех кто в танке поясняю, пока все ссылки на объект не станут null объект будет жив...как тока на объект неуказывает ни одной сцылки он удаляется из памяти.

johnk 16.06.2007 15:19

Про игру я уже тебе в асе сказал. (динамическое окружение и т.п.)
Насчет утечки, тут посложнее. Для начала попробуй запустить GCCollect() в цикле. Если не поможет, то у меня есть некоторые подозрения на партиклы от игрока, террайн и на загрузку ресурсов, посмотри все внимательно, особенно флаги у изображений, обрати внимание на blend mode. Вполне может быть, что паразит спрятался в алгоритме притяжения к земли.

ЗЫ. МоКа, по проге видно, что у тебя версия блиц макса <= 1.14, это не есть хорошо.

moka 16.06.2007 18:39

Re: Самопальная физика.
 
Версия как раз 1.22 (вроде :) )
Насчёт приравнивания к Нулл, тут блин, частично сделал, а частично нет, т.к. гдето утечки, чтож теперь ясно, что за отчисткой нужно самому следить.

Вот очередной маленький упдэйт, теперь уровень не бесконечный, и генерируется в самом начале, и есть время и скорость (Спасибо HolyDel). Едим, смотрим и постим ваши лучшие результаты. :) Мой 749\с ;)

HolyDel 17.06.2007 01:56

Re: Самопальная физика.
 
1:27
594\c

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

moka 17.06.2007 16:26

Re: Самопальная физика.
 
О! Спасибо, думаю это в точку! Хм, может и добавить хотябы 2-3 жизни, а насчёт бонусов, угу, думаю самое то!

*Поехал домой кодить ;)*

jimon 17.06.2007 17:44

Re: Самопальная физика.
 
память в проге течет :)

H@NON 22.06.2007 16:32

1.13
644/c

На счет геймплея: думаю надо сделать два режима - на время и на проходимость, т е если весь уровень прошел то зачет, если нет, то на начало.
Очень понравилось. Продолжай дальше.
ЗЫ: Думаю еще чуток и можно переезжать в раздел - "на этапе разработки". Жду следующую демку.

Найден баг: при приземлении я умудрился не разбиться. Я приземлился на переднее колесо и подпрыгнул снова, после чего у меня жутко выгнулась подвеска, при этом я в полете сделал переворот на 180 град., т е как бы колесами вверх. В этот момент у меня колеса перенеслись с верха вниз и после этого я мог ехать на крыше.

/*edited*/
Снова тот же баг не дает мне ехать нормально, только на этот раз даже не пришлось переворачиваться. Подвеска, после отскока моей тачки от земли, вытянулась и пошла назад, а уже когда снова я приземлился на землю подвеска отскочила и перешла на крышу. Лекарство: сделать предел длины подвески, или сделать так чтоб она не крутилась а только вверх/вниз и все.

1.5
750/с

А что Мока сдесь больше не появляется?

ZanoZa 25.06.2007 14:20

Re: Самопальная физика.
 
у него дома инета нету так что выходит сюда он не так часто.

moka 26.06.2007 01:16

Re: Самопальная физика.
 
H@NON Спасибо большое! Да сорри, я не часто могу выйти в интернет ;).
Угу этот баг я знаю =) Лекарство по идее не сложное, там просто проверка на градусы тела машинки и градус между двух колёс если разница больше 90 градусов то ломать машинку.
Дема будет скоро новая, угу так и расчитывал: 2 режима :)
Цитата:

750/с
Ого, неплохо :)

johnk 28.06.2007 20:00

Re: Самопальная физика.
 
в игре Time Left - Это же вроде Времени осталось? Так почему же там отсчет идет? а не стремится время к 0?

moka 24.01.2008 16:57

Ответ: Самопальная физика.
 
Вот тут попросили найти, искал, все ссылки полетели, попросил H@NON'а, он поискал у себя и я нашёл, за что ему огромное пасипа!
Вот ссыль. Там exe и сорсик, только более ранний, у меня тогда полетел жёсткий.


Часовой пояс GMT +4, время: 14:40.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot