Gamasutra is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Gamasutra: The Art & Business of Making Gamesspacer
View All     RSS
March 2, 2021
arrowPress Releases

If you enjoy reading this site, you might also want to check out these UBM Tech sites:

Press Releases
  FUZE Technologies Ltd are very pleased to announce the features and technical details for their upcoming release of FUZE 4 Nintendo Switch
  Share on Twitter RSS

[This unedited press release is made available courtesy of Gamasutra and its partnership with notable game PR-related resource Games Press.]

And now for the technical bit…

April 2019

FUZE4 Nintendo Switch is a coding application for Nintendo Switch. It has been designed and developed by a team of experienced gamers, programmers, artists and educators. Programming languages all have their pros and cons. FUZE4 takes as many pros as could be crammed in from a mix of these languages (C, Python & BASIC to name a few) to create a language that is as easy as BASIC, powerful like C and versatile like Python. The end result is a language ideally suited to coding games and apps for absolute beginners and seasoned programmers alike.

  • There are more than 200 functions and commands in the language covering 2D, 3D, Audio, Text and Controls.

  • Over $1,000 worth of gaming assets are included. That’s more than 10,000 3D models, 2D sprites and sound files!

  • A comprehensive Programmer’s Reference guide with detailed explanations and examples for most commands.

  • More than 25 Tutorials ranging from “Hello World” to a step-by-step game series.

  • Extensive examples and demo programs to inspire, modify and play.

The site has been updated to include the latest product description.


  • Intuitive, clear and minimal

  • Customisable with a variety of themes

  • Works with Touch, Joy-Cons and USB keyboards

  • Preferences

  • Comprehensive Help including a full command reference with explanations and examples, quick reference and extensive tutorials


  • Fully functional Coder’s touch keyboard (& USB, Joy-Con etc.). Almost all items accessible with a single tap

  • Undo / Redo

  • B ookmarks

  • Syntax highlighting

  • Copy, Cut & Paste

  • Visible Clipboard

  • Instant access to media assets and on-screen help

  • Intuitive cursor controls

  • F unction key support with USB keyboard

Programming Language

  • Built in libraries for 2D, 3D & Audio

  • Variable types (Int, Float, String, Structures, Arrays, Vectors, Handles)

  • S imple to advanced math functions including lerp, bezier, distance, clamp, cross and dot product, normalise etc.

  • Handles 2D Graphics with ease including quadrilateral image deformation

  • Advanced Sprite Engine including sprite camera, scaling, rotation, animation, fading, tinting, velocity (against all transformations) and collision d etection

  • Supports Tilemaps and Spritesheets

  • 2D Effects including screen filters and multiple screen buffers

  • P owerful 3D Engine with world, point and ambient lighting, with or without shadows

  • Deferred rendering - separation of geometry and lighting in a 3D renderer using intermediate buffers

  • Temporal anti-aliasing (TAA) - antialiasing method using data from previous frames

  • H igh dynamic range rendering (HDRR) - rendering using a wide range of colours to calculate lighting before tone mapping to sRGB output

  • 3D Camera (location and direction) with FOV control

  • Load existing models and create scenes using shapes (cube, sphere, cone, hemisphere, pyramid, wedge and cylinder)

  • 3D Object Scale, Rotation and PointAt

  • Supports animated 3D models

  • Apply materials to 3D objects and set transparency

  • Create 3D terraformed scenes with the createTerrain function

  • Play music and sound effects. Built in synthesiser commands allow for live effects across all 16 channels. Change modulation, wave type, reverb and frequencies on the fly for programmable music compositions (think Commodore 64 style!)

  • Joy-Con support including Gyro, Accelerometer, HD Rumble and Analog sticks

  • Touch screen - up to ten points

  • Keyboard input accepted directly from screen and USB keyboards

  • File handling allowing for save data, level designs, music tracks etc. to be saved along-side program.

  • Text handling including strings, splicing, cursor positioning, size and colours

  • Signed Distance Field (SDF) font rendering - can render a single font at a wide range of sizes with no extra processing

  • Time & Date

  • Custom Timer controls – synchronise events with precision (software simulated interrupts)

  • Supports Docked & Undocked (can be checked in code)

  • Advanced binary commands (BitCount, BitFieldExtract, BitFieldInsert, BitGet, BitSet)

  • Automatic performance adjustment - automatically switch between performance modes to conserve battery or improve framerates based on rendering load

  • D etailed performance monitoring - independent measurements of CPU and GPU processing time give more insight into the program’s performance than a standard framerate measurement

