Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710

Метр в секунду или измерение величин в играх

10.11.2013, 03:09. Показов 4821. Ответов 66
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Hello, World!
Игры до этого момента не писал, но что-то захотелось написать ...
И похоже, столкнулся с фундаментальной проблемой ...

Пишу сейчас на Perl используя библиотеку OpenGL + GLUT под Windows 7 64. Но это не суть важно.
Не могу понять, как принято измерять в играх время, скорость и расстояния.

Я так понимаю, что время в программе вещь относительная. На выполнение программы влияет множество факторов.

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

Как лучше разбить физику и графику ( процессы\потоки, синхронно\асинхронно). Может быть есть стандарты кодирования или что то ещё. С чего начать?

Если есть код на языках C\C++ c описанием, буду рад.
То есть, проблема в том, что я никак не могу себе представить в будущей программе что такое метр в секунду, так как измерения относительны. И как в самом начале заложишь эти единицы так и поплывешь.

Жду ваших коментов, ребят.

Добавлено через 4 часа 33 минуты
Неужели никто не знает как правильно задать скорость\время?

Почитал статейки, пишут, что нужно скорость перемещения множить на скорость отрисовки кадра.
положение объекта = скорость объекта * среднее время отрисовки кадра

В GLUT есть функции glutTimerFunc и glutIdleFunc ... к какой правильно привязывать функцию рисования сцены?

0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.11.2013, 03:09
Ответы с готовыми решениями:

Найти новые цены если старые составляли соответственно С1 р\метр и С2 р\метр
как сделать? Дали задание на бейсике, но на нем я ничего не понимаю. Как оно решается? Цены на два вида ткани выросли на 50%. Найти...

Зависает в играх 20 секунду через 20
Доброго времени суток ! Возникла проблема помогите пожалуйста =( Проблема берет своё начало около полугода назад ,может чуть меньше ....

На ноутбуке hp в играх и при просмотре видео виснет на секунду со звуком трр
Всем привет! Люди добрые подскажите, ноутбук зависает со звуком трр, в играх, при просмотре видео. что делать?

66
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.11.2013, 13:29
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от PetyaVasechkin Посмотреть сообщение
Я так понимаю, что время в программе вещь относительная. На выполнение программы влияет множество факторов.
Вообщем, ребят, в голове моей кашка ... кто подскажет, куда копать, чтобы понять как организовать нормальную не сложную заготовку для простенькой игры типа змейки или тетриса? Мне бы хотелось разобраться как можно организовать плавное движение, скажем, шара со скоростью 1 метр в 1 секунду.
Нельзя сделать 1 м/с. Можно сделать 1 ширину экрана за 1 секунду. Или одну высоту. Или одну диагональ. Или некоторую часть ширины, высоты, или диагонали. Или несколько ширин, высот, или диагоналей. Плавность же достигается не воспринимабельностью отдельных шагов, то есть они должны быть достаточно малы по времени.
1
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
10.11.2013, 13:31  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
Время реально, размеры и расстояния условны. Если ты нарисуешь всех по 6 футов, а друг сделает точно такую же игру с 60-ти футовыми великанами и при этом удесятерит все игровые объекты от травинки до горизонта, то различить на глаз эти игры будет нельзя точно также, как и мы ничего не заметим, если вдруг завтра проснёмся в 1000 раз больше на планете радиусом 6 000 000 км на орбите радиусом 150 000 000 000 км вокруг увеличенного Солнца, так же тысячекратно увеличатся все межатомные расстояния и скорость света. Так что условно прими логическую единицу длины за любую физическую единицу длины на свой вкус и применяй
последовательно.
Спасибо, я возьму за основу 1 метр, 1 килограмм и 1 секунду.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.11.2013, 13:31
Цитата Сообщение от PetyaVasechkin Посмотреть сообщение
Я так понимаю, что время в программе вещь относительная.
Нет. Время - это реальное время пользователя.
1
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
10.11.2013, 13:32  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
Нет. Время - это реальное время пользователя.
Спасибо.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.11.2013, 13:35
Можно единицу принять за метр, миллиметр, дюйм, километр, световой год... За что угодно. А в 2D хоть за пиксел.

Добавлено через 1 минуту
А ещё можно принять её за световую секунду. Или за световую терцию. За световую минуту, за световой час. За что угодно. Время же изначально размерно и надо узнать единицу, в которой его измеряет используемая функция. В зависимости от самой функции это тоже может быть что угодно от суток до микросекунды, но этот выбор заложен в инструмент.
1
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
10.11.2013, 13:41  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
А в 2D хоть за пиксел.
Во, точно, я забыл, а теперь вспомнил, ... при удалении объекта на определенное расстояние он может выпасть из усеченной пирамиды перспективной проекции, так? И делает он это резко вроде бы. А вот как плавно сделать? Не подскажете?

Добавлено через 3 минуты
Мне интересен сам принцип ... туман войны нужен?))
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.11.2013, 13:42
1. Если объект имеет глубину, то сначала пропадёт его дальний слой и постепенно дойдёшь до ближнего.
2. Можно завысить глубину пирамиды отсечения, но на некотором расстоянии от камеры разместить туманную стену, по мере погружения объекта в которую его изображение будет постепенно размываться.
3. Можно завысить глубину горизонта, но смоделировать кривизну Земли.
1
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
10.11.2013, 13:44  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
1. Если объект имеет глубину, то сначала пропадёт его дальний слой и постепенно дойдёшь до ближнего.
2. Можно завысить глубину пирамиды отсечения, но на некотором расстоянии от камеры разместить туманную стену, по мере погружения объекта в которую его изображение будет постепенно размываться.
3. Можно завысить глубину горизонта, но смоделировать кривизну Земли.
Благодарю!

