forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Universe Of Wars (http://forum.boolean.name/showthread.php?t=14564)

EvilChaotic 10.10.2011 05:08

Ответ: Universe Of Wars
 
Цитата:

Сообщение от Amatsu (Сообщение 200734)
Когда там следующая демка? :)

http://www.youtube.com/watch?v=37Ub0lMjFnY

Уже больше месяца идет разработка хорошего концепт документа, стараемся построить все верно.
На видео можно увидеть новое поведение кораблей:
+ Мульти таргет система, корабли могут следить одновременно за десятком целей, на каждую цель распределяется соответствующее орудие.
+ Транслейт контрол, корабли следят за целями и стараются всегда находится в радиусе поражения цели, даже, если она имеет высокую скорость и маневренность.
+ Полностью физика.

Ну и конечно все идет круто медленно. Т.к. я учусь, работаю)

LLI.T.A.L.K.E.R. 10.10.2011 10:40

Ответ: Universe Of Wars
 
Отличная графика. Многие студии даже (мульт) фильмы в таком качестве не снима-ют(ли).

Amatsu 10.10.2011 11:02

Ответ: Universe Of Wars
 
Это бл@ть шикарно!

.Squid 10.10.2011 12:35

Ответ: Universe Of Wars
 
Чтобы камера, следящая за сущностями с физическими телами, не дергалась как на видео, обновление камеры надо вызывать после xUpdateWorld.

moka 10.10.2011 13:25

Ответ: Universe Of Wars
 
Красава ваще.

Добавь тегов: action, game, wip, development, engine, indie

EvilChaotic 10.10.2011 15:05

Ответ: Universe Of Wars
 
Цитата:

Сообщение от .Squid (Сообщение 205278)
Чтобы камера, следящая за сущностями с физическими телами, не дергалась как на видео, обновление камеры надо вызывать после xUpdateWorld.

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

moka 10.10.2011 15:09

Ответ: Universe Of Wars
 
xUpdateWorld стоит перед RenderWorld так? Далее идёт позиционирование камеры, на позицию которая не кеширована а именно получается в момент позиционирования, и лишь потом идёт RenderWorld и Flip?

EvilChaotic 10.10.2011 15:15

Ответ: Universe Of Wars
 
Цитата:

Сообщение от MoKa (Сообщение 205292)
xUpdateWorld стоит перед RenderWorld так? Далее идёт позиционирование камеры, на позицию которая не кеширована а именно получается в момент позиционирования, и лишь потом идёт RenderWorld и Flip?

xUpdateWorld()
игра(..)
Render()
Draw()
Flip()

Ток причем тут в рассинхронизации рендер и флип?

moka 10.10.2011 15:25

Ответ: Universe Of Wars
 
Дык в игра() у тебя будет как раз обновление положений, и т.п. Получается что снова, позиция будет не корректной. Должно быть:

1. игровая логика с перемещениями и т.п.(..)
2. xUpdateWorld()
3. привязка к физ объектам визуальных элементов, типа камеры и того что на экране должно быть.
4. Render()
5. Draw()
6. Flip()

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

EvilChaotic 10.10.2011 15:31

Ответ: Universe Of Wars
 
Блин, если я привел схематичный цикл что и как это не зачит что там все так примитивно. Вечером домой приду покажу как и что. Под игрой у меня апдейт камеры. Сам апдейт проиходит в обновлении игрока. т.к. там есть раздел с хоткеями и функция обновлении камеры принимает кучу блокировок, фильтрованных нажатий и тп..

H@NON 10.10.2011 15:32

Ответ: Universe Of Wars
 
Цитата:

ControlHero()
UpdateHeroCamOne()
lastFrame = xMillisecs()
xUpdateWorld()
UpdateHeroCamTwo()
DrawYad()
xRenderWorld()
xFlip()
Для Дельтатайминга используй такую конструкцию :
Цитата:

; SINCHRONISATIONS
Const FPS=35
Global period=1000/FPS
Global lastFrame% = xMillisecs()
;=====================< MAIN LOOP >=====================================
While Not GameExit Or xWinMessage("WM_CLOSE")
H\Yaw = H\Yaw- xDeltaValue(speedYaw*period, lastFrame)
xRotateEntity H\model, 0, H\Yaw, 0, True
Wend

moka 10.10.2011 15:38

Ответ: Universe Of Wars
 
Цитата:

Сообщение от EvilChaotic (Сообщение 205298)
Блин, если я привел схематичный цикл что и как это не зачит что там все так примитивно. Вечером домой приду покажу как и что. Под игрой у меня апдейт камеры. Сам апдейт проиходит в обновлении игрока. т.к. там есть раздел с хоткеями и функция обновлении камеры принимает кучу блокировок, фильтрованных нажатий и тп..

