 |
24.09.2014, 19:56
|
#436
|
Мастер
Регистрация: 12.01.2009
Сообщений: 983
Написано 390 полезных сообщений (для 634 пользователей)
|
Ответ: [TrueHorror] - разработка
Сообщение от mr.DIMAS
У себя в движке использую свою корявую библу. Тащит мышь, клаву. Есть поддержка KeyUp, KeyDown, KeyHit, MouseDown, MouseUp, MouseHit, позиция мыши относительно начала клиентской области окна. Мне хватает с головой.
|
И ты это делал поверх DirectInput? А как дела обстоят с языками? Например если я русский текст ввожу мне самому нужно преобразовывать? Всё тоже самое есть в сообщениях Windows, в том числе и языковые локализации. Короче мне кажется это велосипед, DirectInput и XInput нужны для аналоговых устройств, типа джойстиков, рулей, педалей, возможно мыши.
Хотя я сам тоже через DirectInput всё сделал, но вот сейчас буду переделывать.
//================================================== ======
К тому же у тебя в MagicInput обращение к клавиатуре через GetDeviceState -- при низком FPS у тебя нажатия будут выпадать или будет неправильная очередность при быстром наборе текста. Через состояние устройства можно опрашивать только аналоговые устройства (мышь, рули, контроллеры и т.п.)
|
(Offline)
|
|
30.09.2014, 19:32
|
#437
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
Долго отдыхал от игродела. Играл в дарксоулс 2. Но настало время вернуться.
Прошел свою игрушку с не затуманенными мозгами и понял, что очень мало интерактива в игре. Поэтому добавил разные интерактивные объекты:
1) Лестницы
2) Двери( есть и запертые двери, но ко всем есть ключи - ибо это не сайлент хилл  )
3) Вентиляционные ходы( общее название, на самом деле можно будет ползать и в узких проходах - например в трещине в скале )
По лестницами можно лазать вверх-вниз. По вентиляционным ходам можно ползать туда-сюда.
Вообще полезно отдыхать от геймдева - сразу свежие мысли в голову приходят.
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо mr.DIMAS за это полезное сообщение:
|
|
02.10.2014, 16:13
|
#438
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
Как на ваш взгляд: стоит ли делать видимым тело персонажа, и соответственно анимировать его для разных действий - типа того, как сделано в Outlast?
P.S. Переехал на C++11 и Bullet Physics 2.81. Сделал в движке строгую типизацию - до этого все хендлы объектов из движка передавались в виде указателя на объект reinterpret_cast к int. В итоге появлялись трудно уловимые баги.
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо mr.DIMAS за это полезное сообщение:
|
|
02.10.2014, 21:05
|
#439
|
Мастер
Регистрация: 12.01.2009
Сообщений: 983
Написано 390 полезных сообщений (для 634 пользователей)
|
Ответ: [TrueHorror] - разработка
Сообщение от mr.DIMAS
Как на ваш взгляд: стоит ли делать видимым тело персонажа, и соответственно анимировать его для разных действий - типа того, как сделано в Outlast?
|
Достаточно анимировать руки и движения камеры для разных действий.
Я думаю пока лучше экономить.
P.S. Переехал на C++11 и Bullet Physics 2.81. Сделал в движке строгую типизацию - до этого все хендлы объектов из движка передавались в виде указателя на объект reinterpret_cast к int. В итоге появлялись трудно уловимые баги.
|
MSVS 2013 не до конца совместим, но кодить на С++11 в целом можно.
Еще там какие-то расхождения со стандартом в ексепшонах, там нет ключевого слова noexcept, вместо него throw(), хотя в стандарте 98 throw() означает любое исключение, а в С++11 писать throw считается устаревшим -- достаточно только noexcept, таким образом компилятор не будет генерировать дополнительный код для перехвата и сделает программу быстрей, однако в std есть много того что кидает исключения, поэтому где попало noexcept ставить нельзя.
|
(Offline)
|
|
03.10.2014, 14:32
|
#440
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
MSVS 2013 не до конца совместим
|
Ну я вообще на 2012 студии. Но поддерживаемых фич мне достаточно. Чего только стоит for( auto smth : something ) { } .
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
03.10.2014, 18:25
|
#441
|
Мастер
Регистрация: 12.01.2009
Сообщений: 983
Написано 390 полезных сообщений (для 634 пользователей)
|
Ответ: [TrueHorror] - разработка
Да С++11 это почти новый язык, если будешь только фичи добавлять с существующий код -- не раскроешь весь потенциал.
Страуструп в 4 издании говорит что нужно архитектурно новые подходы делать, тогда новые фичи будут как можно лучше ложиться в общий контекст задуманного.
Вообще из своей практики еще могу добавить:
override -- удобно помечать виртуальные функции, чтобы случайно при опечатке не создать похожую, но не виртуальную функцию. Компилятор скажет что такой функции в базовом классе нет.
final -- помечать класс что он финальный, в этом случае можно не делать деструктор virtual (обычно делали, чтобы не забыть когда начнешь наследовать), теперь если попытаешься наследовать то нужно будет убрать final, и сразу автоматически это напоминает проверить деструктор на virtual.
списки инициализации -- теперь переменные рекомендуется инициализировать вот так:
int a { 10 };
потому что у списков инициализации более строгая типизация, и например в данном случае:
char a { 257 };
будет ошибка, и ты не накосячишь с переполнением значения.
К тому же списки инициализаций напрямую инициализируют переменную без промежуточных присваиваний.
Тоже относиться к классам.
Также полезны variadic templates -- они заменяют собой функции с переменным числом аргументов. Не часто, но кое-где я нашел им применение.
Ексепшены стали удобней и быстрее.
Например можно оформить конструктор так:
B::B( void ) try : A() { //code } catch ( const except& ex ) { //deinit throw; }
Таким образом мы в случае неудачи восстанавливаем состояние объекта локально, затем передаем ексепшен вызывающему коду, для более глобальных действий. Под try попадает также и конструктор базового класса.
Еще в классах можно создавать конструкторы перемещения и операторы присваивания с перемещением -- однако я пока не нашел им широкого применения.
Ещё, раньше чтобы скрыть конструктор копирования и оператор присваивания (обычные) не писали их тело, таким образом компилятор выдавал ошибку компиляции, теперь же можно помечать такие функции A( const A& a ) = delete;
Лямбда местами удобно использовать, например при обобщении кода внутри функций.
Применение библиотеки стало намного лучше и читабельней.
Так что теперь имхо её можно применять чаще, даже внутри движка, за исключением очень критических к производительности мест.
Вот но в общем если относиться к С++11 только как к дополнительным фичам, не получится раскрыть его возможности полностью.
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо Samodelkin за это полезное сообщение:
|
|
03.10.2014, 20:44
|
#442
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
Эх, открыл бы я для себя C++11 раньше, в начале написания движка, то архитектурно он был бы другим нежели сейчас. А так мне только фичи можно использовать, ибо архитектура уже есть и каждое ее изменение проходит болезненно. Когда доделаю игру, тогда вполне возможно начнется глобальный рефакторинг движка с учетом нового стандарта.
__________________
|
(Offline)
|
|
03.10.2014, 22:14
|
#443
|
Мастер
Регистрация: 12.01.2009
Сообщений: 983
Написано 390 полезных сообщений (для 634 пользователей)
|
Ответ: [TrueHorror] - разработка
Можно разделить движок на отдельные модули, так чтобы циклически производить рефакторинг и модернизацию каждого, в относительно короткий по времени цикл.
Стараться держать общий объем кода в пределах своих возможностей, чтобы не терять контроля и гибкости разработки.
Одним словом не делать "на века", а с вероятностью что может через месяц-два придется заменить/переписать/модернизировать.
Таким образом стараться минимизировать кол-во своего кода, пользоваться функционалом других библиотек, убирать устаревшие или "запасные" возможности, которыми на вряд ли будут пользоваться.
Я например задаю себе вопрос, если гипотетически сурцы исчезнут, за сколько я могу с нуля восстановить коды движка.
Если в пределах 2-3 месяцев, значит объем кодов движка в целом удовлетворяет моим возможностям.
В целом есть много способов улучшать и увеличивать возможности движка, без увеличения объёма исходного кода.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.10.2014, 17:33
|
#444
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
Улучшаю существующие уровни. На сей раз это шахта. Добавил крепь на своды и дощатый пол.
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо mr.DIMAS за это полезное сообщение:
|
|
06.10.2014, 22:23
|
#445
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
Промежуточная версия. Потестируйте на баги.
http://tempfile.ru/file/3095859
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо mr.DIMAS за это полезное сообщение:
|
|
07.10.2014, 00:03
|
#446
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: [TrueHorror] - разработка
Поругалась что OpenAL32 не юзабельна и вылетела.
Upd Удалил и заработало
В общем после начала напряг вид руки и все еще звук зажигалки.
Пошел в тоннель там меня завалило и появилось задание проверить вход , после того как сходил ко входу оно не исчезло.
Вошел в пещеры - фпс как рукой сняло.
Вседозволенность перемещения это не очень крутая фича без подсказок куда идти.
Полез по лестнице - пролез через нее и цеплялся не знай чем (скрины).
После лестницы остались звуки топанья по металу.
Зарядил фонарик керосином.
Добрался до детонатора но он не взрывается ( предполагаю что бомбу надо сделать)
Запустил игру в окне а его двигать нельзя 
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.10.2014, 00:07
|
#447
|
ТЫ ЧООО?
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений (для 7,192 пользователей)
|
Ответ: [TrueHorror] - разработка
Энжой йор свой движок

__________________
Вертекс в глаз или в пиксель раз?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.10.2014, 00:44
|
#448
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
Блин я на восьмерке не тестировал. Вообще хз че может быть. Может поможет удаление OpenAL32.dll?
upd. Поиск сказал что это из-за перемешивания 32 битных и 64 битных библиотек. Хотя я компилировал всё в 32 бита.
И еще - поставь http://www.microsoft.com/ru-ru/downl....aspx?id=30679
Добрался до детонатора но он не взрывается ( предполагаю что бомбу надо сделать)
|
Да, надо собрать по четыре штуки - детонаторов, взрывчатки и проводов закрепить их на стене и потом взорвать.
__________________
|
(Offline)
|
|
07.10.2014, 01:13
|
#449
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: [TrueHorror] - разработка
Собрал все в стену и взорвал и фпс вернулся =)
Погулял и собрал 2 предохранителя , вернулся поставить и вылет.
Скажи как попасть сразу на какой то левл !
|
(Offline)
|
|
07.10.2014, 01:23
|
#450
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
Погулял и собрал 2 предохранителя , вернулся поставить и вылет.
|
Вылет? Опиши ситуацию, как произошел?
Скажи как попасть сразу на какой то левл !
|
Ну никак пока. Хотя я добавлю в mine.cfg номер уровня для загрузки.
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:19.
|