User prompt
Please fix the bug: 'Script error.' in or related to this line: 'assistButton.graphics.tint = 0x90ee90;' Line Number: 322
User prompt
Create an assistance mode where every time, well, you have to jump, a bird makes a noise. Create the bird sound effect that will be played when the player has to jump in assistance mode.
User prompt
Remove the extra life system completely.
User prompt
Please fix the bug: 'Timeout.tick error: LK.showYesNo is not a function. (In 'LK.showYesNo('Use Extra Life?', function (usedExtraLife) { __$(269); if (usedExtraLife) { // Player chose to use extra life __$(270); extraLives--; __$(271); extraLivesText.setText(extraLives); // Resume game __$(272); gameState = 'playing'; // Move turtle back to safe position __$(273); turtle.x = 300; __$(274); turtle.y = ground.y; __$(275); turtle.groundY = ground.y; __$(276); turtle.isJumping = false; __$(277); turtle.jumpSpeed = 0; // Clear nearby boulders to give player a chance __$(278); for (var i = boulders.length - 1; i >= 0; i--) { __$(279); var boulder = boulders[i]; __$(280); if (boulder.x < turtle.x + 600) { __$(281); boulder.destroy(); __$(282); boulders.splice(i, 1); } } } else { // Player chose not to use extra life __$(283); actualGameOver(); } })', 'LK.showYesNo' is undefined)' in or related to this line: 'LK.showYesNo('Use Extra Life?', function (usedExtraLife) {' Line Number: 494
User prompt
Make the turtle jump higher.
User prompt
Make sure that the graphics are exactly as big as the hit-and-hurt boxes from Obstacles and Turtle
User prompt
Please fix the bug: 'Timeout.tick error: LK.showContinue is not a function. (In 'LK.showContinue(function (usedExtraLife) { __$(263); if (usedExtraLife) { // Player chose to use extra life __$(264); extraLives--; __$(265); extraLivesText.setText(extraLives); // Resume game __$(266); gameState = 'playing'; // Move turtle back to safe position __$(267); turtle.x = 300; __$(268); turtle.y = ground.y; __$(269); turtle.groundY = ground.y; __$(270); turtle.isJumping = false; __$(271); turtle.jumpSpeed = 0; // Clear nearby boulders to give player a chance __$(272); for (var i = boulders.length - 1; i >= 0; i--) { __$(273); var boulder = boulders[i]; __$(274); if (boulder.x < turtle.x + 600) { __$(275); boulder.destroy(); __$(276); boulders.splice(i, 1); } } } else { // Player chose not to use extra life __$(277); actualGameOver(); } })', 'LK.showContinue' is undefined)' in or related to this line: 'LK.showContinue(function (usedExtraLife) {' Line Number: 485
User prompt
make it so that the extra lives... well you will be asked if you want to use one and then if you say yes you will just continue there and well keep your points but then your points will...
User prompt
Make the jump a tiny bit higher. Also add turtle back elements that, well, are extra lives and are counted in the top right of the screen.
User prompt
Make the jump a small bit shorter. Well, less high, I mean.
User prompt
Make the gap between obstacles even shorter.
User prompt
Make boulders appear more often and also make the game get harder and faster over time.
User prompt
create a sand particle element and make them fly through the air when the player lands creating the effect of dust coming out when the player lands on the sand ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Remove the pirate skin and delete the pirate skin element. Also delete the suit turtle element, but not the suit jump element. Also make dust particles come up when the player lands again. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Make it so that if a game over happens, the player has to unlock the pirate skin again. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
make sure when the game over is happening everything gets reset again completely okay
User prompt
use the sound secret if a secret is unlocked
User prompt
Make it so that if the map button is pressed five times it disappears, but the player unlocks a new skin, pirate ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
the sound landing every time the player well lands on the ground again also make the turtles jump a little higher to make it easier to jump over the boulders
User prompt
If Deutsch is selected, change the language of the whole game to, well, German. Also call the game Turtlerun now and not Spikejumper. Make the standard turtle stand on top of the...
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'langButton.graphics.tint = 0x90ee90;' Line Number: 359
User prompt
Add a little gear icon with English and Deutsch as selectable languages if pressed on the gear icon.
User prompt
Use the sound lever when a button is pressed, that is not the map button.
User prompt
Delete the background objects and make the background completely black again.
User prompt
Remove the three background objects again.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var Boulder = Container.expand(function () {
var self = Container.call(this);
self.speed = -24;
self.passed = false;
var boulderGraphics = self.attachAsset('boulder', {
anchorX: 0.5,
anchorY: 1.0,
scaleX: 1.5,
scaleY: 1.5
});
// Set the container's dimensions to match the scaled graphics
self.width = boulderGraphics.width * 1.5;
self.height = boulderGraphics.height * 1.5;
self.update = function () {
self.x += self.speed;
};
return self;
});
var LanguageButton = Container.expand(function (language, callback) {
var self = Container.call(this);
var buttonGraphics = self.attachAsset('menuButton', {
anchorX: 0.5,
anchorY: 0.5
});
self.graphics = buttonGraphics;
var buttonText = new Text2(language, {
size: 120,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
self.addChild(buttonText);
self.down = function () {
LK.getSound('Gear').play();
if (callback) callback();
};
return self;
});
var MenuButton = Container.expand(function (text, callback) {
var self = Container.call(this);
var buttonGraphics = self.attachAsset('menuButton', {
anchorX: 0.5,
anchorY: 0.5
});
var buttonText = new Text2(text, {
size: 120,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
self.addChild(buttonText);
self.down = function () {
LK.getSound('Lever').play();
if (callback) callback();
};
return self;
});
var SkinButton = Container.expand(function (skinType, callback) {
var self = Container.call(this);
var buttonGraphics = self.attachAsset('skinButton', {
anchorX: 0.5,
anchorY: 0.5
});
self.graphics = buttonGraphics;
var skinPreview = self.attachAsset(skinType, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.6,
scaleY: 0.6
});
self.down = function () {
LK.getSound('Lever').play();
if (callback) callback();
};
return self;
});
var Turtle = Container.expand(function () {
var self = Container.call(this);
self.skinType = 'turtle_default';
self.originalSkin = 'turtle_default';
self.isJumping = false;
self.jumpSpeed = 0;
self.groundY = 0;
self.gravity = 2.4;
self.jumpPower = -90;
self.graphics = null;
self.setSkin = function (skinType) {
if (self.graphics) {
self.removeChild(self.graphics);
}
self.skinType = skinType;
self.originalSkin = skinType;
self.graphics = self.attachAsset(skinType, {
anchorX: 0.5,
anchorY: 1.0
});
// Set the container's dimensions to match the graphics
self.width = self.graphics.width;
self.height = self.graphics.height;
};
self.jump = function () {
if (!self.isJumping) {
self.isJumping = true;
self.jumpSpeed = self.jumpPower;
LK.getSound('jump').play();
// Change skin when jumping
var jumpSkin = self.originalSkin;
if (self.originalSkin === 'turtle_default') {
jumpSkin = 'turtle_jump';
} else if (self.originalSkin === 'turtle_suit') {
jumpSkin = 'turtle_suit_jump';
} else if (self.originalSkin === 'turtle_red') {
jumpSkin = 'turtle_suit_jump';
}
if (jumpSkin !== self.skinType) {
if (self.graphics) {
self.removeChild(self.graphics);
}
self.skinType = jumpSkin;
self.graphics = self.attachAsset(jumpSkin, {
anchorX: 0.5,
anchorY: 1.0
});
// Set the container's dimensions to match the graphics
self.width = self.graphics.width;
self.height = self.graphics.height;
}
}
};
self.update = function () {
if (self.isJumping) {
self.jumpSpeed += self.gravity;
self.y += self.jumpSpeed;
if (self.y >= self.groundY) {
self.y = self.groundY;
self.isJumping = false;
self.jumpSpeed = 0;
// Play landing sound
LK.getSound('Land').play();
// Create dust particles
createDustParticles(self.x, self.y);
// Restore original skin when landing
if (self.skinType !== self.originalSkin) {
if (self.graphics) {
self.removeChild(self.graphics);
}
self.skinType = self.originalSkin;
self.graphics = self.attachAsset(self.originalSkin, {
anchorX: 0.5,
anchorY: 1.0
});
// Set the container's dimensions to match the graphics
self.width = self.graphics.width;
self.height = self.graphics.height;
}
}
}
};
return self;
});
var TurtleBack = Container.expand(function () {
var self = Container.call(this);
self.speed = -24;
self.collected = false;
var backGraphics = self.attachAsset('turtle_back', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
});
// Set the container's dimensions to match the scaled graphics
self.width = backGraphics.width * 1.2;
self.height = backGraphics.height * 1.2;
self.update = function () {
self.x += self.speed;
// Add floating animation
self.y += Math.sin(LK.ticks * 0.1) * 0.5;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Game states
var gameState = 'menu'; // 'menu', 'playing', 'gameOver'
var currentSkin = storage.selectedSkin || 'turtle_default';
var currentLanguage = storage.selectedLanguage || 'English';
var languageMenuContainer = null;
var assistanceMode = storage.assistanceMode || false;
// Language translations
var translations = {
English: {
title: 'Turtle Run',
play: 'PLAY',
skins: 'SKINS',
back: 'BACK',
chooseSkin: 'Choose Skin',
selectLanguage: 'Select Language',
highScore: 'High Score: ',
assistanceMode: 'Bird Helper'
},
Deutsch: {
title: 'Turtlerun',
play: 'SPIELEN',
skins: 'SKINS',
back: 'ZURÜCK',
chooseSkin: 'Skin auswählen',
selectLanguage: 'Sprache auswählen',
highScore: 'Highscore: ',
assistanceMode: 'Vogel-Hilfe'
}
};
// Function to get translated text
function getText(key) {
return translations[currentLanguage][key] || translations['English'][key];
}
// Game elements
var turtle = null;
var boulders = [];
var turtleBacks = [];
var ground = null;
var scoreText = null;
var gameScore = 0;
var lastBoulderTime = 0;
var boulderInterval = 200; // milliseconds - much more frequent spawning
var minBoulderInterval = 40; // extremely aggressive minimum interval
var difficultyLevel = 1;
var speedMultiplier = 1.0;
// Menu elements
var menuContainer = null;
var skinMenuContainer = null;
// Initialize ground
ground = game.addChild(LK.getAsset('ground', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 2732 - 270
}));
// Initialize score display
scoreText = new Text2('0', {
size: 300,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
scoreText.y = 50;
function createMainMenu() {
menuContainer = game.addChild(new Container());
// Title
var titleText = new Text2(getText('title'), {
size: 360,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 2048 / 2;
titleText.y = 800;
menuContainer.addChild(titleText);
// Play button
var playButton = menuContainer.addChild(new MenuButton(getText('play'), function () {
startGame();
}));
playButton.x = 2048 / 2;
playButton.y = 1200;
// Skins button
var skinsButton = menuContainer.addChild(new MenuButton(getText('skins'), function () {
showSkinMenu();
}));
skinsButton.x = 2048 / 2;
skinsButton.y = 1500;
// Assistance mode button
var assistButton = menuContainer.addChild(new MenuButton(getText('assistanceMode'), function () {
assistanceMode = !assistanceMode;
storage.assistanceMode = assistanceMode;
// Update button appearance
var buttonGraphics = assistButton.children[0]; // Get the first child which is the button graphics
if (assistanceMode) {
buttonGraphics.tint = 0x90ee90;
} else {
buttonGraphics.tint = 0xFFFFFF;
}
}));
assistButton.x = 2048 / 2;
assistButton.y = 1800;
// Set initial appearance
var buttonGraphics = assistButton.children[0]; // Get the first child which is the button graphics
if (assistanceMode) {
buttonGraphics.tint = 0x90ee90;
}
// Gear icon for language selection
var gearIcon = menuContainer.addChild(LK.getAsset('gearIcon', {
anchorX: 0.5,
anchorY: 0.5
}));
gearIcon.x = 2048 - 150;
gearIcon.y = 150;
gearIcon.down = function () {
LK.getSound('Gear').play();
showLanguageMenu();
};
// High score display
var highScore = storage.highScore || 0;
var highScoreText = new Text2(getText('highScore') + highScore, {
size: 180,
fill: 0xFFFFFF
});
highScoreText.anchor.set(0.5, 0.5);
highScoreText.x = 2048 / 2;
highScoreText.y = 2300;
menuContainer.addChild(highScoreText);
}
function showSkinMenu() {
if (menuContainer) {
menuContainer.visible = false;
}
skinMenuContainer = game.addChild(new Container());
// Title
var titleText = new Text2(getText('chooseSkin'), {
size: 240,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 2048 / 2;
titleText.y = 600;
skinMenuContainer.addChild(titleText);
// Skin options
var skins = ['turtle_default', 'turtle_red'];
var startX = 2048 / 2 - 600;
var startY = 900;
for (var i = 0; i < skins.length; i++) {
var skinButton = skinMenuContainer.addChild(new SkinButton(skins[i], function (skin) {
return function () {
currentSkin = skin;
storage.selectedSkin = skin;
hideSkinMenu();
};
}(skins[i])));
skinButton.x = startX + i * 600;
skinButton.y = startY;
// Highlight selected skin
if (skins[i] === currentSkin) {
skinButton.graphics.tint = 0x90ee90;
}
}
// Back button
var backButton = skinMenuContainer.addChild(new MenuButton(getText('back'), function () {
hideSkinMenu();
}));
backButton.x = 2048 / 2;
backButton.y = 1400;
}
function hideSkinMenu() {
if (skinMenuContainer) {
skinMenuContainer.destroy();
skinMenuContainer = null;
}
if (menuContainer) {
menuContainer.visible = true;
}
}
function showLanguageMenu() {
if (menuContainer) {
menuContainer.visible = false;
}
languageMenuContainer = game.addChild(new Container());
// Title
var titleText = new Text2(getText('selectLanguage'), {
size: 240,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 2048 / 2;
titleText.y = 800;
languageMenuContainer.addChild(titleText);
// Language options
var languages = ['English', 'Deutsch'];
var startY = 1200;
for (var i = 0; i < languages.length; i++) {
var langButton = languageMenuContainer.addChild(new LanguageButton(languages[i], function (lang) {
return function () {
currentLanguage = lang;
storage.selectedLanguage = lang;
hideLanguageMenu();
// Refresh main menu with new language
if (menuContainer) {
menuContainer.destroy();
menuContainer = null;
}
createMainMenu();
};
}(languages[i])));
langButton.x = 2048 / 2;
langButton.y = startY + i * 300;
// Highlight selected language
if (languages[i] === currentLanguage) {
langButton.graphics.tint = 0x90ee90;
}
}
// Back button
var backButton = languageMenuContainer.addChild(new MenuButton(getText('back'), function () {
hideLanguageMenu();
}));
backButton.x = 2048 / 2;
backButton.y = 1800;
}
function hideLanguageMenu() {
if (languageMenuContainer) {
languageMenuContainer.destroy();
languageMenuContainer = null;
}
if (menuContainer) {
menuContainer.visible = true;
}
}
function startGame() {
gameState = 'playing';
gameScore = 0;
lastBoulderTime = 0;
boulderInterval = 200; // much more frequent spawning
// Hide menu
if (menuContainer) {
menuContainer.visible = false;
}
// Create turtle
turtle = game.addChild(new Turtle());
turtle.setSkin(currentSkin);
turtle.x = 300;
turtle.y = ground.y;
turtle.groundY = ground.y;
// Clean up boulders
for (var i = boulders.length - 1; i >= 0; i--) {
boulders[i].destroy();
}
boulders = [];
// Clean up turtle backs
for (var i = turtleBacks.length - 1; i >= 0; i--) {
turtleBacks[i].destroy();
}
turtleBacks = [];
// Clear existing turtle backs
for (var i = turtleBacks.length - 1; i >= 0; i--) {
turtleBacks[i].destroy();
}
turtleBacks = [];
// Update score display
scoreText.setText(gameScore);
}
function gameOver() {
actualGameOver();
}
function actualGameOver() {
gameState = 'gameOver';
// Update high score
if (gameScore > (storage.highScore || 0)) {
storage.highScore = gameScore;
}
// Play hit sound
LK.getSound('hit').play();
// Flash screen red
LK.effects.flashScreen(0xff0000, 500);
// Show game over after delay
LK.setTimeout(function () {
LK.showGameOver();
// Reset everything after game over is shown
resetGame();
}, 500);
}
function resetGame() {
gameState = 'menu';
// Reset game variables
gameScore = 0;
lastBoulderTime = 0;
boulderInterval = 200;
difficultyLevel = 1;
speedMultiplier = 1.0;
// Clean up turtle
if (turtle) {
turtle.destroy();
turtle = null;
}
// Clean up boulders
for (var i = boulders.length - 1; i >= 0; i--) {
boulders[i].destroy();
}
boulders = [];
// Reset score display
scoreText.setText('0');
// Show menu
if (menuContainer) {
menuContainer.visible = true;
} else {
createMainMenu();
}
}
function createDustParticles(x, y) {
for (var i = 0; i < 8; i++) {
var particle = game.addChild(LK.getAsset('sandParticle', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.5 + Math.random() * 0.8,
scaleY: 0.5 + Math.random() * 0.8,
x: x + (Math.random() - 0.5) * 120,
y: y - 10,
alpha: 0.8
}));
// Create flying sand effect with arc trajectory
var targetY = y - Math.random() * 150 - 80;
var targetX = particle.x + (Math.random() - 0.5) * 200;
var midY = y - Math.random() * 80 - 40;
// First phase: launch upward with arc
tween(particle, {
y: midY,
x: targetX * 0.6,
alpha: 0.9
}, {
duration: 200,
easing: tween.easeOut,
onFinish: function onFinish() {
// Second phase: fall down with gravity
tween(particle, {
y: targetY,
x: targetX,
alpha: 0
}, {
duration: 600,
easing: tween.easeIn,
onFinish: function onFinish() {
particle.destroy();
}
});
}
});
}
}
// Touch input for jumping
game.down = function (x, y, obj) {
if (gameState === 'playing' && turtle) {
turtle.jump();
}
};
// Main game loop
game.update = function () {
if (gameState === 'playing') {
// Spawn boulders
if (LK.ticks - lastBoulderTime > boulderInterval) {
var boulder = game.addChild(new Boulder());
boulder.x = 2048 + 100;
boulder.y = ground.y + 90;
boulder.speed = boulder.speed * speedMultiplier; // Apply speed multiplier
boulder.assistanceTriggered = false; // Initialize assistance flag
boulders.push(boulder);
lastBoulderTime = LK.ticks;
// Progressive difficulty system
var newDifficultyLevel = Math.floor(gameScore / 5) + 1;
if (newDifficultyLevel > difficultyLevel) {
difficultyLevel = newDifficultyLevel;
speedMultiplier = 1.0 + (difficultyLevel - 1) * 0.3; // 30% speed increase per level
}
// Increase spawn rate more aggressively
if (boulderInterval > minBoulderInterval) {
var reduction = Math.max(8, Math.floor(difficultyLevel * 3)); // More aggressive reduction
boulderInterval -= reduction;
}
}
// Update boulders and check collisions
for (var i = boulders.length - 1; i >= 0; i--) {
var boulder = boulders[i];
// Remove off-screen boulders
if (boulder.x < -100) {
boulder.destroy();
boulders.splice(i, 1);
continue;
}
// Check if boulder was passed for scoring
if (!boulder.passed && boulder.x < turtle.x) {
boulder.passed = true;
gameScore++;
scoreText.setText(gameScore);
}
// Assistance mode: Play bird sound when player should jump
if (assistanceMode && !boulder.assistanceTriggered) {
var jumpDistance = 350; // Distance at which player should jump
if (boulder.x <= turtle.x + jumpDistance && boulder.x > turtle.x + jumpDistance - 50) {
if (!turtle.isJumping) {
LK.getSound('bird').play();
boulder.assistanceTriggered = true;
}
}
}
// Check collision with turtle
if (turtle && turtle.intersects(boulder)) {
gameOver();
return;
}
}
}
};
// Initialize main menu
createMainMenu(); ===================================================================
--- original.js
+++ change.js
@@ -286,19 +286,21 @@
var assistButton = menuContainer.addChild(new MenuButton(getText('assistanceMode'), function () {
assistanceMode = !assistanceMode;
storage.assistanceMode = assistanceMode;
// Update button appearance
+ var buttonGraphics = assistButton.children[0]; // Get the first child which is the button graphics
if (assistanceMode) {
- assistButton.graphics.tint = 0x90ee90;
+ buttonGraphics.tint = 0x90ee90;
} else {
- assistButton.graphics.tint = 0xFFFFFF;
+ buttonGraphics.tint = 0xFFFFFF;
}
}));
assistButton.x = 2048 / 2;
assistButton.y = 1800;
// Set initial appearance
+ var buttonGraphics = assistButton.children[0]; // Get the first child which is the button graphics
if (assistanceMode) {
- assistButton.graphics.tint = 0x90ee90;
+ buttonGraphics.tint = 0x90ee90;
}
// Gear icon for language selection
var gearIcon = menuContainer.addChild(LK.getAsset('gearIcon', {
anchorX: 0.5,
The sand ground of some sort of beach. In-Game asset. 2d. High contrast. No shadows
A small world map. In-Game asset. 2d. High contrast. No shadows
I land turtle with googly eyes wearing a suit and looking to the right. In-Game asset. 2d. High contrast. No shadows
Irregular old land turtle wearing a suit with a red tie in a jumping position. In-Game asset. 2d. High contrast. No shadows
A settings button I can without any background it’s a gear. In-Game asset. 2d. High contrast. No shadows
The beach of a tropical island, though the ocean is not to be seen in the background there is just a vibrant jungle. In-Game asset. 2d. High contrast. No shadows
A lush and vibrant jungle. In-Game asset. 2d. High contrast. No shadows
A area filled with lava and a sky two it’s still pretty vibrant but make sure it can loop without looking bad. In-Game asset. 2d. High contrast. No shadows
Junglee grass ground which is a bit overgrown. In-Game asset. 2d. High contrast. No shadows
Volcanic rocks for a ground. In-Game asset. 2d. High contrast. No shadows
I completely dark red square with some orange parts more in the middle representing a lava block. In-Game asset. 2d. High contrast. No shadows
A crazy almost neon green plant that can grow both on in the jungles and on beaches. In-Game asset. 2d. High contrast. No shadows
A golden land turtle with googly eyes looking to the right. In-Game asset. 2d. High contrast. No shadows
A golden turtle with googly eyes in the jumping position. In-Game asset. 2d. High contrast. No shadows
A pile of burn ash. In-Game asset. 2d. High contrast. No shadows
A trophy without any background. In-Game asset. 2d. High contrast. No shadows
A sterile space station background But it’s still futuristic and definitely seems like it’s made out of metal. In-Game asset. 2d. High contrast. No shadows
A metal plate working as the ground for a space station. In-Game asset. 2d. High contrast. No shadows
A swampy background with mangrove trees and overall overgrown but lush aesthetics. In-Game asset. 2d. High contrast. No shadows
A muddy swamp ground. In-Game asset. 2d. High contrast. No shadows
A background, this picture of a flash eating plant Not eating flesh at least not yet. In-Game asset. 2d. High contrast. No shadows
The street ground of a city. In-Game asset. 2d. High contrast. No shadows
A white car. In-Game asset. 2d. High contrast. No shadows
The skyline of a modern city. In-Game asset. 2d. High contrast. No shadows
Evening image of a mountain range easily looping. In-Game asset. 2d. High contrast. No shadows
The tropical ocean with the shore of an island in the far background easily looping itself. In-Game asset. 2d. High contrast. No shadows
A pirate. In-Game asset. 2d. High contrast. No shadows
The wooden floor of a pirate ship. In-Game asset. 2d. High contrast. No shadows
The pillar of an ancient jungle temple. In-Game asset. 2d. High contrast. No shadows
Ancient trap able to dispense arrows to PS it’s target. In-Game asset. 2d. High contrast. No shadows
The ground for an ancient jungle temple. In-Game asset. 2d. High contrast. No shadows
The background for the inside of an ancient jungle temple. In-Game asset. 2d. High contrast. No shadows
Fully soaked and wet grass and the dirt for the ground element oven to the jump and run. In-Game asset. 2d. High contrast. No shadows
Just a tree. In-Game asset. 2d. High contrast. No shadows
An open space of grass with dark rainy clouds up above Easily looper. In-Game asset. 2d. High contrast. No shadows
hit
Sound effect
jump
Sound effect
Map
Sound effect
Lever
Sound effect
Gear
Sound effect
Land
Sound effect
Secret
Sound effect
celebrate
Sound effect
Started
Sound effect
landing_jungle
Sound effect
landing_volcano
Sound effect
hit_lava_geyser
Sound effect
hit_palm_tree
Sound effect
trophy_bronze
Sound effect
trophy_gold
Sound effect
trophy_silver
Sound effect
Beach
Music
Jungle
Music
Volcano
Music
Warning
Sound effect
Alarm
Sound effect
Memories
Sound effect
Trophy
Sound effect
hit_laser_wall
Sound effect
Space
Music
landing_space
Sound effect
landing_swamp
Sound effect
hit_carnivorous_plant
Sound effect
Swamp
Music
City
Music
hit_car
Sound effect
landing_city
Sound effect
landing_silhouette_mountain
Sound effect
hit_dripstone
Sound effect
hit_pirate
Sound effect
pirate_landing
Sound effect
hit_arrow_trap
Sound effect
landing_ancient_temple
Sound effect
landing_thunderplanes
Sound effect
hit_thundertree
Sound effect
Thunderplanes
Music
thunder
Sound effect