Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
1

Как сделать внезапно появляющееся препятствие?

28.03.2016, 08:34. Показов 620. Ответов 11
Метки нет (Все метки)

Доброго всем дня. В продолжении моего изучения Opengl es и ndk. Возник такой вопрос, как такое организовывают правильно. Допустим, бежит человек, а ему навстречу появляются препятствия. Мне в голову приходит два подхода: 1) в части android запускается таймер и каждую секунду (ну или другой интервал) я дергаю некий метод с++, который добавляет на сцену еще один объект. А можно запустить поток прямо в c++ части. Что плохого в первом и во втором случае?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2016, 08:34
Ответы с готовыми решениями:

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

Алгоритм движения или как обойти препятствие?
Добрый день, я абсолютно начинающий и нуждаюсь в помощи:) помогите сделать метод для движения...

TCanvas анимация. Как мне нарисовать препятствие?
вот почитал полезную темку про графику https://www.cyberforum.ru/cpp-builder/thread267813.html ...

Как послать сигнал по схеме Ростелеком дома => WI-FI на даче через 1 препятствие
Здравствуйте. Решил на дачу сделать интернет, т.к. там есть 2 компьютера. Расстояние между...

11
Модератор
3331 / 2115 / 343
Регистрация: 13.01.2012
Сообщений: 8,235
28.03.2016, 08:49 2
Мне в голову приходит что должен быть код выполняемый каждый тик сцены вот в нем и анализируйте время и создавайте новые обьекты
0
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
28.03.2016, 11:18  [ТС] 3
Я пока еще не копал сам opengl, а есть какой-то встроенный механизм? Ну типа функция, которая отвечает за отрисовку сцены и она сама постоянно вызывается?

Добавлено через 35 минут
Я нашел пример одной игры, там появляются и бегают по полю враги, да и положение самого героя меняется со временем явно. Кода там много , но я не нашел ни одного запуска потока в с++ части. Мне вот казалось, что их должно быть несколько:
1) меняет со временем положение героя (допустим он перемещается вперед)
2) порождает врагов
3) сравнивает положение героя и врагов. если есть пересечение, то всё.
или какой-то другой подход нужен?
0
Модератор
3331 / 2115 / 343
Регистрация: 13.01.2012
Сообщений: 8,235
28.03.2016, 13:42 4
Цитата Сообщение от xTr1m Посмотреть сообщение
функция, которая отвечает за отрисовку сцены и она сама постоянно вызывается?
вы сами понимаете что она есть потому что на экране вы видите результат ее работы. в GLUT такая функция указывается явно. в оконных приложениях вы можете использовать таймер, поток, все что угодно
Цитата Сообщение от xTr1m Посмотреть сообщение
или какой-то другой подход нужен?
любой подход подходящий под ваши задачи
0
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
28.03.2016, 14:25  [ТС] 5
Ну мне же интересно как правильней)) Я пока не могу видеть на 10 шагов вперед и не знаю, с какими трудностями могу столкнуться при большом количестве объектов или при синхронизации действий. поэтому и прошу сразу еретические свои мысли подсказать
0
Модератор
3331 / 2115 / 343
Регистрация: 13.01.2012
Сообщений: 8,235
28.03.2016, 14:58 6
Цитата Сообщение от xTr1m Посмотреть сообщение
как правильней
правильнее всего безпоточный подход, но не у каждого получается мозг циркулем отформатировать)
0
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
28.03.2016, 15:12  [ТС] 7
Ага, тогда как реализуется: есть объект и он непрерывно движется вперед. В потоке я бы просто увеличивал бы его положение по Х, а по-другому как? Необязательно расписысвать, хотя бы назовите волшебное слово, по которому можно этот клубок развязать. А то я сейчас перед океаном информации, а сделать нужно и хочется сделать более-менее хорошо. Буду очень благодарен
0
Модератор
3331 / 2115 / 343
Регистрация: 13.01.2012
Сообщений: 8,235
28.03.2016, 15:15 8
Цитата Сообщение от xTr1m Посмотреть сообщение
а по-другому как
в графическом приложении где есть динамика всегда есть нечто что живет всегда - пусть это будет таймер - вот там и увеличивайте
0
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
29.03.2016, 10:16 9
Цитата Сообщение от xTr1m Посмотреть сообщение
в части android запускается таймер и каждую секунду (ну или другой интервал) я дергаю некий метод с++, который добавляет на сцену еще один объект.
Игры обычно обновляют экран непрерывно, без пауз и ожиданий.
Таймер тут только тормозить всё будет.
Цитата Сообщение от xTr1m Посмотреть сообщение
А можно запустить поток прямо в c++ части.
Запускать потоки в C++ можно, но надо понимать для чего они нужны.
Если ты запустил игровую модель в рабочем потоке,
то её состояние придётся передавать в графический поток.
А в графическом потоке экстраполировать состояние до следующего шага модели.
Цитата Сообщение от xTr1m Посмотреть сообщение
Что плохого в первом и во втором случае?
Я так понимаю, что вопрос относительно модели игрового мира,
которая может обновляться синхронно с графическим потоком
или быть вынесенная в рабочий поток.

Разница очевидна:
1. Первый вариант будет использовать только одно ядро процессора.
2. Второй вариант потребует межпоточной синхронизации модели и
графического потока для обмена состоянием игрового мира,
но позволит использовать уже несколько ядер процессора.

Первый вариант простой, второй требует больше усилий, но иногда лучше.
Второй вариант может привести к значительным задержкам в реакции игры
на действия пользователя.
0
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
29.03.2016, 10:38  [ТС] 10
Спасибо за развернутость. Но меня всё равно не покидает мысль, что это всё как-то наворочено получается через свой велосипед. Вот взять тетрис. Там появляются новые фигуры, которые падают сверху. Как делают реализацию их появления?
0
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
29.03.2016, 12:33 11
Цитата Сообщение от xTr1m Посмотреть сообщение
Но меня всё равно не покидает мысль, что это всё как-то наворочено получается через свой велосипед.
Бинго! Либо пиши свои велосипеды, либо используй готовые движки.
Цитата Сообщение от xTr1m Посмотреть сообщение
Вот взять тетрис. Там появляются новые фигуры, которые падают сверху. Как делают реализацию их появления?
Я же не просто так тебе уже указывал на книжку.
Она как раз даёт обзор примитивного игрового движка.
0
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
29.03.2016, 13:20  [ТС] 12
Ну кстати да. Вторую книгу я так и не смотрел еще. Спасибо еще раз
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2016, 13:20

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как отменить меню, появляющееся при нажатии правой кнопки мыши на заголовке окна?
Как отменить меню, появляющееся при нажатии правой кнопки мыши на заголовке окна???

Появляющееся меню
Добрый день. Интересует как реализовано горизонтальное верхнее меню, которое появляется после...

Появляющееся из неоткуда буквы
Здравствуйте! Подскажите пожалуйста как зделать что бы при загрузке страницы буквы плавно как бы из...

Вновь появляющееся расширение в Chrome
Добрый день. Недавно в Chrome само собой установилось расширение Movies. После этого браузер стал...

Объект и препятствие
Добрый день, в коде, данное условие работает корректно: if ( elements.style.marginTop ==...

Препятствие в зарядке iPhone
Вставил "вилку" в iPhone, не заряжается, вытащил-вставил 5-6 раз, сработало, через день опять время...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.