User prompt
make them more opaqe
User prompt
the number buttons on the keypad arent visible on the keypad
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading '0')' in or related to this line: 'var bg = button.children[0]; // Get the button background' Line Number: 57
User prompt
make the keypad interactable and add vidible numbers on the keypad that you can click
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'toString')' in or related to this line: 'self.currentCode += digit.toString();' Line Number: 152
User prompt
move the keypad to the top-right corner with numbers showing on the keypad
User prompt
add a keypad in the top corner of the screen and hide a code in the speakers dialouge "1197"
User prompt
make him talk a little slower
User prompt
move the guys eyes down just a little and a teeny-tiny bit to the center of his face
User prompt
make the guys dialouge longer
User prompt
add A skip button to skip dialouge
User prompt
make the car crash image go to front layer
User prompt
make the blurry car image an asset
User prompt
make a shadow figure give a dialouge speech like "Hello, do you remember where you were before the incident *shows blurry image of a persons prespective of driving a car* and now, you're here. And now you must complete 35 levels of simon says to leave this place. Good luck. *shows devious smile before game starts*"
User prompt
make the font creepier
Code edit (1 edits merged)
Please save this source code
User prompt
Sinister Simon
Initial prompt
Can you make a horror game about simon says
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var SimonButton = Container.expand(function (color, sound, id) { var self = Container.call(this); self.id = id; self.isActive = false; self.sound = sound; var buttonGraphics = self.attachAsset('simonButton', { anchorX: 0.5, anchorY: 0.5 }); var activeButtonAsset = 'simonButton' + color; var activeButtonGraphics = self.attachAsset(activeButtonAsset, { anchorX: 0.5, anchorY: 0.5, alpha: 0 }); self.activate = function () { if (self.isActive) { return; } self.isActive = true; tween(activeButtonGraphics, { alpha: 1 }, { duration: 300, onFinish: function onFinish() { LK.getSound(self.sound).play(); tween(activeButtonGraphics, { alpha: 0 }, { duration: 300, onFinish: function onFinish() { self.isActive = false; } }); } }); }; self.down = function (x, y, obj) { if (gameState === STATE_PLAYER_TURN && !self.isActive && !waitingForInput) { self.activate(); playerSequence.push(self.id); checkPlayerInput(); } }; return self; }); var SinisterEntity = Container.expand(function () { var self = Container.call(this); // Face base var face = self.attachAsset('entityFace', { anchorX: 0.5, anchorY: 0.5 }); // Left eye var leftEye = self.attachAsset('entityEye', { anchorX: 0.5, anchorY: 0.5, x: -75, y: -50 }); // Right eye var rightEye = self.attachAsset('entityEye', { anchorX: 0.5, anchorY: 0.5, x: 75, y: -50 }); // Mouth var mouth = self.attachAsset('entityMouth', { anchorX: 0.5, anchorY: 0.5, y: 80 }); self.alpha = 0; self.appear = function (intensity) { self.alpha = 0; // Scale intensity from 0-10 to meaningful values var duration = Math.max(1000 - intensity * 80, 200); var scaleFactor = 1 + intensity * 0.1; tween(self, { alpha: 1 }, { duration: duration, easing: tween.easeIn, onFinish: function onFinish() { // Make eyes look at player tween(leftEye, { scaleX: 1.5, scaleY: 1.5 }, { duration: 300, easing: tween.easeOut }); tween(rightEye, { scaleX: 1.5, scaleY: 1.5 }, { duration: 300, easing: tween.easeOut }); // Make mouth grow wider tween(mouth, { scaleX: 1.8, scaleY: 0.8 }, { duration: 500, easing: tween.easeOut, onFinish: function onFinish() { if (intensity > 5) { LK.getSound('creepyLaugh').play(); } LK.setTimeout(function () { self.disappear(); }, 1000); } }); } }); }; self.disappear = function () { tween(leftEye, { scaleX: 1, scaleY: 1 }, { duration: 300 }); tween(rightEye, { scaleX: 1, scaleY: 1 }, { duration: 300 }); tween(mouth, { scaleX: 1, scaleY: 1 }, { duration: 300 }); tween(self, { alpha: 0 }, { duration: 500, easing: tween.easeOut }); }; self.jumpscare = function () { self.alpha = 0; self.scale.set(0.1); tween(self, { alpha: 1, scaleX: 3, scaleY: 3 }, { duration: 200, easing: tween.easeOut, onFinish: function onFinish() { LK.setTimeout(function () { tween(self, { alpha: 0 }, { duration: 400, easing: tween.easeIn }); }, 200); } }); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Constants var STATE_INTRO = 0; var STATE_SIMON_TURN = 1; var STATE_PLAYER_TURN = 2; var STATE_GAME_OVER = 3; var COLOR_RED = 'Red'; var COLOR_GREEN = 'Green'; var COLOR_BLUE = 'Blue'; var COLOR_YELLOW = 'Yellow'; // Game variables var gameState = STATE_INTRO; var level = 1; var sequence = []; var playerSequence = []; var sequenceIndex = 0; var waitingForInput = false; var horrorIntensity = 0; var highScore = storage.highScore || 0; // Overlay for horror effects var overlay = game.addChild(LK.getAsset('backgroundOverlay', { anchorX: 0, anchorY: 0, alpha: 0 })); // Create Simon buttons var buttonSize = 400; var spacing = 50; var totalWidth = buttonSize * 2 + spacing; var totalHeight = buttonSize * 2 + spacing; var startX = (2048 - totalWidth) / 2 + buttonSize / 2; var startY = (2732 - totalHeight) / 2 + buttonSize / 2; var buttons = []; var buttonRed = game.addChild(new SimonButton(COLOR_RED, 'buttonSound1', 0)); buttonRed.x = startX; buttonRed.y = startY; buttons.push(buttonRed); var buttonGreen = game.addChild(new SimonButton(COLOR_GREEN, 'buttonSound2', 1)); buttonGreen.x = startX + buttonSize + spacing; buttonGreen.y = startY; buttons.push(buttonGreen); var buttonBlue = game.addChild(new SimonButton(COLOR_BLUE, 'buttonSound3', 2)); buttonBlue.x = startX; buttonBlue.y = startY + buttonSize + spacing; buttons.push(buttonBlue); var buttonYellow = game.addChild(new SimonButton(COLOR_YELLOW, 'buttonSound4', 3)); buttonYellow.x = startX + buttonSize + spacing; buttonYellow.y = startY + buttonSize + spacing; buttons.push(buttonYellow); // Create the sinister entity var entity = game.addChild(new SinisterEntity()); entity.x = 2048 / 2; entity.y = 2732 / 2; // Level text var levelText = new Text2('Level: 1', { size: 80, fill: 0xFFFFFF }); levelText.anchor.set(0.5, 0); LK.gui.top.addChild(levelText); levelText.y = 100; // Score text var scoreText = new Text2('Score: 0', { size: 80, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); scoreText.y = 200; // High score text var highScoreText = new Text2('High Score: ' + highScore, { size: 80, fill: 0xFFFFFF }); highScoreText.anchor.set(0.5, 0); LK.gui.top.addChild(highScoreText); highScoreText.y = 300; // Instructions text var instructionsText = new Text2('Watch the pattern, then repeat it', { size: 60, fill: 0xFFFFFF }); instructionsText.anchor.set(0.5, 0); LK.gui.bottom.addChild(instructionsText); instructionsText.y = -150; // Status text var statusText = new Text2('Get ready...', { size: 70, fill: 0xFF0000 }); statusText.anchor.set(0.5, 0); LK.gui.center.addChild(statusText); statusText.y = -400; // Game functions function startGame() { LK.playMusic('horrorAmbience', { fade: { start: 0, end: 0.4, duration: 1000 } }); gameState = STATE_SIMON_TURN; level = 1; sequence = []; horrorIntensity = 0; updateLevel(); LK.setScore(0); updateScore(); generateSequence(); // Start the first round LK.setTimeout(function () { playSequence(); }, 1500); } function updateLevel() { levelText.setText('Level: ' + level); } function updateScore() { scoreText.setText('Score: ' + LK.getScore()); if (LK.getScore() > highScore) { highScore = LK.getScore(); storage.highScore = highScore; highScoreText.setText('High Score: ' + highScore); } } function generateSequence() { // Add a new step to the sequence sequence.push(Math.floor(Math.random() * 4)); playerSequence = []; sequenceIndex = 0; } function playSequence() { statusText.setText("Watch carefully..."); // Flash the entity briefly before showing the sequence // Intensity increases with level horrorIntensity = Math.min(level - 1, 10); entity.appear(horrorIntensity); // Start showing sequence after entity appears sequenceIndex = 0; waitingForInput = true; LK.setTimeout(function () { playNextInSequence(); }, 2000); } function playNextInSequence() { if (sequenceIndex < sequence.length) { buttons[sequence[sequenceIndex]].activate(); // Sequence timing gets faster as level increases var delay = Math.max(1000 - level * 50, 400); LK.setTimeout(function () { sequenceIndex++; playNextInSequence(); }, delay); } else { // Done showing sequence, player's turn LK.setTimeout(function () { waitingForInput = false; gameState = STATE_PLAYER_TURN; statusText.setText("Your turn!"); playerSequence = []; sequenceIndex = 0; }, 500); } } function checkPlayerInput() { var currentIndex = playerSequence.length - 1; if (playerSequence[currentIndex] !== sequence[currentIndex]) { // Wrong input gameOver(); return; } // If the player has completed the current sequence if (playerSequence.length === sequence.length) { // Level completed waitingForInput = true; LK.setScore(LK.getScore() + sequence.length); updateScore(); level++; updateLevel(); gameState = STATE_SIMON_TURN; // Horror effect between levels tween(overlay, { alpha: 0.7 }, { duration: 500, onFinish: function onFinish() { LK.getSound('levelUpSound').play(); LK.setTimeout(function () { tween(overlay, { alpha: 0 }, { duration: 500 }); }, 500); } }); statusText.setText("Level " + level + "!"); // Start next level after a delay LK.setTimeout(function () { generateSequence(); playSequence(); }, 2000); } } function gameOver() { gameState = STATE_GAME_OVER; // Jumpscare effect entity.jumpscare(); LK.getSound('errorSound').play(); // Flash screen red LK.effects.flashScreen(0xff0000, 800); statusText.setText("Game Over!"); LK.setTimeout(function () { LK.showGameOver(); }, 1500); } // Start game when loaded LK.setTimeout(function () { startGame(); }, 1000); // Game update function game.update = function () { // Add subtle horror effects as the game progresses if (gameState !== STATE_GAME_OVER && level > 3) { // Random subtle screen flicker if (Math.random() < 0.005 * horrorIntensity) { tween(overlay, { alpha: 0.2 }, { duration: 100, onFinish: function onFinish() { tween(overlay, { alpha: 0 }, { duration: 100 }); } }); } // Random entity flicker at higher levels if (level > 5 && Math.random() < 0.002 * horrorIntensity && entity.alpha < 0.1) { tween(entity, { alpha: 0.3 }, { duration: 50, onFinish: function onFinish() { tween(entity, { alpha: 0 }, { duration: 50 }); } }); } } }; // Event handlers game.down = function (x, y, obj) { if (gameState === STATE_INTRO) { startGame(); } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,451 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1");
+
+/****
+* Classes
+****/
+var SimonButton = Container.expand(function (color, sound, id) {
+ var self = Container.call(this);
+ self.id = id;
+ self.isActive = false;
+ self.sound = sound;
+ var buttonGraphics = self.attachAsset('simonButton', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var activeButtonAsset = 'simonButton' + color;
+ var activeButtonGraphics = self.attachAsset(activeButtonAsset, {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ alpha: 0
+ });
+ self.activate = function () {
+ if (self.isActive) {
+ return;
+ }
+ self.isActive = true;
+ tween(activeButtonGraphics, {
+ alpha: 1
+ }, {
+ duration: 300,
+ onFinish: function onFinish() {
+ LK.getSound(self.sound).play();
+ tween(activeButtonGraphics, {
+ alpha: 0
+ }, {
+ duration: 300,
+ onFinish: function onFinish() {
+ self.isActive = false;
+ }
+ });
+ }
+ });
+ };
+ self.down = function (x, y, obj) {
+ if (gameState === STATE_PLAYER_TURN && !self.isActive && !waitingForInput) {
+ self.activate();
+ playerSequence.push(self.id);
+ checkPlayerInput();
+ }
+ };
+ return self;
+});
+var SinisterEntity = Container.expand(function () {
+ var self = Container.call(this);
+ // Face base
+ var face = self.attachAsset('entityFace', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Left eye
+ var leftEye = self.attachAsset('entityEye', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -75,
+ y: -50
+ });
+ // Right eye
+ var rightEye = self.attachAsset('entityEye', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 75,
+ y: -50
+ });
+ // Mouth
+ var mouth = self.attachAsset('entityMouth', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ y: 80
+ });
+ self.alpha = 0;
+ self.appear = function (intensity) {
+ self.alpha = 0;
+ // Scale intensity from 0-10 to meaningful values
+ var duration = Math.max(1000 - intensity * 80, 200);
+ var scaleFactor = 1 + intensity * 0.1;
+ tween(self, {
+ alpha: 1
+ }, {
+ duration: duration,
+ easing: tween.easeIn,
+ onFinish: function onFinish() {
+ // Make eyes look at player
+ tween(leftEye, {
+ scaleX: 1.5,
+ scaleY: 1.5
+ }, {
+ duration: 300,
+ easing: tween.easeOut
+ });
+ tween(rightEye, {
+ scaleX: 1.5,
+ scaleY: 1.5
+ }, {
+ duration: 300,
+ easing: tween.easeOut
+ });
+ // Make mouth grow wider
+ tween(mouth, {
+ scaleX: 1.8,
+ scaleY: 0.8
+ }, {
+ duration: 500,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ if (intensity > 5) {
+ LK.getSound('creepyLaugh').play();
+ }
+ LK.setTimeout(function () {
+ self.disappear();
+ }, 1000);
+ }
+ });
+ }
+ });
+ };
+ self.disappear = function () {
+ tween(leftEye, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 300
+ });
+ tween(rightEye, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 300
+ });
+ tween(mouth, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 300
+ });
+ tween(self, {
+ alpha: 0
+ }, {
+ duration: 500,
+ easing: tween.easeOut
+ });
+ };
+ self.jumpscare = function () {
+ self.alpha = 0;
+ self.scale.set(0.1);
+ tween(self, {
+ alpha: 1,
+ scaleX: 3,
+ scaleY: 3
+ }, {
+ duration: 200,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ LK.setTimeout(function () {
+ tween(self, {
+ alpha: 0
+ }, {
+ duration: 400,
+ easing: tween.easeIn
+ });
+ }, 200);
+ }
+ });
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
backgroundColor: 0x000000
-});
\ No newline at end of file
+});
+
+/****
+* Game Code
+****/
+// Constants
+var STATE_INTRO = 0;
+var STATE_SIMON_TURN = 1;
+var STATE_PLAYER_TURN = 2;
+var STATE_GAME_OVER = 3;
+var COLOR_RED = 'Red';
+var COLOR_GREEN = 'Green';
+var COLOR_BLUE = 'Blue';
+var COLOR_YELLOW = 'Yellow';
+// Game variables
+var gameState = STATE_INTRO;
+var level = 1;
+var sequence = [];
+var playerSequence = [];
+var sequenceIndex = 0;
+var waitingForInput = false;
+var horrorIntensity = 0;
+var highScore = storage.highScore || 0;
+// Overlay for horror effects
+var overlay = game.addChild(LK.getAsset('backgroundOverlay', {
+ anchorX: 0,
+ anchorY: 0,
+ alpha: 0
+}));
+// Create Simon buttons
+var buttonSize = 400;
+var spacing = 50;
+var totalWidth = buttonSize * 2 + spacing;
+var totalHeight = buttonSize * 2 + spacing;
+var startX = (2048 - totalWidth) / 2 + buttonSize / 2;
+var startY = (2732 - totalHeight) / 2 + buttonSize / 2;
+var buttons = [];
+var buttonRed = game.addChild(new SimonButton(COLOR_RED, 'buttonSound1', 0));
+buttonRed.x = startX;
+buttonRed.y = startY;
+buttons.push(buttonRed);
+var buttonGreen = game.addChild(new SimonButton(COLOR_GREEN, 'buttonSound2', 1));
+buttonGreen.x = startX + buttonSize + spacing;
+buttonGreen.y = startY;
+buttons.push(buttonGreen);
+var buttonBlue = game.addChild(new SimonButton(COLOR_BLUE, 'buttonSound3', 2));
+buttonBlue.x = startX;
+buttonBlue.y = startY + buttonSize + spacing;
+buttons.push(buttonBlue);
+var buttonYellow = game.addChild(new SimonButton(COLOR_YELLOW, 'buttonSound4', 3));
+buttonYellow.x = startX + buttonSize + spacing;
+buttonYellow.y = startY + buttonSize + spacing;
+buttons.push(buttonYellow);
+// Create the sinister entity
+var entity = game.addChild(new SinisterEntity());
+entity.x = 2048 / 2;
+entity.y = 2732 / 2;
+// Level text
+var levelText = new Text2('Level: 1', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+levelText.anchor.set(0.5, 0);
+LK.gui.top.addChild(levelText);
+levelText.y = 100;
+// Score text
+var scoreText = new Text2('Score: 0', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+scoreText.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreText);
+scoreText.y = 200;
+// High score text
+var highScoreText = new Text2('High Score: ' + highScore, {
+ size: 80,
+ fill: 0xFFFFFF
+});
+highScoreText.anchor.set(0.5, 0);
+LK.gui.top.addChild(highScoreText);
+highScoreText.y = 300;
+// Instructions text
+var instructionsText = new Text2('Watch the pattern, then repeat it', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+instructionsText.anchor.set(0.5, 0);
+LK.gui.bottom.addChild(instructionsText);
+instructionsText.y = -150;
+// Status text
+var statusText = new Text2('Get ready...', {
+ size: 70,
+ fill: 0xFF0000
+});
+statusText.anchor.set(0.5, 0);
+LK.gui.center.addChild(statusText);
+statusText.y = -400;
+// Game functions
+function startGame() {
+ LK.playMusic('horrorAmbience', {
+ fade: {
+ start: 0,
+ end: 0.4,
+ duration: 1000
+ }
+ });
+ gameState = STATE_SIMON_TURN;
+ level = 1;
+ sequence = [];
+ horrorIntensity = 0;
+ updateLevel();
+ LK.setScore(0);
+ updateScore();
+ generateSequence();
+ // Start the first round
+ LK.setTimeout(function () {
+ playSequence();
+ }, 1500);
+}
+function updateLevel() {
+ levelText.setText('Level: ' + level);
+}
+function updateScore() {
+ scoreText.setText('Score: ' + LK.getScore());
+ if (LK.getScore() > highScore) {
+ highScore = LK.getScore();
+ storage.highScore = highScore;
+ highScoreText.setText('High Score: ' + highScore);
+ }
+}
+function generateSequence() {
+ // Add a new step to the sequence
+ sequence.push(Math.floor(Math.random() * 4));
+ playerSequence = [];
+ sequenceIndex = 0;
+}
+function playSequence() {
+ statusText.setText("Watch carefully...");
+ // Flash the entity briefly before showing the sequence
+ // Intensity increases with level
+ horrorIntensity = Math.min(level - 1, 10);
+ entity.appear(horrorIntensity);
+ // Start showing sequence after entity appears
+ sequenceIndex = 0;
+ waitingForInput = true;
+ LK.setTimeout(function () {
+ playNextInSequence();
+ }, 2000);
+}
+function playNextInSequence() {
+ if (sequenceIndex < sequence.length) {
+ buttons[sequence[sequenceIndex]].activate();
+ // Sequence timing gets faster as level increases
+ var delay = Math.max(1000 - level * 50, 400);
+ LK.setTimeout(function () {
+ sequenceIndex++;
+ playNextInSequence();
+ }, delay);
+ } else {
+ // Done showing sequence, player's turn
+ LK.setTimeout(function () {
+ waitingForInput = false;
+ gameState = STATE_PLAYER_TURN;
+ statusText.setText("Your turn!");
+ playerSequence = [];
+ sequenceIndex = 0;
+ }, 500);
+ }
+}
+function checkPlayerInput() {
+ var currentIndex = playerSequence.length - 1;
+ if (playerSequence[currentIndex] !== sequence[currentIndex]) {
+ // Wrong input
+ gameOver();
+ return;
+ }
+ // If the player has completed the current sequence
+ if (playerSequence.length === sequence.length) {
+ // Level completed
+ waitingForInput = true;
+ LK.setScore(LK.getScore() + sequence.length);
+ updateScore();
+ level++;
+ updateLevel();
+ gameState = STATE_SIMON_TURN;
+ // Horror effect between levels
+ tween(overlay, {
+ alpha: 0.7
+ }, {
+ duration: 500,
+ onFinish: function onFinish() {
+ LK.getSound('levelUpSound').play();
+ LK.setTimeout(function () {
+ tween(overlay, {
+ alpha: 0
+ }, {
+ duration: 500
+ });
+ }, 500);
+ }
+ });
+ statusText.setText("Level " + level + "!");
+ // Start next level after a delay
+ LK.setTimeout(function () {
+ generateSequence();
+ playSequence();
+ }, 2000);
+ }
+}
+function gameOver() {
+ gameState = STATE_GAME_OVER;
+ // Jumpscare effect
+ entity.jumpscare();
+ LK.getSound('errorSound').play();
+ // Flash screen red
+ LK.effects.flashScreen(0xff0000, 800);
+ statusText.setText("Game Over!");
+ LK.setTimeout(function () {
+ LK.showGameOver();
+ }, 1500);
+}
+// Start game when loaded
+LK.setTimeout(function () {
+ startGame();
+}, 1000);
+// Game update function
+game.update = function () {
+ // Add subtle horror effects as the game progresses
+ if (gameState !== STATE_GAME_OVER && level > 3) {
+ // Random subtle screen flicker
+ if (Math.random() < 0.005 * horrorIntensity) {
+ tween(overlay, {
+ alpha: 0.2
+ }, {
+ duration: 100,
+ onFinish: function onFinish() {
+ tween(overlay, {
+ alpha: 0
+ }, {
+ duration: 100
+ });
+ }
+ });
+ }
+ // Random entity flicker at higher levels
+ if (level > 5 && Math.random() < 0.002 * horrorIntensity && entity.alpha < 0.1) {
+ tween(entity, {
+ alpha: 0.3
+ }, {
+ duration: 50,
+ onFinish: function onFinish() {
+ tween(entity, {
+ alpha: 0
+ }, {
+ duration: 50
+ });
+ }
+ });
+ }
+ }
+};
+// Event handlers
+game.down = function (x, y, obj) {
+ if (gameState === STATE_INTRO) {
+ startGame();
+ }
+};
\ No newline at end of file
creepy realistic eye. In-Game asset. 2d. High contrast. No shadows
realistic face with no eyes or mouth. In-Game asset. 2d. High contrast. No shadows
realistic mouth. In-Game asset. 2d. High contrast. No shadows
blurry realistic image of a car crash with backround. In-Game asset. 2d. High contrast. No shadows
number 0. In-Game asset. 2d. High contrast. No shadows
the number 1. In-Game asset. 2d. High contrast. No shadows