Четверг, 14 Ноября 2024, 11:31

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
ROTM.{2D Racing}
AmriДата: Вторник, 19 Марта 2013, 19:34 | Сообщение # 61
Auriss IGD
Сейчас нет на сайте
Undead, хотел, но надумал, что свое лучше. Ох, лол мне и facepalm ибо я и правда
Цитата (Undead)
всё полностью сам писать собрался

только хардкор happy

Добавлено (19.03.2013, 02:40)
---------------------------------------------
Ну кто смотрел, отпишитесь пожалуйста

Добавлено (19.03.2013, 19:34)
---------------------------------------------
Я понял, что я придурок. Почему:
как обычно, пошел самым сложным путем

А ведь можно проще. Просто сделать прямоугольники на поворотах. Ох facepalm


Сообщение отредактировал Amri - Вторник, 19 Марта 2013, 19:35
TimKruzДата: Вторник, 19 Марта 2013, 21:08 | Сообщение # 62
старожил
Сейчас нет на сайте
Цитата (Amri)
А ведь можно проще. Просто сделать прямоугольники на поворотах. Ох

Я так понял, ты всё ещё с коллизиями не разобрался? Могу подкинуть алгоритм для лёгкого определения столкновений между 2D-многоугольниками любой формы. Вообще, можно и с кривыми работать, но мне это не нужно было, так что я в этом не разбирался.

Собственно, вот тут описание алгоритма определения пересечения двух отрезков на плоскости. Его нужно загнать в отдельную функцию (например, ab_cd), которая выдаёт true если есть пересечение, и false - если нет (плюс точку пересечения, если вдруг понадобится, но для простых столкновений не обязательно). Далее, нам потребуется описание многоугольников (полигонов, назовём их модели коллизий), между которыми нужно определить пересечение/столкновение. Короче, массив координат вершин, ничего сложного. У героя (автомобиля) это будет прямоугольник, у окружения (трассы) - произвольный многоугольник. Для определения пересечения придётся пробежаться по массивам вершин с нашей функцией ab_cd, примерно так: берём первую грань модели игрока, сравниваем её со всеми гранями целевой модели (трассы, например, или другого автомобиля), если вдруг выдаётся true - выходим и делаем действия, либо продолжаем для всех граней модели игрока, потом повторяем для каждой модели на сцене/карте (для оптимизации можно сравнивать примерные расстояния между некоторыми объектами, и проверять только на маленьком расстоянии, но у тебя объектов мало и это будет лишним). В конце концов, если обнаружили столкновение, проверяем состояние машинки игрока (скорость, направление, и т.п.) и изменяем соответственно...

Цитата (Amri)
Ну кто смотрел, отпишитесь пожалуйста

А что ты хочешь услышать? Игра запускается, машинка катается, передачи переключаются. До гоночной игры ещё далеко.
Может быть, сделаешь выбор в меню курсором? А то непривычно стрелочками. biggrin


AmriДата: Вторник, 19 Марта 2013, 22:25 | Сообщение # 63
Auriss IGD
Сейчас нет на сайте
TimKruz,
Цитата (TimKruz)
машинка катается, передачи переключаются.

стоит маленько подождать. Когда синяя машинка пойдет на второй круг.
Цитата (TimKruz)
А что ты хочешь услышать

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

спасибо большое smile попробую. А по стандарту в хна столкновения формируются проверкой пересечения ограничивающих прямоугольников. Как то
Код
if (bbcar.Intersects(bbcar2))
                  {
                  st = 2;
                  }

bbcar - это ограничивающий прямоугольник зелёной машинки. bbcar2 - огр. прям. синей машинки. Intersects - функция проверки пересечений, стандартная. в принципе, вот и весь механизм.

Цитата (TimKruz)
Может быть, сделаешь выбор в меню курсором? А то непривычно стрелочками.

Здравое замечание biggrin сделаю cool

