forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты C++ (http://forum.boolean.name/forumdisplay.php?f=56)
-   -   [TrueHorror] - разработка (http://forum.boolean.name/showthread.php?t=17293)

mr.DIMAS 09.10.2014 20:44

Ответ: [TrueHorror] - разработка
 
А разрешение экрана тогда менять через ChangeDisplaySettings(...)?

Делаю сохранения. Вопрос такой: сделать чекпоинты или свободное сохранение\загрузку?

И еще как проще избежать такого:
Код:

map<string,string> localization;
...
(runtime)
DrawText( localization[ "foo" ], ... );


Samodelkin 09.10.2014 20:59

Ответ: [TrueHorror] - разработка
 
Разрешение экрана при borderless видимо никак, но можно попробовать сменить разрешение бэкбуфера.

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

localization очень длинное название переменной.
А почему map? У тебя есть язык, название куска текста и сам текст, то есть 3 поля.
Язык и текст желательно менять извне, а в код вставить выбор где какой текст выводить.
В общем подробней опиши в чём проблема.

Mr_F_ 09.10.2014 21:03

Ответ: [TrueHorror] - разработка
 
Цитата:

А разрешение экрана тогда менять через ChangeDisplaySettings(...)?
об этом не думал что-то, обычно юзал разрешение = разрешению десктопа)
ну можно рендерить игру в другом разрешении, а потом рисовать квад в десктопном с изображением игры)

mr.DIMAS 09.10.2014 21:18

Ответ: [TrueHorror] - разработка
 
Цитата:

localization очень длинное название переменной.
А почему map? У тебя есть язык, название куска текста и сам текст, то есть 3 поля.
Язык и текст желательно менять извне, а в код вставить выбор где какой текст выводить.
В общем подробней опиши в чём проблема.
Суть в том что я делаю игру с локализацией( то бишь переводом на другие языки ). Ну и там при загрузке, например, уровня я загружаю файл соответствующий( посмотри папку data\lang\rus ) и парсю его, и потом там где надо отрисовать текст, передаю текст в виде loc[ "foo" ]. Я не думаю что это хорошая идея использовать string в качестве ключа . Но и плодить кучу переменных для каждой строки тоже не очень весело. Поэтому и спрашиваю, может кто знает как про-разрабы с этим справляются.

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

Mr_F_ 09.10.2014 21:49

Ответ: [TrueHorror] - разработка
 
а надо ли получать новые стринги из localization[] каждый кадр? скорее всего это будет происходить крайне редко - наверное ок и стрингом.
там где часто одни и те же, можно один раз получить значение из массива в обычную переменную и выводить её.

Samodelkin 09.10.2014 22:10

Ответ: [TrueHorror] - разработка
 
Цитата:

Сообщение от mr.DIMAS (Сообщение 287926)
Суть в том что я делаю игру с локализацией( то бишь переводом на другие языки ). Ну и там при загрузке, например, уровня я загружаю файл соответствующий( посмотри папку data\lang\rus ) и парсю его, и потом там где надо отрисовать текст, передаю текст в виде loc[ "foo" ]. Я не думаю что это хорошая идея использовать string в качестве ключа . Но и плодить кучу переменных для каждой строки тоже не очень весело. Поэтому и спрашиваю, может кто знает как про-разрабы с этим справляются.

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

Да ты полиглот!

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

Джонатан Блоу внушает доверие, поэтому хоть я сам и не пробовал эту штуку, но порекомендую её тебе: http://number-none.com/blow/code/mo_file/index.html
(заодно и проверишь как там))

Цитата:

Сообщение от Mr_F_
ну можно рендерить игру в другом разрешении, а потом рисовать квад в десктопном с изображением игры)

Я видел такое в ArmA 2 -- можно ещё настраивать положение этого квада на экране.
Можно также оставлять рисовать оверлей с 2д графикой в нативном разрешении, чтобы интерфейс не смызывался.

Но я только что проверил у себя -- достаточно поставить меньшее разрешение бэкбуфера в D3DPRESENT_PARAMETERS и оно само растянется до размеров окна.
Так что не стоит усложнять если не требуется доп. функционал с квадом.

mr.DIMAS 09.10.2014 22:32

Ответ: [TrueHorror] - разработка
 
Цитата:

а надо ли получать новые стринги из localization[] каждый кадр? скорее всего это будет происходить крайне редко - наверное ок и стрингом.
В свое время сделал ГУЙ как в юнити, для отрисовки текста используется просто вызов DrawText который в движке засовывает экземпляр Text в queue и отправляет на рендер. Показалось очень удобным, теперь же у меня бомбит от того что это все отжирает ресурсы на обращение в рантайме к map<string,string>.
Наверное сделаю обертку на своим же высером, ибо переделывать движок а потом и в игре переделывать некоторые моменты с гуем, как-то не очень радует.
Обертка будет содержать текст и параметры отрисовки, хоть так удастся избежать постоянного обращения к map по string.

Samodelkin 09.10.2014 22:38

Ответ: [TrueHorror] - разработка
 
В map там же упорядоченное дерево, так что сравнивается быстро.
Один раз за кадр ничего страшного.
Вон у тебя там софтварный скиннинг куда больше отжирает -- его бы на шейдер перенести.
Да и вообще у меня 60 фпс везде, давай уже карту пробуй делать больше и детальней.

mr.DIMAS 09.10.2014 22:47

Ответ: [TrueHorror] - разработка
 
Как сделать пятно у фонаря? Как проецировать текстуру на пятно от спотлайта?

Mr_F_ 09.10.2014 23:30

Ответ: [TrueHorror] - разработка
 
делаешь матрицу типа как для камеры и фигачишь наподобие

float4 projPos = mul(float4(worldPos,1), projectionMatrix);
projPos.xyz /= projPos.w;
float2 projTexCoords = projPos.xy*0.5+0.5;

mr.DIMAS 09.10.2014 23:35

Ответ: [TrueHorror] - разработка
 
ZBuffer должен быть выключен при отрисовке?

Mr_F_ 10.10.2014 00:10

Ответ: [TrueHorror] - разработка
 
... это код для получения спроецированных текскоорд. а где ты его выполняешь уже другой вопрос.
по идее раз у тебя деферные споты, то в шейдере спота и выполняй, передай ему только матрицу для проецирования и текстуру.

mr.DIMAS 10.10.2014 16:10

Ответ: [TrueHorror] - разработка
 

http://www.3dnews.ru/903316
Убейсофт заботится о своих пользователях

[сарказм]Может и мне забить на оптимизацию?[/сарказм]

ARA 10.10.2014 16:31

Ответ: [TrueHorror] - разработка
 
Цитата:

Сообщение от mr.DIMAS (Сообщение 287981)

http://www.3dnews.ru/903316
Убейсофт заботится о своих пользователях

[сарказм]Может и мне забить на оптимизацию?[/сарказм]

Цитата:

«Наша цель — 30 кадров в секунду. 60 к/с нормально смотрятся в шутере, но не в экшен-приключении. Меньшая частота кадров более удобна пользователям»
А 1280 на 720 даёт более детальную картинку лучше воспринимается глазами. Отвечаю.

Samodelkin 10.10.2014 17:11

Ответ: [TrueHorror] - разработка
 
Лет 10-15 назад играл в разрешении 640х480 в некоторые новые по тем временам игры они казались очень детализированными, сейчас же на 1080р в тех же играх углы да мыло.

К слову Crytek сегодня (10 октября) релизит RYSE с поддержкой 4К.


Часовой пояс GMT +4, время: 18:13.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot