3D Sokoban prototype controlled by swipe built with Buildbox with (almost) no code thanks to my pure JavaScript class

Read all posts about "" game

I already talked about Buildbox and its #nocode hashtag, but since I am basically against building stuff with no code and at the same time I love Buildbox, I created a 3D Sokoban prototype using almost no code by simply using my pure JavaScript Sokoban class.

No playable example to show since Buildbox does not support HTML5, but it’s inner engine accepts JavaScript, so here is a video of the game:

Level is built at runtime by the script, and the only object I physically added to the world is the ground:

The script was added as a node to the ground, and only consists in a few lines, with the whole game logic managed by my class:

let sokoban;
let level = "########\n#####@.#\n####.$$#\n#### $ #\n### .# #\n###    #\n###  ###\n########";

function init(){
 	sokoban = new Sokoban();
	sokoban.buildLevelFromString(level);
	let floors = sokoban.getFloors();
	floors.forEach(function(floor){
		createItem(floor, "Floor", this.scene(), -4.5);
	}.bind(this));
	let crates = sokoban.getCrates();
	crates.forEach(function(crate){
		createItem(crate, "Crate", this.scene(), 2.5);
	}.bind(this));	
	let goals = sokoban.getGoals();
	goals.forEach(function(goal){
		createItem(goal, "Goal", this.scene(), 1);
	}.bind(this));	
	let player = sokoban.getPlayer();
	createItem(player, "Player", this.scene(), 2.5);	
}

function createItem(item, entityString, scene, posY){
	let entity = scene.create(entityString);
	entity.setPosition(-14 + item.getColumn() * 4, posY, -14 + item.getRow() * 4);	
	item.setData(entity);
}

function signal(name, value){
	if(value){
		let move;
		switch(name){
			case "Up":
				move = sokoban.moveUp();
				break;
			case "Down":
				move = sokoban.moveDown();
				break;
			case "Left":
				move = sokoban.moveLeft();
				break;
			case "Right":
				move = sokoban.moveRight();
				break;
		}
		if(move){
			handleMovement(sokoban.getPlayer());
			let crates = sokoban.getCrates();
			crates.forEach(function(crate){
				handleMovement(crate);
			});	
		}
	}
}

function handleMovement(item){
	let deltaRow = item.getRow() - item.getPrevRow();
	let deltaColumn = item.getColumn() - item.getPrevColumn();
	if(deltaRow != 0 || deltaColumn !=0){
		let movement = deltaRow == 0 ? (deltaColumn == 1 ? "RIGHT" : "LEFT") : (deltaRow == 1 ? "DOWN" : "UP")
		let entity = item.getData();
		entity.component("Movement Script").emitSignal(movement, 1);	
	}		
} 

I will add more comments and screenshots about the way nodes have been created inside the project, what I wanted to show you today is I was able to build a game like Sokoban with almost no code with Buildbox.

You can download the entire project, and you will also find the class inside.

Do you like Buildbox + code?

Get the most popular Phaser 3 book

Through 202 pages, 32 source code examples and an Android Studio project you will learn how to build cross platform HTML5 games and create a complete game along the way.

Get the book

215 GAME PROTOTYPES EXPLAINED WITH SOURCE CODE
// 1+2=3
// 100 rounds
// 10000000
// 2 Cars
// 2048
// A Blocky Christmas
// A Jumping Block
// A Life of Logic
// Angry Birds
// Angry Birds Space
// Artillery
// Astro-PANIC!
// Avoider
// Back to Square One
// Ball Game
// Ball vs Ball
// Ball: Revamped
// Balloon Invasion
// BallPusher
// Ballz
// Bar Balance
// Bejeweled
// Biggification
// Block it
// Blockage
// Bloons
// Boids
// Bombuzal
// Boom Dots
// Bouncing Ball
// Bouncing Ball 2
// Bouncy Light
// BoxHead
// Breakout
// Bricks
// Bubble Chaos
// Bubbles 2
// Card Game
// Castle Ramble
// Chronotron
// Circle Chain
// Circle Path
// Circle Race
// Circular endless runner
// Cirplosion
// CLOCKS - The Game
// Color Hit
// Color Jump
// ColorFill
// Columns
// Concentration
// Crossy Road
// Crush the Castle
// Cube Jump
// CubesOut
// Dash N Blast
// Dashy Panda
// Deflection
// Diamond Digger Saga
// Don't touch the spikes
// Dots
// Down The Mountain
// Drag and Match
// Draw Game
// Drop Wizard
// DROP'd
// Dudeski
// Dungeon Raid
// Educational Game
// Elasticity
// Endless Runner
// Erase Box
// Eskiv
// Farm Heroes Saga
// Filler
// Flappy Bird
// Fling
// Flipping Legend
// Floaty Light
// Fuse Ballz
// GearTaker
// Gem Sweeper
// Globe
// Goat Rider
// Gold Miner
// Grindstone
// GuessNext
// Helicopter
// Hero Emblems
// Hero Slide
// Hexagonal Tiles
// HookPod
// Hop Hop Hop Underwater
// Horizontal Endless Runner
// Hundreds
// Hungry Hero
// Hurry it's Christmas
// InkTd
// Iromeku
// Jet Set Willy
// Jigsaw Game
// Knife Hit
// Knightfall
// Legends of Runeterra
// Lep's World
// Line Rider
// Lumines
// Magick
// MagOrMin
// Mass Attack
// Math Game
// Maze
// Meeblings
// Memdot
// Metro Siberia Underground
// Mike Dangers
// Mikey Hooks
// Nano War
// Nodes
// o:anquan
// One Button Game
// One Tap RPG
// Ononmin
// Pacco
// Perfect Square!
// Perfectionism
// Phyballs
// Pixel Purge
// PixelField
// Planet Revenge
// Plants Vs Zombies
// Platform
// Platform game
// Plus+Plus
// Pocket Snap
// Poker
// Pool
// Pop the Lock
// Pop to Save
// Poux
// Pudi
// Pumpkin Story
// Puppet Bird
// Pyramids of Ra
// qomp
// Quick Switch
// Racing
// Radical
// Rebuild Chile
// Renju
// Rise Above
// Risky Road
// Roguelike
// Roly Poly
// Run Around
// Rush Hour
// SameGame
// SamePhysics
// Save the Totem
// Security
// Serious Scramblers
// Shrink it
// Sling
// Slingy
// Snowflakes
// Sokoban
// Space Checkers
// Space is Key
// Spellfall
// Spinny Gun
// Splitter
// Spring Ninja
// Sproing
// Stabilize!
// Stack
// Stairs
// Stick Hero
// String Avoider
// Stringy
// Sudoku
// Super Mario Bros
// Surfingers
// Survival Horror
// Talesworth Adventure
// Tetris
// The Impossible Line
// The Moops - Combos of Joy
// The Next Arrow
// Threes
// Tic Tac Toe
// Timberman
// Tiny Wings
// Tipsy Tower
// Toony
// Totem Destroyer
// Tower Defense
// Trick Shot
// Tunnelball
// Turn
// Turnellio
// TwinSpin
// vvvvvv
// Warp Shift
// Way of an Idea
// Whack a Creep
// Wheel of Fortune
// Where's my Water
// Wish Upon a Star
// Word Game
// Wordle
// Worms
// Yanga
// Yeah Bunny
// Zhed
// zNumbers