HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > OpenGL > Нубские вопросы
Теория создания игры
2 голосов
Страницы (15): [1] 2 3 4 5 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
qpAHToMAS
Интернетовское трепло

Дата регистрации: Sep 2007
Проживает: (void)
Сообщений: 1788
Возраст: 32

Рейтинг



Question Нубские вопросы

Я никогда не работал ни с OpenGL, ни с C++, ни с какими подобными гигантами программной части, которые используются для создания 3D игр, хотя бы уровня Half-life: Counter-Strike.
По этому позвольте в этой теме я буду задавать вопросы, которые так или иначе связаны с графической и технической частью создания игр. В качестве ответов так же принимаются ссылки на небольшие статьи (не книги).

  1. Всю 3D графику на экран игры выводит OpenGL, а каким образом рисуются 2D объекты, т.е. тексты, спрайты на экране, меню и т.д., тоже OpenGL функции?
  2. Для OpenGL нет разницы что рисовать, пусть это модель или карта? Т.е. везде используется одна система: считывание координат фигур из файла и их воспроизведение в 3D мире?
  3. Почему используются текстуры определенных размеров (16x16, 64x64 и т.д.)? Легче для видеокарты?
  4. OpenGL работает со светом и тенями? Как это вообще реализуется (светлые и темные области уровня)?

Сообщить модератору | | IP: Записан
Сообщение: 61217

Старое сообщение 30-06-2010 10:34
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32132
Нанёс повреждений: 392 ед.

Рейтинг



1. 2D объекты выводятся прямо перед камерой в ортогональной проекции.
Теми же самыми методами отрисовки.
2. Больше скажу - ОпенГЛ ни сном ни духом ни про какие-то там модели или карты. Это всего лишь слой абстракции для удобства конечного пользователя. Если будет надо - можно с таким же успехом вкомпилить в приложение набор вертексов и текстур и точно так же вывести на экран.
Так иногда поступают в демках физических движков - например модельку кролика зашивают в exe.
3. В принципе новые карточки поддерживают NON Power of two текстуры.
Но лучше не рисковать. Две-три сильно некратные текстуры способны просадить фпс до нуля.
4. Это смотря что понимать под работой со светом и тенями. Если на мапперском уровне - поставил лампочку на карту и включил её, то подобные методы там тоже есть, но они как правило медленные и кол-во источников ограничено шестью-семью. То что мы нарисовали без освещения можно либо затемнить либо еще больше засветить.
Попиксельное затемнение достигается наложением лайтмап на геометрию уровня (умножением яркости лайтмапы на текстуру). Можно делать вертексное освещение (регулировать цвет вертексов). Можно наконец в реалтайме тени накладывать, либо делать засветку простым сложением яркости. Да много методов вообщем.
Вот про модели освещения почитай, если интересно:
http://steps3d.narod.ru/tutorials/l...g-tutorial.html

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 61220

Старое сообщение 30-06-2010 13:03
-
maxbars
Волан-де-програм.
Девойс

Дата регистрации: Jun 2009
Проживает: Нино
Сообщений: 273
Возраст: 27

Рейтинг



Цитата:
qpAHToMAS писал:
Всю 3D графику на экран игры выводит OpenGL, а каким образом рисуются 2D объекты, т.е. тексты, спрайты на экране, меню и т.д., тоже OpenGL функции?

Вообще-то есть такая штука, называется растровые шрифты...Тоже средствами opengl реализовано.

2.
ИМХО нет.

3.Сам незнаю.
4.ДА. Светлые создается источник света, темные отбрасывание теней и всё.

__________________
ьфч

Сообщить модератору | | IP: Записан
Сообщение: 61221

Старое сообщение 30-06-2010 13:04
- За что?
qpAHToMAS
Интернетовское трепло

Дата регистрации: Sep 2007
Проживает: (void)
Сообщений: 1788
Возраст: 32

Рейтинг



Спасибо за ответ(ы) .

Цитата:
Дядя Миша писал:
2D объекты выводятся прямо перед камерой в ортогональной проекции.
Теми же самыми методами отрисовки.

Удивительно и в тоже время страшно представить как же высчитываются их координаты ("в углу экрана", "от угла на 5 пикселей" и т.д.).
Если спрайт, например, того же радара в CS — это плоскость, то что из себя представляют такие сложные элементы, как консоль, главное меню настроек в том же CS или Option Implicit?