Добавлено (19.03.2013, 22:25)
---------------------------------------------
И еще одно дополнение, но уже насчет скорости разработки (чё так медленно?!11): времени на все не хватает (весна пришла :( ), да и просто настроения нет.


Сообщение отредактировал Amri - Вторник, 19 Марта 2013, 22:31
TimKruzДата: Вторник, 19 Марта 2013, 23:04 | Сообщение # 64
старожил
Сейчас нет на сайте
Цитата (Amri)
стоит маленько подождать. Когда синяя машинка пойдет на второй круг.

Да. На втором круге она фигово начинает путь искать, болтается туда-сюда. Но до конца второго так и не доходит, сворачивает примерно на середине левого вертикального отрезка пути направо, в газон, после чего экран мигает синим и машинка пропадает. Зелёной машинкой можно кататься дальше.
Цитата (Amri)
на разных машинах с разными выпусками окошек

Windows 8 Pro WMC x64. Полёт нормальный.
Цитата (Amri)
Intersects - функция проверки пересечений

Может быть, там есть какие-то другие функции? Или возможность задать непрямоугольную форму модели коллизий.
Могу часть своего кода (Pascal/Delphi) показать, правда, там всё запутанно и я сам там уже давно запутался. wacko
Я там использую классы, но коряво алгоритм инкапсулировал, надо бы переписать...
Цитата (Amri)
Здравое замечание biggrin сделаю cool

И ещё задний ход сделай. С учётом столкновений придётся иногда отъезжать назад.


AmriДата: Вторник, 19 Марта 2013, 23:38 | Сообщение # 65
Auriss IGD
Сейчас нет на сайте
Цитата (TimKruz)
Да. На втором круге она фигово начинает путь искать, болтается туда-сюда. Но до конца второго так и не доходит, сворачивает примерно на середине левого вертикального отрезка пути направо, в газон, после чего экран мигает синим и машинка пропадает.

"Большой взрыв", продукт небольшого недовольства (задолбало biggrin )
Цитата (TimKruz)
Windows 8 Pro WMC x64. Полёт нормальный.

это радует, ибо у мну Windows 7 Home Basic x32
Цитата (TimKruz)
Может быть, там есть какие-то другие функции? Или возможность задать непрямоугольную форму модели коллизий.

вроде, форма задается при создании прямоугольника, ибо интерсетс - это только проверка.
Там есть три типа ограничивающих линий :
BoundindBox - прямоугольник, но он трехмерный, точнее они все трехмерные
BoundingSphere - по идее это сфера, но применить не получилось, ибо требует тело (хз)
BoundingFrustum - какая-то фигня, вот что в справке пишут


Цитата (TimKruz)
Могу часть своего кода (Pascal/Delphi) показать, правда, там всё запутанно и я сам там уже давно запутался.

думаю, не разберусь. Не знаю их, даже не видел sad

Цитата (TimKruz)
И ещё задний ход сделай. С учётом столкновений придётся иногда отъезжать назад.

сделаю. Раньше не получалось, но появилась одна мыслишка, надо проверить.

Добавлено (19.03.2013, 23:38)
---------------------------------------------


Сообщение отредактировал Amri - Вторник, 19 Марта 2013, 23:47
UndeadДата: Четверг, 21 Марта 2013, 12:05 | Сообщение # 66
NeoAxis User
Сейчас нет на сайте
Цитата (Amri)
BoundingFrustum

Это же пирамида усечённая.
У тебя все колизии по боксам считаются? Лучше бы после колизии с боксом дополнительно попиксельные считать.
Примеров и туторов море :)

Добавлено (21.03.2013, 12:05)
---------------------------------------------

Цитата (Amri)
Наверно, я в коде прострелил себе не только ногу, но и глаз.

biggrin
Отложить реализацию новых фишек и рефакторить.


Вcем зла.
AmriДата: Пятница, 22 Марта 2013, 21:58 | Сообщение # 67
Auriss IGD
Сейчас нет на сайте
Благодарю smile новые фишки я еще не ввожу. Принцип такой - сначала все основное, а фишки потом. Попробую и попиксельные. Отпишусь и покажу, что получится. Сегодня не могу попробовать, ибо на работе

Добавлено (22.03.2013, 21:58)
---------------------------------------------
Делал сегодня задний ход, и каким-то трансцендентальным способом получил ускорение. Походу ускорение было из-за того, что все считалось через отрицательные числа. Сейчас уже все нормально. Вроде, ускорения не заметно. А то получилось что задняя скорость выше, чем самая высшая передняя. Интересно, почему так.
Вот тот код:

