GLBasic forum

Main forum => GLBasic - en => Topic started by: Bluepixel on 2019-Nov-10

Title: Box2D in GLBasic?
Post by: Bluepixel on 2019-Nov-10
Hi there, I am working on a small physics based game and would love to add in Box2D physics, since that's the only physics library for GLBasic I could find, so I found a Box2D library in the showroom, downloaded it, and ran the example project. The example project ran fine, but after compiling it within the editor it simply stated; *1 FAILED*. I created a hello world project, took the Box2D library and included it into my project, I ran it and the project failed, which leads me to believe that it's probably outdated, which is unfortunate since I was really hoping I could get some physics working :blink:

Anyone that can help me with this?



 :offtopic: PS. I am very sorry about my frequent posts, I am rather new to GLBasic, so I am very curious as to of how things work. I will try to do as much research as I can on my own before posting anything. :offtopic:
Title: Re: Box2D in GLBasic?
Post by: MrPlow on 2019-Nov-10
Hi

I will try out the box2d library and see if I can spot the problem...I used it briefly before for an older project.
Title: Re: Box2D in GLBasic?
Post by: Bluepixel on 2019-Nov-11
Ah thanks a lot, tell me when you found something! :)
Title: Re: Box2D in GLBasic?
Post by: Schranz0r on 2019-Nov-11
Hi,

read down the topic here (https://www.glbasic.com/forum/index.php?topic=3561.0) :)
You need the Headerfiles for GLBasic!
Title: Re: Box2D in GLBasic?
Post by: erico on 2019-Nov-12
Wasen´t there a bullet physics implementation somewhere on the forum?
I recall watching a video about it and taking part on the discussion but I can´t seem to find the post anymore.
Title: Re: Box2D in GLBasic?
Post by: Bluepixel on 2019-Nov-12
@Schranz0r

Hi there, thanks a lot for the reply!  :)

Exactly how should I use these files?  O_O

I am quite new for GLBasic, so im a bit confused as to of how things work, sorry for that!
Title: Re: Box2D in GLBasic?
Post by: Bluepixel on 2019-Nov-13
@erico
I believe its this one:
https://www.glbasic.com/forum/index.php?topic=7757.0

however i think its been made for 3d games, im not too sure tho, i havent been able to find a download.
Title: Re: Box2D in GLBasic?
Post by: erico on 2019-Nov-13
Yes, that one, thanks. (I searched for those words, maybe I didn´t search well enough)
For 3d yep, for 2d I guess the box one is the way to go.
Title: Re: Box2D in GLBasic?
Post by: Bluepixel on 2019-Nov-13
@erico
Sadly I havent been able to get Box2D working yet, do you know if there are any other 2d physics engines for GLBasic?
Title: Re: Box2D in GLBasic?
Post by: erico on 2019-Nov-13
I can´t remember any out of my mind.
I guess a person could wrap one into it but it is a lower level complex stuff (I don´t know how to do it).
You can also write your own system in which depending on the nature of the project, may not be much work and all within standard basic.

What do you plan to use it with?
Can you describe how in-project you want it working?
Title: Re: Box2D in GLBasic?
Post by: Bluepixel on 2019-Nov-14
@erico
I will be creating a small physics sandbox with a level editor, for example you can build a small car contraption with boxes, and possibly polyvectors, and make it roll down a hill. Possibly some ragdolls in the game too, maybe not a "too" complex project, but afterwards I can add more gameplay mechanics to make the game more interesting. I think my biggest struggle with making my own physics engine is collision.
Title: Re: Box2D in GLBasic?
Post by: erico on 2019-Nov-15
I see, that is more complex than I thought it would be.
Box 2d is probably a faster solution than creating a system on your own.
Did you make it work?



Title: Re: Box2D in GLBasic?
Post by: Bluepixel on 2019-Nov-15
@erico
sadly not, here is the error message;

Quote
*** Configuration: WIN32 ***
precompiling:
GPC - GLBasic Precompiler V.15.394 SN:1e80bd95 - 3D, NET
"glbox2d.gbas"(35) warning : GPC1001 probably unassigned variable : screenWidth
"glbox2d.gbas"(35) warning : GPC1001 probably unassigned variable : screenHeight
"glbox2d.gbas"(43) warning : GPC1001 probably unassigned variable : mbr
Wordcount:68 commands
compiling:
In file included from C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\sim_box2d.cpp:11:0:
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Dynamics/Contacts/b2PolyContact.cpp: In member function 'virtual void b2PolygonContact::Evaluate(b2ContactListener*)':
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Dynamics/Contacts/b2PolyContact.cpp:53:45: error: 'memcpy' was not declared in this scope
  memcpy(&m0, &m_manifold, sizeof(b2Manifold));
                                             ^
In file included from C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\sim_box2d.cpp:12:0:
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Dynamics/Contacts/b2CircleContact.cpp: In member function 'virtual void b2CircleContact::Evaluate(b2ContactListener*)':
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Dynamics/Contacts/b2CircleContact.cpp:54:45: error: 'memcpy' was not declared in this scope
  memcpy(&m0, &m_manifold, sizeof(b2Manifold));
                                             ^
In file included from C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\sim_box2d.cpp:13:0:
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Dynamics/Contacts/b2PolyAndCircleContact.cpp: In member function 'virtual void b2PolyAndCircleContact::Evaluate(b2ContactListener*)':
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Dynamics/Contacts/b2PolyAndCircleContact.cpp:54:45: error: 'memcpy' was not declared in this scope
  memcpy(&m0, &m_manifold, sizeof(b2Manifold));
                                             ^
In file included from C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\sim_box2d.cpp:25:0:
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Common/b2BlockAllocator.cpp: In constructor 'b2BlockAllocator::b2BlockAllocator()':
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Common/b2BlockAllocator.cpp:63:52: error: 'memset' was not declared in this scope
  memset(m_chunks, 0, m_chunkSpace * sizeof(b2Chunk));
                                                    ^
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Common/b2BlockAllocator.cpp: In member function 'void* b2BlockAllocator::Allocate(int32)':
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Common/b2BlockAllocator.cpp:120:62: error: 'memcpy' was not declared in this scope
    memcpy(m_chunks, oldChunks, m_chunkCount * sizeof(b2Chunk));
                                                              ^
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Common/b2BlockAllocator.cpp:121:79: error: 'memset' was not declared in this scope
    memset(m_chunks + m_chunkCount, 0, b2_chunkArrayIncrement * sizeof(b2Chunk));
                                                                               ^
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Common/b2BlockAllocator.cpp: In member function 'void b2BlockAllocator::Clear()':
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Common/b2BlockAllocator.cpp:202:52: error: 'memset' was not declared in this scope
  memset(m_chunks, 0, m_chunkSpace * sizeof(b2Chunk));
                                                    ^
In file included from C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\sim_box2d.cpp:36:0:
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Collision/b2BroadPhase.cpp: In member function 'uint16 b2BroadPhase::CreateProxy(const b2AABB&, void*)':
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Collision/b2BroadPhase.cpp:260:100: error: 'memmove' was not declared in this scope
   memmove(bounds + upperIndex + 2, bounds + upperIndex, (boundCount - upperIndex) * sizeof(b2Bound));
                                                                                                    ^
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Collision/b2BroadPhase.cpp: In member function 'void b2BroadPhase::DestroyProxy(int32)':
C:\Users\Bluepixel\Desktop\box2dinterfaceinglbasic\box2dtest\Box2D/Source/Collision/b2BroadPhase.cpp:340:104: error: 'memmove' was not declared in this scope
   memmove(bounds + lowerIndex, bounds + lowerIndex + 1, (upperIndex - lowerIndex - 1) * sizeof(b2Bound));
                                                                                                        ^
*** FATAL ERROR - Please post this output in the forum
_______________________________________
*** Finished ***
Elapsed: 13.4 sec. Time: 11:10
Build: 0 succeeded.
*** 1 FAILED ***
Title: Re: Box2D in GLBasic?
Post by: matchy on 2019-Dec-22

Add the file source '.\Projects\Box2D\Box2D.gbas' to '.\Projects\YourApp'!  ;)
Title: Re: Box2D in GLBasic?
Post by: MrPlow on 2019-Dec-22
I was planning to have a look at converting 'Box2D Lite' - in the new year....
Title: Re: Box2D in GLBasic?
Post by: erico on 2019-Dec-23
That would be neat. We sure could use some updates on a few stuff like that.