Game Assets

  • Over $1,000 worth of high-quality gaming assets

  • Includes more than 10,000 gaming assets across 2D, 3D and Audio

  • Contributions from 30 graphic artists and musicians to ensure a wide variety of genres and styles

    In alphabetical order from top-left to bottom-right, the contributing artists are: Alienoutcast, Ansimuz, Bayat, Broken Vector, Colin Brown, Cryptogene, David Silvera, Devil’s Garage, DinV Studio, Eder Munizz, Emerald Eel Entertainment, Fertile Soil Productions, Finalbossblues, FUZE, Gijs De Mik, Kat Deak, Kenney, KuroRen, Michael J Wild, Moonstar, Pipo, Pixels’n’Play, Quaternius, Ravenmore, Rvros, Selavi Games, Sinestesia Studio, Stijn van Wakeren, Untied Games and Vadi Va

  • 2D Assets include old-school RPG, JRPG, Arcade, Shooter, Platform, Puzzle, Dating, Strategy, War, Adventure, Underwater and a lot more – Everything from medieval RTS to Sci-fi space shmups.

  • 2D Sprite sheets often include hundreds of related assets making the actual number of individual game assets near impossible to quantify but it would be safe to say it’s well over the 50,000 mark!

  • 3D Assets include many modular sets so it is possible to create an underground series of dungeons, caverns and even sewers as well as fully equipped castles, medieval towns, space stations, farms, cities and towns. It is even possible to build fully furnished houses! There are also hundreds upon hundreds of unique assets for forming landscapes with cliffs, beaches, terrain, plants, and people, animals and monsters to populate them.

  • Audio includes almost a hundred music tracks along with over a thousand sound effects from cute interface sounds to bellowing orcs and a great deal in between!

  • I n addition to the supplied music and audio clips it is possible to generate your own sounds with the built-in synthesizer


  • FUZE4 Nintendo Switch is equipped with a Tile Map editor for creating your own 2D levels, backgrounds, top down maps and landscapes etc.

  • I mage / Sprite editor to create unique graphics

  • The built-in synthesiser and be programmed to produce millions of different sounds and effects. It can also apply effects to existing sounds and music


  • F UZE4 Nintendo Switch is supplied with a very comprehensive array of support materials

  • Complete Programmer’s Reference Guide. Every command is detailed with a description, its syntax, valid arguments and an example

  • Q uick Reference Guide – for quick look up of command syntax

  • Over 20 step-by-step tutorials from ‘Hello World’, Variables and Loops to writing a complete game level with animations, scrolling backgrounds, Joy-Con controls and enemies.

  • More Tutorials will be added as they are made available

  • A community website for additional support, showcasing and general coding antics!

FUZE4 Nintendo Switch Programmer’s Reference


2D Graphics


BOX (x, y, width, height, colour, outline)

Draw a box (rectangle - square)


CIRCLE (x, y, radius, vertices, colour, outline)

Draw a circle


handle = CREATEIMAGE (width, height, filter, type)

Create an image


handle = CREATESPRITE (image)

Create a new sprite



Draw a tile map previously loaded with loadmap



Draw a tile map layer previously loaded with loadmap


DRAWIMAGE (handle, x, y)

Draw a previously loaded image file


DRAWIMAGE (handle, x, y, scalefactor)

Draw a resized image


DRAWIMAGE (handle, { x, y, width, height }, { x, y, w, h })

Draw a part of an image


DRAWIMAGEEX (handle, location, rotation, scale, tint, origin);

Extended Draw function


DRAWQUAD (handle, {x, y, width, height}, points, tint)

Draw an image to an area of the screen


