Developer postOriginal post (opens in a new tab)

Contraption Maker Alpha 5

Contraption Maker Alpha 5 (version 0.101) is here. This release involved some amazing feats of programming, and has been one of our most complicated updates, but a lot of it wont be able to to really be seen on screen. Kevin has spent the last month converting our physics engine from floating point to integer. This was an absolutely massive change that touched almost every single file in the game. We have done our best to test it internally, but please let us know of any bugs you find in our forum.

So what does this change mean? It means that Contraption Maker will now run exactly the same across all different computers, processors, operating systems, and devices. The game was already fairly consistent, but this fixes some last little problems that weren't going to be fixable. Although it's super cool now that the game will run with exactly the same results on Windows, Mac, iOS, Android, etc. the other awesome feature is copy & paste.

Because of the way floating point physics work, copy & paste was not going to be possible with our old engine. Moving parts away from the origin point of the scene would sometimes cause physics calculations to give different results. This was noticeable especially if you selected a big group of parts and just shifted them a bit to the side, you would sometimes get very different results.

It's important that if you copy a group of parts, they behave exactly the same no matter where you put them in your contraption. With the new integer physics system, this is now possible. You can now select a group of parts and click the "copy to clipboard" button. Then, just right click and select paste somewhere else in your contraption. You aren't even restricted to keeping the group inside of your contraption. You can copy a group of parts, open a new contraption, and paste them there. This opens up some very cool possibilities. People can make cool "components" that are easily repeatable for their own contraptions, or sharable to other people looking for help or inspiration.

This is a very major physics change, and it will cause some of your current contraptions to run a little bit differently. For reference, of the 40 official puzzles we have right now, I had to make some little adjustments to 6 of them. So if you have some uploads out there in the workshop, I would suggest you go take a look at them and see if they are behaving like they should be.

That's all for this update. Like I said, it may not look like much on the surface (even though copy & paste is very cool), but this update was a massive undertaking, and it was better to do it now instead of later. For those of you that really want some "money on the screen," stay tuned for our next update. New art and new puzzles are coming! Also, I cannot promise any sort of timeline or deadline, but I will put this image up for those of you still wondering about a Linux version :-)

Major Fixes

  • Physics engine has been converted from float to int
  • Groups of parts can be cloned with right click
  • Groups of parts can be copied to the clipboard and pasted elsewhere (even in a new contraption)
  • Adjusted electrical cords so they don't jump between outlets when more than one part are moved at the same time
  • Clicking the part help or goal buttons will now open and close windows instead of having to click the ‘X’ every time
  • Delete fully connected ropes and belts in a group so that ropes no longer have to be deleted twice
  • Fixed bug where attached ropes and belts were not deleted when the parent part was dragged out of a puzzle, causing the rope to become un-deletable
  • Fixed a memory leak on PC version
  • Massive performance increase on Mac version

All Bug Fixes

  • Added location goal to Milton Mouse
  • Initialized the electrical cord plug after cloning
  • Changed methodology of how auto plugin of electrical cords work.
  • Make sure cloned part ids are always sorted.
  • Fixed segment to segment collision check to fix laser being blocked by nothing. A side benefit is the code will be slightly faster. Laser beams are very long so they were more likely to have overflow problems.
  • Bellows wind force is no longer 65536 times too high
  • Allowed Fishbowl to be flipped
  • Explosion now affects Tim correctly
  • Adjusted trigger angles on Steam Whistle so it is activated correctly
  • Fixed overflow when calculating offset to explosion on wall
  • Fixed max heat value for bomb's fuse
  • Made sharp point of pin slightly larger
  • Added profiling to lots of places.
  • Ensure identical temporary part ids across clients    
  • Reset temporary object ids
  • Prevent clones from overlapping.
  • Fixed part removal so it always occurs on the same frame that the mShouldRemove flag is set. Before it could be delayed to a later frame if a larger delta time was passed into level update.
  • Fix memory leak in line batch sprite
  • Sin, Cos, and Exp routines that return same values on Windows and Mac.
  • Fixed crash when cloning from an older level    
  • Do not allow cloning when there are overlapping parts
  • Removed the rounding values from the fixed point routines.
  • Fix for belts / ropes not disconnecting
  • Sort parts to clone before cloning so they go up by part number.
  • Fixed Rotary Limit constraint value on Jack-in-the-Box
  • Fixed Dynamic Rope Segments to correctly handle larger values
  • Fixed Laser Beams to not overflow when calculating start and end points
  • Fixed quite a few sin/cos calculations in CMPart.cpp that were causing overflows
  • Fixed impulse and damping on Bottle Rockets, Rockets, and Missiles
  • Fixed calculation of location of Water Drop created by Dripping Bucket
  • Fixed Lawn Mower Motor's handle's rope attachment location to get rid of divide by zero error
  • Fixed CCDrawNode to use correct shader
  • Fixed trampoline missing message
  • Delete zone in puzzle mode includes being outside the window
  • Fixed belt attachment rotation speeds to work with new integer delta time values
  • Fixed bugs in a few places where integers were being treated as floats or floats were treated as ints. This cause some calculations to be off by 65536 times too large or to incorrectly round to zero
  • Fixed Waldo's vision so it is slightly larger (works better)
  • Fixed an overflow condition in Damped Rotary Spring that was causing very stiff spring-loaded trapdoors to vibrate instead of coming to rest.
  • Fix rogue goals causing puzzle completion bug
  • Fixed animation bug where the first frame can get out of sync.
  • Do not play an animation with one frame.
  • Fixed various overflow type bugs
  • Make group cloning work in multiplayer.
  • Prevent unlocked parts with goals from triggering completion.
  • Fixed rectangle borders on the trapdoors
  • Fixed explosions to not overflow by using larger impulse ranges
  • Fixed speed imparted to Water Drops leaving Dripping Bucket
  • Fixed collision verts of broken Fishbowl (they were still in old smaller float range)
  • Fixed force imparted by Pinball Bumper
  • Fixed bitmaps so they scale correctly in Punching Fist and Spring Trap Door
  • Fixed processExplosion in Wall so that the correct segments are destroyed by explosions
  • Fix for puzzle goals not all being checked if one has a timer.
  • More fixed point defines and macros
  • New square root functions that return an int
  • Added an approximate distance routine
  • Changes to Dynamic Rope to be more efficient
  • Adjust Dynamic Rope Segments to run either floating point or int64 versions

Header Contraption is "Ridiculously Complicated Mousetrap" by J3lly