Форум программистов, компьютерный форум, киберфорум
Наши страницы
Бета-тестирование
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
infobos
Строитель
455 / 72 / 4
Регистрация: 18.06.2010
Сообщений: 499
1

Игра Лабиринт 3D (вторая часть) – генерация уникального большого лабиринта (4 уровня сложности)

17.05.2017, 08:07. Просмотров 1052. Ответов 17
Метки нет (Все метки)

Игра Лабиринт 3D от первого лица с генерацией уникального лабиринта. Под ОС Windows

В первой части этой игры рассмотрели скорость рисования в OpenGL: Игра Лабиринт. 3D движок от первого лица (WinAPI C++ OpenGL) + исходник кода

Во второй части добавлена генерация уникального лабиринта (4 уровня сложности).

Что хотелось бы протестировать в этой игре:
1. Логику генерации лабиринта (использовано: srand(), Sleep() и rand()). Использование только rand() приводит к плохой генерации случайных чисел. srand() и Sleep() улучшают случайность внедрением в них определенных значений – это: Время мс. и любые значение цифр из логики генерации.
2. Рисование производится через такт: SetTimer(hWnd,1,10,NULL). И здесь хотелось бы протестировать на многих ли компьютерах оно будет работать так, как положено (Без сбоев по времени такта).
3. Применены рекурсивные функции для рисования. Рисование последовательного пути полигонов от нахождения камеры. Тут можно еще оптимизировать. Но я поленился это сделать. И это приводит к большому числу рисования полигонов 1000 шт., а с оптимизацией можно было достичь и 30-50 штук. Но на это уйдет непомерно много времени на разработку упрощение полигонов на большие куски(оно не стоит этих усилий)).

Что хотелось бы получить от участников теста:
1. Fps (количество кадров в секунду)
2. Время на рисование сцены
3. Время загрузки лабиринта? Оно примерно должно быть от нескольких секунд до 1,5 минут (4 уровень). У кого больше или тормоза и зависания – сообщите.
4. Ваши системные требования компьютера (Частота процессора, модель видеокарты)
5. Любые ошибки в игре

Есть одна проблема, которую я не решил. Пока не знаю как.
Через 6 секунд Windows сигнализирует о том, что программа (не отвечает). Как можно убрать этот дефект и не пугать клиентов. Я понимаю, что в будущем нужно будет долгие циклы делить и выполнять порциями меньше одной секунды (100 мс), тогда этого зависания не будет. То есть 100 мс выполняем цикл и даем программе реагировать на действия окна. Сейчас один цикл генерации лабиринта может достигать по времени до 60 секунд.

Поэтому не пугайтесь [зависания], через 1 минуту должно закончится.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2017, 08:07
Ответы с готовыми решениями:

Чтение большого файла в нескольких потоках - C# (Вторая часть Марлезонского балета)
Еще раз всем добрый день! Наболевшая тема...

Игра лабиринт. ИИ в лабиринте. Как задать лабиринт
У меня есть следующее задание: Дано: - робот - лабиринт Задание: -...

Генерация уникального ID компьютера
Здравствуйте, Недавно задался вопросом проверки уникальности компьютера...

Генерация уникального значения
Всем привет! Появилась потребность в генерации уникального ID вида 1-A1B2C3,...

генерация уникального хеша
здравствуйте, не могу додуматься как реализовать генерацию уникального хеша....

17
infobos
Строитель
455 / 72 / 4
Регистрация: 18.06.2010
Сообщений: 499
17.05.2017, 08:09  [ТС] 2
Срин игры
0
Миниатюры
Игра Лабиринт 3D (вторая часть) – генерация уникального большого лабиринта (4 уровня сложности)  
infobos
Строитель
455 / 72 / 4
Регистрация: 18.06.2010
Сообщений: 499
17.05.2017, 08:11  [ТС] 3
Скрин2
0
Миниатюры
Игра Лабиринт 3D (вторая часть) – генерация уникального большого лабиринта (4 уровня сложности)  
infobos
Строитель
455 / 72 / 4
Регистрация: 18.06.2010
Сообщений: 499
17.05.2017, 08:23  [ТС] 4
Пардон архив не записался!

Скачать!
0
Вложения
Тип файла: rar labirint3d.rar (172.1 Кб, 36 просмотров)
Kill100
420 / 286 / 81
Регистрация: 11.12.2010
Сообщений: 1,206
Завершенные тесты: 1
21.05.2017, 01:01 5
Система. win 10. CPU: intel i7-4700mq RAM: 16gb 1366x768
intel hd 4600
1. Fps: 64fps
2. 4 - 6ms
3. 1й ур ~4сек, 2й ~ 6сек, 3 ~ 14сек, 4 ~ 40сек