DRAWSHEET (handle, tileno, { xpos, ypos, width, height })

Draw a tile from a tiled image



Draw all sprites


FREEIMAGE (handle)

Remove an image from memory


frame = GETSPRITEANIMFRAME ( handle )

Get the current frame in an animated sprite



Find the number of frames in an animated sprite



Find the speed of a sprite’s animation



Get the sprite camera position


spritecolour = GETSPRITECOLOUR (handle)

Get the colour values of a sprite


colourvelocity = GETSPRITECOLOURVELOUCITY (handle)

Get the colour velocities of a sprite


depth = GETSPRITEDEPTH (handle)

Get a sprites depth


image = GETSPRITEIMAGE (handle)

Get the image associated with a sprite



Get the size of the sprite image


position = GETSPRITELOCATION (handle)

Get the position of a sprite



Find the origin point of a sprite


angle = GETSPRITEROTATION (handle)

Get the rotation angle of a sprite


rotationvelocity = GETSPRITEROTATIONVELOCITY (handle)

Get a sprite’s rotation velocity


scalefactor = GETSPRITESCALE (handle)

Get a sprite's scale factor


scalevelocity = GETSPRITEROTATIONVELOCITY (handle)

Get a sprite’s scale velocity


size = GETSPRITESIZE (sprite)

Find the size of a sprite


spritevelocity = GETSPRITEVELOCITY (handle)

Set a sprite’s velocity



Find out if a sprite is visible


size = IMAGESIZE (handle)

Get the size of a loaded image


LINE (point1, point2, colour)

Draw a line


handle = LOADIMAGE (filename, filter)

Load an image from a file


LOADMAP ( filename )

Load a tile map file created in the tile map editor


PLOT (x, y, colour)

Plot a single point on the screen



Remove a sprite that is no longer needed


RENDEREFFECT (image, destination, effect, arguments)

Apply a visual effect to a 2D image



Set the blend mode


SETSPRITEANIMATION (handle, image, starttile, endtile, speed)

Animate a sprite



Set the current frame in an animated sprite



Change the speed of a sprite’s animation


SETSPRITECAMERA (xpos, ypos, zpos)

Move the sprite camera position


SETSPRITECOLOR (handle, { red, green, blue, alpha})

Set the colour of a sprite


SETSPRITECOLORVELOCITY (handle, { red, green, blue, alpha })

Set the colour velocities of a sprite


SETSPRITEDEPTH (handle, depth)

Set a sprite’s depth


SETSPRITEIMAGE (handle, image)

Change the image associated with a sprite


SETSPRITELOCATION (handle, { xpos, ypos })

Position a sprite on the screen


SETSPRITEORIGIN (sprite, { xpos, ypos })

Change the origin point of a sprite



Rotate a sprite


SETSPRITEROTATIONVELOCITY (handle, rotationvelocity)

Set a sprite’s rotation velocity


SETSPRITESCALE (handle, { xscale, yscale })

Scale a sprite



Set a sprite’s scale velocity


SETSPRITEVELOCITY (handle, { x, y })

Set a sprite’s velocity



Hide or reveal a sprite


size = TILESIZE (image, tile)

Get the size of the spcified tile in the specified image


TRIANGLE (point1, point2, point3, colour, outline)

Draw a triangle



Unload the current tile map



Process velocity additions for all sprites


handle = UDG (pixeldata, width, height, filter)

Create a UserDefinedGraphic in code


3D Graphics


length = ANIMATIONLENGTH (object, animation)

Find the length of a 3D animation


handle = CREATETERRAIN (gridsize, filter)

Create a 3D terrain



Draw all 3D objects


handle = LOADMODEL (filename)

Load a 3D model ready for display


count = NUMANIMATIONS (object)

Find the length of a 3D animation


OBJECTPOINTAT (handle, point)

Set where a 3D object is pointing


handle = PLACEOBJECT (shape, location, scale)

Place a 3D object


handle = POINTLIGHT (location, colour, intensity)

Creates a pinpoint light source in 3D space


handle = POINTSHADOWLIGHT (position, colour, brightness)

