3D игрушка
Участников: 4
3D игрушка
Я давно вынашиваю идеи создания "стрелялки" на бейсике
1) сначала я пытался делать на qb4.5
получалось плохо
сумел узнать как из 3д координат узнавать координаты на экране.
2) потом я пытался делать игруху на qb7.1
3) потом пытался использовать библиотеку Future.Libary(для старого бейсика)
В целом неплохо получилось, только больно тормозило иногда и не работало под висту, хр.
Были и высокие разрешения и пара функций по размазыванию текстур
4) теперь я перешёл на FreeBasic и в принципе знаю приёмы прорисовки 3д, но:
Я не знаю как делать звук
особенно такой, что бы было много источников
Помогите, прошу. (если тема уже была - укажите, я вроде не видел)
Если расскажите как НЕ создавать 3д движок(вдруг на fb уже есть) - буду очень благодарен
(Сделаю опять свой - мне не сложно)
1) сначала я пытался делать на qb4.5
получалось плохо
сумел узнать как из 3д координат узнавать координаты на экране.
2) потом я пытался делать игруху на qb7.1
3) потом пытался использовать библиотеку Future.Libary(для старого бейсика)
В целом неплохо получилось, только больно тормозило иногда и не работало под висту, хр.
Были и высокие разрешения и пара функций по размазыванию текстур
4) теперь я перешёл на FreeBasic и в принципе знаю приёмы прорисовки 3д, но:
Я не знаю как делать звук
особенно такой, что бы было много источников
Помогите, прошу. (если тема уже была - укажите, я вроде не видел)
(Сделаю опять свой - мне не сложно)
Последний раз редактировалось: Gena (Пт Ноя 14, 2008 10:26 am), всего редактировалось 1 раз(а)
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва
Re: 3D игрушка
Я на сём форуме уже две темы поднимал про звук. Например
https://freebasic.forum2x2.ru/forum-f6/tema-t77.htm?sid=a8d1eea51e2a15c7738700aeb1f4fd02#853
Библиотека fmod позволяет работать с 3d звуком, куча источников и т.д
Но лично я ограничился пока 2d. До 3d игрушки у меня руки не доходят.
https://freebasic.forum2x2.ru/forum-f6/tema-t77.htm?sid=a8d1eea51e2a15c7738700aeb1f4fd02#853
Библиотека fmod позволяет работать с 3d звуком, куча источников и т.д
Но лично я ограничился пока 2d. До 3d игрушки у меня руки не доходят.
Re: 3D игрушка
А что вы понимаете под 3D движком, если вы подразумеваете только отрисовку, то почему бы не юзать DirectX или OpenGL. Рекомендую последнее, тк FB хорошо его поддерживает и позволяет писать сразу кроссплатформенные игрушки. Если заинтересует, то могу помоч, когдато тоже увлекался етим
Re: 3D игрушка
Как я понял, Гена спрашивает о 3d звуке и движке соответственно.
openGl это графика, а вот openAl это звук.
Я работал только с fmod. У него совершенно точно можно задавать 3d координаты источника звука, скорость и направление движения.
Посмотрите, в моей темке, там ссылочки в самом начале.
openGl это графика, а вот openAl это звук.
Я работал только с fmod. У него совершенно точно можно задавать 3d координаты источника звука, скорость и направление движения.
Посмотрите, в моей темке, там ссылочки в самом начале.
Re: 3D игрушка
Я так понял, что надо изучать эти библиотеки. (сорри за боян - первый день на форуме)
Меня больше интересует перспектива создания игры с ДиректХ.
tux, очень интересно было бы посмотреть на твои проекты.
кроссплатформенные - это как?
Меня больше интересует перспектива создания игры с ДиректХ.
tux, очень интересно было бы посмотреть на твои проекты.
кроссплатформенные - это как?
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва
Re: 3D игрушка
Кросплатформенные, это когда будут работать под разными операционками, например windows и linux.
Можно и через directX. Никто никуда никого не тащит.
Надо искать документацию, примеры... многие нужные заголовочные файлы уже есть под freebasic.
Для 3d звука можно использовать разные библиотеки.
Для графики библиотек ещё больше.
Можно и через directX. Никто никуда никого не тащит.
Надо искать документацию, примеры... многие нужные заголовочные файлы уже есть под freebasic.
Для 3d звука можно использовать разные библиотеки.
Для графики библиотек ещё больше.
Re: 3D игрушка
Просто я отдаю предпочтение OpenGL-ю по двум причинам 1 - он свободный следовательно поддерживается практически всеми популярными ОС, в отличии от DirectX, 2 - в FB встроены функции для удобной работы с ним, нов общем решать тебе, это только лично мои предпочтения, а проекты непокажу, тк писались давно (боюсь щас ненайду их) и не на FB
Re: 3D игрушка
Я могу написать движок - там не сложно, как кажется на первый взгляд, также могу некоторые фильтры сделать (замыливание неба, текстур), мышка, WSAD, не впервой. + некоторое ускорение за счёт оптимизации и т.п. Единственно, что не могу самостоятельно - это звук, если кто хочет поработать вместе со мной, буду благодарен, в титрах запишу.
условная структура моего движка:
...
Do
Проверка нажатых клавиш W SAD
Проверка положения мышки,поворот на опр колво радиан, возврат мышки на середину экрана
Начало цикла 1 до колва текстур
Сортировка методом "пузырька" (соседние элементы меняются, в зависимости ближе они к игроку или дальше)
конец цикла
Начало цикла 1 до колва текстур, где 1 - самая далёкая текстура, а kolvo - самая близкая
Собственно сама прорисовка - не буду вдавать в подробности
(либо треугольник текстурированный, либо квадрат)
Тут фильтр для замыливания (через ф-ию рисования треугольника (маленького, опред. цвета)
если указано в настройках, то к центру одного текселя ведут 8 мелких трегольников с усреднёнными
значениями между соседними тексилями,если нет, то 2 треуг, которве просто закрашивают тексель)
конец цикла
Переключение между двумя страницами видеопамяти (та страница, в которой всё предыдущее рисовалось, была не видна)
Loop
Было бы неплохо звук сделать с помощью fmod, там с фоновой музыкой(ну не музыкой, а фоном - типа капли падают и т.п.) и с множеством голосов (монстеры, игрок, оружее). Очень надеюсь,что кто-нибуть откликнется и напишит примерный код.
условная структура моего движка:
...
Do
Проверка нажатых клавиш W SAD
Проверка положения мышки,поворот на опр колво радиан, возврат мышки на середину экрана
Начало цикла 1 до колва текстур
Сортировка методом "пузырька" (соседние элементы меняются, в зависимости ближе они к игроку или дальше)
конец цикла
Начало цикла 1 до колва текстур, где 1 - самая далёкая текстура, а kolvo - самая близкая
Собственно сама прорисовка - не буду вдавать в подробности
(либо треугольник текстурированный, либо квадрат)
Тут фильтр для замыливания (через ф-ию рисования треугольника (маленького, опред. цвета)
если указано в настройках, то к центру одного текселя ведут 8 мелких трегольников с усреднёнными
значениями между соседними тексилями,если нет, то 2 треуг, которве просто закрашивают тексель)
конец цикла
Переключение между двумя страницами видеопамяти (та страница, в которой всё предыдущее рисовалось, была не видна)
Loop
Было бы неплохо звук сделать с помощью fmod, там с фоновой музыкой(ну не музыкой, а фоном - типа капли падают и т.п.) и с множеством голосов (монстеры, игрок, оружее). Очень надеюсь,что кто-нибуть откликнется и напишит примерный код.
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва
3d игрушка
Примерный код можно посмотреть в примерах из репозитария FB (examples\libraries\sound\...). Там есть простые примеры по использованию звуковых библиотек, в частности FMod. По ним можно понять базовые понятия работы с подобными библиотеками, а уже на основе их, сделать конкретный звуковой движок для твоей игры.
Re: 3D игрушка
=====Поправка 24 ноября 17.00=====
Я счастлив, как старина Дейв, нашедший своего брата =)))
У меня наконец-то получилось натянуть текстурку на полигон! Без изкажений, без кривости. И всё это работает быстрее чем раньше. Если кому-нибуть надо, то я с удовольствием поделюсь.
Я счастлив, как старина Дейв, нашедший своего брата =)))
У меня наконец-то получилось натянуть текстурку на полигон! Без изкажений, без кривости. И всё это работает быстрее чем раньше. Если кому-нибуть надо, то я с удовольствием поделюсь.
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва
Re: 3D игрушка
Скачать демонстрацию натягивания текстуры на полигон можно здесь.
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва
Re: 3D игрушка
- Код:
Sub Tri (x1 As Integer,y1 As integer,x2 As integer,y2 As integer,x3 As integer,y3 As integer,col As Double)
Dim As Integer xper,yper,yper1
r:
If x1>x2 Then swap x1,x2:swap y1,y2':GoTo r
If x2>x3 Then swap x2,x3:swap y2,y3:GoTo r
'If x1>x3 Then swap x1,x3:swap y1,y3:GoTo r
If x3<> x1 Then
For xper = x1 To x3
yper=(xper-x1)*(y3-y1)/(x3-x1)+y1
If xper <x2 Then
If x2<>x1 Then yper1=(xper-x1)/(x2-x1)*(y2-y1)+y1 'Else 'yper=y2
Else
If x3<>x2 Then yper1=(xper-x2)/(x3-x2)*(y3-y2)+y2 'Else 'yper=y2
EndIf
Line (xper,yper)-(xper,yper1),col
Next
End If
End Sub
Там, я точно знаю надо использовать преобразование в РГБ (r = RGB_R(col1),g = RGB_G(col1)) и вместо линии перечисление, но как правильно узнавать цвет? Я пробовал по-разному, но не получается.
Что я сделал.
1) Лайтмап
2) Ускорение, если текстура находиться далеко
3) Выбор с помощью конфига оптимальной настройки (качество текстур(рисунок при этом не страдает, просто пиксели увеличиваются, а смысл остаётся))
4) Почти полностью сделал "замыливание" текстур, только нужна фукция рисования разноцветного треугольника(см. выше)
скрин
[img=https://redcdn.net/ihimizer/img296/6891/scr1ae3.th.png]
P.S. сорри за корявый английский =))
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва
Re: 3D игрушка
Вот недавно читал я на gamedev некоторые интересные статьи и возникли у меня вопросы:
На сколько я понял, возможна параллельная раота по отрисовке изображения и других операций(часть ф-ий перекладывается на видео карту) - как это реализовать?
========Добавлено=========
Всем советую использовать screenlock и screenunlock в начале и конце прорисовки - в моей программе это существенно прибавило производительности.
========Добавлено 3 дек =========
Наконец понял как забивать напрямую в память цвет пикселя и сделал функцию. Это прибавило 25% (!)производительности. И это не предел.
я собираюсь создать для каждой текстуры массив, в котором будет видоизменённая текстура с статичным освещением, следами от пуль, плакатами и т.п. Это прибавит производительности, но заберёт инога памяти - ничего - производительность важнее. Во время игры будет просчитываться только динамическое освещение и смазывание текстуры(пока кстати не получается норм. ф-ию сделать )
ВАЖНО
Не мог бы мне кто-нибуть помочь с полным средним образованием? =))))) никак не могу определить какой стороной к камере текстура - есть один метод, свой, но уж очень неэффективный. Читал статьи GameDev, но к сожалению мало чего понял =(, если кто-то имел с этим дело, то пожалуста напишите.
P.S. на скриншоте я неправильно назвал LIght Map-ом вершинное освещение - тогда, когда я делал это, я ещё не всё понимал.
P.P.S. ничего, что я использую темку как дневник? =)
P.P.P.S. Нашёл одну интересную особенность: при записи в память цвета надо записывать BGR, а не RGB
===========Добавлено 4 дек=====
Наконец-то разобрался со звуком =)
Сделал шаги человека. Пока ещё не до конца продумал систему подачи звука в целом(то есть там монстры оружее и т.п. думаю подойдёт Type Zvuk ), но всё ещё впереди =)
P.S. Как узнать должен ли закончиться отрывок? Или как узнать длину отрывка?
На сколько я понял, возможна параллельная раота по отрисовке изображения и других операций(часть ф-ий перекладывается на видео карту) - как это реализовать?
========Добавлено=========
Всем советую использовать screenlock и screenunlock в начале и конце прорисовки - в моей программе это существенно прибавило производительности.
========Добавлено 3 дек =========
Наконец понял как забивать напрямую в память цвет пикселя и сделал функцию. Это прибавило 25% (!)производительности. И это не предел.
я собираюсь создать для каждой текстуры массив, в котором будет видоизменённая текстура с статичным освещением, следами от пуль, плакатами и т.п. Это прибавит производительности, но заберёт инога памяти - ничего - производительность важнее. Во время игры будет просчитываться только динамическое освещение и смазывание текстуры(пока кстати не получается норм. ф-ию сделать )
ВАЖНО
Не мог бы мне кто-нибуть помочь с полным средним образованием? =))))) никак не могу определить какой стороной к камере текстура - есть один метод, свой, но уж очень неэффективный. Читал статьи GameDev, но к сожалению мало чего понял =(, если кто-то имел с этим дело, то пожалуста напишите.
P.S. на скриншоте я неправильно назвал LIght Map-ом вершинное освещение - тогда, когда я делал это, я ещё не всё понимал.
P.P.S. ничего, что я использую темку как дневник? =)
P.P.P.S. Нашёл одну интересную особенность: при записи в память цвета надо записывать BGR, а не RGB
===========Добавлено 4 дек=====
Наконец-то разобрался со звуком =)
Сделал шаги человека. Пока ещё не до конца продумал систему подачи звука в целом(то есть там монстры оружее и т.п. думаю подойдёт Type Zvuk ), но всё ещё впереди =)
P.S. Как узнать должен ли закончиться отрывок? Или как узнать длину отрывка?
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва
Re: 3D игрушка
Ваще на ету тему не мешало бы почитать учебник по линейной алгебре (когда я поступил в универ, и начался этот предмет, я удивился, тк все это знал из книг по ОпенГЛ-ю), а вообще если ты решил не пользоваться ГЛ-ем, и сам создаеш полигоны, то у них должен быть вектор, который находится перпендикулярно к плоскости полигона (наз-ся нормаль) и направлен в сторону, в которую смотрит текстура, так вот если угол между вектором камеры и вектором полигона меньше 90 градусов, то текстуру видно, если больше, то соответственно невидно.Не мог бы мне кто-нибуть помочь с полным средним образованием? =))))) никак не могу определить какой стороной к камере текстура - есть один метод, свой, но уж очень неэффективный.
Re: 3D игрушка
Вощем сегодня, я научился узнавать по нормали видна ли текстура или нет, осталось только нормали ставить не вручную а по какой-то формуле.....
Вопрос: почему во время начала или конца записи или прерывания раздаётся характерный щелчёк? Причём во всех видах воспроизведения звука на компьютере и как от этого избавиться?
Вопрос: почему во время начала или конца записи или прерывания раздаётся характерный щелчёк? Причём во всех видах воспроизведения звука на компьютере и как от этого избавиться?
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва
Re: 3D игрушка
http://files.filefront.com/gamerar/;12590904;/fileinfo.html
-вот над чем я работаю (музыку не отправил - там "якутское горловое пение" - вещь xD , можно включить любую музыку, подставив её в /WAV/ под именем FON01.WAV + В конфиге последнюю строчку на единицу исправить)
Сегодня извращался с кривыми текстурами =). + наделал маштабируемости в карте.
Кстати - можно спокойно изменять файл MAP0.TXT - делать карту. Посмотрите, напишите что думаете.
========Добавлено 19.36========
Я включил контру 1.5, посмотрел карту DE_TORN и вот итог:
1)Я постарался и ускорил отображение текстур на 150% =) (заново заливать не стал )
2) возник вопрос: кто знает как в халфе отображается картинка? принципом художника или пропускания лучей через экран? И что эффективней?
-вот над чем я работаю (музыку не отправил - там "якутское горловое пение" - вещь xD , можно включить любую музыку, подставив её в /WAV/ под именем FON01.WAV + В конфиге последнюю строчку на единицу исправить)
Сегодня извращался с кривыми текстурами =). + наделал маштабируемости в карте.
Кстати - можно спокойно изменять файл MAP0.TXT - делать карту. Посмотрите, напишите что думаете.
========Добавлено 19.36========
Я включил контру 1.5, посмотрел карту DE_TORN и вот итог:
1)Я постарался и ускорил отображение текстур на 150% =) (заново заливать не стал )
2) возник вопрос: кто знает как в халфе отображается картинка? принципом художника или пропускания лучей через экран? И что эффективней?
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 31
Откуда : Москва
Права доступа к этому форуму:
Вы не можете отвечать на сообщения