User prompt
debe pestañar cada 2 segundos
User prompt
hagamoslo que cada tantos segundos cierre sus ojos ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
las abejas no deben tocar nunca su cabeza estando en el piso
User prompt
haz que tenga doble salto al hacer doble click ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
cuando saltaa me gustaria que el personaje gire un poco paraa atras y cuando cae se haga para adelante y en el piso quede en su posicion original para darle dinamismo ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
quisiera que el fondo sea una imagen y cuando pasen los 1000 puntos se haga de noche y tenga una transicion y a los proximos mil puntos de dia y asi susesivamente ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
el salto esta quedando corto debera ser mas alto para que llegue adapta todo
User prompt
Ensure the game elements (character, obstacles, ground) are scaled to occupy a significant portion of the screen width and height, providing a clear and impactful visual presence for hypercasual play on mobile devices.
Code edit (1 edits merged)
Please save this source code
User prompt
Fluffball's Endless Adventure
Initial prompt
¡Absolutamente! Aquí tienes un prompt extremadamente detallado, diseñado para un generador de juegos de IA (o para ser tu plan maestro), cubriendo todos los aspectos esenciales para un juego hipercasual genial, adorable y adictivo, al estilo del dinosaurio de Google pero con tu toque único. Prompt de Diseño de Juego: "Aventura Adorable Sin Fin" (The Adorable Endless Journey) [Start Game Design Prompt] Game Title: The Adorable Endless Journey (o un nombre similar como "Fluffball Dash", "Bloop's Big Run") Genre: Hypercasual Endless Runner (Side-Scrolling) Core Concept: A charming, visually rich, and highly addictive endless runner. The player controls an adorable, auto-running character, navigating an increasingly challenging world by performing precise jumps and ducks to avoid cute obstacles. The goal is to achieve the highest possible score by surviving the longest distance. Art Style & Aesthetics: Primary Style: High-quality, vibrant, and clean 2D digital illustration / cartoon art, with a touch of pixel art influence for crispness in movement, but overall a modern, polished look. Aesthetic Tone: Whimsical, heartwarming, joyful, and slightly goofy. Emphasizes cuteness and charm over complexity. Color Palette: Bright, pastel, and saturated colors. Focus on harmonious combinations (e.g., candy pinks, sky blues, mint greens, sunny yellows). Character Design: Main Character: A unique, custom-designed, spherical or pill-shaped creature (e.g., a "Fluffball," "Bloop," or a tiny round animal like a "Pudgy Panda Cub"). Must be incredibly cute and instantly lovable, with expressive eyes and simple, fluid animations. Animations: Smooth, distinct run cycle, an exaggerated arc jump (with a momentary hang at the apex), a quick, comical squish/roll for ducking, and a charming, non-frustrating "stumble/poof" animation for Game Over. Obstacle Design: Visuals: Reimagined, non-threatening obstacles that are visually amusing. Examples: "Wobbly Jelly Mounds" (requiring jumps), "Low-Flying Gummy Bees" (requiring ducks), "Grumpy Mushroom Towers" (varied heights), "Spinning Lollipop Gates" (requiring precise timing). Animation: Simple, cyclical animations (e.g., jelly wobbles, bees flap, lollipops spin). Looping Background: Visual Richness: Multi-layered parallax scrolling background to create depth. Layers should move at different speeds. Themes: Transition between visually distinct, charming themes (e.g., "Candy Cloud Kingdom," "Sparkle Forest," "Gummy Desert Oasis"). Each theme features unique, adorable environmental elements (e.g., ice cream mountains, marshmallow clouds, candy cane trees, giant smiling flowers, twinkling stars). Seamless Loop: The background segments must seamlessly loop, ensuring no visible seams or jarring transitions. The environment should feel endless and continuously evolving. User Interface (UI): Clean & Minimalist: Non-intrusive UI elements that complement the art style. Score Display: Large, clear, and cute numeric font for the current score at the top center/right. High Score Indicator: Subtle "HI" alongside the highest score achieved. Game Over Screen: Clean layout with "Game Over" message, Final Score, High Score, and prominent "Retry" and "Main Menu" buttons. Menu Buttons: Large, rounded, soft-colored buttons with clear icons/text. Gameplay Mechanics (Core Loop): Auto-Running: The main character continuously runs from left to right across the screen. Jump: Player taps anywhere on the screen (or presses spacebar on keyboard) to make the character jump. Jump height and distance are fixed and optimized for clearing obstacles. Duck/Crouch: Player taps and holds down on the screen (or presses down arrow key on keyboard) to make the character duck/crouch. Releasing the tap/key returns the character to a running state. Obstacle Avoidance: Player must time jumps and ducks to avoid colliding with various cute obstacles. Collision results in Game Over. Scoring: Score increases continuously based on distance run (e.g., 1 point per pixel or fixed increment). Perfect Pass Bonus: Award bonus points (e.g., +50 points) for "perfectly" clearing an obstacle (e.g., jumping/ducking at the last possible moment without collision). Visually indicate with a small "PERFECT!" pop-up. Collectible Items (Optional, but adds depth): Sparkle Gems: Small, glittering objects appearing occasionally. Collecting them grants bonus points and a small burst of positive visual/sound effects. Rainbow Power-up: Rare item granting temporary invincibility or a speed boost, with a vibrant visual effect. Progression & Difficulty: Gradual Speed Increase: The character's running speed (and thus obstacle frequency) gradually increases over time, making the game progressively more challenging. Obstacle Variety: New obstacle types and increasingly complex patterns (e.g., double jumps, jump-then-duck sequences) are introduced as the game speed increases. Theme Transitions: After a certain score threshold or time, the background theme should subtly transition to a new one, offering visual refreshment. Sound Design: Background Music (BGM): Style: Upbeat, cheerful, whimsical, and highly loopable instrumental track. Utilizes light orchestral instruments (flute, pizzicato strings), bells, xylophone, and a simple, catchy melody. Dynamic: Music should subtly increase in tempo/intensity as the game speed increases, then seamlessly return to a base loop. Sound Effects (SFX): Jump: A bouncy "boing!" or a light, airy "whoosh." Duck: A cute "squish" or a quick "roll" sound. Collision: A gentle, comical "bonk," "thump," or "swoosh-fall" sound – must not be harsh or frustrating. Perfect Pass: A crisp "ding!" or "chime" sound. Collectible: A sparkling "bling" or "twinkle." Game Over: A short, gentle "wah-wah-waaah" or a soft, sighing sound. Volume Control: Simple toggle for Music On/Off and SFX On/Off in settings. Adictiveness Factors: Simple & Intuitive Controls: One-touch/one-button gameplay for instant pick-up-and-play. Instant Replayability: Quick "Retry" after Game Over encourages immediate re-engagement. High Score Chase: Fundamental motivation for repeated play. Satisfying Feedback: Visual and audio cues for successful jumps, ducks, and combos. Charming Aesthetic: Cute characters and vibrant worlds create an emotional connection. Unlocking Content: Potential for unlocking new adorable characters or background themes with high scores/in-game currency. Monetization Strategy (Standard Hypercasual): Rewarded Video Ads: "Get a second chance" after Game Over (e.g., continue from current score). Double final score. Unlock cosmetic items (characters/themes) without earning currency. Interstitial Ads: Placed sparingly between game sessions (e.g., every 3-5 runs) to minimize disruption. In-App Purchase (IAP): "Remove All Ads" option for a one-time purchase. Soft Currency: Earned passively through distance run, used to unlock new characters or background themes. Key Performance Indicators (KPIs): Session Length: Aim for short, highly replayable sessions (1-3 minutes average). Retention: High D1, D7, D30 retention driven by addictive core loop, charming visuals, and progression. Ad Impressions per User / eCPM: Track ad effectiveness. Playtime: Total time spent in game by users. [End Game Design Prompt]
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Fluffball = Container.expand(function () {
var self = Container.call(this);
var fluffballGraphics = self.attachAsset('fluffball', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityY = 0;
self.isJumping = false;
self.isDucking = false;
self.groundY = 0;
self.jumpPower = -25;
self.gravity = 0.8;
self.duckScale = 0.6;
self.normalScale = 1.0;
self.jump = function () {
if (!self.isJumping) {
self.velocityY = self.jumpPower;
self.isJumping = true;
LK.getSound('jump').play();
}
};
self.startDuck = function () {
if (!self.isJumping) {
self.isDucking = true;
tween(fluffballGraphics, {
scaleY: self.duckScale
}, {
duration: 100
});
}
};
self.stopDuck = function () {
self.isDucking = false;
tween(fluffballGraphics, {
scaleY: self.normalScale
}, {
duration: 100
});
};
self.update = function () {
if (self.isJumping) {
self.velocityY += self.gravity;
self.y += self.velocityY;
if (self.y >= self.groundY) {
self.y = self.groundY;
self.velocityY = 0;
self.isJumping = false;
}
}
// Bounce animation
if (!self.isJumping && LK.ticks % 30 == 0) {
tween(fluffballGraphics, {
scaleY: 1.1
}, {
duration: 150,
easing: tween.easeOut
});
tween(fluffballGraphics, {
scaleY: 1.0
}, {
duration: 150,
easing: tween.easeIn
});
}
};
return self;
});
var GummyBee = Container.expand(function () {
var self = Container.call(this);
var beeGraphics = self.attachAsset('gummyBee', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 0;
self.passed = false;
self.bobOffset = Math.random() * Math.PI * 2;
self.update = function () {
self.x -= self.speed;
// Flying animation
self.y += Math.sin(LK.ticks * 0.15 + self.bobOffset) * 1.5;
beeGraphics.rotation = Math.sin(LK.ticks * 0.1) * 0.2;
};
return self;
});
var JellyObstacle = Container.expand(function () {
var self = Container.call(this);
var jellyGraphics = self.attachAsset('jellyObstacle', {
anchorX: 0.5,
anchorY: 1.0
});
self.speed = 0;
self.passed = false;
self.update = function () {
self.x -= self.speed;
// Wobble animation
jellyGraphics.scaleX = 1 + Math.sin(LK.ticks * 0.1) * 0.1;
jellyGraphics.scaleY = 1 + Math.cos(LK.ticks * 0.08) * 0.05;
};
return self;
});
var SparkleGem = Container.expand(function () {
var self = Container.call(this);
var gemGraphics = self.attachAsset('sparkleGem', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 0;
self.collected = false;
self.update = function () {
self.x -= self.speed;
// Sparkle animation
gemGraphics.rotation += 0.1;
gemGraphics.scaleX = 1 + Math.sin(LK.ticks * 0.2) * 0.3;
gemGraphics.scaleY = 1 + Math.cos(LK.ticks * 0.2) * 0.3;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87ceeb
});
/****
* Game Code
****/
// Game variables
var gameSpeed = 6;
var speedIncrement = 0.002;
var maxSpeed = 12;
var isGameRunning = true;
var perfectPassBonus = 10;
var gemValue = 5;
// Ground setup
var groundY = 2732 - 300;
var ground = game.addChild(LK.getAsset('ground', {
anchorX: 0,
anchorY: 0,
x: 0,
y: groundY
}));
// Player setup
var fluffball = game.addChild(new Fluffball());
fluffball.x = 300;
fluffball.y = groundY - 80;
fluffball.groundY = groundY - 80;
// Arrays for game objects
var jellyObstacles = [];
var gummyBees = [];
var sparkleGems = [];
// Timers for spawning
var obstacleSpawnTimer = 0;
var gemSpawnTimer = 0;
// Input tracking
var isHolding = false;
// Score display
var scoreTxt = new Text2('0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
scoreTxt.y = 100;
// Speed display
var speedTxt = new Text2('SPEED: 1x', {
size: 40,
fill: 0xFFFFFF
});
speedTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(speedTxt);
speedTxt.x = -50;
speedTxt.y = 50;
// Functions
function spawnJellyObstacle() {
var obstacle = game.addChild(new JellyObstacle());
obstacle.x = 2048 + 100;
obstacle.y = groundY;
obstacle.speed = gameSpeed;
jellyObstacles.push(obstacle);
}
function spawnGummyBee() {
var bee = game.addChild(new GummyBee());
bee.x = 2048 + 100;
bee.y = groundY - 200 - Math.random() * 150;
bee.speed = gameSpeed;
gummyBees.push(bee);
}
function spawnSparkleGem() {
var gem = game.addChild(new SparkleGem());
gem.x = 2048 + 100;
gem.y = groundY - 120 - Math.random() * 300;
gem.speed = gameSpeed;
sparkleGems.push(gem);
}
function checkCollisions() {
// Check jelly obstacles
for (var i = jellyObstacles.length - 1; i >= 0; i--) {
var obstacle = jellyObstacles[i];
if (fluffball.intersects(obstacle)) {
// Game over
LK.getSound('hit').play();
LK.effects.flashScreen(0xff0000, 500);
LK.showGameOver();
return;
}
// Perfect pass bonus
if (!obstacle.passed && obstacle.x < fluffball.x - 50) {
obstacle.passed = true;
LK.setScore(LK.getScore() + perfectPassBonus);
LK.effects.flashObject(fluffball, 0xffff00, 300);
}
// Remove off-screen obstacles
if (obstacle.x < -100) {
obstacle.destroy();
jellyObstacles.splice(i, 1);
}
}
// Check gummy bees
for (var i = gummyBees.length - 1; i >= 0; i--) {
var bee = gummyBees[i];
if (fluffball.intersects(bee)) {
// Game over
LK.getSound('hit').play();
LK.effects.flashScreen(0xff0000, 500);
LK.showGameOver();
return;
}
// Perfect pass bonus
if (!bee.passed && bee.x < fluffball.x - 50) {
bee.passed = true;
LK.setScore(LK.getScore() + perfectPassBonus);
LK.effects.flashObject(fluffball, 0xffff00, 300);
}
// Remove off-screen bees
if (bee.x < -100) {
bee.destroy();
gummyBees.splice(i, 1);
}
}
// Check sparkle gems
for (var i = sparkleGems.length - 1; i >= 0; i--) {
var gem = sparkleGems[i];
if (fluffball.intersects(gem) && !gem.collected) {
gem.collected = true;
LK.setScore(LK.getScore() + gemValue);
LK.getSound('collect').play();
LK.effects.flashObject(gem, 0xffffff, 200);
// Remove gem with tween
tween(gem, {
alpha: 0,
scaleX: 2,
scaleY: 2
}, {
duration: 200,
onFinish: function onFinish() {
gem.destroy();
}
});
sparkleGems.splice(i, 1);
} else if (gem.x < -100) {
gem.destroy();
sparkleGems.splice(i, 1);
}
}
}
// Input handlers
game.down = function (x, y, obj) {
if (isGameRunning) {
fluffball.jump();
isHolding = true;
// Start ducking after a short delay if still holding
LK.setTimeout(function () {
if (isHolding) {
fluffball.startDuck();
}
}, 200);
}
};
game.up = function (x, y, obj) {
isHolding = false;
fluffball.stopDuck();
};
// Main game loop
game.update = function () {
if (!isGameRunning) return;
// Increase speed gradually
if (gameSpeed < maxSpeed) {
gameSpeed += speedIncrement;
}
// Update speed display
var speedMultiplier = Math.floor(gameSpeed / 6 * 10) / 10;
speedTxt.setText('SPEED: ' + speedMultiplier + 'x');
// Update score display
scoreTxt.setText(LK.getScore().toString());
// Spawn obstacles
obstacleSpawnTimer++;
if (obstacleSpawnTimer > 120 - gameSpeed * 5) {
obstacleSpawnTimer = 0;
if (Math.random() < 0.6) {
spawnJellyObstacle();
} else {
spawnGummyBee();
}
}
// Spawn gems
gemSpawnTimer++;
if (gemSpawnTimer > 180) {
gemSpawnTimer = 0;
if (Math.random() < 0.4) {
spawnSparkleGem();
}
}
// Update all objects speeds
for (var i = 0; i < jellyObstacles.length; i++) {
jellyObstacles[i].speed = gameSpeed;
}
for (var i = 0; i < gummyBees.length; i++) {
gummyBees[i].speed = gameSpeed;
}
for (var i = 0; i < sparkleGems.length; i++) {
sparkleGems[i].speed = gameSpeed;
}
// Check collisions
checkCollisions();
// Background color transition based on score
var score = LK.getScore();
if (score > 200) {
game.setBackgroundColor(0x9370db); // Purple for Sparkle Forest
} else if (score > 100) {
game.setBackgroundColor(0xffd700); // Gold for Gummy Desert
} else {
game.setBackgroundColor(0x87ceeb); // Sky blue for Candy Cloud Kingdom
}
};
// Start background music
LK.playMusic('backgroundMusic'); ===================================================================
--- original.js
+++ change.js
@@ -15,9 +15,9 @@
self.velocityY = 0;
self.isJumping = false;
self.isDucking = false;
self.groundY = 0;
- self.jumpPower = -18;
+ self.jumpPower = -25;
self.gravity = 0.8;
self.duckScale = 0.6;
self.normalScale = 1.0;
self.jump = function () {
Chibi style, incredibly cute, perfectly round, puffy creature. **It has no visible legs or limbs, appearing as a soft, adorable ball with a friendly, expressive face (big, innocent eyes and a small smile).** Implied motion is a gentle bounce or glide. Predominant color: light pink with subtle fluffy texture. Minimalist, clean lines, vibrant colors. Solid light blue background. Mobile game character asset, running/gliding animation frame.. In-Game asset. 2d. High contrast. No shadows
ojos cerrados
Kawaii, cute, pink logo for 'Fluffball's Endless Adventure'. The design should feature a whimsical, bubbly, and rounded font for the text, with soft, sweet aesthetics and subtle playful elements integrated into the typography itself (e.g., tiny sparkles, soft gradients, or a slight bouncy feel to the letters). No character or drawing should be included, only the stylized text.. In-Game asset. 2d. High contrast. No shadows
nube blanca sin bordes minimalista, silueta unica y original. In-Game asset. 2d. High contrast. No shadows
circulo blanco sin bordes. In-Game asset. 2d. High contrast. No shadows
kawaii shadown bat de lado. In-Game asset. 2d. High contrast. No shadows
pink cute rec tangle kawaii. In-Game asset. 2d. High contrast. No shadows
a single simple kawaii tree without outlines and no face, for a non-distracting game background. In-Game asset. 2d. High contrast. No shadows
a single simple kawaii house without outlines and no face, for a non-distracting game background. In-Game asset. 2d. High contrast. No shadows
a single simple kawaii house without outlines and no face, for a non-distracting game background. In-Game asset. 2d. High contrast. No shadows
a single simple kawaii house without outlines and no face, for a non-distracting game background. In-Game asset. 2d. High contrast. No shadows