Еще вопросы:
  1. На сколько я понимаю, что бы такая громадная штука как игра работала, надо использовать множество потоков? В одном обрабатывается физика на всем уровне, в другом: поведение игрока со стороны клиента, в прочих: поведение AI и т.д. Это действительно так (уж очень сложно)?
  2. Коллизии и физика в целом напрямую работают с OpenGL, что бы например просчитывать столкновение камеры с картой (как в QuakeIII в режиме наблюдения нельзя летать сквозь карту)?

Сообщить модератору | | IP: Записан
Сообщение: 61249

Старое сообщение 01-07-2010 13:22
- За что?
BUzer
Pills here!

Группа: Опытный
Дата регистрации: Oct 2005
Проживает: Владивосток
Сообщений: 349
Возраст: 39

Рейтинг



qpAHToMAS

Цитата:
Удивительно и в тоже время страшно представить как же высчитываются их координаты ("в углу экрана", "от угла на 5 пикселей" и т.д.).

Ничего такого самому высчитывать не надо, всё гораздо проще.
Цитата:
На сколько я понимаю, что бы такая громадная штука как игра работала, надо использовать множество потоков?

Вовсе нет. Обычно, если к игре прикручивают многопоточность, то это для того, чтобы что-нибудь оптимизировать (использовать многоядерность, или что-нибудь загружать в фоне)
Цитата:
Коллизии и физика в целом напрямую работают с OpenGL

Физика не имеет никакого отношения к опенгл.

Сообщить модератору | | IP: Записан
Сообщение: 61250

Старое сообщение 01-07-2010 13:40
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32132
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
qpAHToMAS писал:
Удивительно и в тоже время страшно представить как же высчитываются их координаты ("в углу экрана", "от угла на 5 пикселей" и т.д.).

А что в этом страшного? У тебя есть четыре глобальных координаты - четыре угла экрана. От них обычно все и пляшут.
Надо нам, к примеру. нарисовать иконку фонарика, так и пишем:
От правого края экрана отступ минус 10 пикселей.
И от верха плюс 10. (0,0 обычно считается за левый верхний угол экрана).
Цитата:
qpAHToMAS писал:
Если спрайт, например, того же радара в CS — это плоскость, то что из себя представляют такие сложные элементы, как консоль, главное меню настроек в том же CS или Option Implicit?

Не поверишь - точно такие же плоскости.
Консоль - это картинка, на которую "мовевитчем" привязаны буквы.
Цитата:
qpAHToMAS писал:
надо использовать множество потоков

Потоки как правило виртуальные, по типу тчинков в той же халфе.
Настоящие потоки очень муторно использовать из-за синхронизации.
К тому же код, отлично работающий на одной платформе, может давать сбои на другой.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 61251

Старое сообщение 01-07-2010 15:35
-
qpAHToMAS
Интернетовское трепло

Дата регистрации: Sep 2007
Проживает: (void)
Сообщений: 1788
Возраст: 32

Рейтинг



Цитата:
Дядя Миша писал:
Потоки как правило виртуальные, по типу тчинков в той же халфе.

Что-то ничего нагуглить нормального про эти "Виртуальные потоки" не могу , есть какая-нибудь ссылка на теоретическое объяснение того, что это такое и чем они отличаются от обычных, полностью отдельных потоков?

Цитата:
BUzer писал:
Физика не имеет никакого отношения к опенгл.

Видимо все "твердотельные" зоны 3D уровня имеют отдельное место в памяти и уже с этими данными работают всякие коллизии . Я то думал что можно прям так рулить:
code:
если(opengl_плоскость_на_пути) { действие }

Сообщить модератору | | IP: Записан
Сообщение: 61301

Старое сообщение 03-07-2010 10:20
- За что?
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



Награды
 
[1 награда]


qpAHToMAS можно одни и те же плоскости (точнее говоря - полигоны) скармливать как опенгл так и физическому движку. Не такого понятия как опенгл-плоскость. Плоскость она плоскость и есть. А вообще в современных играх обычно физическая модель хранится отдельно от визуальной и представляет из себя более упрощенную, низкополигональную модель.

Сообщить модератору | | IP: Записан
Сообщение: 61312

