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

Игра Лабиринт. 3D движок от первого лица (WinAPI C++ OpenGL) + исходник кода

27.04.2017, 09:10. Просмотров 1959. Ответов 34
Метки нет (Все метки)

Здравствуйте!

Игра Лабиринт. 3D движок от первого лица

Кто будет участвовать в тестировании, и давать полезные советы получит исходник этой игры.

Игра написана на Visual Syudio Win32 API пустой проект. 3D графика OpenGL.
Пришлось самому выпиливать трехмерный движок, так как в интернете не мог найти 3D игры с открытым кодом написанные на WinAPI+OpenGL.

Игру писал не ради того, чтобы в нее играли, а ради того, чтобы получить опыт в программировании и протестировать возможности OpenGL. Цель была понять границы скорости рисования.
На новых видеокартах скорость впечатляет.

На новых видеокартах работать будет. А на старых могут быть тормоза.

Приготовил несколько файлов Test1, Test2, Test3, Test4, Test5.
Прошу протестировать каждый на работоспособность и указать FPS для каждого файла.
Пройти игру на test5.exe
Также укажите, какая у Вас видеокарта и свойства ПК.

Постарайтесь занять одно сообщение.
Тем, кто помогал, пишите мне в личку E-mail и на него будет выслан исходник этой игры.
0
Вложения
Тип файла: rar Test.rar (394.8 Кб, 69 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2017, 09:10
Ответы с готовыми решениями:

Игра "Лабиринт" в 2D openGL
Есть следующий код: #include "stdafx.h" using namespace std; struct object...

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

OpenGL рисование с VBO пример кода на голом WinAPI
Изучение VBO оказалось муторным занятием, хотя опытные программисты говорят,...

Нужен исходник пограммы, создающей случайный лабиринт
Очень нужен исходник пограммы, создающей случайный лабиринт. Даны размеры...

Лабиринт для мыши. C++ и WinAPI
Доброго времени суток! Нужна помощь в написании небольшой игры "Лабиринт для...

34
Fulcrum_013
1540 / 1186 / 138
Регистрация: 14.12.2014
Сообщений: 10,103
Завершенные тесты: 3
28.04.2017, 19:21 21
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Проблему с программой Optimus от NVidia я решил, так как они советуют в своей документации для разработчиков: https://docs.nvidia.com/gameworks/co...op/optimus.htm
Ну а если у пользователя ни разу не Nvidea окажется а соответствено и DLL которые статически биндятся на компе не будет? Прога вообще просто не стартует.
1
Evg
Эксперт CАвтор FAQ
19618 / 7310 / 551
Регистрация: 30.03.2009
Сообщений: 20,448
Записей в блоге: 30
28.04.2017, 19:45 22
На первых порах можно на это забить и отложить этот вопрос на потом. Тем более практика показывает, что разработка игр у людей упирается совсем не в графику, а в геймплей. Как только ТС до него доберётся, то с большой вероятностью (если экстраполировать статистику) плюнет на это дело. Т.е. не надо будет разгребать геморрой с дефолтной настройкой (т.е. сэкономить время и нервы уже сейчас)
1
8Observer8
2487 / 1592 / 272
Регистрация: 05.10.2013
Сообщений: 4,942
Записей в блоге: 72
28.04.2017, 19:58 23
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну а если у пользователя ни разу не Nvidea окажется а соответствено и DLL которые статически биндятся на компе не будет? Прога вообще просто не стартует.
Да, это только для таких же как я, у которых работает программа Optimus. Остальные увидят моё сообщение во время запуска программы, что для работы программы нужно обновить драйвера как минимум до OpenGL 3.3. У остальных та строчка будет просто игнорироваться. Это только в тех программах, где я использую 3.3, а не 2.1. Ну и мне это удобство пока я изучаю геометрические шейдеры из 3.3, так как отключать Optimus я не собираюсь, так как ноут будет шуметь. А если добавлять каждый раз EXE в настройки с запуском с более мощной, после каждой пересборки приложения - это слишком. Поэтому для меня самое оптимальное - это копипаст той строчки кода.
1
Fulcrum_013
1540 / 1186 / 138
Регистрация: 14.12.2014
Сообщений: 10,103
Завершенные тесты: 3
28.04.2017, 20:28 24
Цитата Сообщение от Evg Посмотреть сообщение
Т.е. не надо будет разгребать геморрой с дефолтной настройкой (т.е. сэкономить время и нервы уже сейчас)
Отож. Причем гарантированно не будет такой ситуации когда развитие геймплея уткнется в недостаточность обвязки по настройкам, определению оборудования и т.п
1
infobos
Строитель
455 / 72 / 4
Регистрация: 18.06.2010
Сообщений: 499
29.04.2017, 04:55  [ТС] 25
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Для DirectX это выставление значений двух полей в структуре инициализации. Для GL примерно так же должно быть.
Не могли бы Вы написать эти строчки?
0
Fulcrum_013
1540 / 1186 / 138
Регистрация: 14.12.2014
Сообщений: 10,103
Завершенные тесты: 3
29.04.2017, 05:24 26
Цитата Сообщение от infobos Посмотреть сообщение
Не могли бы Вы написать эти строчки?
вот пример иннициализации:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    Mode.Size = sizeof(Mode);
    D3DDISPLAYROTATION Rotation;
    Direct3D->GetAdapterDisplayModeEx(D3DADAPTER_DEFAULT, &Mode,&Rotation);
 
    
    Parameters.Windowed = false;
    Parameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
    Parameters.BackBufferWidth = Mode.Width;
    Parameters.BackBufferHeight = Mode.Height;
    Parameters.BackBufferCount = 1;
    Parameters.hDeviceWindow = aWindow;
    Parameters.BackBufferFormat = Mode.Format;
    Parameters.EnableAutoDepthStencil = true;
    Parameters.AutoDepthStencilFormat = D3DFMT_D24S8;
    Parameters.Flags = D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL;
 
    Parameters.PresentationInterval = D3DPRESENT_INTERVAL_ONE; //включение VSync
    Parameters.FullScreen_RefreshRateInHz = Mode.RefreshRate; // частота в полноэкранном режиме.
 
    Direct3D->CreateDeviceEx(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, aWindow,
        D3DCREATE_HARDWARE_VERTEXPROCESSING,
        &Parameters,&Mode, &Device);
1
freeba
Неадекват
1282 / 1079 / 206
Регистрация: 02.04.2010
Сообщений: 2,481
Записей в блоге: 2
Завершенные тесты: 2
30.04.2017, 13:09 27
i7-4790K/16Gb/gtx1080/win10x64

1 - 2100
2 - 2100
3 - 2100
4 - 2400
5 - 2950

Странно, но в первых трех фпс различается в пределах погрешности.
1
infobos
Строитель
455 / 72 / 4
Регистрация: 18.06.2010
Сообщений: 499
30.04.2017, 15:33  [ТС] 28
Цитата Сообщение от freeba Посмотреть сообщение
Странно, но в первых трех фпс различается в пределах погрешности.
Видимо видеокарта некоторые вещи обрабатывает параллельно и это не сказывается на производстве рисования.
Если видеокарта мощная, то и основное сопротивление уже находится в процессоре при передачи информации видеокарте.
0
Fulcrum_013
1540 / 1186 / 138
Регистрация: 14.12.2014
Сообщений: 10,103
Завершенные тесты: 3
30.04.2017, 23:44 29
Цитата Сообщение от freeba Посмотреть сообщение
Странно, но в первых трех фпс различается в пределах погрешности.
Цитата Сообщение от infobos Посмотреть сообщение
Видимо видеокарта некоторые вещи обрабатывает параллельно и это не сказывается на производстве рисования.
В первых трех ФПС упирается в скорость формирования Draw Call процессором. В двух последних все рисуется одним Draw Call.
Дальнейший прирост возможен только если буфера поселить непосредственно в видеопамяти а не в системной. т.е использовать VBO с которым у GL обычно та еще морока а DX на них построен изначально.
2
infobos
Строитель
455 / 72 / 4
Регистрация: 18.06.2010
Сообщений: 499
17.05.2017, 08:20  [ТС] 30
Игра Лабиринт 3D вторая часть, с генерацией уникального большого лабиринта: Игра Лабиринт 3D (вторая часть) – генерация уникального большого лабиринта (4 уровня сложности)

1. Логику генерации лабиринта (использовано: srand(), Sleep() и rand()). Использование только rand() приводит к плохой генерации случайных чисел. srand() и Sleep() улучшают случайность внедрением в них определенных значений – это: Время мс. и любые значение цифр из логики генерации.
2. Рисование производится через такт: SetTimer(hWnd,1,10,NULL). И здесь хотелось бы протестировать на многих ли компьютерах оно будет работать так, как положено (Без сбоев по времени такта).
3. Применены рекурсивные функции для рисования. Рисование последовательного пути полигонов от нахождения камеры. Тут можно еще оптимизировать. Но я поленился это сделать. И это приводит к большому числу рисования полигонов 1000 шт., а с оптимизацией можно было достичь и 30-50 штук. Но на это уйдет непомерно много времени на разработку упрощение полигонов на большие куски(оно не стоит этих усилий)).
0
Миниатюры
Игра Лабиринт. 3D движок от первого лица (WinAPI C++ OpenGL) + исходник кода   Игра Лабиринт. 3D движок от первого лица (WinAPI C++ OpenGL) + исходник кода  
KokosSPb
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
31.05.2017, 20:44 31
1) max 341
2) max 356
3) max 347
4) max 576
5) max 580 (странно, просто открываю бегаю, закрываю, снова открываю бегаю и уже max 377, потом снова закрываю, открываю и снова много 606...)

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

