|
Xors3D Графический движок с поддержкой DirectX9 |
25.02.2014, 06:36
|
#1
|
ПроЭктировщик
Регистрация: 19.03.2012
Адрес: Забайкальский край
Сообщений: 112
Написано 15 полезных сообщений (для 23 пользователей)
|
Пишем 3D движок - замену Xors3D
Для создания 3D движка (альтернатива устаревающему движку Xors3D) собирается команда энтузиастов.
Цели проекта:
+ Сделать движок не хуже Xors3D
+ Получить опыт в разработке
+ НЕ убийца КРИЗИСА и Unity !!!
+ Реализовать некоторые интересные идеи
Фичи проекта:
+ Платформа только РС
+ Движок в виде внешней DLL
+ Поддержка 3D Vision и Oculus Rift
+ Поддержка терраморфинга
+ Большие ландшафты
+ Наличие удобного редактора
Что есть на текущий момент:
+ Исходники на PowerBasic 10
+ Репозитрий GIT на bitbucket.org
+ Несколько демок (очень примитивных, чтобы выкладывать тут)
+ Материалы, примеры, гайды и. т.п. (как использовать lua.dll и.т.п.)
Движок (точнее его зачатки ) уже может:
+ Инициализировать DX9
+ Устанавливать видеорежим
+ Рендерить сцену
+ Реализованы некоторые примитивы: кубы, плоскости, треугольники.
+ VBO. Реализована загрузка моделей формата OBJ
+ Работа с камерой
+ Есть зачатки редактора мира на Xors3D - можно портировать на чистый DirectX
Лог разработки:
06.03.2014
- Исправлена глупая ошибка при стерео рендере - использовалась программная обработка вершин...
- Начальные эксперименты с шейдерами - загрузка, компиляция, установка.
04.03.2014
- Написан с нуля модуль для работы с HID-устройствами. Работает поиск трекера Oculus Rift на шине USB.
03.03.2014
- Портирован исходник для работы с видеокартами NVidia (nvapi.dll)
Скрины и демки:
Кто требуется в первую очередь:
- Человек, имеющий опыт в работе с шейдерами.
- Человек, имеющий опыт работы с физическими движками
а также все заинтересованные.
UPD: Нужность и целесообразность обсуждаем тут
Пара скринов с репозитория:
Пример кода (метод загрузки модели формата OBJ, выдранный из класса):
'===============================================================================================================================
METHOD xLoadMeshFromOBJ(File AS STRING)
DIM buf AS STRING, FN AS LONG, FC AS LONG
DIM tc AS LONG, vc AS LONG, P(4) AS STRING, v() AS vertexType, vtu() AS SINGLE, vtv() AS SINGLE
DIM z(4) AS WORD, zp(4) AS STRING
IF ISFILE(File) THEN 'если файл найден
FN = FREEFILE
OPEN File FOR INPUT AS FN
WHILE NOT EOF(FN)
LINE INPUT #FN,buf
INCR FC
IF MID$(TRIM$(buf),1,1)<>"#" THEN
PARSE buf, p(), " " 'парсим строку в массив P()
SELECT CASE p(0)
CASE "mtllib": 'файл с материалами 'пока не нужно
CASE "o": 'новый подмеш (набор) subset 'если текстурный атлас - субмеши не нужны
CASE "v": 'координаты вертекса
REDIM PRESERVE v(vc)
v(vc).x=CSNG(VAL(p(1))) : v(vc).y=CSNG(VAL(p(2))) : v(vc).z=-CSNG(VAL(p(3)))
INCR vc
CASE "vt": 'координаты текстуры
REDIM PRESERVE vtu(tc), vtv(tc)
vtu(tc)=CSNG(VAL(P(1))) : vtv(tc)=1-CSNG(VAL(P(2)))
INCR tc
CASE "vn": 'нормали - пока не нужны
CASE "f": 'индексы стрипов или треугольников (делаем только треугольники!)
PARSE P(1), ZP(), "/"
Z(0)=CWRD(VAL(ZP(0))): Z(1)=CWRD(VAL(ZP(1))): Z(2)=CWRD(VAL(ZP(2))) ' (Z(0)-1) - индекс вертекса
me.AddVertex (v(Z(0)-1).x, v(Z(0)-1).y, v(Z(0)-1).z, vtu(Z(1)-1), vtv(Z(1)-1))
PARSE P(2), ZP(), "/"
Z(0)=CWRD(VAL(ZP(0))): Z(1)=CWRD(VAL(ZP(1))): Z(2)=CWRD(VAL(ZP(2))) ' (Z(0)-1) - индекс вертекса
me.AddVertex (v(Z(0)-1).x, v(Z(0)-1).y, v(Z(0)-1).z, vtu(Z(1)-1), vtv(Z(1)-1))
PARSE P(3), ZP(), "/"
Z(0)=CWRD(VAL(ZP(0))): Z(1)=CWRD(VAL(ZP(1))): Z(2)=CWRD(VAL(ZP(2))) ' (Z(0)-1) - индекс вертекса
me.AddVertex (v(Z(0)-1).x, v(Z(0)-1).y, v(Z(0)-1).z, vtu(Z(1)-1), vtv(Z(1)-1))
END SELECT
END IF
WEND
CLOSE FN
IF FC<5 THEN MSGBOX "Incorrect file - please convert it with MilkShape! (or convert from UNIX format!)"
ELSE 'файл не найден
MSGBOX "File not found: " & file
END IF
END METHOD
Как видите - очень простой пример процедуры загрузки формата OBJ...
Последний раз редактировалось bugway, 05.03.2014 в 19:46.
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо bugway за это полезное сообщение:
|
|
25.02.2014, 07:20
|
#2
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Пишем 3D движок - замену Xors3D
Скрины? Прмеры кода? Бенчмарки?
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
25.02.2014, 08:57
|
#3
|
Бывалый
Регистрация: 03.11.2008
Адрес: Украина, Днепропетровск
Сообщений: 871
Написано 554 полезных сообщений (для 2,520 пользователей)
|
Ответ: Пишем 3D движок - замену Xors3D
Отличный ник! Хорошо бы смотрелся в качестве названия какой-нибудь аутсорс-студии.
"BugWay - we provide only high quality bugs!"
"BugWay - try to deBug!"
...
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.02.2014, 09:39
|
#4
|
ПроЭктировщик
Регистрация: 19.03.2012
Адрес: Забайкальский край
Сообщений: 112
Написано 15 полезных сообщений (для 23 пользователей)
|
Ответ: Пишем 3D движок - замену Xors3D
Скрины еще посмотрю, может что более привлекательное найдется... Кто что может сказать по поводу задумки?
Судя по обсуждениям только одного форума о Xors3d - все хотят продолжения поддержки движка, т.к. он очень простой. Но до сих пор НИКТО не предложил сделать аналогичный движок.
Выкладывать скрины думаю вообще не особо целесообразно, ведь пишется именно движок, а не контент для него... Что можно оценить по скриншоту? Для оценки движка нужно какое-то время с ним поработать, понять его структуру, оценить удобство и функциональность. На текущем этапе в плане моего движка это сделать нельзя до завершения хотя бы основных функций....
|
(Offline)
|
|
25.02.2014, 10:58
|
#5
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Пишем 3D движок - замену Xors3D
А почему бейсик? Ксорс же на С++ под любой язык подключается... Имхо вы хотите написать новый Blitz3d, а не Ксорс...
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
25.02.2014, 11:14
|
#6
|
Бывалый
Регистрация: 10.06.2006
Сообщений: 808
Написано 354 полезных сообщений (для 832 пользователей)
|
Ответ: Пишем 3D движок - замену Xors3D
DIM z(4) AS WORD, zp(4) AS STRING - я щитаю лишнее, будет проще указывать DIM z#(4), dim zp$(4)
|
(Offline)
|
|
25.02.2014, 11:17
|
#7
|
Мастер
Регистрация: 12.01.2009
Сообщений: 980
Написано 389 полезных сообщений (для 632 пользователей)
|
Ответ: Пишем 3D движок - замену Xors3D
И чем он новее если опять dx9?
Кстати Knightmare вроде собирался что то делать только не для блица. Есть инфа?
|
(Offline)
|
|
25.02.2014, 11:35
|
#8
|
ПроЭктировщик
Регистрация: 19.03.2012
Адрес: Забайкальский край
Сообщений: 112
Написано 15 полезных сообщений (для 23 пользователей)
|
Ответ: Пишем 3D движок - замену Xors3D
Сообщение от pax
А почему бейсик? Ксорс же на С++ под любой язык подключается... Имхо вы хотите написать новый Blitz3d, а не Ксорс...
|
Нет. Задачи написать новый блиц желания нет. Цель - сделать движок с рендером DX9/10/11 с продуманной архитектурой и совместимый со всем, с чем только можно. Блиц, си, VB6, PowerBasic, PureBasic, FreePascal и т.п. К тому же с редактором мира.
Выбор языка PowerBasic 10 обусловлен следующим:
+ Простой синтаксис языка
+ Мощь и возможности Си (+ есть встроенный ассемблер, 17 типов данных!!!)
+ Чисто нативный код без виртуальных машин
+ Поддержка классов, COM, и.т.п.
+ самое главное: есть готовые заголовочные файлы для ВСЕГО WIN32API!!! Включая DX9/10/11!!!
Т.е. на выходе будет DLL или несколько, которые можно использовать практически в любом языке.
|
(Offline)
|
|
25.02.2014, 11:39
|
#9
|
ПроЭктировщик
Регистрация: 19.03.2012
Адрес: Забайкальский край
Сообщений: 112
Написано 15 полезных сообщений (для 23 пользователей)
|
Ответ: Пишем 3D движок - замену Xors3D
Сообщение от L.D.M.T.
DIM z(4) AS WORD, zp(4) AS STRING - я щитаю лишнее, будет проще указывать DIM z#(4), dim zp$(4)
|
Код набран на скорую руку, но вообще суффиксы обещали исключить в следующих версиях компилятора...
|
(Offline)
|
|
25.02.2014, 12:04
|
#10
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Пишем 3D движок - замену Xors3D
ну это несерьёзно как-то.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
|
|
25.02.2014, 12:14
|
#11
|
Разработчик
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений (для 1,072 пользователей)
|
Ответ: Пишем 3D движок - замену Xors3D
Несерьезно - это лепить виртуальную машину на android и пихать это дело в мобилки с многоядерными процами.
А PowerBasic для данной задачи я думаю вполне подходит...
|
(Offline)
|
|
25.02.2014, 14:06
|
#12
|
|
Ответ: Пишем 3D движок - замену Xors3D
Запилите мне версию под Mac, Ubuntu\Debian, FreeBSD, iOS, Android, WP8
|
|
|
Сообщение было полезно следующим пользователям:
|
|
25.02.2014, 15:13
|
#13
|
ПроЭктировщик
Регистрация: 05.08.2006
Сообщений: 183
Написано 107 полезных сообщений (для 410 пользователей)
|
Re: Пишем 3D движок - замену Xors3D
Да, действительно, надо мультитаргетенджин.
Виндовс, Андроед, Айёос, HTML5 или WebGL и опционально, но желательно Линух и Мак
|
(Offline)
|
|
25.02.2014, 17:09
|
#14
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Пишем 3D движок - замену Xors3D
как подключить к пурику библиотеки?
всякие там фритайпы да злибы.
плюсы выбирают не из-за языка, а потомучто к ним библиотек немерено.
ну а вообще да, я бы бенчмарки бы посмотрел.
|
(Offline)
|
|
25.02.2014, 18:31
|
#15
|
ПроЭктировщик
Регистрация: 19.03.2012
Адрес: Забайкальский край
Сообщений: 112
Написано 15 полезных сообщений (для 23 пользователей)
|
Ответ: Re: Пишем 3D движок - замену Xors3D
Сообщение от MadMedic
Да, действительно, надо мультитаргетенджин.
Виндовс, Андроед, Айёос, HTML5 или WebGL и опционально, но желательно Линух и Мак
|
Думаю если человек реально собрался выпускать игру на всех платформах - ему НЕ НУЖЕН движок уровня Xors3D, т.к. это уже совсем другой уровень. Скажите честно - кто-нибудь сделал на Xors3d убийственный коммерческий проект? Я думаю ответ очевиден.
Задача сделать движок, в основном, для начинающих игрописателей. Таким движком был Xors3D. Таким будет и мой движок. Только добавятся более современные фичи.
Я реально оцениваю свои силы и возможности и говорю сразу - "Убийцы Unity" не будет. Но должен получится (если мы сообща приложим усилия) вполне приемлемый по качеству движок.
Что могу гарантировать я - как минимум не пропаду как Сквид. А если вдруг и заброшу проект, то как минимум оставлю исходники всем желающим. (кстати, обсуждаем вопрос изначальной открытости исходников)
Для меня же ценен сам опыт работы в команде, изучение чего-то нового , создание чего-то своими руками и т.п.
Если есть энтузиасты, готовые полученный код портировать на PureBasic, который поддерживает Linux и Mac - нет проблем!
Хотя чем и интересен именно PowerBasic - он позволяет делать все тоже самое, что и на Си - только намного проще и код намного более читабельный и понятный. Не думаю, что кто-то будет иметь желание ковыряться в чужом коде Си. Особенно Си++.
Если все-таки не сойдемся в выборе инструмента - можно писать алгоритмы на псевдоязыке и переводить на свой любимый язык или платформу. Но согласитесь, задача не завоевать рынок, не убить Юнити - мы сделаем удобную и нужную обвертку под графическое АПИ в первую очередь для себя, для воплощения своих творческих идей. Мне кажется - что это было стержнем у Xors3D.
От сообщества поклонников Xors3D требуется список фич, которых не хватало в Xors3D. Например мне не хватало функций для работы с ландшафтом, были глюки с LODом и дыры в ландшафте. И много чего еще. Так давайте вместе это дело исправим?
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо bugway за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:14.
|