User prompt
Migrate to the latest version of LK
Code edit (4 edits merged)
Please save this source code
User prompt
Create a new Debris class extending ConfigContainer. It should have an attached asset, with the following details: id derived from config.image, an x position derived from config.offset, a random rotation, and a random scale between 0.8 and 1.2
Code edit (1 edits merged)
Please save this source code
Code edit (6 edits merged)
Please save this source code
User prompt
In the ship class, tint the asset FFE4B2
Code edit (9 edits merged)
Please save this source code
User prompt
Apply a slight orange tint to the FarmNode's farmGraphics
Code edit (1 edits merged)
Please save this source code
User prompt
the autoweeder should slowly move around the planet at a speed of AUTOWEEDER_SPEED, maintaining a distance of the planets radius
Code edit (1 edits merged)
Please save this source code
User prompt
In the Planet class update, call the autoweeder update if it exists
User prompt
Add a new global AUTOWEEDER_ROTATION = 0.01 (under the existing Autoweeder settings). In the Autowheel class's update function, increase the rotation of the autoweederWheel asset by the AUTOWEEDER_ROTATION
User prompt
When creating an autoweeder, add it to the planet background instead of the planet itself
User prompt
The Autoweeder class needs an asset with id autoweederWheel
User prompt
The Autoweeder class needs an asset with id autoweederWheel, which slowly rotates at a speed of AUTOWEEDER_ROTATION = 0.01 (new global variable under "Autoweeder settings")
Code edit (2 edits merged)
Please save this source code
User prompt
In the NavigationButton's update function, in addition to updating the buttonGraphics. Rotate the planetGraphics by the amount specified in the relevant PLANET_DETAILS
Code edit (1 edits merged)
Please save this source code
User prompt
In the NavigationButton's update function, check if the buttonGraphics rotation is not equal to the targetRotation and rotate (the buttonGraphics) towards the targetRotation at a speed of NAVIGATION_ROTATE_SPEED
Code edit (1 edits merged)
Please save this source code
User prompt
Add a local targetRotation var = 0 to the NavigationButton class
Code edit (1 edits merged)
Please save this source code
User prompt
Add NAVIGATION_ROTATE_SPEED = 0.01 and NAVIGATION_ROTATE_TARGET = MATH_HALF_PI as global variables under the existing "Interface settings" heading
User prompt
Add NAVIGATION_ROTATE_SPEED = 0.01 and NAVIGATION_ROTATE_TARGET = MATH_HALF_PI as global variables under the existing Interface settings heading
===================================================================
--- original.js
+++ change.js
@@ -28,8 +28,61 @@
self.rotation = config.rotation || 0;
;
return self;
});
+var WinningMessage = ConfigContainer.expand(function (config) {
+ var self = ConfigContainer.call(this, config);
+ var seconds = Math.floor(winningTick / 60);
+ var minutes = Math.floor(seconds / 60);
+ var hours = Math.floor(minutes / 60);
+ seconds = seconds % 60;
+ minutes = minutes % 60;
+ var winningTime = (hours > 0 ? hours + 'h ' : '') + (minutes > 0 ? minutes + 'm ' : '') + seconds + 's';
+ var messageStatTitles = ['Distance Walked', 'Credits Earned', 'Items Collected', 'Crops Planted', 'Crops Overrun', 'Weeds Pulled', 'Trades Accepted', 'Trades Declined', 'Rocket Launches', 'Asteroid Impacts'];
+ var messageStatKeys = ['distanceRun', 'creditsEarned', 'cropsHarvested', 'cropsPlanted', 'cropsOverrun', 'weedsPulled', 'salesDone', 'salesRejected', 'rocketLaunches', 'asteroidImpacts'];
+ var messageScore = 'You reached the Gold Planet in ' + winningTime;
+ if (bonusPoints > 0) {
+ messageScore += ',\nearning ' + bonusPoints + ' bonus points for the quick finish!';
+ }
+ messageScore += '\n\nFinal Score: ' + LK.getScore();
+ var timeText = self.addChild(new BorderedText(messageScore, {
+ anchorX: .5,
+ anchorY: 1,
+ y: -TEXT_WINNING_OFFSET
+ }));
+ self.addChild(new BorderedText('Congratulations, you won!', {
+ anchorX: .5,
+ anchorY: 1,
+ size: TEXT_SIZE_LARGE,
+ y: timeText.y - timeText.height - 10
+ }));
+ self.addChild(new BorderedText(messageStatTitles.map(mapTitle).join('\n'), {
+ anchorX: 1,
+ anchorY: 0,
+ size: TEXT_SIZE_SMALL,
+ y: TEXT_WINNING_OFFSET
+ }));
+ self.addChild(new BorderedText(messageStatKeys.map(mapKey).join('\n'), {
+ anchorX: 0,
+ anchorY: 0,
+ size: TEXT_SIZE_SMALL,
+ y: TEXT_WINNING_OFFSET
+ }));
+ ;
+ function mapTitle(title) {
+ return title + ' ';
+ }
+ function mapKey(key) {
+ var stat = winningStats[key];
+ var extra = stats[key] - stat;
+ switch (key) {
+ case 'distanceRun':
+ return ': ' + Math.round(stat * PLAYER_DISTANCE_SCALE) + 'm' + (extra ? ' [+' + Math.round(extra * PLAYER_DISTANCE_SCALE) + 'm]' : '');
+ default:
+ return ': ' + stat + (extra ? ' [+' + extra + ']' : '');
+ }
+ }
+});
var TraderDialogue = ConfigContainer.expand(function (callback, trade, config) {
var self = ConfigContainer.call(this, config);
config = config || {};
var flipX = config.flipX;
@@ -129,13 +182,13 @@
var moveY = -traderGraphics.y / TRADER_SPAWN_TIME;
var trade = setTrade || generateTrade();
var traderDialogue;
;
- self.update = update;
+ self._update_migrated = _update_migrated;
self.trade = trade;
self.handleTradeCallback = handleTradeCallback;
;
- function update() {
+ function _update_migrated() {
if ((LK.ticks - spawnTick) % TRADER_MOVE_INTERVAL === 0) {
var anchorX = 0.5 + TRADER_MOVE_ANCHOR * (Math.random() * 2 - 1);
var anchorY = 0.5 + TRADER_MOVE_ANCHOR * (Math.random() * 2 - 1);
var rotation = TRADER_MOVE_ROTATION * (Math.random() * 2 - 1);
@@ -359,13 +412,13 @@
var counter = 0;
var particles = [];
background.rotation = -MATH_HALF_PI;
;
- self.update = update;
+ self._update_migrated = _update_migrated;
self.launch = launch;
self.direction = -1;
;
- function update() {
+ function _update_migrated() {
if (self.direction < 0) {
self.x -= ROCKET_SPEED_REVERSE;
if (self.x <= planet.radius) {
self.x = planet.radius;
@@ -418,12 +471,12 @@
suffix: true,
scale: SCALE_FRUIT_TRADE
}));
;
- self.update = update;
+ self._update_migrated = _update_migrated;
self.increment = increment;
;
- function update() {
+ function _update_migrated() {
if (--lifetime > 0) {
symbolText.y -= 1;
symbolText.alpha = lifetime / POPUP_DURATION;
if (lifetime === POPUP_RECYCLE) {
@@ -451,12 +504,12 @@
anchorX: 0.5,
anchorY: 0.75
});
;
- self.update = update;
+ self._update_migrated = _update_migrated;
self.angle = 0;
;
- function update() {
+ function _update_migrated() {
var currentAngle = Math.atan2(self.y, self.x);
var angleDifference = mod(targetAngle - currentAngle + Math.PI, MATH_2_PI) - Math.PI;
if (approxZero(angleDifference)) {
if (taskLaunch) {
@@ -507,9 +560,9 @@
});
var PlantNode = ConfigContainer.expand(function (config) {
var self = ConfigContainer.call(this, config);
;
- self.update = update;
+ self._update_migrated = _update_migrated;
self.addPlant = addPlant;
self.removePlant = removePlant;
self.tryAction = tryAction;
self.tryDamagePlant = tryDamagePlant;
@@ -517,11 +570,11 @@
self.farm;
self.prev;
self.next;
;
- function update() {
+ function _update_migrated() {
if (self.plant) {
- self.plant.update();
+ self.plant._update_migrated();
}
}
function addPlant(plantName, stage, overrun, potted) {
if (!self.plant || self.plant.uproot(overrun)) {
@@ -557,17 +610,17 @@
return self;
});
var WeedsNode = PlantNode.expand(function (config) {
var self = PlantNode.call(this, config);
- var baseUpdate = self.update;
+ var baseUpdate = self._update_migrated;
var baseAddPlant = self.addPlant;
var baseTryAction = self.tryAction;
;
- self.update = update;
+ self._update_migrated = _update_migrated;
self.addPlant = addPlant;
self.tryAction = tryAction;
;
- function update() {
+ function _update_migrated() {
baseUpdate();
if (!self.plant && --spawnCountdown <= 0) {
self.addPlant('plantWeeds', 1, false, false);
}
@@ -591,9 +644,9 @@
refreshCountdown();
});
var FarmNode = PlantNode.expand(function (config) {
var self = PlantNode.call(this, config);
- var baseUpdate = self.update;
+ var baseUpdate = self._update_migrated;
var baseAddPlant = self.addPlant;
var baseTryAction = self.tryAction;
var targetAlpha = 0;
var planterButton;
@@ -605,14 +658,14 @@
alpha: currentAlpha,
tint: 0xFFE4B2
});
;
- self.update = update;
+ self._update_migrated = _update_migrated;
self.addPlant = addPlant;
self.tryAction = tryAction;
self.tryPlantFruit = tryPlantFruit;
;
- function update() {
+ function _update_migrated() {
baseUpdate();
// Control the in/out fade when overrun
if (currentAlpha !== targetAlpha) {
if (currentAlpha < targetAlpha) {
@@ -700,9 +753,9 @@
var self = ConfigContainer.call(this, config);
var details = PLANT_DETAILS[type];
var scale = 1 + randomFloatInRange(-PLANT_SCALE_VARIANCE, PLANT_SCALE_VARIANCE);
;
- self.update = update;
+ self._update_migrated = _update_migrated;
self.uproot = uproot;
self.action = action;
self.harvest = harvest;
self.updateStage = updateStage;
@@ -726,9 +779,9 @@
self.strong = false; // Whether the plant can prevent weeds overrunning it
self.actionable = false; // Whether passive actions can be performed on this plant
self.uprootable = false; // Whether the plant can be manually uprooted (with the uproot button)
;
- function update() {
+ function _update_migrated() {
if (--self.growthCountdown <= 0 && self.growthStage < self.growthStages) {
self.updateStage(self.growthStage + 1);
}
}
@@ -797,22 +850,22 @@
return self;
});
var PlantWeeds = Plant.expand(function (growthStage, potted, parentPlanet, config) {
var self = Plant.call(this, 'plantWeeds', growthStage, potted, parentPlanet, config);
- var baseUpdate = self.update;
+ var baseUpdate = self._update_migrated;
var baseHarvest = self.harvest;
var baseUpdateStage = self.updateStage;
var spreadCountdown = 0;
;
- self.update = update;
+ self._update_migrated = _update_migrated;
self.action = action;
self.harvest = harvest;
self.updateStage = updateStage;
self.strong = true;
self.actionable = !potted;
self.uprootable = potted;
;
- function update() {
+ function _update_migrated() {
baseUpdate();
;
if (self.growthStage === self.growthStages && --spreadCountdown <= 0) {
var node = self.parent;
@@ -1111,8 +1164,9 @@
var perimeter = MATH_2_PI * details.radius;
var numPlots = Math.floor(perimeter / (PLOT_SIZE + PLOT_GAP));
var numNodes = numPlots * 4;
var nodes = [];
+ var debris = [];
var fruitList = [];
var background = self.addChild(new Container());
var planetScale = 2 * details.radius / 1000;
var planetGraphics = self.createAsset(planetName, {
@@ -1121,24 +1175,26 @@
scaleX: planetScale,
scaleY: planetScale
});
;
- self.update = update;
+ self._update_migrated = _update_migrated;
self.name = planetName;
+ self.debris = debris;
self.barren = !!details.barren; // No plant life
self.coarse = !!details.coarse; // No weed nodes (still starts + grows + spreads)
self.nodes = nodes;
self.background = background;
self.fruitList = fruitList;
self.spin = details.spin;
self.radius = details.radius;
;
- function update(ticks) {
+ function _update_migrated() {
self.rotation += self.spin;
if (self.autoweeder) {
- self.autoweeder.update();
+ self.autoweeder._update_migrated();
}
updateList(nodes);
+ updateList(debris, planet !== self);
updateList(fruitList, planet !== self);
}
function createNodes() {
if (!self.barren) {
@@ -1184,8 +1240,26 @@
var self = Planet.call(this, 'planetOmni', config);
});
var PlanetGrey = Planet.expand(function (config) {
var self = Planet.call(this, 'planetGrey', config);
+ ;
+ self.debris.push(self.background.addChild(new Debris('debrisGrey1', {
+ offset: 600 + 300 * Math.random(),
+ speed: 0.001,
+ spin: 0.001
+ })));
+ self.debris.push(self.background.addChild(new Debris('debrisGrey3', {
+ offset: 600 + 300 * Math.random(),
+ speed: -0.002,
+ spin: 0.005
+ })));
+ for (var i = 0; i < 4; i++) {
+ self.debris.push(self.background.addChild(new Debris('debrisGrey2', {
+ offset: 500 + 200 * Math.random(),
+ speed: 0.002 - 0.004 * Math.random(),
+ spin: 0.002 - 0.004 * Math.random()
+ })));
+ }
});
var PlanetGold = Planet.expand(function (config) {
var self = Planet.call(this, 'planetGold', config);
});
@@ -1205,15 +1279,15 @@
y: 0
}));
}
;
- self.update = update;
+ self._update_migrated = _update_migrated;
self.setDestination = setDestination;
;
- function update() {
- crosshair.update();
+ function _update_migrated() {
+ crosshair._update_migrated();
for (var i = 0; i < NAVIGATION.length; i++) {
- buttons[NAVIGATION[i]].update();
+ buttons[NAVIGATION[i]]._update_migrated();
}
}
function buttonCallback(planet) {
var button = buttons[planet];
@@ -1260,15 +1334,15 @@
anchorY: .5,
tint: true
}));
;
- self.update = update;
+ self._update_migrated = _update_migrated;
self.unlock = unlock;
self.cost = details.cost;
self.planet = planetName;
self.unlocked = !details.cost;
;
- function update() {
+ function _update_migrated() {
if (buttonGraphics.rotation !== targetRotation) {
var rotationDifference = targetRotation - buttonGraphics.rotation;
buttonGraphics.rotation += rotationDifference * NAVIGATION_ROTATE_SPEED;
}
@@ -1431,11 +1505,11 @@
scaleY: SCALE_FRUIT_DROP
});
;
self.fruitName = fruitName;
- self.update = update;
+ self._update_migrated = _update_migrated;
;
- function update(idle) {
+ function _update_migrated(idle) {
// Check if fruit is within collection range
if (player && !idle) {
var dx = self.x - player.x;
var dy = self.y - player.y;
@@ -1484,11 +1558,11 @@
alpha: 0.5,
rotation: Math.atan2(self.y - planet.y, self.x - planet.x)
});
;
- self.update = update;
+ self._update_migrated = _update_migrated;
;
- function update() {
+ function _update_migrated() {
frameCount++;
explosionGraphics.alpha -= 0.5 / EXPLOSION_FRAMES;
explosionGraphics.scale.set(baseScale * (1 + frameCount / EXPLOSION_FRAMES));
if (frameCount >= EXPLOSION_FRAMES) {
@@ -1498,26 +1572,28 @@
}
;
effectsList.push(self);
});
-var Debris = ConfigContainer.expand(function (config) {
+var Debris = ConfigContainer.expand(function (imageName, config) {
var self = ConfigContainer.call(this, config);
- var scale = 0.8 + Math.random() * 0.4;
- var speed = config.speed;
- var debrisGraphics = self.attachAsset(config.image, {
+ var scale = (config.scale || 1) * (0.9 + 0.2 * Math.random());
+ var speed = config.speed || 0;
+ var spin = config.spin || 0;
+ var debrisGraphics = self.attachAsset(imageName, {
x: config.offset,
anchorX: 0.5,
anchorY: 0.5,
rotation: Math.random() * MATH_2_PI,
scaleX: scale,
scaleY: scale
});
;
- self.update = update;
+ self._update_migrated = _update_migrated;
self.rotation = Math.random() * MATH_2_PI;
;
- function update() {
+ function _update_migrated() {
self.rotation += speed;
+ debrisGraphics.rotation += spin;
}
;
return self;
});
@@ -1700,9 +1776,12 @@
}
}
}
;
- buttonBackground.on('down', callback);
+ buttonBackground.on('down', function (x, y, obj) {
+ obj.event = obj;
+ callback(obj);
+ });
return self;
});
var UprootButton = BasicButton.expand(function (plantName, callback, config) {
var self = BasicButton.call(this, 'cross', callback, config);
@@ -1744,11 +1823,11 @@
anchorY: 0.52,
alpha: 0.5
});
;
- self.update = update;
+ self._update_migrated = _update_migrated;
;
- function update() {
+ function _update_migrated() {
// Calculate the autoweeder's new position around the planet
var angleIncrement = AUTOWEEDER_SPEED / planet.radius;
var planetParent = self.parent.parent;
self.rotation += angleIncrement;
@@ -1804,11 +1883,11 @@
var angle = Math.atan2(targetY - self.y, targetX - self.x);
var velocityX = ASTEROID_SPEED * Math.cos(angle);
var velocityY = ASTEROID_SPEED * Math.sin(angle);
;
- self.update = update;
+ self._update_migrated = _update_migrated;
;
- function update() {
+ function _update_migrated() {
self.rotation += rotationSpeed;
self.x += velocityX;
self.y += velocityY;
var dx = self.x - planet.x;
@@ -1863,11 +1942,11 @@
self.addChild(arrow);
}
;
self.rotation = MATH_QUARTER_PI;
- self.update = update;
+ self._update_migrated = _update_migrated;
;
- function update() {
+ function _update_migrated() {
if (currentPlanet !== destinationPlanet) {
counter++;
var distance = CROSSHAIR_DIST + CROSSHAIR_VARIANCE * Math.sin(counter / CROSSHAIR_PERIOD);
setDistance(distance);
@@ -1902,59 +1981,8 @@
function toggleAllowed(bool) {
crossAsset.alpha = bool ? 0 : 1;
}
});
-var WinningMessage = Container.expand(function (x, y, completionTicks) {
- var self = Container.call(this);
- var seconds = Math.floor(completionTicks / 60);
- var minutes = Math.floor(seconds / 60);
- var hours = Math.floor(minutes / 60);
- seconds = seconds % 60;
- minutes = minutes % 60;
- var winningTime = (hours > 0 ? hours + 'h ' : '') + (minutes > 0 ? minutes + 'm ' : '') + seconds + 's';
- var messageStatTitles = ['Distance Walked', 'Credits Earned', 'Items Collected', 'Crops Planted', 'Crops Overrun', 'Weeds Pulled', 'Trades Accepted', 'Trades Declined', 'Rocket Launches', 'Asteroid Impacts'];
- var messageStatKeys = ['distanceRun', 'creditsEarned', 'cropsHarvested', 'cropsPlanted', 'cropsOverrun', 'weedsPulled', 'salesDone', 'salesRejected', 'rocketLaunches', 'asteroidImpacts'];
- var timeText = self.addChild(new BorderedText('You reached the Gold Planet in ' + winningTime, {
- anchorX: .5,
- anchorY: 1,
- y: -TEXT_WINNING_OFFSET
- }));
- self.addChild(new BorderedText('Congratulations, you won!', {
- anchorX: .5,
- anchorY: 1,
- size: TEXT_SIZE_LARGE,
- y: timeText.y - timeText.height - 10
- }));
- self.addChild(new BorderedText(messageStatTitles.map(mapTitle).join('\n'), {
- anchorX: 1,
- anchorY: 0,
- size: TEXT_SIZE_SMALL,
- y: TEXT_WINNING_OFFSET
- }));
- self.addChild(new BorderedText(messageStatKeys.map(mapKey).join('\n'), {
- anchorX: 0,
- anchorY: 0,
- size: TEXT_SIZE_SMALL,
- y: TEXT_WINNING_OFFSET
- }));
- ;
- self.x = x;
- self.y = y;
- ;
- function mapTitle(title) {
- return title + ' ';
- }
- function mapKey(key) {
- var stat = winningStats[key];
- var extra = stats[key] - stat;
- switch (key) {
- case 'distanceRun':
- return ': ' + Math.round(stat * PLAYER_DISTANCE_SCALE) + 'm' + (extra ? ' [+' + Math.round(extra * PLAYER_DISTANCE_SCALE) + 'm]' : '');
- default:
- return ': ' + stat + (extra ? ' [+' + extra + ']' : '');
- }
- }
-});
var FlameParticle = ConfigContainer.expand(function (config) {
var self = ConfigContainer.call(this, config);
var flameGraphics = self.attachAsset('flame', {
anchorX: 0.5,
@@ -1962,11 +1990,11 @@
alpha: 0.5
});
var lifetime = ROCKET_FLAME_LIFETIME;
;
- self.update = update;
+ self._update_migrated = _update_migrated;
;
- function update() {
+ function _update_migrated() {
var remaining = lifetime / ROCKET_FLAME_LIFETIME;
self.y -= ROCKET_FLAME_SPEED;
flameGraphics.alpha = 0.5 * remaining;
flameGraphics.scale.set(remaining);
@@ -2046,8 +2074,10 @@
var CROSSHAIR_PERIOD = 1.25 * GAME_TICKS / MATH_2_PI;
var POPUP_OFFSET = 100;
var POPUP_DURATION = 1.5 * GAME_TICKS;
var POPUP_RECYCLE = Math.floor(POPUP_DURATION * 0.5);
+var BONUS_TICK_CUTOFF = 30 * 60 * GAME_TICKS; // cut off in minutes
+var BONUS_TICK_MULTIPLIER = 1 / GAME_TICKS; // bonus point(s) per second
;
// Inventory settings
var INVENTORY_ROWS = 1;
var INVENTORY_COLS = 7;
@@ -2279,8 +2309,9 @@
};
var winningStats = {};
var winningTick = -1;
var winningTime = '';
+var bonusPoints = 0;
var winningMessage;
var player;
var traders = [];
var traderCountdown = TRADER_TIME_INITIAL;
@@ -2351,20 +2382,20 @@
targetAngle = retargetAngle;
}
retargetAngle = undefined;
if (player) {
- player.update();
+ player._update_migrated();
}
- ship.update();
- navigation.update();
+ ship._update_migrated();
+ navigation._update_migrated();
updateList(effectsList);
for (var key in planetMap) {
- planetMap[key].update();
+ planetMap[key]._update_migrated();
}
for (var i = 0; i < 4; i++) {
var trader = traders[i];
if (trader) {
- trader.update();
+ trader._update_migrated();
}
}
if (planet.name !== PLANET_LAST) {
updateList(asteroidList);
@@ -2372,11 +2403,11 @@
trySpawnTrader();
}
});
;
-game.on('down', function (obj) {
+game.on('down', function (x, y, obj) {
if (player) {
- var clickPosition = obj.event.getLocalPosition(game);
+ var clickPosition = game.toLocal(obj.global);
var dx = clickPosition.x - planet.x;
var dy = clickPosition.y - planet.y;
var range = planet.radius + PLAYER_BUFFER_DIST;
if (dx * dx + dy * dy <= range * range) {
@@ -2392,9 +2423,9 @@
;
function updateList(list, idle) {
for (var i = list.length - 1; i >= 0; i--) {
var item = list[i];
- if (item.update && item.update(idle)) {
+ if (item._update_migrated && item._update_migrated(idle)) {
item.destroy();
list.splice(i, 1);
}
}
@@ -2454,10 +2485,14 @@
if (currentPlanet === NAVIGATION[NAVIGATION.length - 1]) {
if (winningTick < 0) {
saveStats();
winningTick = LK.ticks;
+ bonusPoints = Math.max(0, Math.floor((BONUS_TICK_CUTOFF - winningTick) * BONUS_TICK_MULTIPLIER));
+ LK.setScore(LK.getScore() + bonusPoints);
}
- winningMessage = LK.gui.center.addChild(new WinningMessage(0, -100, winningTick));
+ winningMessage = LK.gui.center.addChild(new WinningMessage({
+ y: -100
+ }));
} else if (winningMessage) {
winningMessage.destroy();
winningMessage = undefined;
}
pixel art of a tiny planet. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art of a planet. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art of an alien currency symbol. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art of a planet made of gold ore. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
plain black background with stars. 2d repeating Texture.
pixel art of a asteroid. Game asset. 2d. Blank background. High contrast. No shadows.
pixel art of a cute alien farmer, side view. Game asset. 2d. Blank background. High contrast. No shadows.
pixel art of a rocky explosion.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art flame particle. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art of a large white, empty, rectangular, speech bubble. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art of a red chevron. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Pixel art of yellow grapes. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.