Я сейчас с таймерами окончательно разберусь и перейду к отрисовке объектов, которые лежат внутри этой пирамидки проекции. Чтобы лишнее не рисовать.
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,473
10.11.2013, 13:45
Цитата Сообщение от taras atavin Посмотреть сообщение
Время реально, размеры и расстояния условны.
нет. все реально) ибо если сделать так что в OpenGL камера будет настроена таким образом что "глаз" будет на том расстоянии на котором сидит пользователь от экрана, а размер плоскости на которую осуществляется проекция будет размером с экран, то все угловые размеры (и даже линейные если пользователь поднесет предмет к себе на расстояние как от глаза до экрана) будут правлильными
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.11.2013, 13:46
Цитата Сообщение от PetyaVasechkin Посмотреть сообщение
Мне интересен сам принцип ... туман войны нужен?))
Зависит от самой игры. В сифайте юзается туман войны, но там основной вид сверху и можно двигать камеру. Если сверху можно оглядеть только карту, или камера однозначно привязана к персонажу, то можно заменить туман войны горизонтом. В некоторых дизайнах не нужно ни то, ни другое. Например, в тетрисе и арканоиде видимость ограничена только самим стаканом.
1
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
10.11.2013, 13:54  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
нет. все реально) ибо если сделать так что в OpenGL камера будет настроена таким образом что "глаз" будет на том расстоянии на котором сидит пользователь от экрана, а размер плоскости на которую осуществляется проекция будет размером с экран, то все угловые размеры (и даже линейные если пользователь поднесет предмет к себе на расстояние как от глаза до экрана) будут правлильными
Это было бы круто ))))
Но всё же, про время, таймер самый реальный это генератор прямоугольных импульсов, насколько я понимаю )
Интересно, к нему ли обращаются функции через ОС и драйвер?? Или может быть программное окружение влияет на этот таймер который я вызываю (glutTimerFunc)

Добавлено через 2 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
Зависит от самой игры. В сифайте юзается туман войны, но там основной вид сверху и можно двигать камеру. Если сверху можно оглядеть только карту, или камера однозначно привязана к персонажу, то можно заменить туман войны горизонтом. В некоторых дизайнах не нужно ни то, ни другое. Например, в тетрисе и арканоиде видимость ограничена только самим стаканом.
Да, в 2D сценах туман только по краям не иследованной местности ))) Ещё с WarCraft помню )))

