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
June 20, 2019
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
 
 
04/15/2019
 


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

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. https://www.fuze.co.uk/about-fuze4-nintendo-switch.html

Interface

  • 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

Editor

  • 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

Tools

  • 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

Help

  • 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

https://www.fuze.co.uk/about-fuze4-nintendo-switch.html

 

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

 

DRAWMAP ( )

Draw a tile map previously loaded with loadmap

 

DRAWMAPLAYER ( layer )

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

 

DRAWSPRITES ()

Draw all sprites

 

FREEIMAGE (handle)

Remove an image from memory

 

frame = GETSPRITEANIMFRAME ( handle )

Get the current frame in an animated sprite

 

count = GETSPRITEANIMFRAMECOUNT ( handle )

Find the number of frames in an animated sprite

 

speed = GETSPRITEANIMSPEED (handle)

Find the speed of a sprite’s animation

 

camera = GETSPRITECAMERA ()

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

 

size = GETSPRITEIMAGESIZE (handle)

Get the size of the sprite image

 

position = GETSPRITELOCATION (handle)

Get the position of a sprite

 

GETSPRITEORIGIN (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

 

shown = GETSPRITEVISIBILITY (handle)

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

 

REMOVESPRITE (handle)

Remove a sprite that is no longer needed

 

RENDEREFFECT (image, destination, effect, arguments)

Apply a visual effect to a 2D image

 

SETBLEND (mode)

Set the blend mode

 

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

Animate a sprite

 

SETSPRITEANIMFRAME (handle , frame)

Set the current frame in an animated sprite

 

SETSPRITEANIMSPEED (handle, speed)

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

 

SETSPRITEROTATION (handle, angle)

Rotate a sprite

 

SETSPRITEROTATIONVELOCITY (handle, rotationvelocity)

Set a sprite’s rotation velocity

 

SETSPRITESCALE (handle, { xscale, yscale })

Scale a sprite

 

SETSPRITESCALEVELOCITY (handle, { x, y })

Set a sprite’s scale velocity

 

SETSPRITEVELOCITY (handle, { x, y })

Set a sprite’s velocity

 

SETSPRITEVISIBILITY (handle, show)

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

 

UNLOADMAP ( )

Unload the current tile map

 

UPDATESPRITES ()

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

 

DRAWOBJECTS ()

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

 

REMOVELIGHT (light)

Remove a light source

 

REMOVEOBJECT (handle)

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

 

Arithmetic

 

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

 

Binary

 

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

 

Input

 

result = CONTROLS (0)

Read values from the buttons and joysticks

 

docked = DOCKED ()

Find out if the Switch is docked

 

result = GETKEYBOARDBUFFER ()

Get the contents of the keyboard buffer

 

HIDEKEYBOARD ()

Show or the virtual keyboard

 

result = INPUT (prompt, multiline)

Allow text input from the keyboard

 

SHOWKEYBOARD ()

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

 

SETDRAWTARGET (target)

Create an image

 

SETMODE (width, height)

Set the resolution of the screen display

 

SETVIEW (left, top, right, bottom)

Configure the viewport

 

UPDATE ()

Update screen graphics

 

Sound and Music

 

length = AUDIOLENGTH (handle)

Returns the length of a given audio sample

 

GETCHANNELSTATUS (channel)

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

 

STARTCHANNEL (channel)

Start an audio channel

 

STOPCHANNEL (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

 

TEXTSIZE (size)

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

 

STARTTIMER (handle)

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. https://www.fuze.co.uk/about-fuze4-nintendo-switch.html

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 www.fuze.co.uk