Author Topic: WS3D 1.01 - работа над релизом!  (Read 695 times)

0 Members and 1 Guest are viewing this topic.

Offline Alec - WS3D Developer

  • Producer
  • Administrator
  • Marquess
  • *
  • Posts: 897
  • Reputation 36
  • Game making is my hobby for life!
Re: WS3D 1.01 - работа над релизом!
« Reply #15 on: November 13, 2016, 07:02:10 PM »
Quote
Смысл такой: мы и не будем напрямую взаимодействовать с android. Если получится все организовать внутри враппера на С++, на бейсик выведем нужные команды.
Интересная идея. Интересно насколько осуществимо. Технологии не стоят на месте. То что было невозможно вчера, может стать возможным завтра.  :)
WorldSim3D = 3D + FreeBasic. Программируй в удовольствие, а не "в тягость"! Make your project with pleasure, not with strain!

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Marquess
  • *
  • Posts: 880
  • Reputation 61
Re: WS3D 1.01 - работа над релизом!
« Reply #16 on: November 14, 2016, 11:17:25 PM »
Привет всем. При работе над 64-битной линукс-версией движка вылезли неожиданный "грабли".
Во-первых, главная библиотека движка напрочь отказывается собираться в динамическом варианте (*.so). Только если убрать все доп. библиотеки: фритайп, звук, сеть и видео vorbis. Ну это еще ничего, вариант с подключением этих либ прямо во фрибейсик- заголовке показал, что все работает и так. Правда, не все...
Обнаружились проблемы со звуковой библиотекой. Причем с форматом wav. С ogg- полный порядок как в 2D так и в 3D. Любопытно то, что в трех предыдущих сборках (Win32, Win64 и Lin32) таких проблем не возникало.

Ну еще пара примеров, хромающих на физике. Все остальное работает.

Продолжаем работу, товарищи.
Под лежачий камень мы всегда успеем...

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Marquess
  • *
  • Posts: 880
  • Reputation 61
Re: WS3D 1.01 - работа над релизом!
« Reply #17 on: November 15, 2016, 09:42:21 AM »
Привет всем. Уточненные данные на сегодняшний день. Хромает именно звук и самописный контроллер управления персонажем с помощью физики (его еще нет в версии 1.0, планировалось его использовать в примере 127). Будем искать проблемные места.

Удалось собрать динамическую библиотеку движка в Lin64, правда, теперь библиотеки kNet, TrueType, OpenAL, Ogg, Vorbis и Theora будут поставляться в виде *.so-шек и подключаться через #Inclib. Думаю, не критично.
« Last Edit: November 15, 2016, 05:24:07 PM by Nikolas - WS3D Developer »
Под лежачий камень мы всегда успеем...

Offline Vuvk

  • Friends
  • Baron (-ess)
  • *
  • Posts: 344
  • Reputation 34
  • Lokemundux Desco Domus Shaantitus
Re: WS3D 1.01 - работа над релизом!
« Reply #18 on: November 19, 2016, 11:24:15 AM »
Да, я тоже столкнулся с проблемой разного размера переменных в разноразрядных системах где-то полгода назад. Написал редактор карт, сделал карту, сохранил. Скомпилировал редактор под х64 и карта уже не читалась. С тех пор чтение-запись осуществляю в фиксированных размерах, то есть не sizeof(Integer), а конкретно 4 байта. ну или заведомо использую типы UInt32 и т.д.
Не уверен, что сборка x64 будет работать лучше, чем x86, т.к. я смотрю всё равно придётся передавать типы под 32?
Crudux Cruo!

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Marquess
  • *
  • Posts: 880
  • Reputation 61
