Friday, December 25, 2009

Progress report

Progress has been not quite as quick as I would like lately,
(darn schoolwork - I'd rather be programming :P)
but I have been making some progress. Doing some work with Houdini for GMOgre, I have created a function that external graphics libraries can use to set a callback that is called on transform of a body. This is useful because supporting graphics libraries can update object positions with all most no overhead as compared to going through GM.

I will unfortunately not be able to hit my target of release this year, but I plan to release a beta for those who have been waiting so long for the new speed/features. It will mostly be for more experienced GMNewton users, because it does not have new documentation/examples yet.

Friday, December 11, 2009

Auto update issue in GMNewton 1

There appears to be an issue with the auto-update code in GMNewton 1. I was unaware of the issue until users brought it to my attention. It never happened to me during all my testing. I will be switching to GMAPI for the GM auto-update interface for GMN2.

Friday, December 4, 2009

GMC Account issues

I tried to change my email associated with my GMC account, and then it sent me an email to validate the new address. Unfortunately when I try to validate it says "This user does not need to be validated" When I try to post or send a message, it of course notifies me that I do not have the permissions to do so and has a link to re-send validation email. So for the time being, no word from me on the GMC :) I contacted a mod and hopefully I can get this worked out

Saturday, November 28, 2009

Add local force & additional graphics compatability mode

Though yet untested, the following functions have been added(Ported from Delfi's code) and are expected to work:

GmnBodyGetPointGlobalVelocity(Body, x, y, z, axis);
GmnBodyGetPointLocalVelocity(Body, x, y, z, axis);
GmnBodyAddPointGlobalForce(Body, x,y,z, xforce,yforce,zforce);
GmnBodyAddPointLocalForce(Body, x,y,z, xforce,yforce,zforce);
GmnBodyGetLocalOmega(Body, axis);

Also, support is confirmed for an additional GM rendering engine.

Wednesday, November 25, 2009

GmnBodyGetForce & GmnBodyGetTorque

Just implemented (2) new functions to get the torque and force applied in last update

Tuesday, November 10, 2009

Not much progress as of late

This week I am needing to put more time into school, particularly because I got almost nothing done last week while I was sick. I will continue to update here as I progress.
For anyone wondering, I do hope to release GMNewton 2 this year. Just a couple bugs to iron out, examples to make, and function descriptions to write.

Saturday, November 7, 2009

Partners In Rhyme sound effects

Sorry - a bit off topic :) is offering some free sounds in return for a link, and I'm not about to turn that down. I've used some of their sounds before and found it to be decent quality. There are some free and some for sale, and would suggest that as one place to look for sounds when you're making that sweet game with GMNewton 2.

Free Sound Effects Download thousands of free sound effects from

Breakable joint cube

A cube constructed from blocks jointed together with hinge joints(Not as good as rigid joints for this purpose, but I don't have those yet). That's 125 jointed boxes total. The breakage is fun :)

Friday, November 6, 2009

GMNewton - finishing off todays pull

Finishing off todays impressive and motivating array of accomplishments, here's #5. A simple but useful function, GmnCustomJointSetCollisionState to enable/disable collision between objects jointed with a custom joint.

Convex Hull generation "Tolerance"

GmnCreateConvexHull now has a tolerance argument that allows a less-accurate convex hull to be generated to improve performance.

Ultimate 3D support complete

Ultimate 3d support is now finished :D Thanks so much for your help, Dr. Best
Making GMNewton 2.0 work with Ultimate 3d is as simple as
and, in some circumstances, setting the correct auto-update callback script

As far as is planned, this support is for visual affect only, and operations such as GmnBodyAddTorque still take input in the original format.

Progress is rockin' today!

Hinge limit disable tolerance

One can now set a tolerance for hinge limits that will remove the limits when enough strain is put on them. This allows for, say a leg that gets bent too far forward to snap and rotate freely. Gruesome, I know, but the best example I could think of atm ;)


Breakable hinges DLL-side

Breakable hinges can now be transferred to the workload of the DLL instead of GameMaker for faster speeds. With separate severing strength settings for forces and torque, the possibilities are huge.

Thursday, November 5, 2009

Breakable hinges

Code for breakable hinges is now operational. Currently breaking is handled from within Game Maker, but soon it will be completely handled by the dll.

U3D Support is going to happen