Creates a point light in 3D space that casts a shadow



Remove a light source



Remove a 3D object


ROTATEOBJECT (handle, axes, amount)

Rotate a 3D object


SETAMBIENTLIGHT ({ red, green, blue })

Set the ambient light level


SETCAMERA (location, target)

Set the position of the camera in 3D space


SETFOV (angle)

Sets the angular extent of the observable 3D space


SETLIGHTBRIGHTNESS (light, brightness)

Set the brightness of a light source


SETLIGHTCOLOUR (light, colour)

Set the colour of a light source


SETLIGHTDIR (light, direction)

Set the direction of a light source


SETLIGHTSPREAD (light, spread)

Sets the spread of a light source


SETOBJECTMATERIAL (handle, colour, metallic, roughness)

Set the material of a 3D object


SETOBJECTPOS (handle, pos)

Set the position of a 3D object


SETOBJECTSCALE (handle, scale)

Set the size of a 3D object


SETTERRAINPOINT (terrain, xpos, ypos, height, colour)

Set a point on a 3D terrain


handle = SPOTLIGHT (position, dir, colour, brightness, angle)


UPDATEANIMATION (object, animation, frame)

Update a 3D animation


UPDATETERRAIN (terrain, heights, colours)

Update a 3D terrain


WORLDLIGHT (direction, colour, brightness)

Create a world light source


WORLDSHADOWLIGHT (centre, dir, colour, bright, range, detail)

Create a world light source that casts a shadow




absolute = ABS (number)

Returns absolute value of the given argument


angle = ACOS (cosine)

Returns the arc cosine of the supplied argument


angle = ASIN (sine)

Returns the arc sine of the supplied argument


angle = ATAN (tangent)

Returns the arc tangent of the supplied argument


angle = ATAN2 (x, y)

Returns the arctangent between x, y & the origin


x = BEZIER (x1, x2, x3, t) / y = BEZIER (y1, y2, y3, t)

Used to draw quadratic Bezier curves


x = BEZIER4 (x1, x2, x3, x4, t) / y = BEZIER4 (x1, x2, x3, x4, t)

Used to draw cubic Bezier curves


result = CEIL (number)

Returns the ceiling of a real number


result = CLAMP (number, minimum, maximum)

Restrict a value to a specified range


cosine = COS (angle)

Returns the cosine of the supplied argument


vector3 = CROSS (vector1, vector2)

Find the cross product of two vectors


result = DISTANCE (point1, point2)

Find the distance between 2 points


scalar = DOT (vector1, vector2)

Find the dot product of two vectors


result = FLOAT (value)

Convert value to floating point


result = FLOOR (number)

Returns the floor of a real number


result = FRACT (value)

Get the fractional part of floating-point number


result = INT (value)

Convert value to an integer


result = LENGTH (vector)

Find the length of a vector


result = LERP (v0, v1, t)

Linear interpolation


result = MAX (number1, number2)

Returns the maximum of two numbers


result = MIN (number1, number2)

Returns the minimum of two numbers


result = NORMALIZE (vector)

Normalize a vector


value = PI

Returns the value of PI


result = POW (number, power)

Raise a number to the power of another


RADIANS (enable)

Change the default units for angles


number = RANDOM (range)

Returns a random number in the given range


result = REFLECT (incident, normal)

Find the reflection of a vector


result = REFRACT (incident, normal, ior)

Find the refraction of a vector


result = ROUND (value)

Round a floating-point number


result = RSQRT (number)

Find the fast inverse square root of a number


sine = SIN (angle)

Returns the sine of the supplied argument


result = SINCOS (angle)

Returns the sine and cosine of the supplied angle


result = SMOOTHSTEP ( v0, v1, t)

perform Hermite interpolation between two values


squareroot = SQRT(number)

Find the square root of the specified number


tangent = TAN (angle)

Returns the tangent of the supplied argument


result = TRUNC (value)

Truncates a floating-point number




result = BITCOUNT(number)

Returns the number of set bits in a binary number


result = BITFIELDEXTRACT (number, start, count)

Extract a number of bits from a binary number