Re: WS3D 1.01 - работа над релизом!
« Reply #19 on: November 19, 2016, 01:26:57 PM »
Quote
Не уверен, что сборка x64 будет работать лучше, чем x86, т.к. я смотрю всё равно придётся передавать типы под 32
На данный момент прогресс уже то, что она работает. Пришлось ввести типы данных Int32, Uint32 и прочее. Переписан весь заголовок. Да, в коде самого враппера все заточено под Win32, поэтому скорость работы примерно такая-же, только уменьшилось время компиляции. Есть готовые сборки под Win32, Lin32, Win64  уже под Lin64. Правда, переписываю звуковую подсистему на будущее, возможно, будут фильтры и эффекты EAX, запись звука и постараюсь внедрить декодер для mp3. Но это выйдет уже не в 1.01. Пока под Lin64 убрал в примерах wav-формат из-за проблем с памятью. Да, еще 35 пример не работает, именно функция иррла внутри wLoadScene. Пока не могу сказать, почему...
Под лежачий камень мы всегда успеем...

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Marquess
  • *
  • Posts: 880
  • Reputation 61
Re: WS3D 1.01 - работа над релизом!
« Reply #20 on: November 21, 2016, 09:42:56 PM »
Привет всем. Работая над звуком, столкнулся с непонятным поведением эффектов OpenAL. Просьба: протестировать микродемку. В ней- набор из 14 эффектов. Моя звуковая карта поддерживает только 3, судя по выводу консоли. При этом число доступных эффектов показывает: 1 (В самом начале теста) И слышу только один.
Фильтры пока не включал. Их имеется 4, из них у меня работает только один. С ними чуть позже будем разбираться.

Вот список предполагаемых эффектов:
Code: [Select]
Enum wEffectTypes
wEET_NULL=0
wEET_EAX_REVERB
wEET_REVERB
wEET_CHORUS
wEET_DISTORTION
wEET_ECHO
wEET_FLANGER
wEET_FREQUENCY_SHIFTER
wEET_VOCAL_MORPHER
wEET_PITCH_SHIFTER
wEET_RING_MODULATOR
wEET_AUTOWAH
wEET_COMPRESSOR
wEET_EQUALIZER
wEET_COUNT
End Enum
« Last Edit: November 21, 2016, 10:20:08 PM by Nikolas - WS3D Developer »
Под лежачий камень мы всегда успеем...

Offline Alec - WS3D Developer

  • Producer
  • Administrator
  • Marquess
  • *
  • Posts: 897
  • Reputation 36
  • Game making is my hobby for life!
Re: WS3D 1.01 - работа над релизом!
« Reply #21 on: November 22, 2016, 06:00:29 PM »
У меня вероятно то же самое.
Сначала слышен просто стандартный звук шагов и в консоли пишет "effect num: 0",
затем, когда показывает в консоли "effect num: 1", "effect num: 2" и "effect num: 14" - уже с эхом. В следующем круге "effect num: 0" уже с эхом тоже.

Code: [Select]
Sound slots count: 1
Simultaneous Effects Supported: 1
Effect valid: true
Effects SUPPORT: 0 : true
Effects SUPPORT: 1 : true
Effects SUPPORT: 2 : true
Effects SUPPORT: 3 : false
Effects SUPPORT: 4 : false
Effects SUPPORT: 5 : false
Effects SUPPORT: 6 : false
Effects SUPPORT: 7 : false
Effects SUPPORT: 8 : false
Effects SUPPORT: 9 : false
Effects SUPPORT: 10 : false
Effects SUPPORT: 11 : false
Effects SUPPORT: 12 : false
Effects SUPPORT: 13 : false
Effects SUPPORT: 14 : true


Filters SUPPORT: 0 : true
Filters SUPPORT: 1 : true
Filters SUPPORT: 2 : false
Filters SUPPORT: 3 : false
Filters SUPPORT: 4 : false
и т.д по кругу: 1,2, 14 шум шагов с эхом, остальные проскакивает и пишет: false.
WorldSim3D = 3D + FreeBasic. Программируй в удовольствие, а не "в тягость"! Make your project with pleasure, not with strain!

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Marquess
  • *
  • Posts: 880
  • Reputation 61
Re: WS3D 1.01 - работа над релизом!
« Reply #22 on: November 26, 2016, 05:11:41 PM »
Привет всем. Обдумывая будущий пример с RagDoll, пришел к выводу, что нелишним будет добавить парочку функций для джойнтов:

Code: [Select]
Declare function wGetJointsCount(byval animatedNode As wNode)As Uint32Возвращает число joints в анимированной модели.