nvidia 850m
1. Fps: 60fps (судя по gpu-z сработала вертикальная синхронизация, так как нагрузка ~2%, и частоты карта не увеличила)
2. 14-19ms
3. 1й ур ~4сек, 2й ~ 6сек, 3 ~ 14сек, 4 ~ 40сек

Система. win 10. CPU: intel i7-3770к (4.5ghz) RAM: 16gb? 1920х1080
AMD RADEON HD7870
1. Fps: 64fps
2. 1ms
3. примерно так же
0
MrOnlineCoder
Всегда онлайн
552 / 463 / 187
Регистрация: 07.04.2013
Сообщений: 1,944
Завершенные тесты: 2
26.05.2017, 15:18 6
Интересно Только я нажал вне окна, окно скрылось, и мышку не мог двигать, всегда перемещалась в центр экрана.
60 fps стабильно, 3-4 мс, загрузился быстро (2-4 сек.)
1
eXPonent
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
30.05.2017, 01:55 7
О как интересно
Цитата Сообщение от infobos Посмотреть сообщение
использовано: srand(), Sleep() и rand()
Советую почитать мой пост, может что интересное найдешь, улучшишь генерацию:
Генератор псевдо-случайных чисел, как хэш-функция

Добавлено через 5 минут
Цитата Сообщение от infobos Посмотреть сообщение
Через 6 секунд Windows сигнализирует о том, что программа (не отвечает)
это происходит в том случае если происходит одни и те же операции циклические
(попробуй добавить запись в память, в какой-нить массив каждую 1/10 секунды)
или ждать действия, нажатия клавиши
0
infobos
Строитель
455 / 72 / 4
Регистрация: 18.06.2010
Сообщений: 499
30.05.2017, 05:29  [ТС] 8
Цитата Сообщение от eXPonent Посмотреть сообщение
это происходит в том случае если происходит одни и те же операции циклические
(попробуй добавить запись в память, в какой-нить массив каждую 1/10 секунды)
или ждать действия, нажатия клавиши
Это проблема решается так: Альтернатива Application.ProcessMessages для WinAPI
Нужно окну дать реагировать. Кстати это на Windows 7 происходит. В Windows 8 и 10 программа не зависает.
А по поводу массива, то это и так во время генерации массив заполняется данными.
0
_20_
12 / 11 / 4
Регистрация: 29.09.2011
Сообщений: 281
23.06.2017, 00:57 9
Первое впечатление - нужно мышку ускорить, слишком медленно.
60 fps, GeForce 970, win 7.
Теперь нельзя выйти из лабиринта, хотя надпись о прохождении появляется.

Добавлено через 15 секунд
Первое впечатление - нужно мышку ускорить, слишком медленно.
60 fps, GeForce 970, win 7.
Теперь нельзя выйти из лабиринта, хотя надпись о прохождении появляется.
1
Evg
Эксперт CАвтор FAQ
19636 / 7328 / 551
Регистрация: 30.03.2009
Сообщений: 20,493
Записей в блоге: 30
23.06.2017, 10:29 10
Цитата Сообщение от _20_ Посмотреть сообщение
Первое впечатление - нужно мышку ускорить, слишком медленно
В левом верхнем углу экрана написано, как это сделать
0
KokosSPb
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
06.07.2017, 21:43 11
Привет. Приношу извинения за такую задержку. На компе посмотрел мельком - всё гуд, FPS везде 60, сейчас добрался до ноутбука:

Сложность 1:
1) 63.9-64.5 FPS
2) 4-6 мс
3) 2 секунды

Сложность 2:
1) 63.6-64.5
2) 4-6 мс
3) 3 секунды

Сложность 3:
1) 63.7-64.5 FPS
2) 5-6 мс
3) 16 секунд

Сложность 4:
1) 63.9-64.5 FPS
2) 5-7 мс
3) 42 секунды

4) Тестировалось на ноутбуке Samsung NP350E5C-S0ARU
Core i7 3630QM
DDR3 8Гб
Видяхи 2, какая работала не знаю
Radeon HD 7670M или Intel HD 4000