Добавлено через 3 минуты
vxg, srand(time(0)); хотел спросить ... это в main для чего? я не смог найти переменную куда результат заносится. Или может эта функция не явно что то устанавливает?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.11.2013, 13:58
Цитата Сообщение от vxg Посмотреть сообщение
нет. все реально) ибо если сделать так что в OpenGL камера будет настроена таким образом что "глаз" будет на том расстоянии на котором сидит пользователь от экрана, а размер плоскости на которую осуществляется проекция будет размером с экран, то все угловые размеры (и даже линейные если пользователь поднесет предмет к себе на расстояние как от глаза до экрана) будут правлильными
Нет. Угловые размеры - угловые и есть, с линейными они непосредственно не соотносимы. Кроме того, оптический зум и цифровое растяжение квада полностью эквивалентны, разница лишь в разрешении результата, но если цифрозумить не заранее отснятые пикселы, то и этой разницы нет. Не имеет значения, чему в игре соответствует расстояние до экрана. На самом деле это полметра? Эйси. А в игре по гигантвилю это будет 5 метров. Но в итоге пользователь увидит всё именно так, как должен видеть собственное окружение персонаж. При условии, что истинные угловые размеры окна равны угловым размерам поля зрения персонажа. А фокус в том, что персонаж видит не в размеры метрах, а в отношении к собственному росту. И настоящий человек тоже. Просто если он знаком с единицей "метр", то знает и как соотнести эту единицу с собственным ростом и уже отсюда человек может прикинуть на глаз расстояние в метрах. Но если чисто фантастически допустить вселение в тело персонажа, то в навыке соотношение роста к метру сохранится, а на самом деле изменится и как бы все предметы вокруг вдруг станут меньше, а дома великанов нормальными. Но нормальны они на взгляд великана же.
1
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
10.11.2013, 14:00  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
Нет. Угловые размеры - угловые и есть, с линейными они непосредственно не соотносимы. Кроме того, оптический зум и цифровое растяжение квада полностью эквивалентны, разница лишь в разрешении результата, но если цифрозумить не заранее отснятые пикселы, то и этой разницы нет. Не имеет значения, чему в игре соответствует расстояние до экрана. На самом деле это полметра? Эйси. А в игре по гигантвилю это будет 5 метров. Но в итоге пользователь увидит всё именно так, как должен видеть собственное окружение персонаж. При условии, что истинные угловые размеры окна равны угловым размерам поля зрения персонажа. А фокус в том, что персонаж видит не в размеры метрах, а в отношении к собственному росту. И настоящий человек тоже. Просто если он знаком с единицей "метр", то знает и как соотнести эту единицу с собственным ростом и уже отсюда человек может прикинуть на глаз расстояние в метрах. Но если чисто фантастически допустить вселение в тело персонажа, то в навыке соотношение роста к метру сохранится, а на самом деле изменится и как бы все предметы вокруг вдруг станут меньше, а дома великанов нормальными. Но нормальны они на взгляд великана же.
Дело в психике?)
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.11.2013, 14:07
Но это 5 единиц, а не метров. А может быть это 1,64 единицы-фута? Великан не видит себя таковым, какие бы единицы ни были выбраны, даже не существующие, последовательное их применение ко всем объектам гарантирует правильность картинки.

Добавлено через 27 секунд
Цитата Сообщение от PetyaVasechkin Посмотреть сообщение
Дело в психике?)
Дело в относительности по Маху.
1
 Аватар для Крюгер
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
10.11.2013, 14:09
PetyaVasechkin, тогда хочу посоветовать вам покопаться в потрохах любого движка, + обложиться литрой по этому случаю, пускай даже на с++ НО принципы то в основном те же. (от языка лишь незначительное быстродействие зависит это не столь важно. тк на компах нашего времени будет мало заметна разница в 0.1с и 0.01 с скорость будет зависеть от правильности кода собсно) и еще в гугле можно много полезного найти на эту тему, хотя бы в плане общего развития
1
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
10.11.2013, 14:09  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
Но это 5 единиц, а не метров. А может быть это 1,64 единицы-фута? Великан не видит себя таковым, какие бы единицы ни были выбраны, даже не существующие, последовательное их применение ко всем объектам гарантирует правильность картинки.
Вообщем, я понял. Главное хвост и числа фибоначчи!

