forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Движок на Си (http://forum.boolean.name/showthread.php?t=19812)

mr.DIMAS 25.04.2015 21:38

Движок на Си
 
Вложений: 5
Тут уже проскакивала моя тема на gamedev.ru, где я показывал самодельный лайтмаппер. Буду выкладывать тут скрины и технические подробности создания движка на чистом Си.







Зачем я это делаю? Просто для тренировки. На мою игру это не повлияет (тем более что она уже доделана на 80%).

Что умеет движок - пока немного:
1) Считает столкновения. Сфера-сфера, сфера-меш.
2) Лайтмапит карты с возможностью включения\выключения света.
3) Воспроизводит звуки

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

Кто хочет побегать по карте и пострелять: СКАЧАТЬ - НО! Пока что лайтмапы генерируются при старте, поэтому запускается около 3 минут.

Upd. В демке - [Q][E] - включить\выключить группу источников света, [C] - присесть

Исходники движка по запросу

Wegox 25.04.2015 22:01

Ответ: Движок на Си
 
Не хочу гуглить, что значит ошибка отсутствия libogg-0.dll?

mr.DIMAS 25.04.2015 22:04

Ответ: Движок на Си
 
Перезалил. Просто забыл положить длл'ку.

Wegox 25.04.2015 22:33

Ответ: Движок на Си
 
Ну пока всё шустро работает. С тремя - минутами ты загнул конечно.
Свет гаснет(текстура - меняется) смотрится неплохо, коллизия есть, звук странный.

Mr_F_ 26.04.2015 00:28

Ответ: Движок на Си
 
Цитата:

поэтому запускается около 3 минут.
не думал утилизровать обычные GPU шадоумапы для генерации лайтмапов? как-то раз (или два) я такое проворачивал - рендеришь тени, типа как для риалтайма, потом рисуешь развёртку меша в текстуру, семпля на ней эти тени, потом можно поблюрить ещё. Всяко быстрей должно выйти, чем на цпу трейсить.

mr.DIMAS 26.04.2015 00:39

Ответ: Движок на Си
 
Вложений: 1
Цитата:

не думал утилизровать обычные GPU шадоумапы
Цитата:

Движок использует OpenGL 1.4
Именно поэтому на цпу. К тому же у меня многослойные лайтмапы - на каждый фейс столько слоев, сколько источников света на него действуют. Таким образом чтобы выключить источник света, нужно пройтись по атласу и вычесть цвет, вносимый слоем на который влияет источник. Далее, я могу запустить 4 потока рендера лайтмапы (или по одному на каждое физическое ядро процессора) - в них самая тяжелая часть - тени.

Цитата:

потом можно поблюрить ещё
Я итак размазываю лайтмапы.

В аттаче исходники, файлы: lightmap.c и collision.c(для рейтрейса)

Upd. А вообще рендер лайтмап будет делаться единожды - сейчас кумекаю над сохранением лайтмап.

Mr_F_ 26.04.2015 01:34

Ответ: Движок на Си
 
Цитата:

Движок использует OpenGL 1.4
ну это же препроцесс вообще, должен быть у тебя на компе, а не юзера.
ну и вообще




Цитата:

работала на довольно слабых компах.
1.4 это же даже без шейдеров (они там экстеншеном, как я понял), ты расчитываешь не просто на слабые компы, а на компы, которые были слабыми 10 лет назад? Ты хочешь прийти на свалку города Зажопинск, найти там комп и запустить на нём это?


mr.DIMAS 26.04.2015 01:39

Ответ: Движок на Си
 
Потому что у меня есть нетбук с Intel GMA 3150 :-D.

Wegox 26.04.2015 01:42

Ответ: Движок на Си
 
Ну а планшеты?

Samodelkin 26.04.2015 02:57

Ответ: Движок на Си
 
На всех планшетах где есть графика есть и шейдеры.

У меня есть комп с GeForce2 MX так что я тоже потенциальный клиент.

St_AnGer 26.04.2015 10:15

Ответ: Движок на Си
 
а у меня есть нетбук с intel gma 945 :D так что я тоже потенциальный клиент)) на макбуке кстати за 97 секунд сгенерилось всё и запустилось, считал сам))

