About RubySketch – Fun w/ Processing
RubySketch is a mobile-friendly environment for graphics programming, equipped with a full scripting-language Ruby interpreter and a built-in text editor that lets you write and run Ruby scripts on the spot. With a...
RubySketch is a mobile-friendly environment for graphics programming, equipped with a full scripting-language Ruby interpreter and a built-in text editor that lets you write and run Ruby scripts on the spot. With a graphics API highly compatible with Processing, you can write code as if sketching ideas, and enjoy creating animations, visual expressions, interactive works, or even games-right on your iPhone or iPad. One of its biggest strengths is how easily you can dive in and start building the moment inspiration strikes. Key features: - Embedded Ruby interpreter (CRuby / official MRI implementation) - Processing-compatible graphics API with shader support - Lightweight, easy-to-use text editor - Sprite system with physics support (collision, gravity) - Camera input for image processing - Sound playback support (great for games and effects) - A large set of sample scripts included for immediate use - Comes with a full-featured Klondike Solitaire game! RubySketch also supports a wide range of Processing-compatible functions, making it a versatile tool for learning, creative coding, and playful experimentation: --- abs, acos, alpha, angleMode, applyMatrix, arc, asin, atan, atan2, background, beginContour, beginShape, bezier, bezierDetail, bezierPoint, bezierTangent, bezierVertex, blend, blendMode, blue, brightness, ceil, circle, clear, clip, color, colorMode, constrain, copy, cos, createCanvas, createCapture, createFont, createGraphics, createImage, createShader, createShape, createVector, curve, curveDetail, curvePoint, curveTangent, curveTightness, curveVertex, degrees, deltaTime, displayDensity, displayHeight, displayWidth, dist, doubleClicked, draw, ellipse, ellipseMode, endContour, endShape, exp, fill, filter, floor, focused, frameCount, frameRate, fullScreen, fullscreen, green, height, hue, image, imageMode, key, keyCode, keyIsDown, keyIsPressed, keyPressed, keyReleased, keyTyped, lerp, lerpColor, line, loadFont, loadImage, loadPixels, loadShader, log, loop, mag, map, max, min, motion, motionGravity, mouseButton, mouseClicked, mouseDragged, mouseMoved, mousePressed, mouseReleased, mouseWheel, mouseX, mouseY, noClip, noFill, noLoop, noSmooth, noStroke, noTint, noise, noiseDetail, noiseSeed, norm, pixelDensity, pixelHeight, pixelWidth, pixels, pmouseX, pmouseY, point, pop, popMatrix, popStyle, pow, printMatrix, push, pushMatrix, pushStyle, quad, quadraticVertex, radians, random, randomGaussian, randomSeed, rect, rectMode, red, redraw, renderMode, requestImage, resetMatrix, resetShader, rotate, rotateX, rotateY, rotateZ, round, saturation, save, scale, setTitle, setup, shader, shape, shapeMode, shearX, shearY, sin, size, smooth, sq, sqrt, square, stroke, strokeCap, strokeJoin, strokeWeight, tan, text, textAlign, textAscent, textDescent, textFont, textLeading, textSize, textWidth, texture, textureMode, textureWrap, tint, touchEnded, touchMoved, touchStarted, touches, translate, triangle, updatePixels, vertex, width, windowHeight, windowMove, windowMoved, windowOrientation, windowResizable, windowResize, windowResized, windowWidth, windowX, windowY
- Added "Font Size" menu - Added "Line Numbers" menu - Added SpriteWorld class - Added Vector#-@ - Added functions - keyIsRepeat - loadShape() - Added methods to Shape class - stroke - setStroke - setStrokeWeight - setStrokeCap - setStrokeJoin - Added methods to Sprite class - keyPressed - keyReleased - keyTyped - key - keyCode - keyIsPressed - keyIsDown - keyIsRepeated - capture= - capturing? - sensor= - sensor? - gravity_scale - Updated Ruby version from 3.2.2 to 3.3.8 - ellipse() can take 3 parameters - Rename the join type 'SQUARE' to 'BEVEL' - createSprite can take 'klass' parameter - Sprite#hide returns self - Fixed the issue where Sprite#contactEnd is not working - Fixed a bug in which the display magnification was fixed at 1x when the size specified by size() was different from the window size and the aspect ratio of both windows was the same - Fixed that circle() and ellipse() had half diameters
Previous Versions
Here you can find the changelog of RubySketch – Fun w/ Processing since it was posted on our website on 2023-03-04 07:14:30.
The latest version is 2.11 and it was updated on 2026-06-09 15:59:50. See below the changes in each version.
RubySketch – Fun w/ Processing version 2.11
Updated At: 2025-07-12
Changes: - Added "Font Size" menu
- Added "Line Numbers" menu
- Added SpriteWorld class
- Added Vector#-@
- Added functions
- keyIsRepeat
- loadShape()
- Added methods to Shape class
- stroke
- setStroke
- setStrokeWeight
- setStrokeCap
- setStrokeJoin
- Added methods to Sprite class
- keyPressed
- keyReleased
- keyTyped
- key
- keyCode
- keyIsPressed
- keyIsDown
- keyIsRepeated
- capture=
- capturing?
- sensor=
- sensor?
- gravity_scale
- Updated Ruby version from 3.2.2 to 3.3.8
- ellipse() can take 3 parameters
- Rename the join type 'SQUARE' to 'BEVEL'
- createSprite can take 'klass' parameter
- Sprite#hide returns self
- Fixed the issue where Sprite#contactEnd is not working
- Fixed a bug in which the display magnification was fixed at 1x when the size specified by size() was different from the window size and the aspect ratio of both windows was the same
- Fixed that circle() and ellipse() had half diameters
RubySketch – Fun w/ Processing version 2.11
Updated At: 2025-07-12
Changes: Jul 12, 2025
Version 2.11
- Added "Font Size" menu
- Added "Line Numbers" menu
- Added SpriteWorld class
- Added Vector#-@
- Added functions
- keyIsRepeat
- loadShape()
- Added methods to Shape class
- stroke
- setStroke
- setStrokeWeight
- setStrokeCap
- setStrokeJoin
- Added methods to Sprite class
- keyPressed
- keyReleased
- keyTyped
- key
- keyCode
- keyIsPressed
- keyIsDown
- keyIsRepeated
- capture=
- capturing?
- sensor=
- sensor?
- gravity_scale
- Updated Ruby version from 3.2.2 to 3.3.8
- ellipse() can take 3 parameters
- Rename the join type 'SQUARE' to 'BEVEL'
- createSprite can take 'klass' parameter
- Sprite#hide returns self
- Fixed the issue where Sprite#contactEnd is not working
- Fixed a bug in which the display magnification was fixed at 1x when the size specified by size() was different from the window size and the aspect ratio of both windows was the same
- Fixed that circle() and ellipse() had half diameters
RubySketch – Fun w/ Processing version 2.10
Updated At: 2024-02-18
Changes: Feb 18, 2024
Version 2.10
- With the support of the Ruby Association Development Grant, the following functions and class have been added
- createShape()
- shape()
- shapeMode()
- beginShape()
- endShape()
- beginContour()
- endContour()
- vertex()
- curveVertex()
- bezierVertex()
- quadraticVertex()
- texture()
- textureMode()
- textureWrap()
- loadPixels()
- updatePixels()
- pixels()
- textLeading()
- createFont()
- loadFont()
- requestImage()
- curveDetail()
- curvePoint()
- curveTangent()
- curveTightness()
- bezierDetail()
- bezierPoint()
- bezierTangent()
- rotateX()
- rotateY()
- rotateZ()
- shearX()
- shearY()
- applyMatrix()
- printMatrix()
- deltaTime
- hue()
- saturation()
- brightness()
- noiseSeed()
- noiseDetail()
- randomSeed()
- randomGaussian()
- fullscreen() (fullScreen())
- smooth()
- noSmooth()
- keyIsDown()
- keyIsPressed()
- mouseWheel()
- doubleClicked()
- Font.list()
- Graphics#clear()
- Graphics#save()
- Shape class
- Added links to the Processing/p5.js documentation in the class and method references
- Added Discord invite link for user support
- Reimplement the noise() for better compatibility
- scale() can take z parameter
- loadImage() raises Net::HTTPClientException instead of OpenURI::HTTPError
- Fixed that pushStyle()/popStyle() did not correctly manage colorMode, angleMode, and blendMode
- Fixed that Ruby documentation is in Japanese
RubySketch – Fun w/ Processing version 2.9
Updated At: 2023-07-30
Changes: Jul 30, 2023
Version 2.9
- require(), require_relative(), and load() support loading user-created script files
- Manage the folder containing the project.yml file as a project
- Added windowOrientation() function to limit screen rotation
- Added the entire source code of RubySolitaire, which is published as a stand-alone app in AppStore, to Apps/RubySolitaire
- Added Examples/Physics.rb
RubySketch – Fun w/ Processing version 2.7.1
Updated At: 2023-07-14
Changes: Jul 14, 2023
Version 2.7.1
- Fixed an issue where both the console background color and text color on the script execution screen were displayed in same white color when using dark mode
- The borders of the Undo and other buttons on the text edit screen were making it difficult to see the body of the text, so they have been made translucent
RubySketch – Fun w/ Processing version 2.7
Updated At: 2023-07-13
Changes: Jul 13, 2023
Version 2.7
- Added Examples/DrumPad.rb
- Added docs for event handling to Examples/Basics/14_Sprite.md
- Added Examples/Basics/15_Physics.md
- Added Examples/Basics/16_Sound.md
- Added a menu to create new markdown file
- Added a menu for setting automatic source code formatting
- Added In-App Purchase for removing ads
- Added RubySolitaire link
- Added functions
- red()
- green()
- blue()
- alpha()
- color()
- lerpColor()
- loadSound()
- focused()
- windowResized()
- Added Sound class
- Added set() and get() to Image class
- Added methods to Sprite class
- draw()
- mousePressed()
- mouseReleased()
- mouseMoved()
- mouseDragged()
- mouseClicked()
- touchStarted()
- touchEnded()
- touchMoved()
- show()
- hide()
- hidden?()
- fixAngle()
- angleFixed?()
- clickCount()
- fromScreen()
- toScreen()
- Added accessors to Sprite class
- left
- top
- right
- bottom
- center
- offset
- angle
- pivot
- The execution screen hides the status bar when full screen
- createGraphics() can take pixelDensity parameter
- copy() and blend() now work with tint color
- colorMode(), angleMode(), and blendMode() returns current mode value
- pushMatrix(), pushStyle(), and push() return the result of the expression at the end of the block when a block given
- pushStyle()/popStyle() do not manage filter state
- mousePressed(), mouseReleased(), mouseMoved(), mouseDragged(), and mouseClicked() ignore multiple touches
- Shader class can take shadertoy frament shader source
- Fixed a case of crash during initialization process at app startup
- Fixed that Vector.random2D() did not work correctly when angleMode() is set to DEGREES
- Fixed that calling mousePressed() without block removes mousePressed block
RubySketch – Fun w/ Processing version 2.6
Updated At: 2023-05-02
Changes: May 2, 2023
Version 2.6
- Added Sprite class
- Added 'Examples/Basics/14_Sprite.md' that briefly explains how to use Sprite class
- Class list and method list are added to the menu
- Ruby version updated from 3.2.0 to 3.2.2
RubySketch – Fun w/ Processing version 2.5
Updated At: 2023-02-05
Changes: Feb 5, 2023
Version 2.5
- Ruby version updated from 3.1.3 to 3.2.0
- GC.enable() is called when script execution completes
- Added DuelystUnits.rb as sample script
- Fixed a bug that prevented the API reference from being displayed