Форум программистов, компьютерный форум, киберфорум
Бета-тестирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/26: Рейтинг темы: голосов - 26, средняя оценка - 5.00
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте!

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

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

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

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

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

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

Постарайтесь занять одно сообщение.
Тем, кто помогал, пишите мне в личку E-mail и на него будет выслан исходник этой игры.
Вложения
Тип файла: rar Test.rar (394.8 Кб, 132 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.04.2017, 09:10
Ответы с готовыми решениями:

Игра от первого лица на Си, используя SDL2
Всем привет, решил сделать игрушку от 1го лица на Си с помощью SDL2. В ней надо блуждать по лабиринту, при нажатии на экран, собирать...

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

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

34
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
28.04.2017, 19:21
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Проблему с программой Optimus от NVidia я решил, так как они советуют в своей документации для разработчиков: https://docs.nvidia.com/gamewo... ptimus.htm
Ну а если у пользователя ни разу не Nvidea окажется а соответствено и DLL которые статически биндятся на компе не будет? Прога вообще просто не стартует.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
28.04.2017, 19:45
На первых порах можно на это забить и отложить этот вопрос на потом. Тем более практика показывает, что разработка игр у людей упирается совсем не в графику, а в геймплей. Как только ТС до него доберётся, то с большой вероятностью (если экстраполировать статистику) плюнет на это дело. Т.е. не надо будет разгребать геморрой с дефолтной настройкой (т.е. сэкономить время и нервы уже сейчас)
1
9991 / 2963 / 497
Регистрация: 05.10.2013
Сообщений: 8,134
Записей в блоге: 243
28.04.2017, 19:58
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну а если у пользователя ни разу не Nvidea окажется а соответствено и DLL которые статически биндятся на компе не будет? Прога вообще просто не стартует.
Да, это только для таких же как я, у которых работает программа Optimus. Остальные увидят моё сообщение во время запуска программы, что для работы программы нужно обновить драйвера как минимум до OpenGL 3.3. У остальных та строчка будет просто игнорироваться. Это только в тех программах, где я использую 3.3, а не 2.1. Ну и мне это удобство пока я изучаю геометрические шейдеры из 3.3, так как отключать Optimus я не собираюсь, так как ноут будет шуметь. А если добавлять каждый раз EXE в настройки с запуском с более мощной, после каждой пересборки приложения - это слишком. Поэтому для меня самое оптимальное - это копипаст той строчки кода.
1
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
28.04.2017, 20:28
Цитата Сообщение от Evg Посмотреть сообщение
Т.е. не надо будет разгребать геморрой с дефолтной настройкой (т.е. сэкономить время и нервы уже сейчас)
Отож. Причем гарантированно не будет такой ситуации когда развитие геймплея уткнется в недостаточность обвязки по настройкам, определению оборудования и т.п
1
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
29.04.2017, 04:55  [ТС]
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Для DirectX это выставление значений двух полей в структуре инициализации. Для GL примерно так же должно быть.
Не могли бы Вы написать эти строчки?
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
29.04.2017, 05:24
Цитата Сообщение от 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
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
30.04.2017, 13:09
i7-4790K/16Gb/gtx1080/win10x64

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

Странно, но в первых трех фпс различается в пределах погрешности.
1
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
30.04.2017, 15:33  [ТС]
Цитата Сообщение от freeba Посмотреть сообщение
Странно, но в первых трех фпс различается в пределах погрешности.
Видимо видеокарта некоторые вещи обрабатывает параллельно и это не сказывается на производстве рисования.
Если видеокарта мощная, то и основное сопротивление уже находится в процессоре при передачи информации видеокарте.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
30.04.2017, 23:44
Цитата Сообщение от freeba Посмотреть сообщение
Странно, но в первых трех фпс различается в пределах погрешности.
Цитата Сообщение от infobos Посмотреть сообщение
Видимо видеокарта некоторые вещи обрабатывает параллельно и это не сказывается на производстве рисования.
В первых трех ФПС упирается в скорость формирования Draw Call процессором. В двух последних все рисуется одним Draw Call.
Дальнейший прирост возможен только если буфера поселить непосредственно в видеопамяти а не в системной. т.е использовать VBO с которым у GL обычно та еще морока а DX на них построен изначально.
2
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
17.05.2017, 08:20  [ТС]
Игра Лабиринт 3D вторая часть, с генерацией уникального большого лабиринта: Игра Лабиринт 3D (вторая часть) – генерация уникального большого лабиринта (4 уровня сложности)

1. Логику генерации лабиринта (использовано: srand(), Sleep() и rand()). Использование только rand() приводит к плохой генерации случайных чисел. srand() и Sleep() улучшают случайность внедрением в них определенных значений – это: Время мс. и любые значение цифр из логики генерации.
2. Рисование производится через такт: SetTimer(hWnd,1,10,NULL). И здесь хотелось бы протестировать на многих ли компьютерах оно будет работать так, как положено (Без сбоев по времени такта).
3. Применены рекурсивные функции для рисования. Рисование последовательного пути полигонов от нахождения камеры. Тут можно еще оптимизировать. Но я поленился это сделать. И это приводит к большому числу рисования полигонов 1000 шт., а с оптимизацией можно было достичь и 30-50 штук. Но на это уйдет непомерно много времени на разработку упрощение полигонов на большие куски(оно не стоит этих усилий)).
Миниатюры
Игра Лабиринт. 3D движок от первого лица (WinAPI C++ OpenGL) + исходник кода   Игра Лабиринт. 3D движок от первого лица (WinAPI C++ OpenGL) + исходник кода  
0
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
31.05.2017, 20:44
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
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
01.06.2017, 06:33  [ТС]
Цитата Сообщение от KokosSPb Посмотреть сообщение
Могу завтра на компе попробовать протестить
Не нужно! Здесь уже хватает участников тестирования.
Лучше протестируйте вторую часть игры, где мало участников тестирования: Игра Лабиринт 3D (вторая часть) – генерация уникального большого лабиринта (4 уровня сложности)

Цитата Сообщение от KokosSPb Посмотреть сообщение
5) max 580 (странно, просто открываю бегаю, закрываю, снова открываю бегаю и уже max 377, потом снова закрываю, открываю и снова много 606...)
У меня тоже FPS меняется. Наверно что, то упрощается в расчетах видеокарты. Наверно видеокарты умеют находить лишние процессы и уменьшать нагрузку. Либо совместно с операционкой что-то происходит. Я заметил, что в Windows 10 вообще регулирует сколько программе давать нагрузку на процессор. У меня было такое, что в определенный момент ускоряется расчет. Причем разница может достигать в три раза больше.
1
22 / 56 / 9
Регистрация: 29.09.2011
Сообщений: 618
23.06.2017, 00:49
У меня, похоже, одну стену не отрисовывает. Когда лабиринт прошёл, на выходе есть другие проходы, но туда зайти нельзя, упираюсь в невидимую стенку.

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

Не понял, почему два раза отправилось сообщение, одно из них просьба удалить.
0
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
07.07.2017, 05:28  [ТС]
Цитата Сообщение от _20_ Посмотреть сообщение
У меня, похоже, одну стену не отрисовывает. Когда лабиринт прошёл, на выходе есть другие проходы, но туда зайти нельзя, упираюсь в невидимую стенку.
Так задумано! За пределами лабиринта это не особо важно и было упущено!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.07.2017, 05:28

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

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

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

Игра 'Лабиринт'
Привет всем , собсно тема курсовой работы звучит как "Игровое приложение лабиринт" . Нашёл программу , может кто нить по процедурам...

Игра лабиринт
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { ...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru