/The-Powder-Toy

Written in C and using SDL, The Powder Toy is a desktop version of the classic 'falling sand' physics sandbox, it simulates air pressure and velocity as well as heat.

Primary LanguageCGNU General Public License v3.0GPL-3.0

The Powder Toy - October 2011

Get latest version here:  http://powdertoy.co.uk/Download.html


To use online features such as saving, you need to register at: http://powdertoy.co.uk/Register.html


Thanks:

---------------------------------------------------------------------------

Stanislaw K Skowronek - Designed the original
Simon Robertshaw
Skresanov Savely
cracker64
Bryan Hoyle
Nathan Cousins
jacksonmj
Lieuwe Mosch
Anthony Boot
Matthew Miller

Instructions:

---------------------------------------------------------------------------

Click on the elements with the mouse and draw in the field, like in MS Paint. The rest of the game is learning what happens next.



Controls:

---------------------------------------------------------------------------

Caps Lock 	Specific Element Erase
Insert 	Replace mode
TAB 		Switch between circle/square/triangle brush
Space 	Pause
Q 		Quit
Esc 		Quit
Z 		Zoom
S 		Save stamp (+ Ctrl when STK2 is out)
L 		Load last saved stamp
K 		Stamp library
C 		Cycle view mode
1-9 		Set view mode
P 		Save screenshot to .ppm
F 		Pause and go to next frame
G 		Grid
H 		Show/Hide HUD
Ctrl + H	Show intro text
F1		Show intro text
D 		Debug mode (+ Shift when STK2 is out)
I 		Invert Pressure and Velocity map
T 		Vine mode
W 		Toggle gravity modes (+ Ctrl when STK2 is out)
Y		Toggle air modes
R 		Reset LIFE generation
N		"Sand effect" for drawing powders
B		Decoration editor
Ctrl + B	Toggle decorations on/off
U		Toggle ambient heat on/off
M		switch left and right selected elements
N		Toggle pretty powders
Ctrl + I	Install powder toy for loading saves/stamps by double clicking
~ 		Console
= 		Reset pressure and velocity map
[ 		Decrease brush size
] 		Increase brush size
Alt + [	Decrease brush size by 1
Alt + ]	Increase brush size by 1

Ctrl + C/V/X 			Copy/Paste/Cut
Ctrl + Z 				Undo
Ctrl + Cursor drag 		Rectangle
Shift + Cursor drag 		Line
MMB / Alt + LMB click 	Sample element
Mouse scroll 			Change brush size
Ctrl + Mouse scroll 		Change vertical brush size
Shift + Mouse scroll 		Change horizontal brush size
Shift + Ctrl + R 		Horizontal mirror for selected area
Ctrl + R 				Rotate selected area counterclockwise
Ctrl + Left Alt			Select element for Specific Element erase
Ctrl + = 				Reset Electricity


Command Line:

---------------------------------------------------------------------------

scale:1 - Normal window resolution
scale:2 - Doubled window resolution
kiosk -   Fullscreen mode
proxy:<server>:<port> (ie, proxy:wwwcache.lancs.ac.uk:8080)
open <file> - Opens the file as a stamp or game save
ddir <directory> - Directory used for saving stamps and preferences
nohud - disables the hud
sound - enable sound to be played from console
scripts - enable scripts to be run from old console

History:

---------------------------------------------------------------------------
* Version 74.1
      o Icon for Force Elements
	  o Allow DEST to be used with clone elements.
* Version 74.0
      o Fixes for Triangle brush and minor electron bug
      o Debug lines for WiFi, Portal and Soap
      o Fusion for H2 at high temperature+high pressure
      o Ambient heat and Newtonian Gravity in Quick Options menu.
      o Smudge tool
      o Speed improvements for particle drawing
* Version 73.0
      o New elements: FRAY - Similar to ARAY but applies force, RPEL - Attract and repel particles
      o DEUT can be compressed by gravitational fields
      o Fix for "bumpy" streams of photons coming from PCLN
      o Lua methods for writing and reading the bmap and emap
* Version 72.0
      o More consistent spark speed (possibly affects existing circuits)
      o BRAY fire speed (Only shoots once per spark)
      o DLAY blocked by INSL
      o WIFI will always take one frame to transmit SPRK
      o Ambient heat blocked by walls.
*  Version 71.3
      o OPS format fixes
      o Figh drawn correctly in stamps
* Version 71.2
      o Enable use of caching server to improve performance or thumbnail retrieval
* Version 71.1
      o Fixes to OPS format
      o Fix issue where LRBD/RBDM isn't ignited by WATR
      o Fix crash on rotating a stamp with walls as wide as the window
      o Fix Invisible photons
      o Fix bug where WARP+SING destroys DMND
      o Fix issue where Lua can't create photons in glass
* Version 71.0
      o Update can_move, recount menu items, and clear graphics cache when tpt.el is changed
      o Fix creation of invalid sign walls
      o Added OPS format, disabled and not used
* Version 70.1
      o Support element names and hex constants in PROP tool
      o Fix TNT bug
      o Fix crash in clear_sim if gravity is not initialized
* Version 70.0
      o New element: ignition cord
      o Stickmen and fighter fixes
      o Fixed WIRE graphics
      o New elements: ACEL and DCEL, accelerate nearby photons
*  Version 69.1
      o New Lua API features, ability to edit particle properties from tpt.el... array, particles are exposed as an array now
*  Version 69.0
      o New element: TNT
      o Bug fix for LCRY and ELEC
      o Restore old LCRY/DECO rendering
      o Fix display modes on number hotkeys not saving correctly
*  Version 68.7
      o Additions to Lua API:
              o tpt.el: Table of element types, tpt.el.none = 0, tpt.el.dust = 1, etc.
              o tpt.version: Table of version info, tpt.el.major, minor, build
              o int tpt.element(string name): returns numeric ID of given element name, tpt.element("WATR") = tpt.el.watr
              o tpt.element_func(function func, int element, [boolean replace]) : Sets the update function for a specific element
              o tpt.element_func has the following args: (int index, int x, int y, int surround, int nt)
* Version 68.6
      o Add back number key hotkeys to change display modes
      o Add back blob and heat gradient display
      o Correct icons in render_ui
      o Add back portal effects
* Version 68.5
      o fix decorations
* Version 68.4
      o Stamp browser fixes
      o Remove some stuff from HUD to make it fit
      o Fix grid mode
      o Replace cmode with flexible render options
* Version 68.3
      o Pixel grid and cursor in zoom
* Version 68.1
      o CAUS killes stickmen they can also have gas powers now
      o Fix air inversion
* Version 68.0
      o Decorations appear on gases
      o Stickmen and fighter fixes
      o Fixed WIRE graphics
      o New elements: ACEL and DCEL, accelerate nearby photons
* Version 67.0
      o New element: ELEC
      o Changed now LCRY works
*  Version 66.1
      o Massive overhaul of graphics code, appearance of many elements changed
*  Version 65.5
      o Elements from Maksprog's mod
              o LIGH - Lightning
              o DEST - Variation of BOMB
              o TESC - Tesla coil, creates lightning
              o EMP - Destroys electronic components
      o Fix bug with infinite temperature
      o Fix beta enrolling
      o Add a new mode to filter, subtract (tmp of 3)
      o Quick options menu in top right, can toggle various options quickly
      o Lots and lots of fixes
*  Version 64.3
      o Decoration editor tool menu, with lighten and darken tools
      o Can type in decoration editor color boxes for specific RGB values, hit enter after typing a number to confirm
      o SOAP removes decoration, opposite of BIZR
      o Water equalization, turn on in options menu, or with tpt.watertest()
      o BUBW changes to be more realistic, can explode
      o New element CAUS, an acid like gas, created from ACID+WTRV
      o Can see selected elements from Lua, tpt.selectedl or tpt.selectedr
      o Saved settings are in JSON format, replaces powder.def
      o Can opt in to receive beta updates
      o QRTZ scatters photons.
      o New Tool, PROP, edit properties easily without console.
      o FILT has modes with .tmp (0,1,2). 0 is convert (old method). 1 will filter (only close color can pass). 2 is add color
      o 'Sign out' button in the login menu, instead of submitting blank data
      o Fancy colored powders, hit 'n' to toggle
*  Version 61.2
      o Fixed a Lua mouse event bug
      o Can set decoration layer "dcolour" property
      o Fixed some possible cases where particles disappear randomly
*  Version 61.1
      o Fix some memory leaks
      o STOR will absorb anything when no ctype set, and it's ctype can't be a solid element
*  Version 61.0
      o Added energy only wall (Photons, Neutrons, etc.) as replacement for gas only wall fix
      o STOR will change appearance when it holds a particle
*  Version 60.1
      o Tools menu for AIR, HEAT, COOL, etc.
      o tpt.getscript() to download from official script repository (not used)
      o tpt.setwindowsize(scale,fullscreen) to change scale (1 or 2) and fullscreen (0 or 1)
      o Selection for stamp/copy now by pixel
      o Water puts out fire better
      o New elements: CO2, BUBW, DRIC, STOR, PVOD, CONV
      o Zoom toggle: alt+z
      o BIZR acts as a dye
      o Many other various fixes and improvements
*  Version 57.5
      o Fix Lua keyevent function
*  Version 57.4
      o Fix STKM2 spaz
      o Fix bug where electrode (ETRD) would delete particles in replace mode
*  Version 57.3
      o Fix coal being invisible when first drawn
*  Version 57.2
      o Allow scrolling in the special menu
*  Version 57.1
      o Stops the client launching DDos attack on server when checking for updates
*  Version 57
      o Gravity tools (NGRV and PGRV)
      o Allow reloading of directly opened files
      o Graphical changes to coal
*  Version 56
      o New element: GBMB (gravity bomb), requires newtonian gravity
*  Version 55
      o New element: WIRE
      o Extra line tool info if you type tpt.setdebug(4) into the console
*  Version 53.3
      o New Lua API functions to get keyboard/mouse presses
*  Version 53.1
      o Fix old GOL + clone saves and other life visual imprivements
      o Fancy lensing for mewtonian gravity in fancy (7) display
      o New element: DLAY
      o New Lua API functions from me4502
*  Version 47.3
      o Enhanced visual effects for Portals
      o Glow now has more stimuli (Green: Pressure, Blue: Movement, Red: Heat)
      o Python console (Unavailable in current beta)
      o Fixed issue where you appear to be logged in but aren't.
      o Changes to Quartz (Grows like crystal when exposed to salt water)
      o Singularity explodes upon death
      o Save ID shown after saving and on Open Dialog
      o Rearrangement of some elements (Photons in Radioactive, Thunder in Explosive, etc)
*  Version 46.3
      o Major game engine and performance improvements.
      o New GOL elements.
      o More secure login system
* Version 45.2
      o Important! Fix for Auto-update in Linux.
* Version 45.1
      o Small bugfix for Lava and Portals.
      o Fix crash when 2 of the same stickman are somehow placed.
* Version 45.0
      o Fix bug where description would persist after a reset
      o ARAY now passes through INWR without interracting.
      o INST has been fixed and placed in the Electronics menu
      o Photons turn into neutrons when passing through INVS
      o Other small bug fixes.
* Version 44.7
      o Fix login and dialoq text box issues.
      o Small bugfixes to some elements.
      o Additional 'debug' information.
      o Increase WIFI channels
      o Add missing icons for menus and display modes.
* Version 44.6
      o Fix for brush issues when using small brushes.
      o Pause state saving modifications.
* Version 44.5
      o Fix corruption issues with FAN wall.
* Version 44.4
      o Many new elements from cracker64s mod.
      o Pause state is saved.
      o Particle properties are saved more accurately.
      o Improved search and save viewing, added descriptions and comments.
* Version 42.3
      o Changed internal temperature scale to kelvin.
      o Fixed physics bug with certain powders.
      o Fixed bug when loading saves with stickman in.
      o Added save history, the ability to view previous versions of saves.
* Version 42.0
      o New Elements: Brick, Glow, Diesel, many others.
      o Source code seperation
      o Lots of other stuff that I can't remember.
* Version 41.3
      o Fixes bug where Insulation would burst into flames randomly
      o Moves fancy new effects into a separate colour mode.
* Version 39.0
      o New element: Liquid Crystal
      o New element: Battery
      o New element: Noble Gas
      o Copy, cut and paste
* Version 38.0
      o New element: Nitrogen Ice
      o New element: Electrode (Allows currents to jump)
      o Adds a lock icon to private saves.
      o Binds the '[' and ']' keys to decrease/increase the cursor size for those without scroll wheels.
      o Fixes wall menu issue where walls would be selected by accident.
* Version 37.0
      o New element: Plasma
      o New element: Thunder/Lighting
      o New wall: Allows only gas
      o Fixes HUD bug.
* Version 36.3
      o Introduced public & private saving (more info here)
* Version 36.2
      o Fixes bug where rating would appear as Zero in search.
* Version 36.1
      o Feature: Particle sampling with middle click
      o Feature: Download from website, for information, see the "Announcement" forum section.
* Version 36.0
      o Changes to the menu
      o New elements for electronics
      o New voting system
      o Added functions for moderating
* Version 35.0
      o Added elements: White Hole, Black Hole, Rubidium and Liquid Rubidium
      o Fixed the OSX version
      o Some other bug fixes that I forgot.
* Version 34.0
      o Fixed certain graphical glitches
      o Changed menu categories
      o Increased menu hover size
* Version 33.2
      o Photons can now ignite flammable materials.
      o Distilled water will turn into water on contact with water.
      o Fixes burning broken metal
* Version 34.0 (Beta 6)
      o New element menu layout
      o New element: Liquid Nitrogen
* Version 34.0 (Beta 5)
      o Improvements to stamp browser
      o Added Glyphs for Blob and Heat view
      o Fixed bug that caused a crash on Windows systems when using the wall tool in the window edges.(Fixed more than last time)
      o Decreased/Increased Min/Max Temperatures.
* Version 34.0 (Beta 4)
      o Cool, heat and Air no longer crash upon flood fill
      o Fixed bug that caused a crash on Windows systems when using the wall tool in the window edges.
      o Stamp browser now allows multiple pages.
      o Improved the zoom features, allowing inspection.
      o Modification to temperature simulation, pressure is now taken into account with transitions from liquid to gas and vice-versa
      o Fixed bug where Salt-water would not leave salt upon evaporation
* Version 34.0 (Beta 3)
      o Bug fixes for uranium
      o Fixed bug where extremely hot objects would show as black
      o Fixed but where stamps would not be loaded
* Version 34.0 (Beta 2)
      o Bug fixes
      o Legacy Mode state is now saved and loaded
      o Fix "Cool" and "Heat" when drawing on walls.
      o Air now works.
* Version 34.0 (Beta 1)
      o Bug fixes
      o Legacy Mode (Older saves will load with legacy mode, preserving the functionality of the older powder toy)
      o Heat and Cool elements. (Air is broken until next beta.)
* Version 34.0 (Beta)
      o Heat Simulation (With free bugs and glitches)
      o New Element: Uranium, heats up when pressurised.
      o New button, AIR, provides instant air, the Alt+Click and Middle Click can be used as a shortcut
* Version 33.1
      o Masses of bug fixes
      o Broken metal and breakable metal fixed (conduction)
      o Liquid collisions fixed.
* Version 33.0
      o Added Photons, particles similar to neutrons that travel in straight lines
      o Added destructable metal
      o Fixed a glitch with diamond that would make it appear invisible to air pressure.
* Version 32.0
      o Added Diamond (Thanks to ief014)
      o Fixed packaging errors for the Windows release
* Version 31.0
      o Plutonium more powerful
      o Changes to the handling of lava (Now solidifies into the same material it was melted from).
      o New element: Salt.
      o New element: Salt water
* Version 30.0
      o Added the ability to change the zoom strength
      o Increased the maximum pen size.
      o New element: Concrete, tougher than stone, stackable.
      o New element: Distilled water, similar to water, but doesn't conduct electricity
      o Changed menu layout, walls at the bottom, elements at the top (to allow for more future elements)
      o 32bit colour for Macintosh versions.
* Version 28.4
      o Fixes crash when loading a save with acid.
      o Another tiny change for acid colour in blob mode
* Version 28.3
      o Fixes acid colour in blob mode
      o Fixes blob mode colour on Macintosh and 16bit colour systems
* Version 28.2
      o Quit confirmation dialogue when using the escape key
      o Walls are "blobbed" in Blob view
* Version 28.1
      o Steam rises
      o Acid drastically changed, now dilutes itself when dissolving other particles
* Version 28.0
      o "Yellow wall" bug fix, doesn't absorb particles when placed above another wall type.
      o New wall type added: E-Hole, absorbs particles when unpowered, released them when powered.