Могу завтра на компе попробовать протестить
1
infobos
Строитель
455 / 72 / 4
Регистрация: 18.06.2010
Сообщений: 499
01.06.2017, 06:33  [ТС] 32
Цитата Сообщение от KokosSPb Посмотреть сообщение
Могу завтра на компе попробовать протестить
Не нужно! Здесь уже хватает участников тестирования.
Лучше протестируйте вторую часть игры, где мало участников тестирования: Игра Лабиринт 3D (вторая часть) – генерация уникального большого лабиринта (4 уровня сложности)

Цитата Сообщение от KokosSPb Посмотреть сообщение
5) max 580 (странно, просто открываю бегаю, закрываю, снова открываю бегаю и уже max 377, потом снова закрываю, открываю и снова много 606...)
У меня тоже FPS меняется. Наверно что, то упрощается в расчетах видеокарты. Наверно видеокарты умеют находить лишние процессы и уменьшать нагрузку. Либо совместно с операционкой что-то происходит. Я заметил, что в Windows 10 вообще регулирует сколько программе давать нагрузку на процессор. У меня было такое, что в определенный момент ускоряется расчет. Причем разница может достигать в три раза больше.
1
_20_
12 / 11 / 4
Регистрация: 29.09.2011
Сообщений: 280
23.06.2017, 00:49 33
У меня, похоже, одну стену не отрисовывает. Когда лабиринт прошёл, на выходе есть другие проходы, но туда зайти нельзя, упираюсь в невидимую стенку.
Игра Лабиринт. 3D движок от первого лица (WinAPI C++ OpenGL) + исходник кода