Thanks to Dr. Best, the author of Ultimate 3D, I finally managed to get GMNewton the return rotation values on the form U3D needs! This means simple integration between GMNewton, Game Maker, and Ultimate3D. The next step is to make the necessary changes to GmnBodySetRotation so that it sets the rotation correctly. After this is complete, setting up GMNewton to work with U3D could be as easy as GmnSetU3DCompatible(true);
What a relief this is after all those failed attempts!

As a side note, I am working on breakable hinge joints and it is coming along nicely. There will be a strength setting for each torque and force breaking points.


Tuesday, November 3, 2009

2 bugfixes

Just fixed 2 bugs that were present in GMNewton 1.0

*GmnBodySetRotation - applied rotations in wrong order and negatively

*Collision system - now returns correct bodies

Monday, November 2, 2009

This topic is probably getting old

But since no-one reads it it doesn't matter, right ;)

Dr. Best revealed to me that U3D applies rotations in a different order than I though. No wonder nothing would work! Hopefully my next attempt at U3D support will be successful!

Saturday, October 31, 2009

New clue U3D support

I have another lead on figuring out the rotation extraction for U3D support :)

Hopefully this series of attempts will end soon - I've even went as far as to try brute forcing part of it -LOL- but I think I just need to get my head wrapped around it.

Friday, October 30, 2009

XZY extraction from matrix

Still working on this :) Having trouble getting U3D compatibility in though. Hopefully I'll get this figured out soon.
Also, I'm looking into giving joints a "breakable" attribute.

Tuesday, October 27, 2009

2d buoyancy

Just saw a preview of buoyancy working in 2d. I like Newton Game Dynamics!

Monday, October 26, 2009

Precision buoyancy with user settings

I finally got relieved of my lack of knowledge and was able to finish implementing precise buoyancy with user settings. It worked before, but only with hard coded settings. Now there is the problem of tuning the buoyancy so objects eventually come to rest. I'm not sure exactly how to do this, but maybe I can make it more stable before release.

Monday, October 19, 2009

Ultimate 3D mode under way

Taking a break from calibrating the buoyancy, I am learning the basics of Ultimate 3d. I have been wanting to do this for a while, and now there are enough reasons that I can't put it off any longer :) I am going to do my best with my limited 3d math knowledge and a lot of google and experimenting to make a mode in GMNewton that returns rotations in the format Ultimate 3D uses. So far I have a cube and a ground plane being displayed, which is enough on the graphics end to figure this out.

Sunday, October 18, 2009

300 buoyant objects, 30 fps

That's right - I was watching while my 2.0 Ghz Core 2 duo laptop was simulating 300 buoyant boxes at 30 fps in GM. I was so excited to see that! I'm not completely done with the buoyancy and the buoyant objects take too long to come to rest as of now, but I'm taking a break from that and trying to implement a Ultimate3D compatibility mode. This will take all of the work converting the coordinate systems. I have never used Ultimate 3D, so I am going to have to learn how to use it to add this option. I've been wanting to learn anyway though :) Here's a list of things I need to do before release of GMNewton 2:

95% Buoyancy
10% U3D coordinate system support
90% Convex Hull tolerance feature. Currently always set to 0
0% Fix collision callbacks to detect all collisions
0% Create documentation and examples

Friday, October 16, 2009

Precision buoyancy

Now that I have bounding-box level buoyancy implemented, it won't take long at all to implement precise buoyancy. I am just waiting for an answer on the Newton forums regarding retrieval of userdata for trigger volumes so users can set custom fluid properties.


Finally sorted out my compiling issues(well, enough to work. There has to be a better way...), and I just saw GMNewton buoyancy for the first time. Can't wait to get this feature finished! It's so cool :)

Undefined reference

And now it won't link to the dMatrix class. I wish I was well versed enough in the ways of C++ to solve this! Time to take a break...

Thursday, October 15, 2009

Buoyancy: 85%

I think I have all the C++ code I need done. Now the compiler doesn't feel like outputting the dll after I reinstalled os. AAAAHHH! After I figure that out I'll make the GM scripts and get to test and see if it actually works as expected.

Wednesday, October 14, 2009


Buoyancy is 75% done. Now I just need to decide best way to interface it with GM. Through the material system (probably), or through a custom buoyancy interface?

Tuesday, October 13, 2009

Computer up and running

Alright - I've got my laptop all up and running again! Now when I get a break from school I can move forward on GMNewton buoyancy support :D

Sunday, October 11, 2009