UndeadДата: Пятница, 22 Марта 2013, 23:15 | Сообщение # 68
NeoAxis User
Сейчас нет на сайте
Amri, Посмотрел исходник "0.12 альфа"
Теперь я знаю, откуда баги у тебя берутся biggrin
Программирование - точно не твоё. Без обид, но твой код изрядно доставил.


Вcем зла.

Сообщение отредактировал Undead - Пятница, 22 Марта 2013, 23:19
AmriДата: Суббота, 23 Марта 2013, 04:49 | Сообщение # 69
Auriss IGD
Сейчас нет на сайте
Undead, но в 0.12 кода нет smile только в предудущей).
Цитата (Undead)
Программирование - точно не твоё. Без обид, но твой код изрядно доставил.

на что обижаться smile собственно , не на что). В основном я сценарист, но и игрушки делать хочу. Вот приходится. Да еще может потом дело получше пойдет.

Слушай, укажи пожалуйста на ошибки. С мну плюс.

ПС. Код - что я выше писал - это было до того, сейчас уже поправил)
ППС. Ну я же говорил, что прострелил себе в коде не только ногу, но и глаз smile

Добавлено (23.03.2013, 00:23)
---------------------------------------------
ПППС. Сейчас постараюсь 0.12 с исходниками закинуть.

Добавлено (23.03.2013, 00:55)
---------------------------------------------
Вот, короче, самая свежая версия, с исходниками.. Кому не влом, посмотрите и подскажите, что не так.

Добавлено (23.03.2013, 01:11)
---------------------------------------------

Добавлено (23.03.2013, 01:24)
---------------------------------------------

Добавлено (23.03.2013, 04:49)
---------------------------------------------
Закон Amri : если он что-то реализовал в коде, то можно со 100% вероятностью заявить, что можно сделать проще.

woofДата: Суббота, 23 Марта 2013, 05:59 | Сообщение # 70
самый главный
Сейчас нет на сайте
Race on the machines вообще никак не правильный перевод. Через ПРОМТ переводил что ли?
AmriДата: Суббота, 23 Марта 2013, 07:17 | Сообщение # 71
Auriss IGD
Сейчас нет на сайте
woof, гугл транслейтор smile зато ни у кого такого нету smile

Добавлено (23.03.2013, 07:16)
---------------------------------------------
Да и по барабану особо как то.

Добавлено (23.03.2013, 07:17)
---------------------------------------------
Хотя, по гуглу все правильно - Race on the machines = Гонки на машинах. Что не так? smile

woofДата: Суббота, 23 Марта 2013, 07:31 | Сообщение # 72
самый главный
Сейчас нет на сайте
)))))) да и правильно
AmriДата: Суббота, 23 Марта 2013, 07:34 | Сообщение # 73
Auriss IGD
Сейчас нет на сайте
woof, а ты тестил? Просто интересно.
UndeadДата: Суббота, 23 Марта 2013, 16:00 | Сообщение # 74
NeoAxis User
Сейчас нет на сайте
Цитата (Amri)
я сценарист

Это сразу видно biggrin
Цитата (Amri)
но в 0.12 кода нет только в предудущей).

Это должно помешать? Я 0,12 декомпилил.
А версия то всё равно у неё 1.0 стоит)

Добавлено (23.03.2013, 15:58)
---------------------------------------------
Цитата (Amri)
Слушай, укажи пожалуйста на ошибки.

Я бы всё переписал.
Используй массивы
Код
public Vector2 gl1p, gl2p, gl3p, gl4p, gl5p, gl6p, gl7p, gl8p, gl9p, gl10p, gl11p, gl12p;

замени на
Код
List<Vector2> название;

Напиши для хранения уровней отдельный класс с иерархической структурой.
Вещи вроде
Код
static int ScrollX;
static int ScrollY;

Заменяй на
Код
Vector2 Scroll;