Старое сообщение 03-07-2010 16:03
- За что?
PoD-Stas
Житель форума

Дата регистрации: Jul 2007
Проживает: Харьков
Сообщений: 586
Возраст: 34

Рейтинг



qpAHToMAS ОпенГЛу нет дела до того, что творит физический движек с координатами. ОпенГЛ только и делает, что выводит инструкции, котоpые ему даются.

Сообщить модератору | | IP: Записан
Сообщение: 61313

Старое сообщение 03-07-2010 16:04
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32132
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
qpAHToMAS писал:
Что-то ничего нагуглить нормального про эти "Виртуальные потоки" не могу

ну я может быть неудачно выразился. Ну ты тчинки видел в хл1 ? А систему тчинков в хл2? Вот это оно и есть.
Цитата:
qpAHToMAS писал:
если(opengl_плоскость_на_пути) { действие }

жэсть.
А если директ3Д или софтвар, тогда што?
Цитата:
Government-Man писал:
можно одни и те же плоскости (точнее говоря - полигоны) скармливать как опенгл так и физическому движку

На кой чёрт опенглу плоскости? Они нужны только на этапе отсечения невидимых полигонов ну и для физики конечно.
Цитата:
Government-Man писал:
А вообще в современных играх обычно физическая модель хранится отдельно от визуальной и представляет из себя более упрощенную, низкополигональную модель.

Например - в первокваке или халфе

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 61317

Старое сообщение 03-07-2010 18:30
-
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



Награды
 
[1 награда]


Цитата:
Дядя Миша писал:
На кой чёрт опенглу плоскости?


В данном случае как я понял, автор под "плоскостями" подразумевал полигоны.

Сообщить модератору | | IP: Записан
Сообщение: 61319

Старое сообщение 03-07-2010 18:44
- За что?
qpAHToMAS
Интернетовское трепло

Дата регистрации: Sep 2007
Проживает: (void)
Сообщений: 1788
Возраст: 32

Рейтинг



Цитата:
Дядя Миша писал:
ну я может быть неудачно выразился. Ну ты тчинки видел в хл1 ? А систему тчинков в хл2? Вот это оно и есть.

Не видел . HL знаю как игрок и маппер, не больше этого.

Цитата:
Government-Man писал:
В данном случае как я понял, автор под "плоскостями" подразумевал полигоны.

Да, именно так.

Ок, остановлюсь на том, что OpenGL графика и только, а физика, которая взаимодействует с уровнем — совсем другая песня.

Сообщить модератору | | IP: Записан
Сообщение: 61327

Старое сообщение 04-07-2010 04:38
- За что?
qpAHToMAS
Интернетовское трепло

Дата регистрации: Sep 2007
Проживает: (void)
Сообщений: 1788
Возраст: 32

Рейтинг



Дядя Миша, и все же не знание того, что такое "тчинки" мне не дает покоя, объясни пожалуйста.

Сообщить модератору | | IP: Записан
Сообщение: 61402

Старое сообщение 08-07-2010 15:13
- За что?
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



Награды
 
[1 награда]


qpAHToMAS это всего лишь функции в которых выполняется логика энтить в хл (от англ. think - "думать"). В хл можно устанавливать функцию которая будет вызвана в следующий раз: SetThink( MyCoolThink ); и время вызова: pev->nextthink = gpGlobals->time + 0.5f;

"Виртуальными потоками" я бы эту систему не назвал...
К опенгл она тем более не имеет никакого отношения.

Отредактировано Government-Man 08-07-2010 в 15:43

Сообщить модератору | | IP: Записан
Сообщение: 61403

Старое сообщение 08-07-2010 15:37
- За что?
qpAHToMAS
Интернетовское трепло

Дата регистрации: Sep 2007
Проживает: (void)
Сообщений: 1788
Возраст: 32

Рейтинг



Government-Man, на сколько я понял — это простой поток, только в его начале стоит пауза, которую не допустимо было бы поставить в место, откуда вызывается функция.

Сообщить модератору | | IP: Записан
Сообщение: 61404

Старое сообщение 08-07-2010 16:47
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 06:22. Новая тема    Ответить
Страницы (15): [1] 2 3 4 5 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > OpenGL > Нубские вопросы
Теория создания игры
2 голосов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024