Я не имел ввиду что так всё примитивно. Я про то что когда камера привязана к объекту с физикой, и должна следовать ему, то её позиция должна быть обновлена только После обновления физики, иначе получение позиций физ. объектов и т.п. будет с прошлого кадра и другие мелкие артефакты, которые ты видишь.

H@NON, это не дельта тайминг, а разделение игрового цикла от рендера, и фиксация количества тактов в секунду. Как и говорил, этот вариант не всегда может подойти под игру.не читай, сразу отвечай - я балда.

H@NON 10.10.2011 15:43

Ответ: Universe Of Wars
 
разделение игрового цикла от рендера это тайм твиннинг(обновляем участок логики столько раз на сколько отстали от требуемого фпс), а это дельта тайминг(умножение параметров на затраченное время с прошлого такта).

moka 10.10.2011 15:45

Ответ: Universe Of Wars
 
Ой, слишком быстро прочёл что там у тебя..
ТЕМУ НЕ ЧИТАЙ, СРАЗУ ОТВЕЧАЙ..
Уху, это дельта..

Mr_F_ 10.10.2011 15:59

Ответ: Universe Of Wars
 
Цитата:

разделение игрового цикла от рендера это тайм твиннинг(обновляем участок логики столько раз на сколько отстали от требуемого фпс), а это дельта тайминг(умножение параметров на затраченное время с прошлого такта
кстати по моему опыту, дельтатайм соснул у фиксед фпса с твинингом.
т.к. дельта основывается на прошлом кадре, при изменении фпс случаются рывки, лечится только вертикальной синхронизаций и только в случае что фпс не ниже скорости обновления моника. твинингом гораздо плавнее выходит даже на 30 фпс.

H@NON 10.10.2011 16:03

Ответ: Universe Of Wars
 
Просто дельту ограничивай по максимальному лимиту, будет плавно

moka 10.10.2011 16:22

Ответ: Universe Of Wars
 
Для меня тоже соснул. Особенно если нужна сеть и т.п. Где на сервере том же игровая логика очень чётко фиксирована к участку времени цикла (должно быть чёткое начало цикла, в определённый момент). Если клиенты начинают дельтить, то там уйма гемора всплывает, так что проще всего заюзать фиксацию игрового цикла, с отделением визуализации, например те же партиклы, можно дельтить, или кучу других не синхронизируемых сущностей.

EvilChaotic 10.10.2011 16:51

Ответ: Universe Of Wars
 
Цитата:

Сообщение от MoKa (Сообщение 205295)
Дык в игра() у тебя будет как раз обновление положений, и т.п. Получается что снова, позиция будет не корректной. Должно быть:

1. игровая логика с перемещениями и т.п.(..)
2. xUpdateWorld()
3. привязка к физ объектам визуальных элементов, типа камеры и того что на экране должно быть.
4. Render()
5. Draw()
6. Flip()

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

твиниг, изменяемая скорость игры был еще с самого начала.
Может я тупой и не имею отношения к программированию. Но.
Я ставлю в начало UpdateWorld(), обновляется физика, перемещаются тела, анимация играется и тп. у меня начинают хреново работать шоткаты, если я вверх кидаю логику.
Дальше апдейт логики получаем новые позиции физ тел, на них перемещаем камеру. Все по идее должно быть гладко. Обе фунции закручены в ограничение скорости игры. wtf?

SBJoker 10.10.2011 16:55

Ответ: Universe Of Wars
 
Почему не стоит делать синхру через тики:
1. лишние проходы логики за тормозящей графикой добавляют тормозов.
2. при наоборот быстрой графике, всего один проход логики в несколько кадров, как результат загрузка GPU полная, фпс высокий, но ощущения как при среднем фпс т.к. кроме твининга анимации остальное на кадрах будет одинаковое.
3. это просто метод для ленивых.

Mr_F_ 10.10.2011 17:07

Ответ: Universe Of Wars
 
"ощущения как при среднем фпс" не замечал. почему это метод для ленивых - тоже не понял, т.к. дельтатайм куда проще. а что ты предлагаешь?

moka 10.10.2011 18:14

Ответ: Universe Of Wars
 
Дельта выглядит проще, но чтобы реализовать нормальную механику игры с учётом возможных лагов, намного сложнее.
Имхо, делать гибриты можно, совмещая, порой это лучше, т.к. нужно чётко фиксировать.
Mr_F_, смотри, у тебя позиция игрока обновляется в логическом цикле. Берём UPS == 30. При FPS 90, у нас будет 3 кадра стоять игрок, а потом за один кадр прыгать к следующей позиции. Это вызовет эффект дёрганья.
При этом я заметил, что не все люди способны увидеть это, менее половины, но способны и весьма бросается в глаза. Разница между плавным, и такими дёргами ощутима большинством.


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

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