For all of you familiar with Windows, you probably recognize the Blue Screen of Death. Unfortunately that is what I am seeing every time I try and boot into Windows. I also happen to be developing GMNewton on Windows, and this is preventing me from doing that. I was almost done with my homework for the week and was looking forward to some programming time :(

Saturday, October 10, 2009

woot! Solved linker issue

I forgot to add a directory to the linker path and that resulted in buoyancy code creating issues. Now that is fixed and buoyancy will be easier for me to implement. I really should have been doing homework not GMN, but the little break was nice. Now I get to cram to get done on time :)

Thursday, October 8, 2009

Error: Unexpected schooling conflict

Okay... It was expected, but the fact remains. I have started college since the release of GMNewton 1.0, and have had very little time to work on updating it as of late. Hopefully my schedule will even out soon and I will be able to structure some programming time in my day. It's not forgotten though - GMNewton will live on despite the continued efforts of my homework to suffocate it ;)

Friday, October 2, 2009

Continuing on

Hinge-joint limits in place, along with function to add impulse to point on body. Coming up soon is buoyancy and U3D compatibility mode!

Wednesday, September 30, 2009

Joint Limits

As soon as I am enlightened as to how the pivot is represented in a 3d matrix I will have hinge joints with limits working! This will allow for some sweet ragdolls XD

Tuesday, September 29, 2009

Static Lib

Unfortunately I'm having trouble linking to the static lib because I am using a different compiler than NGD was made in. This means we might still have to distribute multiple dlls. I'd like to find a work-around if I can, but that's how it stands now. Good news is that I finished re-wrapping the major changes in Newton 2 and have a compiled version running. It appears to be faster that the old version, something I think everybody will like :) Now I am going to be working on some additional features such as joint limits and trying to figure out buoyancy.

Monday, September 28, 2009

Conversion process

It's moving! I won't have as much time to work on GMNewton after I start school, so I'm really pushing hard while I can. I think the only thing I have to re-wrap yet is the new collision callback system. Newton 2 is faster than 1.53, and I can't wait to see it in some GM games!

Saturday, September 26, 2009

Newton 2.x

I'm working on converting the wrapper to utilize Newton Game Dynamics 2

Friday, September 25, 2009

Great news!

Postality from the GMC is coming alongside to help me out with some aspects of GMNewton. He has already proved to be a great help in making it more user-friendly, and plans on making some examples for it as well. With his help, I hope that GMNewton will become easier for the average user. I'm looking forward to seeing what we come up with!

Hull from Sprite

I completed the functionality to generate a convex hull from a sprite

Wednesday, September 23, 2009

Home and working :)

Alright - I'm back home. Had an excellent trip except for the fact that I forgot my sleeping mat which isn't too good of an idea when you're camping :P Though sleeping was hard, the overall trip was awesome! Anyhow. Back on topic. I have resumed progress on GMNewton. Right now I am working on some macro scripts to make implementing this engine easier. It only takes 6 lines of code to have the 2d sim up and running!
Also, I'm considering releasing the source along with a future release of GMNewton. I have been hesitant to release the source because I don't know how to manage a project with open source, but then I realized I don't have to. I'll just keep working as I am and people can use the source if they want too.
In an upcoming release I plan to upgrade to the newest version of NewtonGameDynamics (2.x). I hear it runs much better. I don't know if this will be the case in GMNewton because of the GM bottleneck, but hopefully it will be faster.
That's all for now!

Wednesday, September 16, 2009


It'll be a couple days before I will have an opportunity to work on GMNewton. I'll resume posting here when I get going again. It won't be too long.

Sunday, September 13, 2009

2d Lock

On request, I created an example on utilizing GMNewton for a 2d game.
It's a gm6 FYI and uses a version of the dll that has not officially been released. The dll will, however, work with any game that uses v1.0.

Apon the brilliant suggestion of dadio and Postality I will be creating some macro scripts to make implimenting GMNewton easier and slicker. Mostly to simplify 2d, but also for 3d as well.

It has also been rightly noted that I provide very little documentation for this project. I hope to create a basic documentation and examples for importaint features. Power isn't useful without knowing how to appropriately use it :P


GMNewton has been in development for some time, so I decided to create a dev blog. Now followers can track progress if I remember to update it ;)
Here are some links to get you started:

Game Maker Community forum topic - Main site for releases to Game Maker users. Contains description and user opinions about GMNewton.

3D Domino Simulator 1.0 - Demo utilizing GMNewton 1.0