Самодельный 3D движок с открытыми исходниками

Форум для пользователей и разработчиков игрового мира Виртбург http://virtburg.com

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Наверное пришло время умертвить проект - заниматься Виртбургом нет времени...
После очередного возвращения дума в мою жизнь, снова потянуло к своему 3D-движку (на основе которого крутился Виртбург) - надо чтоли его допилить и приделать к чему-то полезному...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Мысли по возрождению 3D движка (который уже поддерживает SDL):
- переписать с C++ на C (чтобы собиралось под большее кол-во платформ и компиляторов, включая 16-битные и без floating point)
- добавить SDL звук (или mikmod), причём стерео!
- добавить скриптование на RW1 (со встроенным отладчиком и т.д.)
- добавить возможность редактирования уровней непосредственно в 3D
- добавить возможность стерео-отображения с помощью красно-зелёных очков
- насоздавать уровней
- насоздавать ботов
- написать документацию
- выпустить под GPL (залив на github.com)
Last edited by Shaos on 21 Feb 2011 00:48, edited 5 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

А смысл потраченного времени и усилий? - Only just for fun?
Или считаешь - может где пригодиться?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Lavr wrote:А смысл потраченного времени и усилий? - Only just for fun?
Или считаешь - может где пригодиться?
мне как раз и жалко УЖЕ потраченного времени и усилий - я этот 3D-движок пилю как минимум с 1998 года

потом под SDL олдскульных софтверных 3D-движков не так уж и много - кому-то может и пригодиться...

кроме того можно этот 3D-движок позиционировать как недо-движок для недо-девайсов на которых нету OpenGL :)

ну и к тому же теперь это будет опенсорц под GPL (раньше был клозесорц с некоторым кол-вом открытого кода)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
Lavr wrote:А смысл потраченного времени и усилий? - Only just for fun?
Или считаешь - может где пригодиться?
мне как раз и жалко УЖЕ потраченного времени и усилий - я этот 3D-движок пилю как минимум с 1998 года
Посмотрел архивы - начал я пилить свой движок в марте 1997 года. Поначалу экспериментировал с алгоритмом из книжки "Компьютерная графика" (который рисовал лишь одноцветные стены):

Image

Сначала я раскрасил перпендикулярные стены в 2 разных цвета:

Image

А потом наклеил на стены текстуры:

Image

Потом переписал с нуля алгоритм и началось - вот скрины моих тестовых программ за 1997 год:

Image Image Image Image Image Image Image Image Image

Как видно я кое-что из дума подтянул ради эксперимента ;)

Скрины за 1998 год (реальный 3D-объект, возможность подниматься вверх и туман):

Image Image

 object.3d

Code: Select all

# CAR

p=18
g=9

#  POINTS
#==========

# CAR BODY
p0  -20 -10   0
p1   20 -10   0
p2   20  10   0
p3  -20  10   0
p4  -20  10  20
p5  -20 -10  20
p6    0  10  20
p7    0 -10  20
p8   20  10   5
p9   20 -10   5

# ON CAR

p10  21  -9   3
p11  21  -7   3
p12  21  -7   1
p13  21  -9   1

p14  21   7   3
p15  21   9   3
p16  21   9   1
p17  21   7   1

#  POLYGONS
#============

# CAR BODY
g0,191  7  6  4  5
g1,170  2  8  9  1
g2,160  3  4  6  8  2
g3,150  3  2  1  0
g4,160  1  9  7  5  0
g5,180  8  6  7  9
g6,170  0  5  4  3

# ON CAR
g7,63  13 12 11 10
g8,63  17 16 15 14

$

Image Image
Image Image Image Image Image

В 2000 году на базе этого движка был рождён Виртбург:

Image Image Image Image Image Image Image Image Image Image Image Image Image Image

а в 2002 году развитие Виртбурга по сути остановилось:

Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image

P.S. ещё в 2002 году я немного поэкспериментировал с OpenGL:

Image Image

но это была тупиковая ветвь развития...
Last edited by Shaos on 25 Feb 2011 18:32, edited 1 time in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Пока решил развивать движок в сторону гипотетической игры "Robot Warfare 3D", в которой по карте будут бегать роботы, управляемые программами на языке RW1:

Image