Code: [Select]
Declare Function wGetJointNode2(_
byval animatedNode As wNode,_
ByVal jointID As Uint32)As wNode
Возвращает нод, содержащий joint с заданным индексом. Префикс 2 потому, что wGetJointNode у нас уже есть.

Удобно, если заранее не знаешь, какие названия придумал автор модели. Если, конечно, автор не ты сам :D

На скрине- фрагмент такого содержания:
Code: [Select]
For i As Uint32=0 To wGetJointsCount(AnimatedNode)-1
Dim As wNode joint=wGetJointNode2(AnimatedNode,i)
Print *wGetNodeName(joint)
Next
« Last Edit: November 26, 2016, 05:26:18 PM by Nikolas - WS3D Developer »
Под лежачий камень мы всегда успеем...

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Marquess
  • *
  • Posts: 880
  • Reputation 61
Re: WS3D 1.01 - работа над релизом!
« Reply #23 on: November 26, 2016, 06:06:00 PM »
Еще, видимо, придется кое-что добавить (по информации отсюда)

Code: [Select]
Enum wBONE_SKINNING_SPACE
wBSS_LOCAL
wBSS_GLOBAL
wBSS_COUNT
End Enum

Code: [Select]
Declare Sub wSetSkinningSpace(_
ByVal animatedNode As wNode,_
ByVal mode As Uint32)
Последний параметр берется из enum  wBONE_SKINNING_SPACE

