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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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