/**** * Classes ****/ var DestroyPop = Container.expand(function () { var self = Container.call(this); var destroyPopGraphics = self.attachAsset('destroyPop', { anchorX: 0.5, anchorY: 0.5 }); self.alpha = 1; self.move = function () { self.alpha -= 0.02; if (self.alpha <= 0) { self.destroy(); } }; }); var ScorePop = Container.expand(function () { var self = Container.call(this); var scorePopText = new Text2('+1', { size: 100, fill: '#00ff00' }); scorePopText.anchor.set(0.5, 0.5); self.addChild(scorePopText); self.alpha = 1; self.move = function () { self.y -= 2; self.alpha -= 0.02; if (self.alpha <= 0) { self.destroy(); } }; }); var ScorePopNegative = Container.expand(function () { var self = Container.call(this); var scorePopText = new Text2('-1', { size: 100, fill: '#ff0000' }); scorePopText.anchor.set(0.5, 0.5); self.addChild(scorePopText); self.alpha = 1; self.move = function () { self.y -= 2; self.alpha -= 0.02; if (self.alpha <= 0) { self.destroy(); } }; }); var Candidate = Container.expand(function () { var self = Container.call(this); self.candidateMovingGraphics = self.attachAsset('candidate', { anchorX: 0.5, anchorY: 0.5 }); self.candidateStillGraphics = self.attachAsset('candidateStill', { anchorX: 0.5, anchorY: 0.5, visible: false }); var shadowGraphics = self.attachAsset('shadow', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.2, scaleY: 0.6, alpha: 0.5, y: self.candidateStillGraphics.height / 2 }); shadowGraphics.tint = 0x000000; self.direction = 1; // 1 for right, -1 for left self.speed = 10; // Speed of candidate's sideways movement self.isHatOn = false; // Indicates whether the candidate is wearing a hat self.hasShownPopupWord = false; // Tracks if a popup word has been shown when intersecting with an obstacle while wearing a hat self.update = function (targetX) { var candidateGraphics = self.children[0]; var speed = self.isHatOn ? self.speed * 1.5 : self.speed; var moving = false; if (self.x < targetX) { self.x = Math.min(self.x + speed, targetX); self.candidateMovingGraphics.scale.x = 1; moving = true; } else if (self.x > targetX) { self.x = Math.max(self.x - speed, targetX); self.candidateMovingGraphics.scale.x = -1; moving = true; } self.candidateMovingGraphics.visible = moving; self.candidateStillGraphics.visible = !moving; if (!moving) { self.candidateStillGraphics.scale.x = self.candidateMovingGraphics.scale.x; } }; }); var Vote = Container.expand(function () { var self = Container.call(this); var voteGraphics = self.attachAsset('vote', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 2 + 3; self.move = function () { self.y += self.speed; self.x += Math.sin(self.y / 100) * 3; // Smoother and smaller oscillation if (self.y > 2550) { self.tint = 0xff0000; if (LK.getScore() > 0) { LK.setScore(LK.getScore() - 1); scoreTxt.setText(LK.getScore()); var scorePopNegative = new ScorePopNegative(); scorePopNegative.x = self.x; scorePopNegative.y = self.y; game.addChild(scorePopNegative); } var index = votes.indexOf(self); if (index > -1) { votes.splice(index, 1); } var flickerInterval = LK.setInterval(function () { self.visible = !self.visible; self.tint = self.visible ? 0xff0000 : 0xffffff; }, 100); LK.setTimeout(function () { LK.clearInterval(flickerInterval); self.destroy(); }, 500); } }; }); var Obstacle = Container.expand(function () { var self = Container.call(this); var obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 2 + 3; self.move = function () { self.y += self.speed; self.rotation += 0.05; if (self.y > 2550) { var destroyPop = new DestroyPop(); destroyPop.x = self.x; destroyPop.y = self.y; game.addChild(destroyPop); self.destroy(); var index = obstacles.indexOf(self); if (index > -1) { obstacles.splice(index, 1); } } }; }); var Hat = Container.expand(function () { var self = Container.call(this); var hatGraphics = self.attachAsset('hat', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 2 + 2; self.move = function () { self.y += self.speed; var swing = Math.sin(self.y / 100) * 10; self.x += swing; hatGraphics.scale.x = swing < 0 ? -1 : 1; // Mirror the hat image when moving left if (self.y > 2550) { var flickerInterval = LK.setInterval(function () { self.visible = !self.visible; }, 100); LK.setTimeout(function () { LK.clearInterval(flickerInterval); self.destroy(); }, 500); } }; }); var PopUpText = Container.expand(function (text) { var self = Container.call(this); var popUpText = new Text2(text, { size: 100, fill: '#ffffff' }); popUpText.anchor.set(0.5, 0.5); self.addChild(popUpText); self.alpha = 1; self.move = function () { self.y -= 2; self.alpha -= 0.008; if (self.alpha <= 0) { self.destroy(); } }; }); /**** * Initialize Game ****/ var game = new LK.Game(); /**** * Game Code ****/ var background = game.addChild(LK.getAsset('background', { width: 2048, height: 2732, anchorX: 0, anchorY: 0, alpha: 0.5 })); var candidate = game.addChild(new Candidate()); candidate.x = 2048 / 2; candidate.y = 2732 - candidate.height / 2 - 90; var votes = []; var obstacles = []; var obstacles = []; var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff", dropShadow: true, dropShadowColor: "#000000", dropShadowBlur: 4, dropShadowAngle: Math.PI / 6, dropShadowDistance: 6 }); var scoreBackground = LK.getAsset('scoreBackground', { anchorX: 1, anchorY: 0, alpha: 0.6 }); LK.gui.topRight.addChild(scoreBackground); scoreBackground.x -= 10; scoreBackground.y += 5; scoreTxt.anchor.set(1, 0); LK.gui.topRight.addChild(scoreTxt); scoreTxt.x -= 70; scoreTxt.y += 50; var targetX = candidate.x; game.on('down', function (obj) { var event = obj.event; var pos = event.getLocalPosition(game); targetX = pos.x; }); LK.on('tick', function () { candidate.update(targetX); if (LK.ticks % Math.max(100 - Math.floor(LK.ticks / 1200) - 10 * Math.floor(LK.ticks / 1200), 20) == 0) { // Spawn a vote more frequently as time progresses var newVote = new Vote(); newVote.x = Math.random() * 2048; // Random x position across the screen width newVote.y = -newVote.height / 2; // Start just above the screen newVote.speed += Math.floor(LK.ticks / 2400); // Increase speed over time votes.push(newVote); game.addChild(newVote); } var obstacleSpawnRate = Math.max(280 - Math.floor(LK.ticks / 600), 20) - 30 * Math.floor(LK.ticks / 1200); // Decrease the maximum interval and increase the rate of difficulty over time if (LK.ticks % Math.max(obstacleSpawnRate - Math.floor(LK.ticks / 1200), 20) == 0) { // Spawn an obstacle more frequently as time progresses var newObstacle = new Obstacle(); newObstacle.x = Math.random() * 2048; // Random x position across the screen width newObstacle.y = -newObstacle.height / 2; // Start just above the screen newObstacle.speed += Math.floor(LK.ticks / 2400); // Increase speed over time obstacles.push(newObstacle); game.addChild(newObstacle); } if (LK.ticks == 600 || LK.ticks > 600 && LK.ticks % 2400 == 0) { // Spawn a hat after 20 seconds and then every 60 seconds var newHat = new Hat(); newHat.x = Math.random() * (2048 - 1000) + 500; // Random x position across the screen width, at least 500 pixels from each side newHat.y = -newHat.height / 2; // Start just above the screen newHat.speed += Math.floor(LK.ticks / 2400); // Increase speed over time votes.push(newHat); game.addChild(newHat); } }); LK.on('tick', function () { for (var i = votes.length - 1; i >= 0; i--) { votes[i].move(); if (votes[i] instanceof Vote && candidate.intersects(votes[i])) { var scorePop = new ScorePop(); scorePop.x = votes[i].x; scorePop.y = votes[i].y; game.addChild(scorePop); votes[i].destroy(); votes.splice(i, 1); LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); } else if (votes[i] instanceof Hat && votes[i].y <= 2500 && candidate.intersects(votes[i])) { var hat = votes[i]; hat.y = candidate.y - candidate.height / 2 - hat.height / 2 + 180; hat.x = candidate.x; hat.speed = 0; candidate.isHatOn = true; if (candidate.children[0].scale.x === -1) { hat.children[0].scale.x = -1; } else { hat.children[0].scale.x = 1; } if (!hat.popUpTextSpawned) { var popUpText; if (!candidate.firstHatPopUpText) { popUpText = new PopUpText('"Presidential Inmunity!"'); candidate.firstHatPopUpText = true; } else { var popUpWords = ['"Make America \nGreat Again!"', '"America First!"', '"COVFEFE!"', '"Im a very stable Genius!"']; var randomWord = popUpWords[Math.floor(Math.random() * popUpWords.length)]; popUpText = new PopUpText(randomWord); } popUpText.x = hat.x; popUpText.y = hat.y - 100; game.addChild(popUpText); hat.popUpTextSpawned = true; } LK.setTimeout(function () { var blinkInterval = LK.setInterval(function () { hat.visible = !hat.visible; }, 200); LK.setTimeout(function () { LK.clearInterval(blinkInterval); hat.destroy(); var index = votes.indexOf(hat); if (index > -1) { votes.splice(index, 1); } candidate.isHatOn = false; candidate.hasShownPopupWord = false; }, 2000); }, 8000); } } for (var i = game.children.length - 1; i >= 0; i--) { if (game.children[i] instanceof ScorePop || game.children[i] instanceof ScorePopNegative || game.children[i] instanceof PopUpText || game.children[i] instanceof DestroyPop) { game.children[i].move(); } } for (var i = obstacles.length - 1; i >= 0; i--) { obstacles[i].move(); if (candidate.intersects(obstacles[i], 60)) { if (candidate.isHatOn) { if (!candidate.hasShownPopupWord) { var popUpWords = ['"Fake News!"', '"Witchunt!"', '"Hoax!"', '"Rigged System!"']; var randomWord = popUpWords[Math.floor(Math.random() * popUpWords.length)]; var popUpText = new PopUpText(randomWord); popUpText.x = obstacles[i].x; popUpText.y = obstacles[i].y - 50; game.addChild(popUpText); candidate.hasShownPopupWord = true; } var obstacleToBlink = obstacles[i]; obstacleToBlink.alpha = 0.5; var blinkInterval = LK.setInterval(function () { obstacleToBlink.visible = !obstacleToBlink.visible; }, 100); LK.setTimeout(function () { LK.clearInterval(blinkInterval); obstacleToBlink.destroy(); var index = obstacles.indexOf(obstacleToBlink); if (index > -1) { obstacles.splice(index, 1); } candidate.hasShownPopupWord = false; }, 250); } else { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } } }); var startText = new Text2('Collect Votes! \n\nDodge Justice! \n\nWear THE hat!', { size: 100, fill: '#ffffff', dropShadow: true, dropShadowColor: '#000000', dropShadowBlur: 4, dropShadowAngle: Math.PI / 6, dropShadowDistance: 6, align: 'center' }); startText.x = 2048 / 2; startText.y = 2732 / 2 - 1000; startText.anchor.set(0.5, 0.5); game.addChild(startText); var startTimeout = LK.setTimeout(function () { game.removeChild(startText); }, 3000); // This is a simple initial game structure with a candidate collecting votes. // The game is designed to be mobile-friendly and uses touch events to place votes. // The candidate is centered at the bottom of the screen, and votes move upwards. // When a vote intersects with the candidate, the score increases.
/****
* Classes
****/
var DestroyPop = Container.expand(function () {
var self = Container.call(this);
var destroyPopGraphics = self.attachAsset('destroyPop', {
anchorX: 0.5,
anchorY: 0.5
});
self.alpha = 1;
self.move = function () {
self.alpha -= 0.02;
if (self.alpha <= 0) {
self.destroy();
}
};
});
var ScorePop = Container.expand(function () {
var self = Container.call(this);
var scorePopText = new Text2('+1', {
size: 100,
fill: '#00ff00'
});
scorePopText.anchor.set(0.5, 0.5);
self.addChild(scorePopText);
self.alpha = 1;
self.move = function () {
self.y -= 2;
self.alpha -= 0.02;
if (self.alpha <= 0) {
self.destroy();
}
};
});
var ScorePopNegative = Container.expand(function () {
var self = Container.call(this);
var scorePopText = new Text2('-1', {
size: 100,
fill: '#ff0000'
});
scorePopText.anchor.set(0.5, 0.5);
self.addChild(scorePopText);
self.alpha = 1;
self.move = function () {
self.y -= 2;
self.alpha -= 0.02;
if (self.alpha <= 0) {
self.destroy();
}
};
});
var Candidate = Container.expand(function () {
var self = Container.call(this);
self.candidateMovingGraphics = self.attachAsset('candidate', {
anchorX: 0.5,
anchorY: 0.5
});
self.candidateStillGraphics = self.attachAsset('candidateStill', {
anchorX: 0.5,
anchorY: 0.5,
visible: false
});
var shadowGraphics = self.attachAsset('shadow', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 0.6,
alpha: 0.5,
y: self.candidateStillGraphics.height / 2
});
shadowGraphics.tint = 0x000000;
self.direction = 1; // 1 for right, -1 for left
self.speed = 10; // Speed of candidate's sideways movement
self.isHatOn = false; // Indicates whether the candidate is wearing a hat
self.hasShownPopupWord = false; // Tracks if a popup word has been shown when intersecting with an obstacle while wearing a hat
self.update = function (targetX) {
var candidateGraphics = self.children[0];
var speed = self.isHatOn ? self.speed * 1.5 : self.speed;
var moving = false;
if (self.x < targetX) {
self.x = Math.min(self.x + speed, targetX);
self.candidateMovingGraphics.scale.x = 1;
moving = true;
} else if (self.x > targetX) {
self.x = Math.max(self.x - speed, targetX);
self.candidateMovingGraphics.scale.x = -1;
moving = true;
}
self.candidateMovingGraphics.visible = moving;
self.candidateStillGraphics.visible = !moving;
if (!moving) {
self.candidateStillGraphics.scale.x = self.candidateMovingGraphics.scale.x;
}
};
});
var Vote = Container.expand(function () {
var self = Container.call(this);
var voteGraphics = self.attachAsset('vote', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 2 + 3;
self.move = function () {
self.y += self.speed;
self.x += Math.sin(self.y / 100) * 3; // Smoother and smaller oscillation
if (self.y > 2550) {
self.tint = 0xff0000;
if (LK.getScore() > 0) {
LK.setScore(LK.getScore() - 1);
scoreTxt.setText(LK.getScore());
var scorePopNegative = new ScorePopNegative();
scorePopNegative.x = self.x;
scorePopNegative.y = self.y;
game.addChild(scorePopNegative);
}
var index = votes.indexOf(self);
if (index > -1) {
votes.splice(index, 1);
}
var flickerInterval = LK.setInterval(function () {
self.visible = !self.visible;
self.tint = self.visible ? 0xff0000 : 0xffffff;
}, 100);
LK.setTimeout(function () {
LK.clearInterval(flickerInterval);
self.destroy();
}, 500);
}
};
});
var Obstacle = Container.expand(function () {
var self = Container.call(this);
var obstacleGraphics = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 2 + 3;
self.move = function () {
self.y += self.speed;
self.rotation += 0.05;
if (self.y > 2550) {
var destroyPop = new DestroyPop();
destroyPop.x = self.x;
destroyPop.y = self.y;
game.addChild(destroyPop);
self.destroy();
var index = obstacles.indexOf(self);
if (index > -1) {
obstacles.splice(index, 1);
}
}
};
});
var Hat = Container.expand(function () {
var self = Container.call(this);
var hatGraphics = self.attachAsset('hat', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 2 + 2;
self.move = function () {
self.y += self.speed;
var swing = Math.sin(self.y / 100) * 10;
self.x += swing;
hatGraphics.scale.x = swing < 0 ? -1 : 1; // Mirror the hat image when moving left
if (self.y > 2550) {
var flickerInterval = LK.setInterval(function () {
self.visible = !self.visible;
}, 100);
LK.setTimeout(function () {
LK.clearInterval(flickerInterval);
self.destroy();
}, 500);
}
};
});
var PopUpText = Container.expand(function (text) {
var self = Container.call(this);
var popUpText = new Text2(text, {
size: 100,
fill: '#ffffff'
});
popUpText.anchor.set(0.5, 0.5);
self.addChild(popUpText);
self.alpha = 1;
self.move = function () {
self.y -= 2;
self.alpha -= 0.008;
if (self.alpha <= 0) {
self.destroy();
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game();
/****
* Game Code
****/
var background = game.addChild(LK.getAsset('background', {
width: 2048,
height: 2732,
anchorX: 0,
anchorY: 0,
alpha: 0.5
}));
var candidate = game.addChild(new Candidate());
candidate.x = 2048 / 2;
candidate.y = 2732 - candidate.height / 2 - 90;
var votes = [];
var obstacles = [];
var obstacles = [];
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff",
dropShadow: true,
dropShadowColor: "#000000",
dropShadowBlur: 4,
dropShadowAngle: Math.PI / 6,
dropShadowDistance: 6
});
var scoreBackground = LK.getAsset('scoreBackground', {
anchorX: 1,
anchorY: 0,
alpha: 0.6
});
LK.gui.topRight.addChild(scoreBackground);
scoreBackground.x -= 10;
scoreBackground.y += 5;
scoreTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(scoreTxt);
scoreTxt.x -= 70;
scoreTxt.y += 50;
var targetX = candidate.x;
game.on('down', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(game);
targetX = pos.x;
});
LK.on('tick', function () {
candidate.update(targetX);
if (LK.ticks % Math.max(100 - Math.floor(LK.ticks / 1200) - 10 * Math.floor(LK.ticks / 1200), 20) == 0) {
// Spawn a vote more frequently as time progresses
var newVote = new Vote();
newVote.x = Math.random() * 2048; // Random x position across the screen width
newVote.y = -newVote.height / 2; // Start just above the screen
newVote.speed += Math.floor(LK.ticks / 2400); // Increase speed over time
votes.push(newVote);
game.addChild(newVote);
}
var obstacleSpawnRate = Math.max(280 - Math.floor(LK.ticks / 600), 20) - 30 * Math.floor(LK.ticks / 1200); // Decrease the maximum interval and increase the rate of difficulty over time
if (LK.ticks % Math.max(obstacleSpawnRate - Math.floor(LK.ticks / 1200), 20) == 0) {
// Spawn an obstacle more frequently as time progresses
var newObstacle = new Obstacle();
newObstacle.x = Math.random() * 2048; // Random x position across the screen width
newObstacle.y = -newObstacle.height / 2; // Start just above the screen
newObstacle.speed += Math.floor(LK.ticks / 2400); // Increase speed over time
obstacles.push(newObstacle);
game.addChild(newObstacle);
}
if (LK.ticks == 600 || LK.ticks > 600 && LK.ticks % 2400 == 0) {
// Spawn a hat after 20 seconds and then every 60 seconds
var newHat = new Hat();
newHat.x = Math.random() * (2048 - 1000) + 500; // Random x position across the screen width, at least 500 pixels from each side
newHat.y = -newHat.height / 2; // Start just above the screen
newHat.speed += Math.floor(LK.ticks / 2400); // Increase speed over time
votes.push(newHat);
game.addChild(newHat);
}
});
LK.on('tick', function () {
for (var i = votes.length - 1; i >= 0; i--) {
votes[i].move();
if (votes[i] instanceof Vote && candidate.intersects(votes[i])) {
var scorePop = new ScorePop();
scorePop.x = votes[i].x;
scorePop.y = votes[i].y;
game.addChild(scorePop);
votes[i].destroy();
votes.splice(i, 1);
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
} else if (votes[i] instanceof Hat && votes[i].y <= 2500 && candidate.intersects(votes[i])) {
var hat = votes[i];
hat.y = candidate.y - candidate.height / 2 - hat.height / 2 + 180;
hat.x = candidate.x;
hat.speed = 0;
candidate.isHatOn = true;
if (candidate.children[0].scale.x === -1) {
hat.children[0].scale.x = -1;
} else {
hat.children[0].scale.x = 1;
}
if (!hat.popUpTextSpawned) {
var popUpText;
if (!candidate.firstHatPopUpText) {
popUpText = new PopUpText('"Presidential Inmunity!"');
candidate.firstHatPopUpText = true;
} else {
var popUpWords = ['"Make America \nGreat Again!"', '"America First!"', '"COVFEFE!"', '"Im a very stable Genius!"'];
var randomWord = popUpWords[Math.floor(Math.random() * popUpWords.length)];
popUpText = new PopUpText(randomWord);
}
popUpText.x = hat.x;
popUpText.y = hat.y - 100;
game.addChild(popUpText);
hat.popUpTextSpawned = true;
}
LK.setTimeout(function () {
var blinkInterval = LK.setInterval(function () {
hat.visible = !hat.visible;
}, 200);
LK.setTimeout(function () {
LK.clearInterval(blinkInterval);
hat.destroy();
var index = votes.indexOf(hat);
if (index > -1) {
votes.splice(index, 1);
}
candidate.isHatOn = false;
candidate.hasShownPopupWord = false;
}, 2000);
}, 8000);
}
}
for (var i = game.children.length - 1; i >= 0; i--) {
if (game.children[i] instanceof ScorePop || game.children[i] instanceof ScorePopNegative || game.children[i] instanceof PopUpText || game.children[i] instanceof DestroyPop) {
game.children[i].move();
}
}
for (var i = obstacles.length - 1; i >= 0; i--) {
obstacles[i].move();
if (candidate.intersects(obstacles[i], 60)) {
if (candidate.isHatOn) {
if (!candidate.hasShownPopupWord) {
var popUpWords = ['"Fake News!"', '"Witchunt!"', '"Hoax!"', '"Rigged System!"'];
var randomWord = popUpWords[Math.floor(Math.random() * popUpWords.length)];
var popUpText = new PopUpText(randomWord);
popUpText.x = obstacles[i].x;
popUpText.y = obstacles[i].y - 50;
game.addChild(popUpText);
candidate.hasShownPopupWord = true;
}
var obstacleToBlink = obstacles[i];
obstacleToBlink.alpha = 0.5;
var blinkInterval = LK.setInterval(function () {
obstacleToBlink.visible = !obstacleToBlink.visible;
}, 100);
LK.setTimeout(function () {
LK.clearInterval(blinkInterval);
obstacleToBlink.destroy();
var index = obstacles.indexOf(obstacleToBlink);
if (index > -1) {
obstacles.splice(index, 1);
}
candidate.hasShownPopupWord = false;
}, 250);
} else {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
}
}
});
var startText = new Text2('Collect Votes! \n\nDodge Justice! \n\nWear THE hat!', {
size: 100,
fill: '#ffffff',
dropShadow: true,
dropShadowColor: '#000000',
dropShadowBlur: 4,
dropShadowAngle: Math.PI / 6,
dropShadowDistance: 6,
align: 'center'
});
startText.x = 2048 / 2;
startText.y = 2732 / 2 - 1000;
startText.anchor.set(0.5, 0.5);
game.addChild(startText);
var startTimeout = LK.setTimeout(function () {
game.removeChild(startText);
}, 3000);
// This is a simple initial game structure with a candidate collecting votes.
// The game is designed to be mobile-friendly and uses touch events to place votes.
// The candidate is centered at the bottom of the screen, and votes move upwards.
// When a vote intersects with the candidate, the score increases.
2d. 8-bit. red baseball cap. maga.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d. 8-bit. dust cloud. brown. no shadow.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a 2d funny character in 8-bit and cartoon of joe biden on an airplane..