Дословно описано так:
Quote
You should have your ragdoll setup in your physics engine, now for each joint that you want to be connected with a physics object, call on them, so you can just set them to the same position and rotation of your physics object in global space. (I would have like a better nicer method for this, but I couldn't see a way without forcing the meshes to animate every frame.)

Еще это:
Code: [Select]
Declare sub wSetRenderFromIdentity (_
ByVal animatedNode As wNode,_
ByVal value As Boolean)

Quote
This causes the meshes transformation to be ignored in drawing

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

PS. В арсенале WS3D уже есть кое-что для реализации задуманного. Это- функция
Code: [Select]
wSetJointMode( AnimatedNode, wJOINT_MODE_CONTROL )
Quote
' ensure that the bone can be controlled programmatically

Вообще же можно обойтись и стандартным физ. набором Ньютона, имеются ввиду физ. примитивы и физ. сочленения.  Вот яркий пример (другой движок с бейсик- синтаксисом):

Code: [Select]
Function CreateRagDoll(x#,y#,z#)
stf# = 0.000003
;Head
head.phx = phxCreateSphere(1,1,1,.1)
;chest
chest.phx = phxCreateBox(3,2,1,1)
;belly
belly.phx = phxCreateBox(2,2,1,1)
;left forearm
left_forearm.phx = phxCreateCyl(.5,2.5,.1)
;right forearm
right_forearm.phx = phxCreateCyl(.5,2.5,.1)
;left hand
left_hand.phx = phxCreateCyl(.5,2.5,.1)
;right hand
right_hand.phx = phxCreateCyl(.5,2.5,.1)
;left thigh
left_thigh.phx = phxCreateCyl(.5,3,.5)
;right thigh
right_thigh.phx = phxCreateCyl(.5,3,.5)
;left shank
left_shank.phx = phxCreateCyl(.5,3,.5)
;right shank
right_shank.phx = phxCreateCyl(.5,3,.5)

phBodySetPos(head\body,x,y,z-.5)
phBodySetPos(chest\body,x,y-2,z)
phBodySetPos(belly\body,x,y-4,z)
phBodySetPos(left_forearm\body,x+2,y-2,z)
phBodySetPos(right_forearm\body,x-2,y-2,z)
phBodySetPos(left_hand\body,x+2,y-4.5,z)
phBodySetPos(right_hand\body,x-2,y-4.5,z)
phBodySetPos(left_thigh\body,x+1,y-6.5,z)
phBodySetPos(right_thigh\body,x-1,y-6.5,z)
phBodySetPos(left_shank\body,x+1,y-9.5,z)
phBodySetPos(right_shank\body,x-1,y-9.5,z)

phBodyAddForce(belly\body,0,0,Rnd(-3000,0))

;
neck = phJointBallCreate(x,y-1,z,head\body,chest\body)
phJointBallSetLimit(neck,0,1,0,70,10)
phJointSetCollisionMode(neck,1)
phJointSetStiffness(neck,stf)
;
spine = phJointBallCreate(x,y-3,z,belly\body,chest\body)
phJointBallSetLimit(spine,0,1,0,45,45)
phJointSetCollisionMode(spine,1)
phJointSetStiffness(spine,stf)
;
shoulder_left = phJointBallCreate(x+2,y-1,z,left_forearm\body,chest\body)
phJointBallSetLimit(shoulder_left,1,0,0,70,10)
phJointSetCollisionMode(shoulder_left,1)
phJointSetStiffness(shoulder_left,stf)
;
shoulder_right = phJointBallCreate(x-2,y-1,z,right_forearm\body,chest\body)
phJointBallSetLimit(shoulder_right,-1,0,0,70,10)
phJointSetCollisionMode(shoulder_right,1)
phJointSetStiffness(shoulder_right,stf)
;
elbow_Left = phJointBallCreate(x+2,y-3,z,left_forearm\body,left_hand\body)
phJointBallSetLimit(elbow_Left,0,-1,0,70,70)
phJointSetCollisionMode(elbow_Left,1)
phJointSetStiffness(elbow_Left,stf)
;
elbow_right = phJointBallCreate(x-2,y-3,z,right_forearm\body,right_hand\body)
phJointBallSetLimit(elbow_right,0,-1,0,70,70)
phJointSetCollisionMode(elbow_right,1)
phJointSetStiffness(elbow_right,stf)
;
leg_left = phJointBallCreate(x+1,y-5,z,left_thigh\body,belly\body)
phJointBallSetLimit(leg_left,0,-1,0,10,70)
phJointSetCollisionMode(leg_left,1)
phJointSetStiffness(leg_left,stf)
;
leg_right = phJointBallCreate(x-1,y-5,z,right_thigh\body,belly\body)
phJointBallSetLimit(leg_right,0,-1,0,10,70)
phJointSetCollisionMode(leg_right,1)
phJointSetStiffness(leg_right,stf)
;
knee_left = phJointHingeCreate(x+1,y-8,z,1,0,0,left_thigh\body,left_shank\body)
phJointHingeSetLimit(knee_left,0,90)
phJointSetCollisionMode(knee_left,0)
phJointSetStiffness(knee_left,stf)
;
knee_right = phJointHingeCreate(x-1,y-8,z,1,0,0,right_thigh\body,right_shank\body)
phJointHingeSetLimit(knee_right,0,90)
phJointSetCollisionMode(knee_right,0)
phJointSetStiffness(knee_right,stf)

End Function
На скрине- результат действия для 4-х "кукол".




« Last Edit: November 26, 2016, 06:28:26 PM by Nikolas - WS3D Developer »
Под лежачий камень мы всегда успеем...

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Marquess
  • *
  • Posts: 880
  • Reputation 61
Re: WS3D 1.01 - работа над релизом!
« Reply #24 on: November 28, 2016, 08:34:45 PM »
Привет всем. Все на так просто, оказывается. При попытке повторить алгоритм, приведенный выше на WS3D, столкнулся с проблемой: Ньютон ведет себя нестабильно при работе с сочленениями. Регдолл в некоторых случаях прямо "взрывается" и улетает в неизвестном направлении. Правда, в связке Нютон+Blitz3D (скрин показывал выше) тоже удавалось разбалансировать физику, но там это происходит гораздо труднее.

Пока разбираюсь, что к чему. Пример пока откладывается. Одновременно решил посмотреть в сторону Bullet. Должен признать- сильная вещь. Более сложен, на мой взгляд, чем Ньютон. Благо, враппер для иррла позволяет многое упростить- позволяет избежать головной боли с матрицами и кватернионами. Буллет позволяет имитировать ткани. Этого Ньютон точно не может. На втором скрине- тряпица  :D   Ну не американский же флаг.
« Last Edit: November 28, 2016, 11:17:12 PM by Nikolas - WS3D Developer »
Под лежачий камень мы всегда успеем...

Offline Vuvk

  • Friends
  • Baron (-ess)
  • *
  • Posts: 344
  • Reputation 34
  • Lokemundux Desco Domus Shaantitus
Re: WS3D 1.01 - работа над релизом!
« Reply #25 on: November 29, 2016, 05:04:02 AM »
Bullet более профессиональный, что ли. Стоит на одной ступеньке с Havoc и PhysX в игровой индустрии. Думаю, что это было бы полезное приобретение... Но что у него с портируемостью на мобильные оси?
Crudux Cruo!

Offline Alec - WS3D Developer

  • Producer
  • Administrator
  • Marquess
  • *
  • Posts: 897
  • Reputation 36
  • Game making is my hobby for life!
Re: WS3D 1.01 - работа над релизом!
« Reply #26 on: November 29, 2016, 08:15:29 AM »
Привет всем! В виду того, что у команды разработчиков добавилось немного работы с релизом, он сотоится в начале декабря. Приносим извинения, так как обещали в ноябре.

Мы не хотели задерживать релиз, но возникли проблемы со звуком под Linux; релиз под Linux тоже выходит в этот раз.
WorldSim3D = 3D + FreeBasic. Программируй в удовольствие, а не "в тягость"! Make your project with pleasure, not with strain!

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Marquess
  • *
  • Posts: 880
  • Reputation 61
Re: WS3D 1.01 - работа над релизом!
« Reply #27 on: December 01, 2016, 04:01:31 PM »
Привет всем. Пишу не совсем в теме, т.е. не для 1.0.1
Ради интереса и  сравнения скорости/возможностей решил врапнуть bullet, не весь конечно, только основное. Точнее, врапнуть его С++-враппер. Чистый Bullet очень многословен и наворочен. Кучи параметров и настроек. Возможно, в будущем сделаем выбор между Newton и Bullet, а можно оставить оба для самостоятельного выбора. Пока цифр никаких не привожу, все на ранней стадии. Но кубики уже падают  :D

В двух словах различия в возможностях в пользу Bullet такая:
- более широкий выбор collision shape-
- более гибкие настройки-
- стабильность-
- скорость, если верить общественному мнению. Будем проверять.
- есть шейп btGimpactMeshShape, который позволяет реализовать  динамические невыпуклые объекты. Например, если организовать  игровой эпизод с физикой внутри движущегося танка. В Ньютоне есть Trimesh, но только для статики.
- физические аффекторы (позволяют организовать физические частицы) и что-то похожее на аниматоры-
- мягкие тела (soft bodys).
- готовый контроллер управления персонажем (так называемый Ghost)

Ближайшие релизы WS3D будут с физикой Newton, уже реализован весь стандартный физический набор.
Под лежачий камень мы всегда успеем...

Offline Alec - WS3D Developer

  • Producer
  • Administrator
  • Marquess
  • *
  • Posts: 897
  • Reputation 36
  • Game making is my hobby for life!
Re: WS3D 1.01 - работа над релизом!
« Reply #28 on: December 12, 2016, 11:33:46 AM »
Привет, всем!  :)
Альфа-тестирование завершено. Есть несколько небольших вопросов ещё, но в целом всё работает как и должно. Осталось всё документировать...
WorldSim3D = 3D + FreeBasic. Программируй в удовольствие, а не "в тягость"! Make your project with pleasure, not with strain!

Offline Alec - WS3D Developer

  • Producer
  • Administrator
  • Marquess
  • *
  • Posts: 897
  • Reputation 36
  • Game making is my hobby for life!
Re: WS3D 1.01 - работа над релизом!
« Reply #29 on: December 15, 2016, 07:26:57 PM »
Найдены кое-какие недочёты в документации, в заголовке WorldSim3D.bi и ещё кое-что. Сегодня они будут устранены и завтра релиз!  :)
WorldSim3D = 3D + FreeBasic. Программируй в удовольствие, а не "в тягость"! Make your project with pleasure, not with strain!