BITFIELDINSERT (number, start, count, value)

Insert a number of bits into a binary number


result = BITGET (number, bit)

Get the value of a bit in a binary number


result = BITSET (number, bit, value)

Set or clear a bit in a binary number


result = LEADINGZEROES (value)

Find the number of leading zeroes in a binary number


result = TRAILINGZEROES (value)

Return the number of trailing zeroes in a number




result = CONTROLS (0)

Read values from the buttons and joysticks


docked = DOCKED ()

Find out if the Switch is docked



Get the contents of the keyboard buffer



Show or the virtual keyboard


result = INPUT (prompt, multiline)

Allow text input from the keyboard



Show or the virtual keyboard


list = TOUCH ()

Read input from the touch screen


PULSERUMBLE (controller, channel, speed, volume, frequency)

Pulse the controller rumble motors


SETRUMBLE (controller, channel, volume, frequency)

Start or stop the controller rumble motors


File Handling


CLOSE (handle)

Closes a file


handle = OPEN ()

Open a file for read or write


result = READ (handle, count)

Read from a file


SEEK (handle, position)

Seek to a position in the file


WRITE (handle, text)

Write to a file


Screen Display


CLEAR (colour)

Clear the screen


height = GHEIGHT ()

Get the height of the screen display


width = GWIDTH ()

Get the width of the screen display



Create an image


SETMODE (width, height)

Set the resolution of the screen display


SETVIEW (left, top, right, bottom)

Configure the viewport



Update screen graphics


Sound and Music


length = AUDIOLENGTH (handle)

Returns the length of a given audio sample



Check if audio is being played


LOADAUDIO (sample)

Load an audio sample


frequency = NOTE2FREQ (note)

Find the frequency of the specified note


PLAYAUDIO (channel, handle, volume, pan, speed, loops)

Play an audio track


PLAYNOTE (channel, wave, frequency, volume, speed, pan)

Play a musical note


SETENVELOPE (channel, speed)

Set the envelope speed of the specified channel


SETCLIPPER (channel, threshold, strength)

Clips volume above the threshold by the strength


SETFREQUENCY (channel, frequency)

Set the frequency of the specified channel


SETFILTER (channel, type, cutoff)

Applies a filter to the given audio channel


SETMODULATOR (channel, wave, frequency, scale)

Set a modulator on an audio channel


SETPAN (channel, pan)

Change the audio stereo position


SETREVERB (channel, delay)

Set the amount of reverberation on an audio channel


SETVOLUME (channel, volume)

Change the audio volume



Start an audio channel



Stop an audio channel


Text Handling


CURSOR (x, y)

Set the current text cursor position


DRAWTEXT (x, y, size, colour, text)

Draw text on the screen


INK (colour)

Set the ink colour for text printing


length = LEN (string / array)

Find the length of a string or array


PRINT (values)

Print text to the screen


PRINTAT (x, y, values)

Print text to the screen at the specified location


result = STR (value)

Convert a value to a string


hash = STRINGHASH (string)

Compute a hash for the specified string



Sets the size of text


result = TEXTWIDTH (text)

Gets the size of text string in pixels


textheight = THEIGHT ()

Get the text height of the display in characters


textwidth = TWIDTH ()

Get the text width of the display in characters


Time and Date


now = CLOCK ()

Get the current date and time


handle = SETTIMER (interval, count, function (arguments))

Create a new timer


SLEEP (time)

Go to sleep



Start a timer


STOPTIMER (handle)

Stop a timer


result = TIME ()

Get the current system tick count

The site has been updated to include the latest product description and the full Programmer’s Reference.

A bout FUZE Technologies:

UK-based FUZE Technologies Ltd has its roots in home computers and programming. Our many years of experience in the computer industry and our passion for technology innovation and computer programming have positioned us perfectly to expand our business into Programmable Computers and Electronics.  The last five years has seen the development of FUZE for Linux, Raspberry Pi, Asus Tinker Board and Microsoft Windows. The team continues to deliver outstanding FUZE Coding Workshops to schools across the country and constantly receives incredibly positive praise and testimonials. For more information on FUZE please see