Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты C++

Ответ
 
Опции темы
Старый 11.10.2014, 23:14   #511
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 983
Написано 390 полезных сообщений
(для 634 пользователей)
Ответ: [TrueHorror] - разработка

Я всё таки еще раз предлагаю, если проект не коммерческий, разместить коды в каком-нибудь репозитории.
(Offline)
 
Ответить с цитированием
Старый 11.10.2014, 23:45   #512
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: [TrueHorror] - разработка

Пожалуйста: https://github.com/mrDIMAS/src

Там ничего особенного нет - только голые исходники.

Репозиторий будет обновляться раз в неделю или около того.
__________________

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо mr.DIMAS за это полезное сообщение:
Samodelkin (11.10.2014), tirarex (12.10.2014)
Старый 11.10.2014, 23:59   #513
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 983
Написано 390 полезных сообщений
(для 634 пользователей)
Ответ: [TrueHorror] - разработка

Буду время от времени изучать.

Ранее здесь шли разговоры о borderless window и 30fps в Ubisoft играх.
И вроде бы нашлось решение менять разрешение в borderless окне, а вот что насчёт fps?
Оконное приложение в d3d9 можно создавать с параметрами FullScreen_RefrashRateInHz = 0 и PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT | D3DPRESENT_INTERVAL_ONE | D3DPRESENT_INTERVAL_IMMEDIATE.
Во первых сделать 30 fps не получится, во вторых нет уверенности что у пользователя установлено 60.
Как вариант можно установить IMMEDIATE, а затем поставить ручной ограничитель.
Кто что думает?
(Offline)
 
Ответить с цитированием
Старый 12.10.2014, 15:35   #514
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 983
Написано 390 полезных сообщений
(для 634 пользователей)
Ответ: [TrueHorror] - разработка

Попробуй в Renderer::RenderWorld вместо
float timeStep = 1.0f / 60.0f;

//if( g_fpsCounter.fps > 0 )
//  timeStep = 1.0f / (float)g_fpsCounter.fps;

const int subSteps = 4;

g_dynamicsWorld->stepSimulation ( timeStep, subSteps );
написать
float timeStep = 1.0f / 60.0f;

//if( g_fpsCounter.fps > 0 )
//  timeStep = 1.0f / (float)g_fpsCounter.fps;

const int subSteps = 4;

g_dynamicsWorld->stepSimulation ( timeStep, subSteps, 1.0f / 120.0f );
Если это не исправит проблему, значит она в другом.
(Offline)
 
Ответить с цитированием
Старый 12.10.2014, 16:18   #515
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: [TrueHorror] - разработка

Так только тормозит сильнее физика и не помогло.
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Samodelkin (12.10.2014)
Старый 12.10.2014, 19:52   #516
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 983
Написано 390 полезных сообщений
(для 634 пользователей)
Ответ: [TrueHorror] - разработка

Удобно что в оконном режиме (в том числе borderless), даже если открываешь стартовое меню, которое в Win8 полноэкранное, не происходит потеря устройства.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mr.DIMAS (12.10.2014)
Старый 13.10.2014, 16:05   #517
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 983
Написано 390 полезных сообщений
(для 634 пользователей)
Ответ: [TrueHorror] - разработка

У тебя оказывается ещё OpenGL движок есть.

Кстати я тоже не сторонник выкладывать в репозиторий файлы проекта и прочие вещи относящиеся больше к IDE чем к коду, но всё-таки совсем без инструкции непонятно что с чем собирать.

Например у себя я по папкам разбросал исходники -- каждая папка это модуль сборки, ещё есть батник (или makefile) в котором так-же можно разобраться в структуре проекта, и выставив пути, собрать.
(Offline)
 
Ответить с цитированием
Старый 13.10.2014, 17:23   #518
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: [TrueHorror] - разработка

Таки движок на огле так себе поделка.

Чтобы собрать нужно иметь еще кучу всего.

DirectX SDK
Bullet 2.83
MagicInput ( h, lib ) - мышь\клава
ProjectF ( h, lib ) - звук

Еще есть конвертер, скрипт для макса, Visual Leak Detector.

Все кроме булета и vld и DirectX SDK могу скинуть отдельно. + файлы проекта( на VS 2012 )

Кароч проект большой и имеет кучу зависимостей, так что с системы на систему трудно переезжать.

Движок ( Ruthenium.dll ) - это все кроме того что лежит в Game
Игра - ( Mine.exe ) - это Game
__________________

(Offline)
 
Ответить с цитированием
Старый 13.10.2014, 19:56   #519
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 983
Написано 390 полезных сообщений
(для 634 пользователей)
Ответ: [TrueHorror] - разработка