Исрользуй Switch,и. Десяток if,ов - это ужасно.
Напиши отдельный класс для проверки столкновений. Добавь к объектам уровня событие Collision и при столкновении вызывай. Удобнее будет.
Написание игры на XNA == написание своего движка. Xna по сути врапер для dx, хоть и довольно высокоуровневый.

Добавлено (23.03.2013, 16:00)
---------------------------------------------
И всё таки лучше бы для физики взять сторонний двиг, тот же Farseer Physics. А ещё лучше бы использовать xen.


Вcем зла.

Сообщение отредактировал Undead - Суббота, 23 Марта 2013, 16:02
woofДата: Суббота, 23 Марта 2013, 16:11 | Сообщение # 75
самый главный
Сейчас нет на сайте
я не понимаю,
вы настолько .... как бы так помягче... недалеки, что верите в то, что какая-то машина может знать русский язык?
Вернее не так. Машина не может. В машину закладывают перевод люди.
фактор первый: люди, которые закладывали в машину перевод - не являются носителями русского языка. Следовательно не носители русского языка не могут перевести правильно текст, на 100% или около того. Если считать 3 слова текста = 100%, то выходит 1 слово примерно 33%. Т.е. во фразе "гонки на машинах" как минимум одно слово уже будет неверным. Ну это ладно. Шанс уменьшается, если мы будем иметь ввиду остальные факторы, которые могут повлиять на перевод фразы. К примеру:
фактор второй: в гугле не дураки сидят, приглашают русскоязычных переводчиков, НО рус яз - сложный язык, не романской группы. Это не французский или немецкий, который практически схожи с английским. И к тому эе это синтетический язык, он отличается словообразованием и много чем другим. Поэтому нельзя наложить одну фразу из русского на перевод английского, они никогда не лягут ровно друг на друга. как две матрицы разного размера не перемножатся.
и часто переводить приходится не слово в слово, а просто смысл фразы.
поэтому ваш аргумент, что мол "гугол знает как правильно", мной вообще не воспринимается как доказательство.
и много много мнонго много других факторов которые снижают вероятность того перевода к малому проценту. вплоть до того, что Вы явно не являетесь лингвистом переводчиком или у вас есть друзья такие, ваш возраст (согласитесь, что какой-нибудь школьник не может знать предмет на уровне преподавания вуза, хотя бывают исключения), но всё же мы учитыаем и эти факторы так же.
Всему виной теория вероятности, мой друг.
написал много. прям сюжет для новой игры. только не забудьте меня как автора указать, если что.

Добавлено (23.03.2013, 16:11)
---------------------------------------------
Цитата (woof)
woof, а ты тестил? Просто интересно.

нет. у меня интернет слабый.


Сообщение отредактировал woof - Суббота, 23 Марта 2013, 16:12
AmriДата: Суббота, 23 Марта 2013, 20:02 | Сообщение # 76
Auriss IGD
Сейчас нет на сайте
Undead,
Цитата (Undead)
Это должно помешать? Я 0,12 декомпилил.

Reflektor?
Цитата (Undead)
Это сразу видно

happy
Цитата (Undead)
Используй массивы

думал о этом. Сделаю. Спасибо)
Цитата (Undead)
Вещи вроде
Код
static int ScrollX;
static int ScrollY;

Заменяй на
Код
Vector2 Scroll;


попробую

Цитата (Undead)
Исрользуй Switch,и. Десяток if,ов - это ужасно.

для столкновений ифы используются для изменения значения статуцса, а дальше уже свитчи. Хотя, попробую.

Цитата (Undead)
Написание игры на XNA == написание своего движка. Xna по сути врапер для dx, хоть и довольно высокоуровневый.

Ну да, где-то я это уже слышал. Только хардкор)
Цитата (Undead)
И всё таки лучше бы для физики взять сторонний двиг, тот же Farseer Physics. А ещё лучше бы использовать xen.

Еще есть порт Box2D под .NET . Но я хочу разобраться, как же это все работает.

Теперь woof.
Ты меня заинтересовал, теперь буду точно на немецкий переводить, благо еще помню.

Цитата (woof)
нет. у меня интернет слабый.


максимум 8 мб. Если хна редист стоит, то 1.3 мб.

Добавлено (23.03.2013, 19:44)
---------------------------------------------

Добавлено (23.03.2013, 19:54)
---------------------------------------------

Цитата (woof)
вы настолько .... как бы так помягче... недалеки, что верите в то, что какая-то машина может знать русский язык?

словари тоже не знают русский язык. А я рассматриваю гугл именно как словарь, и не более.
Цитата (woof)
Т.е. во фразе "гонки на машинах" как минимум одно слово уже будет неверным. Ну это ладно. Шанс уменьшается, если мы будем иметь ввиду остальные факторы, которые могут повлиять на перевод фразы.

Короче, вот точный перевод названия "Гонки на машинах" с помощью словаря и ручки Weitrennen in Autos. Точный, нормальный перевод. Но, woof, да не стоит рассуждать так серьезно happy относитесь ко всему с известной долей несерьезности. А вообще, в самом первоначальном варианте не было никаких машин, а были только стрелки happy было Race Arrows.

Добавлено (23.03.2013, 20:02)
---------------------------------------------

Цитата (Undead)
Напиши для хранения уровней отдельный класс с иерархической структурой.

да я так и хотел. Сначала все в одном сделать, а потом раскидать по классам. Но, хотя, по классам будет намного удобнее.
Цитата (Undead)
Напиши отдельный класс для проверки столкновений.

Ты абсолютно прав.

Слушай, а задний ход нормально работает? И обьясни пожалуйста, почему при отрицательных значениях, ну короче в в этом кусочке
Код
if (isZH)  
              {  

              velocityZH = new Vector2((float)Math.Cos(rotation)*(-1), (float)Math.Sin(rotation)*(-1));  
              speed = 1;  
                
              if (speed == 1)  
                  {  
                  if (dxzh <= 0)  
                      dxzh -= 0.1f;  
                  }  
              spritePosition -= velocityZH * dxzh ;  
              }

ну откуда тут постоянное увеличение скорости? Потому что, если я пойму, откуда берется, я добавлю возможностей в управление - сделаю кнопку газа. Можно расширить управление - (кстати, сейчас , именно в самой последней, управление дублировано на WASD, переключение передач перенесено на F) - основные кнопки есть (вперед, назад, влево, вправо). Кнопка переключения передач уже есть, и добавить сцепление (только в связке с коробкой, что бы скорость переключить), и газ. Как думаешь, норм будет, и так себе?
UndeadДата: Суббота, 23 Марта 2013, 20:34 | Сообщение # 77
NeoAxis User
Сейчас нет на сайте
Цитата (Amri)
Еще есть порт Box2D под .NET

Это он и есть.
Цитата (Amri)
Ну да, где-то я это уже слышал

Ну это так и есть. Если хочешь быть "труъ", то юзай OpenTK. biggrin
Цитата (Amri)
Слушай, а задний ход нормально работает?

Не знаю, не запускал. Завтра может поставлю XNA, да посмотрю.
Цитата (Amri)
Reflektor?

Он дорогой очень. Я ILSpy юзаю.


Вcем зла.
AmriДата: Суббота, 23 Марта 2013, 20:41 | Сообщение # 78
Auriss IGD
Сейчас нет на сайте
Undead, саму хна не надо ставить для запуска, там в архиве есть установочник библиотек для запуска . Ну а если кодит, то надо.

Добавлено (23.03.2013, 20:39)
---------------------------------------------
woof, по ходу, надо эсперанто учить happy

Добавлено (23.03.2013, 20:41)
---------------------------------------------

Цитата (Undead)
Если хочешь быть "труъ", то юзай OpenTK.

не, буду юзать хна) буду труЪ хнашником happy
UndeadДата: Суббота, 23 Марта 2013, 21:02 | Сообщение # 79
NeoAxis User
Сейчас нет на сайте
Цитата (Amri)
саму хна не надо ставить для запуска, там в архиве есть установочник библиотек для запуска . Ну а если кодит, то надо.

Я в курсе, сам с xna баловался.


Вcем зла.
AmriДата: Суббота, 23 Марта 2013, 21:10 | Сообщение # 80
Auriss IGD
Сейчас нет на сайте
Undead, понятно. Я не знал, извиняй
Поиск:

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