tirarex 26.04.2015 10:48

Ответ: Движок на Си
 
Цитата:

Сообщение от Wegox (Сообщение 295335)
Ну а планшеты?

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

mr.DIMAS 26.04.2015 14:53

Ответ: Движок на Си
 
Цитата:

как я заметил , многие ударились в с̶т̶а̶р̶ь̶е̶ олдскул,
Больше всего я угораю, когда вижу пиксельную 2д хуиту сделанную на юнити, которая требует минимум шейдеры 2.0 :-D

ARA 26.04.2015 15:39

Ответ: Движок на Си
 
Цитата:

Сообщение от mr.DIMAS (Сообщение 295347)
Больше всего я угораю, когда вижу пиксельную 2д хуиту сделанную на юнити, которая требует минимум шейдеры 2.0 :-D

А что в этом видишь смешного?
Люди, которые не могут себе позволить калькулятор с PS 3.0 и игру твою не будут покупать (денег тонет). Лишать себя прелестей шейдеров из-за такой аудитории?
На всякий случай я напомню. PS 3.0 настолько древний, что появился ещё тогда, когда я учился в школе. В те времена даже диалап интернет был у единиц. :-D

mr.DIMAS 26.04.2015 18:42

Ответ: Движок на Си
 
Сделал сохранение\загрузку лайтмап. Скиньте мне cgraphics.log и напишите фпс( выводится в консольное окошко )

СКАЧАТЬ

Samodelkin 26.04.2015 18:55

Ответ: Движок на Си
 
Цитата:

Сообщение от ARA (Сообщение 295348)
А что в этом видишь смешного?
Люди, которые не могут себе позволить калькулятор с PS 3.0 и игру твою не будут покупать (денег тонет). Лишать себя прелестей шейдеров из-за такой аудитории?

Издержки современного игростроя в частности. Все делают как им выгодней, не обращая внимание на внутреннюю гармонию, эстетику и целесообразность ПО. Обычно в ход идут отговорки что железо всё вытянет или что игрокам до лампочки как внутри устроено. Но такой образ мышления заразителен и начинает распространятся за рамки программирования. В итоге сами игры превращаются в инструмент максимальной утилизации целевой аудитории. Достаточно сравнить игры 15 летней давности и современные, особенно мобильные. Всё чаще при виде очередной игры задаёшься вопросом WHY???!!! К сожалению ответ прост и очевиден.

Цитата:

На всякий случай я напомню. PS 3.0 настолько древний, что появился ещё тогда, когда я учился в школе. В те времена даже диалап интернет был у единиц. :-D
Да не. Первые игры с шейдерами 3.0 появились в 2005, а большое распространение получили в 2006, когда массовые порты с консолей пошли. Хотя GeForce6 с шейдерами вышел в 2004. Так или иначе в это время мы уже в школе всем классом рубились в CSS и Battlefield 2 по ADSL с 1 МБит/с.

Mr_F_ 26.04.2015 19:20

Ответ: Движок на Си
 
Цитата:

Всё чаще при виде очередной игры задаёшься вопросом WHY???!!! К сожалению ответ прост и очевиден.
ну тут надо разделить, что тебе приоритетнее:
- сделать игру, чтоб 90% аудитории в неё поиграло.
- или фапать на идеальную архитектуру и производительность, увеличив время разработки на 100500 и проиграв гонку с теми, кто пошёл первым путём.

алсо, старые технологии быстро перестают поддерживаться, вместо этого начинают через жопу эмулироваться.
безшейдерные игры работают через шейдеры, эмулируемые дровами, к примеру.
от знакомого из одной геймдев конторы слышал про батхерты связанные с дх9 версией их игры, типа после обновления NV дров она стала медленнее, а нвидия говорит - нам пох на поддержку дх9.

целенаправленно делать игры под старые нетбуки со старыми дровами на старой винде - ну, это весело.

могу ещё понять чуваков, пишущих софтрендеры на Си, они не привязаны к GAPI, дровам.

mr.DIMAS 26.04.2015 19:32

Ответ: Движок на Си
 
А куда мне шейдеры пихать? Ну разве только мультитекстурирование через них сделать. Для генерации лайтмап я все равно буду юзать цпу, потому что хочу добавить radiosity, и на цпу привычнее алгоритмы строить.