Давай скинь, попробую собрать.
MagicInput и ProjectF если будут меняться, то их тоже имеет смысл зарепозиторить.
Кстати буллет не тот движок чтобы обновлять, обычно выбирают одну версию на весь цикл разработки проекта.
Обычно раз есть исходники, можно самому допиливать и добавлять нужные возможности.
(Offline)
 
Ответить с цитированием
Старый 14.10.2014, 01:55   #520
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: [TrueHorror] - разработка

Медия уже сильно поменялась, изменились многие конфиги... кароч чтоб тебе собрать и запустить нормально нужно тебе кидать всю рабочую папку - это почти 1,5 Гб.

Кароч, если у тебя есть скайп можешь мне написать, я скину свежую версию. мой скайп xcoolmrdimas
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Samodelkin (14.10.2014)
Старый 15.10.2014, 00:31   #521
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: [TrueHorror] - разработка

Че сделал:

1) Сохранение\загрузку уровня. Соответственно быстрое сохранение\загрузка тоже есть. Игра сохраняется при выходе. Чек поинты делать не буду - слишком казуально.
2) Всё

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

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

Впрочем кто шарит C++ может глянуть репозиторий на GitHub'e у меня в подписи.
__________________

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо mr.DIMAS за это полезное сообщение:
ARA (15.10.2014), Samodelkin (15.10.2014)
Старый 15.10.2014, 00:42   #522
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: [TrueHorror] - разработка

по концепции расскажи вкратце как делал сейв/лоад?
в шарпе мне дико помог встроенный в язык Reflection, но я каждый раз содрогаюсь при мысли о том, как бы я это реализовывал на С++.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 15.10.2014, 01:03   #523
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: [TrueHorror] - разработка

Делал "в лоб".

При сохранении:
1) Сохраняем данные чилдов корня уровня. Пишем имя чилда( у всех объектов в двиге всегда уникальные имена ), пишем позицию, поворот, виден\скрыт.
2) Сохраняем позицию игрока, и все его параметры - это около 50 переменных.
3) Сохраняем предметы. Пишем имя объекта к которому привязан предмет( нода предмета загружается вместе с уровнем ). Пишем параметры предмета.

Ну и в таком духе все остальное делаем.

При загрузке:
1) Читаем имя чилда. Находим его в сцене( глобально ). Читаем все его параметры.
2) Читаем позицию игрока, читаем его параметры.
3) Читаем имя предмета. Находим указатель на предмет по имени предмета( да, вот такой оверхед, но зато просто ). Читаем параметры предмета, и суем их по указателю в сам предмет.

Теперь объясню почему именно так. Если при загрузке сейва уровень_N не создан, то создается дефолтный уровень_N - при загрузке создаются все предметы, двери, и прочее прочее, затем уже происходит загрузка самого сейва и возвращение всех параметров объектов. То есть всегда гарантируется наличие всех объектов на дефолтном уровне_N.

Быстрое сохранение\загрузка работают очень быстро - 10 мс. Кароч моментально загружается\сохраняется.

Возможно для игры другого типа этот подход не прокатит. Особенно если объекты создаются динамически. У меня так просто получилось именно из-за наличия фиксированного числа объектов на каждом уровне.

Можно глянуть сурсы на гитхабе - сначала можно посмотреть SaveWriter\SaveLoader затем у каждого сохраняемого объекта есть метод Serialize\Deserialize
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (15.10.2014)
Старый 15.10.2014, 01:08   #524
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: [TrueHorror] - разработка

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

у меня трабла значительная была ещё с тем, что переменных просто миллион, каждый нпс в себе содержит добрую сотню их, а завтра я могу добавить ещё какой-нибудь float timeToStopShoutingAtDogsWhoShitUnderTrees, и мне ещё это добавлять в сейв/лоад?! а у каждого нпс с уникальным поведением/диалогами - ещё свои переменные. так что необходимо было мутить универсальную систему, которой не нужно знать ничего более имени класса, руками перебирать я бы просто обосрался.
и вот в С++ думаю разве что кодогенератором сделал на основе существующих хидеров с переменными.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 15.10.2014, 01:12   #525
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: [TrueHorror] - разработка

Можно сделать как в кваке сделано. Там есть тип cvar_t, им можно рулить из консоли( если играл, поймешь о чем я ). И есть общий список всех таких переменных
Пример его использования
cvar_t    sv_gravity = {"sv_gravity","800",false,true}; 
Может я говорю очевидные вещи, но можно взять шарповский аналог сишного map. Возможно это будет слишком жирно, но удобство пользования подкупает.
__________________

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com