Войти
ФлеймФорумПроЭкты

RTS на GPU

Страницы: 1 2 3 Следующая »
#0
23:24, 11 янв. 2014

Название:  в разработке
Разработчик: я
Платформы: пока - Windows, потом - HTML5.
Средства разработки: FreePascal+OpenGL 3.1
Описание: очередной проект, нужны все.
Основная идея: RTS с десятками тысяч юнитов, которые обрабатываются на GPU и за счет этого будут работать в обычном браузере. Обстановка - эпические бои в космосе.

    Пока делаю на обычном OpenGL, потом ради конкурса HTML5 переведу на WebGL (соответственно ограничиваюсь фичами доступными в WebGL, правда использую пару расширений которых на мобильных девайсах нет, поэтому будет идти только на десктопах).

    Дошел до стадии технодемки - основная механика работает, но до играбельного состояния еще далеко. Ну и над графоном надо работать.
    Но можно посмотреть\покликать мышкой и нагрузить видеокарту.

    В текущей версии участвует 32 тысячи объектов, из-за жутко неоптимального алгоритма поиска цели это для текущей версии предел. Каждый корабль влоб перебирает всех врагов и ищет ближайшего, на GeForce 310M при 60 FPS это занимает четверть секунды, для 65 тысяч будет занимать уже секунду и начнет влиять на исход боя.
    Если поиск цели оптимизировать - вполне реально дойти до сотен тысяч. Правда какая будет скорость на WebGL еще предстоит выяснить, там ведь ANGLE переводит GLSL шейдеры в HLSL.
Картинки:
Изображение

+ Показать

Демка:demo5 (от 01.02.2014)
Управление в демке: выход по Esc, при нажатии левой кнопки мыши корабли первого игрока (который внизу, т.е. красные) будут вместо бортового ИИ двигаться к указанной точке. Тормозить у точки они не будут, так что собрать их вместе не получится.
Требует OpenGL 3.x
На картах RADEON нужно исправить в shaders/consts.c "#version 110" на "#version 330" (но сам проверить не могу), на картах NVIDIA должно работать так, карты Intel в пролете.

Буду благодарен советам\критике\интересным идеям по механике космических боев и прочему.

#1
1:02, 12 янв. 2014

Проект интересный но не запускается игра =( только серый фон

#2
1:33, 12 янв. 2014

LogicManager
А что в консольном окне (доступном по альт-таб) пишет?
Вообще лучше сейчас нормальный лог добавлю.

#3
1:51, 12 янв. 2014

Перезалил версию с логом в первое сообщение. Можешь прислать что в log.txt пишет?

#4
3:16, 12 янв. 2014

log.txt

#5
12:09, 12 янв. 2014

Хм, радеоны не поддерживают отсутствие #version, ну да ладно. Все равно я особо и не надеялся что шейдеры между webgl и opengl будут совместимы напрямую.
вот исправленная демка:
demo4.1

#6
14:01, 12 янв. 2014

kipar
> В текущей версии участвует 32 тысячи объектов
> для 65 тысяч
> реально дойти до сотен тысяч
цифры ради цифр, ясно.

#7
14:05, 12 янв. 2014

ratling
А то!

#8
14:11, 12 янв. 2014

kipar
> вот исправленная демка:
Эм? Там шейдеры без #version и соответственно не работает. Поправь ссылку

log

#9
14:45, 12 янв. 2014

war_zes
Во все шейдеры при запуске включаются файл consts, а в нем #version есть. Просто у меня радеонов нет, поэтому проверить не могу (хотя amdшный). Может ему #version 110 не нравится? счас выложу с #version 120 (ну или сам поправь в shaders\consts)

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

Механика тоже простая - у каждого корабля есть зависящая от типа дальность, хп и урон. Те у кого дальность маленькая стремятся подойти ближе, те у кого большая - держаться подальше.

#10
14:57, 12 янв. 2014

kipar
Вообщем заработало только #version 330
Я х.з. почему. В моем движке #version 110  работает, а здесь не хочет. Может ты как-то сам ограничиваешь при создании контекста? Просто в логе так и пишется что на этот контекст нельзя юзать версию 110

Implicit version number 110 not supported by GL3 forward compatible context
#11
15:01, 12 янв. 2014

36 fps при экране 1600х900 (карта в пред логе написана). Отвяжи управление от количества кадров. А то у меня вообще на клик мышки никакой реакции нет (синие и красные корабли куда-то вправо меееедлено ползут)

#12
15:10, 12 янв. 2014

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

Контекст - создаю forward-compatible, т.е. без FFP, запрашиваю версию 3.1.
Хм, с 330 уже на моей видюхе не работает, ругается на устаревшие variyng и attribute, еще один повод переходить сразу на WebGL и смотреть какие будут проблемы с совместимостью там.

#13
16:53, 12 янв. 2014

kipar
> Хм, с 330 уже на моей видюхе не работает, ругается на устаревшие variyng и
> attribute
а при чем тут видюха? вместо varying - in\out, аттрибуты пишутся

layout(location=0) in vec3 inVertex;
layout(location=1) in vec3 inNormal;
layout(location=2) in vec2 inTexCoord;
#14
17:25, 12 янв. 2014

kipar
ох уж эти ссаные радионы )
у меня запустилось. прикольно выглядит.

Страницы: 1 2 3 Следующая »
ФлеймФорумПроЭкты