Сделал сейв\лоад лайтмап качните чтоль.

https://www.dropbox.com/s/2c71i0yd37...rated.rar?dl=0


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

Mr_F_ 26.04.2015 19:54

Ответ: Движок на Си
 
Цитата:

а тебя не смущает еще и то что я пишу на голом си, без ооп.
не смущает, я сам так люблю писать)

Samodelkin 26.04.2015 20:13

Ответ: Движок на Си
 
Цитата:

Сообщение от Mr_F_ (Сообщение 295352)
ну тут надо разделить, что тебе приоритетнее:
- сделать игру, чтоб 90% аудитории в неё поиграло.
- или фапать на идеальную архитектуру и производительность, увеличив время разработки на 100500 и проиграв гонку с теми, кто пошёл первым путём.

алсо, старые технологии быстро перестают поддерживаться, вместо этого начинают через жопу эмулироваться.
безшейдерные игры работают через шейдеры, эмулируемые дровами, к примеру.
от знакомого из одной геймдев конторы слышал про батхерты связанные с дх9 версией их игры, типа после обновления NV дров она стала медленнее, а нвидия говорит - нам пох на поддержку дх9.

целенаправленно делать игры под старые нетбуки со старыми дровами на старой винде - ну, это весело.

могу ещё понять чуваков, пишущих софтрендеры на Си, они не привязаны к GAPI, дровам.

1) Тебя не должно волновать сколько народу поиграют в игру -- она должна быть самодостаточна самим своим существованием.
2) Ты не должен ни с кем соревноваться -- твоя игра уникальна и неповторима.
3) Первые два пункта несовместимы с промышленным игростроением, поэтому разработка таких игр не должна быть связана с твоей работой или источником доходов.

Думать как свободный художник это конечно утопия, но и забывать о целях искусства и их места в обществе тоже нельзя. Это всегда должно быть где-то в бекграунде. Я считаю что правильный путь где-то посередине. Причем искусство и технологии здесь на одной стороне, на другой бизнес.

KCEPOKC 26.04.2015 22:09

Ответ: Движок на Си
 
Смотрю на то, что делают пацаны с булки
@
Чувствую себя дауном:(

Так как в сабже практически не разбираюсь, составлю такой вопросник:
1) Сколько времени затратило у тебя создание этого чуда?
2) Сколько опыта работы с OpenGL?
3) Как осваивал его? Т.е. книжки и проч. Сколько времени и сил это заняло?

mr.DIMAS 26.04.2015 22:42

Ответ: Движок на Си
 
Цитата:

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

2) Сколько опыта работы с OpenGL?
На базовом уровне дошейдерного OpenGL'a - то бишь glBegin glEnd.
Цитата:

3) Как осваивал его? Т.е. книжки и проч. Сколько времени и сил это заняло?
Туторы NeHe :-D + активное гугление всего и вся. Ну графику я программирую года так с 2008 - 2009 (на форуме есть моя старая тема про двиг на опенгл).

mr.DIMAS 28.04.2015 01:49

Ответ: Движок на Си
 
Можете меня поздравить, под давлением общественности я переехал на ассемблерные шейдеры (GL_ARB_fragment_program и GL_ARB_vertex_program ).

Прошу потестировать: СКАЧАТЬ

Интересует работа на новом железе.


ЗЫ. GL_ARB_fragment_program и GL_ARB_vertex_program не устарели? Не морально, а поддержка их не прекращена?

St_AnGer 28.04.2015 10:43

Ответ: Движок на Си
 
ну на встроенной графике Core i3-3250 работает просто замечательно))

mr.DIMAS 28.08.2015 18:02

Ответ: Движок на Си
 
Привет братишки, сидя вечерами на даче запилил многопоточную генерацию лайтмап для своего говнодвижка. Потестируйте пжлста. А сюда напишите скорость генерации в разных режимах (однопоточный, 4-х поточный, 8-ми поточный) в таком виде (это данные для моего процессора - спеки в подписи)
Код:

1 поток - 60 с
4 потока - 18,9 с
8 потоков - 19,5 с