5) Иногда при повороте промелькивает черный фон, как будто "выход", а по факту там стены, это если коридор длинный впереди (на втором уровне было заметно не один раз, но только при одной из генераций, проверял несколько раз, но повторения не встретил 0_о и на четвёртом тоже всего не один раз, но только на одной из генераций, выходишь из-за угла и коридор в конце чёрный на какое-то мгновение, а потом всё норм)
0
infobos
Строитель
455 / 72 / 4
Регистрация: 18.06.2010
Сообщений: 499
07.07.2017, 05:22  [ТС] 12
Цитата Сообщение от KokosSPb Посмотреть сообщение
5) Иногда при повороте промелькивает черный фон, как будто "выход", а по факту там стены, это если коридор длинный впереди (на втором уровне было заметно не один раз, но только при одной из генераций, проверял несколько раз, но повторения не встретил 0_о и на четвёртом тоже всего не один раз, но только на одной из генераций, выходишь из-за угла и коридор в конце чёрный на какое-то мгновение, а потом всё норм)
Я в курсе! Тут алгоритм так устроен. Я поленился сделать далекий расчет рисования стен. Там нужно было хорошо поработать над алгоритмом рисования стен. Следующую игру выпущу кубик рубик для Windows. Ее нет в свободном доступе для Windows. Я столкнулся с тяжелыми пространственными задачами. Алгоритм вращения кубика будет другим. Не как у тех игр, которые есть в планшетах на андроиде. Предполагается, лучшее решение вращения кубика.
1
Evg
Эксперт CАвтор FAQ
19636 / 7328 / 551
Регистрация: 30.03.2009
Сообщений: 20,493
Записей в блоге: 30
07.07.2017, 11:13 13
Цитата Сообщение от infobos Посмотреть сообщение
Следующую игру выпущу кубик рубик для Windows
Т.е. написание 3д-стрелялки закончилось на реализации графики (как и у всех)?
0
infobos
Строитель
455 / 72 / 4
Регистрация: 18.06.2010
Сообщений: 499
09.07.2017, 08:03  [ТС] 14
Цитата Сообщение от Evg Посмотреть сообщение
Т.е. написание 3д-стрелялки закончилось на реализации графики (как и у всех)?
Это была провокация получить от меня ответ методом лжеподстановки? Я предприниматель и не целюсь стать послушным программистам для других предпринимателей. Я сам работаю на себя. И игра 3D стрелялка нисколько меня не интересует как предпринимателя заработать на этом деньги.

Я не ставил цель делать 3D стрелялку. Я ставил цель создать программное обеспечение по расчету инженерных коммуникаций. На пути возникла потребность получить опыт в трехмерной графики перед тем как строить каркас для будущей программы. Я поставил себе цель сделать игру Лабиринт и Кубик рубик. В игре лабиринт получил один опыт. В игре кубик рубик получил и получаю другой опыт с пространственными задачами. В кубике рубике возникли серьезные задачи, реализации которых нет в интернете и данный алгоритм вращения покрыт большой завесой таинст. Кватернион + приемы вращения кубика с запоминанием поворота и его накладываемой трансфармацией поворота. Это сродни задачам гения математики. Слава богу нашелся программист, который хоть что-то знает в этом. Частично коды получены, но есть еще почва проработать лучшее решение.

Добавлено через 2 часа 31 минуту
Если есть У Вас знакомые гении трехмерных задач - дайте контакты. Мне нужны готовые алгоритмы кватернионных вращений и тому подобное. Конечно я готов платить за хорошие алгоритмы в трехмерной графике. Нужны профессионалы. Фрилансеры здесь слабые водятся. Мне нужны гении математики в трехмерных задачах.
0
Evg
Эксперт CАвтор FAQ
19636 / 7328 / 551
Регистрация: 30.03.2009
Сообщений: 20,493
Записей в блоге: 30
09.07.2017, 14:49 15
Цитата Сообщение от infobos Посмотреть сообщение
Это была провокация получить от меня ответ методом лжеподстановки?
Нет. Хотелось, чтобы ты поделился своим отрицательным (как мне показалось) опытом с другими. Отрицательный опыт зачастую намного более полезен, чем положительный

Цитата Сообщение от infobos Посмотреть сообщение
Я не ставил цель делать 3D стрелялку
Значит я ошибся

Коль скоро ты ставишь себе цель научиться, то очень рекомендую почитать матчасть: https://habrahabr.ru/post/248153/ Понимание того, как оно устроено под капотом, на мой взгляд, является намного более полезными знаниями, чем умение что-то написать при помощи готовой библиотеки. Да и позволит намного лучше понять работу с библиотекой