60 fps, nvidia Geforce 970.
Как выключить пертикальную синхронизацию так и не понял.
Windows 7.
1
_20_
12 / 11 / 4
Регистрация: 29.09.2011
Сообщений: 280
23.06.2017, 00:50 34
У меня, похоже, одну стену не отрисовывает. Когда лабиринт прошёл, на выходе есть другие проходы, но туда зайти нельзя, упираюсь в невидимую стенку.
Вложение 846853
60 fps, nvidia Geforce 970.
Как выключить пертикальную синхронизацию так и не понял.

Не понял, почему два раза отправилось сообщение, одно из них просьба удалить.
0
infobos
Строитель
455 / 72 / 4
Регистрация: 18.06.2010
Сообщений: 499
07.07.2017, 05:28  [ТС] 35
Цитата Сообщение от _20_ Посмотреть сообщение
У меня, похоже, одну стену не отрисовывает. Когда лабиринт прошёл, на выходе есть другие проходы, но туда зайти нельзя, упираюсь в невидимую стенку.
Так задумано! За пределами лабиринта это не особо важно и было упущено!
0
07.07.2017, 05:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2017, 05:28

Камера от первого лица
В который раз, вечер добрый, очередная проблема, хотя не решились еще...

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

Игра Лабиринт
Кто-нибудь может помочь написать игру "Лабиринт" на Си? Или может у Вас есть...


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

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

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