Главное пропорция и точка опоры. Если я всё правильно понял.
0
 Аватар для Крюгер
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
10.11.2013, 14:13
PetyaVasechkin, просто задай конкретный масштаб, примени его ко всем объектам, и о чудо! всё будет как надо. (суть та же о чем говорил тарас, только проще)
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,473
10.11.2013, 14:14
Цитата Сообщение от taras atavin Посмотреть сообщение
Нет. Угловые размеры - угловые и есть, с линейными они непосредственно не соотносимы. Кроме того, оптический зум и цифровое растяжение квада полностью эквивалентны, разница лишь в разрешении результата, но если цифрозумить не заранее отснятые пикселы, то и этой разницы нет. Не имеет значения, чему в игре соответствует расстояние до экрана. На самом деле это полметра? Эйси. А в игре по гигантвилю это будет 5 метров. Но в итоге пользователь увидит всё именно так, как должен видеть собственное окружение персонаж. При условии, что истинные угловые размеры окна равны угловым размерам поля зрения персонажа. А фокус в том, что персонаж видит не в размеры метрах, а в отношении к собственному росту. И настоящий человек тоже. Просто если он знаком с единицей "метр", то знает и как соотнести эту единицу с собственным ростом и уже отсюда человек может прикинуть на глаз расстояние в метрах. Но если чисто фантастически допустить вселение в тело персонажа, то в навыке соотношение роста к метру сохранится, а на самом деле изменится и как бы все предметы вокруг вдруг станут меньше, а дома великанов нормальными. Но нормальны они на взгляд великана же.
я не спорю с тем что условные единицы используемые в OpenGL могут как угодно соотносится с реальными единицами и вообще быть никак с ними не связаны. однако можно выбрать их такими что 1 уе = 1 м и все будет выглядеть так как в реальности и при этом являться реальностью)
1
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
10.11.2013, 14:17  [ТС]
Цитата Сообщение от Крюгер Посмотреть сообщение
тогда хочу посоветовать вам покопаться в потрохах любого движка, + обложиться литрой по этому случаю, пускай даже на с++ НО принципы то в основном те же. (от языка лишь незначительное быстродействие зависит это не столь важно. тк на компах нашего времени будет мало заметна разница в 0.1с и 0.01 с скорость будет зависеть от правильности кода собсно) и еще в гугле можно много полезного найти на эту тему, хотя бы в плане общего развития
Спасибо, я обязательно копну движок. Просто я сейчас читаю книжку по OpenGL потихоньку. И у меня их несколько штук. Я параллельно изучаю OpenGL и языки. До звука ещё не добрался.
Думаю, просто, освоить азы так сказать трёхмерной графики и попробовать написать что то простенькое использующее сеть\БД\анимацию\текстурирование\освещен ие\звук\простую физику (столкновение) ну и так далее. Хочу оценить время\силы.

Добавлено через 2 минуты
Нужно вообще посмотреть, чего я могу, а чего нет
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,473
10.11.2013, 14:17
Цитата Сообщение от PetyaVasechkin Посмотреть сообщение
время\силы
-> бесконечности)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2013, 14:17

Как можно делать конвертация для ед.изм у меня кг шт метр и мешки есть и должно быть кг на шт,метр,мешки ?
как можно делать конвертация для ед.изм у меня кг шт метр и мешки есть и должно быть кг на шт,метр,мешки ?

измерение тока компаратором или ОУ
Коллеги! Что-то я туплю. Если не сложно - набросайте схему или ткните ссылку. Как измерить (сигнализировать) ток порядка 10 мА с...

Перевод с кадров в секунду в мегабиты в секунду
Подскажите пожалуйста как переводить гугл не хочет)

I3 или i5 в играх
Такая проблема. Выбираю ноут, переплачивать не охота в нынешние времена. Ноут нужен для всего, но в основном требования налагают...

Turbo Basic: поиск равных величин или уведомление, что таковых не найдено
крч, мне даны радиусы окружностей, нужно, чтобы он выводил равные, я это сделал, но препод сказал, чтобы выводил и "равных нет",...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru