Bullet Collision Detection – Introduction – 3D Games in GameMaker Studio 2

Copy Help
  • Public/Private: Change the visibility of this video on your My Videos tab
  • Save/Unsave: Save/Unsave this video to/from your Saved Videos tab
  • Copy: Copy this video link to your system clipboard
  • Email: Copy this video link to your default email application
  • Remove: Remove this video from your My Videos or Saved Videos tab
search-icon
Watch at: 00:00 / 00:00:20okay fine yes I know 3d collisions ingame maker studio 2 I've put this offfor like a month and a half and I'mfinally gonna I'm finally gonna startmaking videos on it okay hello well youcrazy people out there my name isMichael there was a dragon and welcometo 3d collisions and a major studio twopeople have been asking me for this fora long time I've been procrastinating itWatch at: 00:20 / 00:40for a long time but here we finally areso I'm going to do a bit of a longintroduction to this before I actuallyget into code if you don't care aboutany of that and you just want to see thecode go to whatever the time on thescreen right now says otherwise there'ssome stuff that bears mentioning firstso game maker as you probably know ifWatch at: 00:40 / 01:00you've been asking for this does nothave a built in system for 3d collisionsit has a very good system a built insystem for 2d collisions and in somesituations depending on your designconstraints you can use that for 3d mostof the time when people ask for 3dcollisions that's not what they'retalking about that's not what I'm goingto be talking about in this videoleveraging the built in 2d system toWatch at: 01:00 / 01:20work with 3d is something that you cando but in almost all cases if you wantany degree of granularity that's notreally going to work super well whichleaves a couple options one is that youcan try and implement your own 3dcollision system in native GML and thatis something that I am NOT going to bedoing here although a couple people haveWatch at: 01:20 / 01:40expressed interest so I'm probably goingto try and put something functionaltogether for that in the future at leastif you don't want to do that and if youdon't I can't say I blame youyou're going to want to find a systemthat somebody else has already made andthere are a couple answers out there oneyou may have heard of is p 3d c precise3d collisions which is a 3d collisionWatch at: 01:40 / 02:00system for game maker I believe gamemaker 7 which goes back about I want tosay 11 years now and a long time ago Imade some videos on that and the systemdoes indeed still work in game makerstudio 2 you can use it it's an externalDLL if you don't already know aboutthose I'll explain the implications ofWatch at: 02:00 / 02:20that in a minuteunfortunately I would not recommendusing it for one it's very limited inwhat it does you can do triangletriangle intersection you can do modelmodel intersection you can do ray castsagainst various things Fafter that it starts to become a messfor another thing it's very very slowwhat it does in a nutshell is it checksevery single triangle to see if it'sWatch at: 02:20 / 02:40cooked intersecting with every singleother triangle and if you think that isnot going to scale well in a world witha lot of objects in it you would becorrecthey for simple purposes it's good enoughbut I can't honestly recommend using itfor anything anything more than a smallproject another solution that you mayhave heard of is if I can if I can dragWatch at: 02:40 / 03:00a browser tab on to this window thisthing called SMF and SMF is a systemused for um let's see if I can find thegame maker thread here we goSMF is essentially an entire 3d gameWatch at: 03:00 / 03:20making system for game maker studio it'stempting to say it's plug-and-play butit really isn't because you do actuallyhave to do a lot of work to get itworking it's just work in differentareas than what I've been dealing within this tutorial series but one of thethings that does contain in addition toskeletal animation and inversekinematics because the heavy-metalWatch at: 03:20 / 03:40Viking dentist scenes are Larson is justinsane is 3d collisions if you'reinterested in some of these other thingsthis may be worth having a look at I dowant to make videos on this whole thingat some point in the future because it'sfascinating but unfortunately I've gotenough on my plate right now as it is Iwill have a link to it in the videodescription the solution that I'm goingWatch at: 03:40 / 04:00to be going with in this video right nowis another 3d collision system which isthe not very helpfully named 3dcollision detection DLL so this is thisis a wrapper for something called bulletbullet is a open source 3d collisionslash physics system it wasn't writtenWatch at: 04:00 / 04:20for game maker it was written for justgeneral purpose game development you canuse in other things if you were to makeyour own game engine you might want tohave a look at it it's free and opensource if you're using libgdx and you'veused 3d collisions and libgdx you haveused it it's been using some otherthings but a couple of years ago thisuser on the old game maker forums calledvenomous has um has traded a wrapper dllWatch at: 04:20 / 04:40for it to make it work in game at yourstudio andit's very good however because it is aDLL instead of native GML that does meana few things namely it means that thisis only going to work on Windowsplatforms if you want to work on yourgame for Mac or Linux or some kind ofWatch at: 04:40 / 05:00mobile device it's not going to workdll's our compiled code for um forWindows only another problem here isthat you can see I am viewing thisthread on the wayback machine theInternet Archive for those of you whodon't know the wayback machine is justit periodically snapshots pages on theinternet and archives them this threadWatch at: 05:00 / 05:20no longer exists the old game makerforum is no longer exists they have beenreplaced by the new game maker forumsseveral years ago now if you try toscroll down and look at the downloadthis doesn't go anywherethe download has not been archived and Ibelieve even before the the old forumswere taken down whoever was hosting thefiles decided to remove them so thatmakes accessing the files a little bitWatch at: 05:20 / 05:40of a challenge fortunately I have thefiles and I will be rehearsing them partof the reason that I didn't make thisvideo years ago was because I didn'tfeel great about doing that but at theend of the day this is a really goodsystem and I don't want it to be lost totime I have not been able to findanything about the user here maeda Ihave not been able to find out anythingabout venemous after the the old gameWatch at: 05:40 / 06:00maker forums were shuttered I would haveliked to have been able to get incontact with him/her however and asksome questions about the inner workingsof it but I have not been able to dothat if venomous or anybody who knowsvenomous has is watching this videodefinitely let me know and I will try toget in contact again so with all thatWatch at: 06:00 / 06:20said how do I get the files if you go tothe if you go into the video descriptionand will have it linked to a github pagefor this project and if you go to thereleases tab on that github page there'sgoing to be one release and it's goingto contain a YY MP file which is a gamemaker archive if you download that andWatch at: 06:20 / 06:40then go into your project go to tools atthe top of the at the menu bar at thetop of the screen import local packageand if you go to wherever you downloadedit to your venomous YY MP select that itwill ask you what you want to importinto your project there are a collectionof scriptsWatch at: 06:40 / 07:00which you can add and there are acollection of included files which youcan add I would just add all import theminto your current project and we can beon our wayso collisions underscore example that'sgmz the included file this is noncritical this is the original demoproject that was the venomous made to goWatch at: 07:00 / 07:20with the DLL I personally find it usefulif you want to extract it import it andmess around that this was for game makerstudio 1 but you how this was for gamemaker studio 1 but you can import itinto 2 and it will still work with withminimal changes you can mess with it ifyou want I'm just going to delete itfrom this project so that it's notsitting there taking up space the otherWatch at: 07:20 / 07:40files that were imported is collisionsDML DLL which is also an included fileand a collection of scripts calledvenomous bullet collision and there's abunch of them you can look through themto see to see a preview of what's tocome I'm going to be talking about mostif not all of those things in due timeso to get started go to wherever yourWatch at: 07:40 / 08:00your 3d Ness is initialized and I'mgoing for me that's the camera for youit may be a world or a game manager orsomething object this project isprobably getting to the point or Ishould separate stuff out and organizeit a little bit better but I've alreadyput off making this video for longenough and I don't want to put it offeven further see I'm just scored in a isWatch at: 08:00 / 08:20what we're going to start off with andall this is going to do is initializethe dol as you can see in game maker forthose of you who don't know DLL isdynamically linked libraries are as Isaid before compiled binary files thatinstead of launching a program containWatch at: 08:20 / 08:40code that can be referenced by otherprograms for us that means the DLLcontains a bunch of functions related to3d collisions and here is where weinitialize them with the externaldefined function if this all looks likemumbo-jumbo to you that's ok don't worryabout it we don't need to touch it thesecond thing that we need to do is CWatch at: 08:40 / 09:00underscore world create and this isgoing to initialize a collision worldand this is exactly what it sounds likeworlds are the space which collisionobjects exist in and where collisionscan happenfor the most part you just need tocreate a collision world at thebeginning and you're good from there ifyou want to you can see world you canWatch at: 09:00 / 09:20see world destroy if you want to resetthe collision world see world exists issomething that you can check if you wantto see if at a collision world iscurrently existing the next thing thatwe need to talk about is the concept ofthe concept of collision shapes andobjects and before I get ahead of myselfWatch at: 09:20 / 09:40if I if I run the game this is almostwhat I was showing off at the beginningthere is there is no collisioninformation this is just a collection ofred cubes and violet octagons as you cansee at the bottom here I'm loading inthe cube in the octagon those areincluded files cube ducky 3d octagon 3dWatch at: 09:40 / 10:00and they are just being drawn in the inthe draw event right here now moving onI'm just going to create a line usingslashes so that we can quickly identifythe section of code that is a collisionstuff shapes and objects I've alreadymentioned a collision world containscollision objects and the informationWatch at: 10:00 / 10:20that determines how collisions aredetected is stored in shapes and eachcollision object has an Associatedcollision shape to use another gamedevmetaphor you can think of the shapes asthe templates and the objects as theinstances the shapes would be the theclasses the game maker objects which yousee in the resource tree and the objectsWatch at: 10:20 / 10:40would be the the instances of those okaythis is confusing verbiage anyway thepoint of all this is that you can haveone single collision shape and multipleobjects can be represented by it so ifyou have something like a barrel or arock instead of duplicating theinformation for the shapes of thoseobjects which could potentially beWatch at: 10:40 / 11:00fairly large 3d meshes you only needthat information to be loaded once andall of the many many instances ofbarrels and rocks in the world can justreference it so now because code isprobably what you're all here for let'sactually start writing code I'm going tostart with them let's start with thecubes so I can say C shape cube is goingWatch at: 11:00 / 11:20to be C shape create so we're going tobe creating a collision shape andstoring a reference to it in thisvariable and are a few things that youcan do to to define a shape there are afew built in primitive shapes you cansay C shape add and then you have boxesWatch at: 11:20 / 11:40capsules cone cylinders planes spheresand triangles are not what we're lookingfor that's something elseboxes capsules cones cylinders planesand spheres and if you've if you've usedthe the old game maker d3d functions orif you've used P 3dc you may be familiarwith uh with a couple primitive shapesthose were different and that all theyWatch at: 11:40 / 12:00did is create a triangle mesh in theshape of a box or cylinder or cone orone of those things they have a littlebit a degree of precision and if youwere to try and detect collisions withone of them it would boil down tochecking every single triangle in thegenerated mesh to see if there was acollision which as I've said before isslowWatch at: 12:00 / 12:20these are mathematically defined shapesI'm considering making a video in thefuture talking about just thosespecifically later on but since I wantto I want to not spend forever on thisvideo I'm going to instead of using oneof those shapes C shape begin try meshafter that we're going to just load a myWatch at: 12:20 / 12:40left on the file and that's going to beC shape load try mesh the cube is whatcube dot d 3d so we are going to beloading that file and then at the end Cshape and try mesh and this always felta little bit like defining a vertexWatch at: 12:40 / 13:00format to me for some reason althoughinstead of saying C shape cube equals Cshape and tri mesh like you would for avertex format you instead pass it to theU and sub pass it to the function as aparameter C shaped cube and that willtake the model information that wasloaded from the 3d model file in theWatch at: 13:00 / 13:20form of a triangle mesh and add it tothe collision shape if you want to addyour if you want to add trianglesmanually you can use the C shape addtriangle function that I mentionedquickly a minute ago and then ran awayfrom screaming you can use this toWatch at: 13:20 / 13:40manuallytriangles so that's it for the collisionshape next we need an object so objectsare going to be similar see object cubeactually I'm gonna call it see obj cubebecause I can get away with not spellingthe whole board out every time becausethat's gonna just be excessive typingand this is going to be C object.createWatch at: 13:40 / 14:00and it's going to take a few parametersone being C shape cube another being thegroup which I'm going to make negativeone for now and another being the maskwhich I'm going to make positive one fornow in my opinion the collision groupand the collision mask is where the realfun starts but I'm not going to talkWatch at: 14:00 / 14:20about that right now that's a lot ofbitwise arithmetic that I am I don'twant to bog this video down with you usethat for filtering collisions which isreal exciting I think but again let'sstay focused here so the next thing youneed to do is add the object to thecollision world so we've we'veinstantiated an object it usesWatch at: 14:20 / 14:40information about a shape you can saysee Oh BJ no that's not what I wasthat's not the right thing but I'msupposed to be typing SeaWorld addobject and we can say see obj cube andthat's just going to add the collisionobject to the collision world so theWatch at: 14:40 / 15:00collision object has been added to theworld but as of right now it's just umit's just sitting there at the originthe cube that I'm drawing is the keythat I'm going to be dealing with ratheris going to be at four hundred twohundred zero and the object that I justadded since I haven't moved it anywhereit's going to be sitting there at 0 0 0so we can transform it we can say CWatch at: 15:00 / 15:20transform position Co bjq no not what Iwanted what was it four hundred 200 zerookay for 100 200 zero these other shapesthese other these other things that I'mdrawing that I want to collide with I'mWatch at: 15:20 / 15:40going to deal with in a minute but firstI want to just get it working with 1 400200 m 0 that doesn't do anything on itsown so to make it take effect see objectapplyI transform see object apply transformWatch at: 15:40 / 16:00is analogous to setting the matrix whenyou're drawing stuff setting the worldmatrix that's analogous to this lineexcept it's a little bit more similar tothe the old d 3d transform functions andC transform identity does exactly whatmatrix build identity does it resets theWatch at: 16:00 / 16:19transform so anything that you um anytransforms you try to do on objects inthe future will be uh they'll bestarting from scratch okay so there isnow there is now a collision object inthe world and it's not the correctposition however if I run the game nowwhat is that what is 400 200 that's thisone right the one in the middle if I runWatch at: 16:19 / 16:40the game now I can still run throughthis and in fact just to make sure thatI'm not like putting it in there onposition I can run through all of themand there is no automatic collisiondetection as you can probably imagine ifI were to go to the player and if I wereto go to the player step and if I wereto look down here there is nothingWatch at: 16:40 / 17:00nothing telling me to stop if I hitsomething so it's time to start workingon that the player also needs collisioninformation so we will do the same Cshape for the player is going to be Cshape create however instead of insteadof doing something similar to what I wasdoing here and perhaps loading theWatch at: 17:00 / 17:20player information from the file if Iwere to do this this would not detectcollisions with anything this can behugely confusing this comes down to partof how the bullet collision library wasdesigned so I should mention the bulletcollision library is insanely fastcompared to P 3 DC it will scale muchbetter for a world with lot largeWatch at: 17:20 / 17:40numbers of objects in it and there werea couple of reasons for thatone is that it doesn't simply loopthrough every triangle in the world tosee if there was a collision itinternally uses a thing called an octreewhich is a structure that you may wantto think of as a 3d binary partition andit uses that so that it only has tocheck for collisions with things thatare nearby the objects that you'reWatch at: 17:40 / 18:00checking and the other reasons that it'sso fast is that it simply will not do atriangle triangle intersection Imentioned before that it youmathematical shapes boxes capsules Coonsetc and the reason for that is thatthere are known equations that you canuse to check things like spheres andcapsules against against a collisionWatch at: 18:00 / 18:20world that are much faster than justchecking every single triangle trianglemeshes are great for static levelgeometry trees rocks buildings anythingthat doesn't move anything like thatI believe there's actually a note aboutthat and in one of the documentationcomments but for things that are movingaround like animals are at the playerWatch at: 18:20 / 18:40NPCs you will want to use one of theseone of these basic shapes you can use acapsule which is the pill shape I'mgoing to use I think I'm just going touse a spear for now so the sphere thatwe're going to be the shape that we'regoing to be adding to the sphere torather it's going to be shape and theWatch at: 18:40 / 19:00radius is I believe the radius of theplayer is 16 let me goreal quick open up the model playerducky 3d why did Windows Explorer justcompletely refresh on me and the playeris has a radius of 16 okay a capsuleWatch at: 19:00 / 19:20would be more would be a more correctapproximation of the shape but I'm justgonna go with a sphere for now and thenjust as before see object equals seeobject create I'm going to be taking theshape the group is going to be negative1 and the mask is going to be 1 againWatch at: 19:20 / 19:40don't worry about that for right nowalso and I can't believe I didn'tmention this before just like many otherstructures in game maker you probablywill want to destroy these shapes ifyou've ever done using them for exampleif the object that they represent hasbeen destroyed you probably want to putin the destroy event something like Cshape destroy C object destroy if theWatch at: 19:40 / 20:00object is currently in the collisionworld you will want to either set Cobject now C world remove object or Cworld destroy object C world removeobjects simply removes the object fromWatch at: 20:00 / 20:20the collision world sothat doesn't trigger any collisionslater on down the line and seaworlddestroy object will do the same thingand and also destroy it if you try anddestroy an object while it's still inthe collision world or if you try anddestroy the shape while it's still inthe collision world the game is liableto crash and the error message that youget since it's coming from inside theWatch at: 20:20 / 20:40DLL is probably not going to be superhelpful so always remember to onlydestroy objects that are not part of thecollision world and only destroy shapesthat are not being currently being usedby objects in the collision world okaywhere was I so I'm going to go into theWatch at: 20:40 / 21:00I'm going to go into the step eventwhere movement happens and this is goingto be a lot of movement code which youhave seen before so instead of justsaying X plus equals minus equals thedirection that you're moving in I'mgoing to create a temporary variable I'mWatch at: 21:00 / 21:20going to call them DX dy all right thatis not intended to look like calculusbut I'm just I'm using that to to denotelike a difference in x positiondifference in Y position which now thatI say it like that that does sound likecalculus so instead of instead of movingimmediately when you press a key we'regoing to we're going to look atWatch at: 21:20 / 21:40potential movement and store it in avariable and then we're going to dosomething much like what you wouldprobably do if you were doing collisionsin a regular 2d game maker exceptinstead of using one of the built-incollision whatever functions we aregoing to be checking for see overlapposition and we are going to be checkingWatch at: 21:40 / 22:00to see if we're going to be checking tosee if we can move to a to a positionthe object is going to be see underscoreobject the position that we're lookingat is going to X plus the X and theposition that we're looking at on the yWatch at: 22:00 / 22:20axis y plus dy and then we're going toI'm going to look that there is nooverlap in the position that we want tomove to and if there isn'tx+ equals DX y plus equals dy good am IWatch at: 22:20 / 22:40missing a an argument I'm missing anargument that is a z position we are notworried about Z right now we are notmoving up or down let's just a for thesake of completeness let's just pass inthe Z coordinate though okay I am unableto move and that is because IWatch at: 22:40 / 23:00accidentally deleted an exclamation markthereI love how every single time I run thegame there's like one typo that justmakes the whole thing really awkwardokay so I can I can run through this Ican run through this thing here and Ican run through this purple thing herebut I cannot run through this howeverWatch at: 23:00 / 23:20I'm slightly stuck if I can't like slideagainst the wall or anything like thatwhich is bit inconvenient so again wecan go back to our old te collisiontricks and check each of the each of theWatch at: 23:20 / 23:40directions separately oopsfirst we can check if there's anythingcolliding in the x-direction and then wecan check here there's anythingcolliding in the y-direction and thiswill cause us to slide against the slideagainst the box instead of instead ofour getting stuck on it and you can seeyou could sort of see a here so this isWatch at: 23:40 / 24:00the age-old corner collision problemSean Spaulding did a video many yearsago where he dissected that problem andexplained potential fixes to it hey I'mnot going to get into that right nowthere is also the minor issue where thiswill in some situations not align youperfectly flush against the wall like ifWatch at: 24:00 / 24:20you're if you're DX for example is let'ssay four units but there is a wall threeunits away this will say hey knowthere's a collision there four unitsaway but it won't get you it won't letyou get it won't let you get any closerand 2d movement the solution to this isto like do this in a loop where youcheck where you check in incrementsWatch at: 24:20 / 24:40until you're you're up against the wallbut that's not really a good solutionhere not so much that it's umnot so much that collision check me isexpensive because like I said bulletdoes have a number of optimizations thatmakes checking collisions quite fast butbecause if you're moving if you havefree movement here if you're movingbased on sine and cosine of the angleWatch at: 24:40 / 25:00that the camera is DX and dy are goingto be irrational floating-point numbersthey're probably going to be somethinglike one point four one whatever thesquare root of two is and you can checkin as many as small increments as youwant but you'll never be able to getperfectly aligned with something thereare other solutions to perfectWatch at: 25:00 / 25:20collisions like that I'm not going to betalking about them here if you want tolook ahead a little bit look intocollision sweeps and the collision ratecasts and that will help you get a lotcloser but anyway as far as as far ashello world collision detection goes weare we are getting there I'm going toWatch at: 25:20 / 25:40create another collision cube let's callthat cube to just to tell them apartthese variables aren't used for anythingoutside of this but I believe that theother one was that 300 300 but I do wantto I do want to keep them separatebecause they are separate collisionobjects and there is a octagon at 600Watch at: 25:40 / 26:00200 so let's create the Octagoncollision shape like that and let uscreate an object to represent theWatch at: 26:00 / 26:20Octagon and move it to 600 and 600 sothis is collision detecting I have notokay yes that's supposed to say shapeagain goofy little typos causing theWatch at: 26:20 / 26:40whole thing to not work when I run thegame so I can now I can now slide acrossthis box that's pretty nice that is thatis not correct am i loading the shapewrong oh it's 600 200 not 600 600 ha Iwas gonna say is uh like am I am iWatch at: 26:40 / 27:00spelling your variable name wrong dosomething but nope it's just in thewrong place so now I can get stuck onthe octagon the collision is less lessfine than it was on the smooth squaresyou can see I slide across this musicsquares when I'm not jamming myselfagainst a corner but I only do that atcertain angles from the octagon which isWatch at: 27:00 / 27:20another problem with 3d collisions thatI'll probably talk about at some pointbut there you have it that took how longhow long have I been sitting here I'vebeen sitting here talking to thecomputer for almost 50 minutes and I amNOT looking forward to editing thisvideo okay as I'd mentioned there are alot of other things I want to talk aboutwith this eventually there are a lot ofother things that you can do with thisWatch at: 27:20 / 27:40collision system raycast sweeps othershapes I want to talk about how are theother shapes work because they do havetheir uses masking I really like maskinguser IDs so that you can attachGameMaker instances to the collisionobjects and know exactly what your whatyour what your colliding with but that'sa story for another day my voice isWatch at: 27:40 / 28:00getting sore my name is Michael that wasa dragon if you want uh if you want thatcode or just the um or just thecollision DLL and scripts that go withit they're linked in the videodescription what else was I going to saythere's also a separate branch I made aseparate branch for this project for thebase project without all of the stuffthat I've added if you want to um if youwant to get started from thereWatch at: 28:00 / 28:20with just the the cubes and the octagonswith neurology and information what elseis there I've recently made a patreonfor these videos if you want tocontribute towards me making themthere's a link to thatas well otherwise I'm going to be uh I'mgoing to try and make at least one ortwo of these videos a week I talk aboutboth 3d things and other things that'sit have fun with uh have fun with doingWatch at: 28:20 / 28:40collisions and I will see you all laterspeaking of the patreon or the way shoutout to Zenith in particular forsupporting these videos if you want yourname in the credits and the chance thatme hilariously mispronouncing your nameout loud click the link join the fun Ineed to work on my sales pitch

About The Author

You Might Be Interested In

Other videos in this game title

Comment (0)

  1. If using a DLL doesn't work for you, don't worry, I'm going to make videos on other collision solutions as well! I'm going to cover the Bullet DLL first since I'm most familiar with using it, though.
    edit: this is taking a very long time.
    edit 2: it'll happen before the end of 2021, I promise

  2. really good video, looking forward to the next one even if i don't do gamedev anymore
    for the wall sliding problem, you gotta do some funky stuff with normals and cross products, right? to find the angle at which to slide?

  3. Finally. Now I can binge all of the tutorials and make a full game XD

    (I have an interesting idea already, and I think one in the style of Imscared, one also made in gamemaker, would work best)

  4. Something I really want to try at some point is to make non-euclidean space in gamemaker. Usually portals are simply done by having a secondary camera that is in the same position and angle as the player, relative to the other end of the portal. It would be easy enough to make the camera render to a surface, but making the portal would require a type of shader that cuts out everything that isn't within the view of the second camera's portal, which would be difficult. I've done it in Unity (sort of), but I doubt the shaders would be compatible in any way at all.

  5. Sorry if this is a dumb suggestion but, could you theoretically use the open-sourced PhysX dll? They do provide multi-platform builds besides .dll, although I figure you would be limited by the external_define function. I actually wasn't aware of the drama over how Nvidea handled PhysX with AMD cards but, anti-consumer practices aside, it seems like an alternative worth exploring.

  6. Venomous actually worked with me and another GMC user on an open source 3D extension for Game Maker studio 1.4 a few years ago. He ported his DLL to that engine and also included a bunch of Physics related stuff like hinges and constraints. You can find it included in the code here: https://github.com/TheStolenBattenberg/MAEngine … I did separate out his Bullet stuff into another DLL but unfortunately that was lost to the old GMC forums too… TL:DR venomous was a cool dude, and I'm sure he'd be really happy his work is still being used to this day

  7. So my player character starts out looking straight up and I can't figure out why. It has always done this, even before I started tinkering with everything in an attempt to fix it.

  8. All these tutorials are great and it is good to know how to code stuff like this, but…there are 3d engines out there that do this a lot better using physics and I wouldn't like to code that.

LEAVE YOUR COMMENT

Your email address will not be published. Required fields are marked *