Добавлено через 8 минут
Цитата Сообщение от infobos Посмотреть сообщение
Если есть У Вас знакомые гении трехмерных задач - дайте контакты. Мне нужны готовые алгоритмы кватернионных вращений и тому подобное. Конечно я готов платить за хорошие алгоритмы в трехмерной графике. Нужны профессионалы. Фрилансеры здесь слабые водятся. Мне нужны гении математики в трехмерных задачах.
Если ты имеешь в виду матрицу поворота в однородных координатах, то наверное ты имел в виду вот это: http://sernam.ru/book_mm3d.php?id=60

В любом случае с такими вопросами тебе лучше в этот раздел: http://www.cyberforum.ru/graphics/
2
DenNik
Непрофессионал
2028 / 1552 / 308
Регистрация: 26.07.2011
Сообщений: 8,203
19.08.2017, 11:13 16
Цитата Сообщение от infobos Посмотреть сообщение
Что хотелось бы получить от участников теста:
1. Fps (количество кадров в секунду)
2. Время на рисование сцены
3. Время загрузки лабиринта? Оно примерно должно быть от нескольких секунд до 1,5 минут (4 уровень). У кого больше или тормоза и зависания – сообщите.
4. Ваши системные требования компьютера (Частота процессора, модель видеокарты)
5. Любые ошибки в игре
1. в игре ~ 64 +/- 1 FPS (в окне), 55-64 (в развернутом)
2. ~ 5-11 ms (в окне), 15-25 мс (в развернутом виде)
3. 4 уровень ~ 50-60 сек
4.
Игра Лабиринт 3D (вторая часть) – генерация уникального большого лабиринта (4 уровня сложности)
Игра Лабиринт 3D (вторая часть) – генерация уникального большого лабиринта (4 уровня сложности)
Игра Лабиринт 3D (вторая часть) – генерация уникального большого лабиринта (4 уровня сложности)

5. в полноэкранном режиме изредка не работает Esc; при генерации лабиринта мышь захвачена по-умолчанию - не удобно, дергается по центру окна; при генерации лабиринта в заголовке окна надпись ... (не отвечает); кнопка [1] назначена на два действия: "захват мыши" и "уменьшение скорости", т.о. я скорость увеличил, а уменьшить не смог; некорректно работает максимальная скорость (иногда при большой скорости вплотную к стене не может подойти)
при загрузке игры ошибка, дальше работает:
Игра Лабиринт 3D (вторая часть) – генерация уникального большого лабиринта (4 уровня сложности)
1
DenNik
Непрофессионал
2028 / 1552 / 308
Регистрация: 26.07.2011
Сообщений: 8,203
19.08.2017, 11:13 17
дубль
1
infobos
Строитель
455 / 72 / 4
Регистрация: 18.06.2010
Сообщений: 499
19.08.2017, 17:33  [ТС] 18
Цитата Сообщение от DenNik Посмотреть сообщение
5. в полноэкранном режиме изредка не работает Esc; при генерации лабиринта мышь захвачена по-умолчанию - не удобно, дергается по центру окна; при генерации лабиринта в заголовке окна надпись ... (не отвечает); кнопка [1] назначена на два действия: "захват мыши" и "уменьшение скорости", т.о. я скорость увеличил, а уменьшить не смог; некорректно работает максимальная скорость (иногда при большой скорости вплотную к стене не может подойти)
при загрузке игры ошибка, дальше работает:
По поводу дерганья экрана, это скорее всего из-за долгого рисования кадра. Тут надо просто код монетизировать ускорять обработку рисования.
Надпись не отвечает, тоже разобрался из-за чего. Из-за долгого цикла во время генерации. Во время генерации нужно давать окну обработку сообщений от виндовс: Альтернатива Application.ProcessMessages для WinAPI
Кнопка ESC у меня тоже на старом ПК не работает. Вроде понятно из-за чего разберусь позже. Проблема в коде. Выбирается код клавиши не верный. Берется видимо из библиотеки. Нужно будет принудительно задать код клавиши.
По поводу клавиши управления перепутал: Управляются клавишей 2,3.
По поводу окна ошибки, не хватает функции у видеокарты. Это сглаживание растровых изображений, чтобы не было ряби.
0
19.08.2017, 17:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2017, 17:33

PL\SQL генерация уникального id
Доброго времени суток, господа специалисты. Я новичок в разработке баз данных....

Генерация уникального кода договора
К программе предъявляется следующее требование – у каждого договора должен...

Генерация уникального целочисленного значения
Допустим 100 пользователей. И каждый может в одно и тоже время нажать на...


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

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

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