ну и характеристики процессора, время генерации выводится в консоль (Lightmapper: - Generation done!
Lightmap generation time: 60.10 seconds)
А кто скинет мне логи с каждой версии, тот получит пирожок
Вот ссылочка на потестить СКАЧАТЬ

ARA 28.08.2015 19:59

Ответ: Движок на Си
 
1 = 30.24 seconds
4 = 8.60 seconds
8 = 5.58 seconds

i7 5690 разогнанный до 4300 мгц.

Запили мне 16 потоков :-D

mr.DIMAS 28.08.2015 20:07

Ответ: Движок на Си
 
Держи
https://www.dropbox.com/s/kjtrd0bpvt...reads.rar?dl=0

pax 29.08.2015 09:35

Ответ: Движок на Си
 
1: 58.32
4: 15.00
8: 15.44

i5 760 (2.8GHz)

tirarex 29.08.2015 10:29

Ответ: Движок на Си
 

mauNgerS 29.08.2015 10:31

Ответ: Движок на Си
 
1: 51.53
4: 29.42
8: 29.38

i5-2450M 2.5GHz

mr.DIMAS 29.08.2015 10:53

Ответ: Движок на Си
 
2tirarex
гугл говорит что дело в отсутствии 32-битных редистов от вижуал студии.
качни отсюда http://www.microsoft.com/en-us/downl...s.aspx?id=5555

tirarex 29.08.2015 10:58

Ответ: Движок на Си
 
Венда говорит что есть...

mr.DIMAS 29.08.2015 11:12

Ответ: Движок на Си
 
Тут есть ответ на баг
http://stackoverflow.com/questions/2...tly-0xc000007b
Вкратце суть в том что мой двиг почемуто тащит 64битную дллку вместо 32битной. Попробую собрать архив с 32битными дллками.

А вообще это из-за новой винды ( >7) такая хурма творится

mr.DIMAS 29.08.2015 11:15

Ответ: Движок на Си
 
Качни вот это
https://www.dropbox.com/s/6cnph2dy4g...svcrt.rar?dl=0
и положи в папку с двиглом

tirarex 29.08.2015 11:22

Ответ: Движок на Си
 
Ошибка таже , Win10 64bit

mr.DIMAS 29.08.2015 11:28

Ответ: Движок на Си
 
Бля, как новая винда так и новые проблемы для разработчиков. Пздц.

У меня нет десятки нигде, поэтому мне проблему не исправить.

ARA 29.08.2015 17:24

Ответ: Движок на Си
 
Вложений: 1
16 потоков = 5.83 секунд. Дольше чем 8 потоков О_о

Nerd 30.08.2015 11:34

Ответ: Движок на Си
 
1: 30.00
4: 8.10
8: 6.17
16: 6.32

i7-5820K 3.30GHz

St_AnGer 30.08.2015 15:02

Ответ: Движок на Си
 
1: 44.02
4: 22.06
8: 21.22

Core i5-4260U 1.4 GHz (подозреваю что 8 потоков на нём запустить невозможно, потому время особо и не поменялось). Windows 10 x64.

Samodelkin 01.09.2015 23:30

Ответ: Движок на Си
 
1: 50.98
4: 14.53
8: 11.71
16: 12.96

i7-930 (4 физических, 8 логических ядер).
Работает на Windows 10.
Config1 в подписе.

MiXaeL 02.09.2015 18:22

Ответ: Движок на Си
 
Очевидно реальный профит имеется в разделении на потоки по 1 на физическое ядро, в меньшей степени по 1 на логическое (процессор всё же один, но не тратимся на переключение контекста) и отрицательный, если потоков больше, чем логических ядер, начинают сказываться переключения. Благо узнать число процессоров можно программно.
И это всё ещё при условии, что система ничем другим не нагружена.

Samodelkin 02.09.2015 19:27

Ответ: Движок на Си
 
Два логических ядра на одном физическом это технология HyperThreading, которая может попытаться распределить выполнение программы используя разные регистры процессора, успех распределения зависит от того как программа эти регистры использует, обычно ускорение на 40% считается хорошим результатом, но для этого требуются определённые действия со стороны программиста и применение специальных инструментов и режимов компилятора. В общем там несколько сложнее чем просто многопоточность, поэтому HT не особо популярна.


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

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