P.S. Картинка частично отрендерена моим движком, а частично подрисована в гимпе
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Есть такое ощущение, что разрешение маловато... нет?
Грубовато рендеринг смотрится...
А ОпенГЛ тебе за кратные степени 2 матрицы не понравился?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Lavr wrote:Есть такое ощущение, что разрешение маловато... нет?
Грубовато рендеринг смотрится...
раньше разрешение скрина было 320x200, а теперь - 800x600
размер текстуры на один кубик - 64x64 (а у куборобота - 40x40, чтобы мог визуально гладко протискиваться по коридорам шириной 64, а также вертеться)
Lavr wrote:А ОпенГЛ тебе за кратные степени 2 матрицы не понравился?
мне оно не понравилось т.к. там уже много чего кем понаделано и соревноваться водиночку собственно бессмысленно, а софтверный рендеринг - это искусство+математика :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote: Image
вот та же карта, но в обновлённом движке:

Image
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
shoorick
Doomed
Posts: 487
Joined: 05 Nov 2007 05:08
Location: Украина

Post by shoorick »

класс!
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Мысли по возрождению 3D движка (который уже поддерживает SDL):
- переписать с C++ на C (чтобы собиралось под большее кол-во платформ и компиляторов, включая 16-битные и без floating point)
- добавить SDL звук (или mikmod), причём стерео!
- добавить скриптование на RW1 (со встроенным отладчиком и т.д.)
- добавить возможность редактирования уровней непосредственно в 3D
- добавить возможность стерео-отображения с помощью красно-зелёных очков
- насоздавать уровней
- насоздавать ботов
- написать документацию
- выпустить под GPL (залив на github.com)
Внимательно перечитал свой код - про 16-битную компиляцию и отсутствие floating point придётся забыть - от плавающей точки там так просто не избавиться...

Ещё из мыслей:
- вместо языка описания 3D-карт 3DMap (файлы с расширением .3dm) разработать более вменяемый синтаксис с объектным подходом
- светотени станут программными (до сих пор затемнение или высветление сторон кубов приходилось прописывать в 3dm-файле путём заведения тёмных или более светлых версий одной и той же текстуры)
- появится возможность наклеивать на стены кубов разные текстуры друг над другом (до сих пор на одной стороне повторялась одна текстура)
- вернуть в движок туман, полумрак и реальные 3D-объекты (пока лишь с одноцветными гранями без текстур)
- входным файлом для движка вместо исходного кода 3D-карты будет монолитный бинарный файл, скомпилированный из исходника и включающий все необходимые текстуры и байткод скриптов (до сих пор монолитный файл VDS использовался только лишь как хранилище стандартных текстур)
- любая поверхность внутри игры может быть модифицирована по ходу, например забрызгана кровью, изрешечена пулями или разукрашена
- сохранение игры создаст новый монолитный бинарный файл, который даже может играться без оригинального бинарного файла игры
- кроме того этот сохранённый файл будет содержать записть всего происходящего до момента сохранения с возможностью проиграть "видео" с различных точек зрения, либо запустить это как демо (как вдуме)
- допускается возможность наличия в природе коммерческих бинарных файлов с игровыми уровнями, распостраняемыми отдельно от опенсорцного GPL движка
Shaos wrote:Сегодня моя ребетёнка (в августе будет 4 года) с интерeсом бродила по Виртбургу и когда я показал ей секретную комнату в "Валютном Козлино" попросила сделать ещё ;)
P.S. Сегодня со своей уже пятилетней дочкой (в августе будет 6) создавали уровни - она рисовала на бумажке что она хочет увидеть, а я описывал в 3dm :roll:
Last edited by Shaos on 17 Apr 2013 19:07, edited 1 time in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:Реанимирую свой виртуальный город Virtburg, родившийся в октябре 2000 года
Кстати, народ туда до сих пор регистрируется по 2-4 человека в месяц...
Я тоже смотрел, но вроде не регистрировался... Удивился еще - зачем
тебе это, но теперь, конечно, понятно.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Померял с секундомером скорости - если принять, что высота (и ширина) одного куба (один этаж) составляет около 2 метров, то игрок ходит со скоростью 17 км/ч, а бегает - со скоростью 50 км/ч (стометровку с такой скоростью можно пробежать за 7.2 секунды)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Сделал имитацию робота, пользуясь набором спрайтов:



P.S. У ютюба появилась опция замены звука на песенку из списка - выбрал кую-то металлическую группу - вроде подходит ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

А нос пожалуй длинноват - укорочу...

P.S. Вчера исправил проблему перевода чисел с плавающей точкой в целые из-за которой середина любого спрайта имела размазанную двойную точку во всех горизонталях (+0.9 переводится в 0, однако -0.9 тоже переводится в 0, поэтому отрицательные числа надо смещать на 1), а сегодня исправил проблемы отображения по вертикали - съедание верхней горизонтали и щели между вертикальными спрайтами (их на видео видно).
Я тут за главного - если что шлите мыло на me собака shaos точка net