User prompt
arka ekranda bulut ve güneş olsun.
User prompt
silah kulesi en fazla 2 olsun.
User prompt
silah kulesi en fazla 3 olsun
User prompt
her kuş 5 puan olsun.her dalga 100 puanda değişsin.
User prompt
her atak 100 hedef olsun
User prompt
100 level olsun.Her level 5 atak olsun.
User prompt
mermi hızı iki kat artsın
User prompt
kule atışını yarıya düşür.
User prompt
arka ekran rengi ayarla
User prompt
20 canımız olsun
User prompt
kuşlar 4 katı gelsin
User prompt
her 100 skorda namlu adedi ve mermiler çoğalsın
User prompt
mermiler 4 kat hızlansın
User prompt
6 farklı kuş türü olsun.
User prompt
uçan kuşları silahla vurma oyunu yap
User prompt
Compilation error[L15]: Plugins failed to load.clen
Code edit (1 edits merged)
Please save this source code
User prompt
Modern Commander: Base Defense
Initial prompt
modern commander tarzı bir oyun olsun
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Bullet class
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletGfx = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.dx = 0;
self.dy = 0;
self.damage = 1;
self.lifetime = 60; // ticks
self.update = function () {
self.x += self.dx;
self.y += self.dy;
self.lifetime--;
if (self.lifetime <= 0) {
self.destroy();
}
};
return self;
});
// Enemy class
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGfx = self.attachAsset('enemyUnit', {
anchorX: 0.5,
anchorY: 0.5
});
self.hp = 2 + wave;
self.speed = 2 + 0.2 * wave;
self.targetX = commandCenterPos.x;
self.targetY = commandCenterPos.y;
self.reward = 10 + 2 * wave;
self.update = function () {
var dx = self.targetX - self.x;
var dy = self.targetY - self.y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist > 2) {
self.x += dx / dist * self.speed;
self.y += dy / dist * self.speed;
}
};
return self;
});
// Turret class
var Turret = Container.expand(function () {
var self = Container.call(this);
// Attach base
var base = self.attachAsset('turretBase', {
anchorX: 0.5,
anchorY: 0.5
});
// Attach barrel
var barrel = self.attachAsset('turretBarrel', {
anchorX: 0.5,
anchorY: 0.85,
y: -30
});
self.level = 1;
self.fireRate = 60; // ticks between shots
self.lastShot = 0;
self.range = 500;
self.damage = 1;
self.upgrade = function () {
if (self.level < 3) {
self.level += 1;
self.fireRate = Math.max(30, self.fireRate - 10);
self.range += 80;
self.damage += 1;
// Animate upgrade
tween(self, {
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 120,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 120,
easing: tween.easeIn
});
}
});
}
};
// Find nearest enemy in range
self.findTarget = function () {
var minDist = self.range;
var target = null;
for (var i = 0; i < enemies.length; i++) {
var e = enemies[i];
var dx = e.x - self.x;
var dy = e.y - self.y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < minDist) {
minDist = dist;
target = e;
}
}
return target;
};
// Called every tick
self.update = function () {
// Find target
var target = self.findTarget();
if (target) {
// Rotate barrel towards target
var dx = target.x - self.x;
var dy = target.y - self.y;
var angle = Math.atan2(dy, dx) - Math.PI / 2;
barrel.rotation = angle;
// Fire if ready
if (LK.ticks - self.lastShot >= self.fireRate) {
self.lastShot = LK.ticks;
var b = new Bullet();
b.x = self.x;
b.y = self.y;
b.rotation = angle + Math.PI / 2;
b.dx = Math.cos(angle + Math.PI / 2) * 32;
b.dy = Math.sin(angle + Math.PI / 2) * 32;
b.damage = self.damage;
bullets.push(b);
game.addChild(b);
}
}
};
// Touch to upgrade
self.down = function (x, y, obj) {
if (resources >= turretUpgradeCost(self.level)) {
resources -= turretUpgradeCost(self.level);
self.upgrade();
updateResourceText();
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x222831
});
/****
* Game Code
****/
// Build button
// Upgrade button
// Bullet
// Enemy unit
// Command center
// Turret barrel
// Turret base
// Game constants
var baseWidth = 2048;
var baseHeight = 2732;
var commandCenterPos = {
x: baseWidth / 2,
y: baseHeight - 350
};
var turretSpots = [{
x: baseWidth / 2 - 350,
y: baseHeight - 700
}, {
x: baseWidth / 2 + 350,
y: baseHeight - 700
}, {
x: baseWidth / 2 - 600,
y: baseHeight - 1100
}, {
x: baseWidth / 2 + 600,
y: baseHeight - 1100
}, {
x: baseWidth / 2,
y: baseHeight - 1100
}];
var maxTurrets = 5;
var turretBuildCost = 50;
function turretUpgradeCost(level) {
return 40 * level;
}
var wave = 1;
var enemies = [];
var bullets = [];
var turrets = [];
var resources = 100;
var commandCenterHP = 10;
var isPlacingTurret = false;
// Command Center
var commandCenter = LK.getAsset('commandCenter', {
anchorX: 0.5,
anchorY: 0.5,
x: commandCenterPos.x,
y: commandCenterPos.y
});
game.addChild(commandCenter);
// GUI: Resource display
var resourceTxt = new Text2('Resources: 100', {
size: 80,
fill: "#fff"
});
resourceTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(resourceTxt);
// GUI: Wave display
var waveTxt = new Text2('Wave: 1', {
size: 80,
fill: "#fff"
});
waveTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(waveTxt);
waveTxt.y = 90;
// GUI: Command Center HP
var hpTxt = new Text2('Base HP: 10', {
size: 80,
fill: "#fff"
});
hpTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(hpTxt);
hpTxt.y = 180;
// GUI: Build Turret Button
var buildBtn = LK.getAsset('buildBtn', {
anchorX: 0.5,
anchorY: 0.5,
x: baseWidth / 2 - 250,
y: baseHeight - 180
});
var buildBtnTxt = new Text2('Build Turret\n50', {
size: 48,
fill: "#fff"
});
buildBtnTxt.anchor.set(0.5, 0.5);
buildBtn.addChild(buildBtnTxt);
game.addChild(buildBtn);
// GUI: Upgrade All Button
var upgradeBtn = LK.getAsset('upgradeBtn', {
anchorX: 0.5,
anchorY: 0.5,
x: baseWidth / 2 + 250,
y: baseHeight - 180
});
var upgradeBtnTxt = new Text2('Upgrade All', {
size: 48,
fill: "#fff"
});
upgradeBtnTxt.anchor.set(0.5, 0.5);
upgradeBtn.addChild(upgradeBtnTxt);
game.addChild(upgradeBtn);
// Update resource text
function updateResourceText() {
resourceTxt.setText('Resources: ' + resources);
}
function updateWaveText() {
waveTxt.setText('Wave: ' + wave);
}
function updateHPText() {
hpTxt.setText('Base HP: ' + commandCenterHP);
}
// Build turret on next available spot
function buildTurret() {
if (resources < turretBuildCost) return;
if (turrets.length >= maxTurrets) return;
var spot = turretSpots[turrets.length];
var t = new Turret();
t.x = spot.x;
t.y = spot.y;
turrets.push(t);
game.addChild(t);
resources -= turretBuildCost;
updateResourceText();
}
// Upgrade all turrets
function upgradeAllTurrets() {
for (var i = 0; i < turrets.length; i++) {
var t = turrets[i];
if (t.level < 3 && resources >= turretUpgradeCost(t.level)) {
resources -= turretUpgradeCost(t.level);
t.upgrade();
}
}
updateResourceText();
}
// Build button event
buildBtn.down = function (x, y, obj) {
buildTurret();
};
// Upgrade button event
upgradeBtn.down = function (x, y, obj) {
upgradeAllTurrets();
};
// Place initial turret
buildTurret();
// Enemy spawn logic
var spawnTimer = 0;
var enemiesToSpawn = 0;
function startWave() {
enemiesToSpawn = 4 + wave * 2;
spawnTimer = 0;
updateWaveText();
}
startWave();
// Main game update
game.update = function () {
// Turrets update
for (var i = 0; i < turrets.length; i++) {
turrets[i].update();
}
// Bullets update
for (var i = bullets.length - 1; i >= 0; i--) {
var b = bullets[i];
b.update();
// Remove if out of bounds
if (b.x < -100 || b.x > baseWidth + 100 || b.y < -100 || b.y > baseHeight + 100 || b.lifetime <= 0) {
b.destroy();
bullets.splice(i, 1);
continue;
}
// Check collision with enemies
for (var j = enemies.length - 1; j >= 0; j--) {
var e = enemies[j];
if (b.intersects(e)) {
e.hp -= b.damage;
b.destroy();
bullets.splice(i, 1);
// Animate hit
tween(e, {
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 80,
onFinish: function onFinish() {
tween(e, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
if (e.hp <= 0) {
// Enemy destroyed
resources += e.reward;
updateResourceText();
e.destroy();
enemies.splice(j, 1);
}
break;
}
}
}
// Enemies update
for (var i = enemies.length - 1; i >= 0; i--) {
var e = enemies[i];
e.update();
// Check if reached command center
if (e.intersects(commandCenter)) {
commandCenterHP -= 1;
updateHPText();
// Animate base hit
LK.effects.flashObject(commandCenter, 0xff0000, 300);
e.destroy();
enemies.splice(i, 1);
if (commandCenterHP <= 0) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
}
}
// Enemy spawn
if (enemiesToSpawn > 0) {
if (spawnTimer <= 0) {
// Spawn enemy at random edge
var edge = Math.floor(Math.random() * 3);
var ex, ey;
if (edge === 0) {
// left
ex = 100;
ey = 600 + Math.random() * 800;
} else if (edge === 1) {
// right
ex = baseWidth - 100;
ey = 600 + Math.random() * 800;
} else {
// top
ex = baseWidth / 2 - 400 + Math.random() * 800;
ey = 100;
}
var enemy = new Enemy();
enemy.x = ex;
enemy.y = ey;
enemies.push(enemy);
game.addChild(enemy);
enemiesToSpawn--;
spawnTimer = Math.max(30, 90 - wave * 2);
} else {
spawnTimer--;
}
} else if (enemies.length === 0) {
// Next wave
wave++;
commandCenterHP = Math.min(10, commandCenterHP + 2);
updateHPText();
startWave();
}
};
// Touch to upgrade turrets directly
game.down = function (x, y, obj) {
// Check if touch is on a turret
for (var i = 0; i < turrets.length; i++) {
var t = turrets[i];
var dx = x - t.x;
var dy = y - t.y;
if (dx * dx + dy * dy < 100 * 100) {
// Try upgrade
if (resources >= turretUpgradeCost(t.level) && t.level < 3) {
resources -= turretUpgradeCost(t.level);
t.upgrade();
updateResourceText();
}
return;
}
}
};
// Prevent placing elements in top left 100x100
// (All GUI is centered or at bottom, so nothing to do here) ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,437 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Bullet class
+var Bullet = Container.expand(function () {
+ var self = Container.call(this);
+ var bulletGfx = self.attachAsset('bullet', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.dx = 0;
+ self.dy = 0;
+ self.damage = 1;
+ self.lifetime = 60; // ticks
+ self.update = function () {
+ self.x += self.dx;
+ self.y += self.dy;
+ self.lifetime--;
+ if (self.lifetime <= 0) {
+ self.destroy();
+ }
+ };
+ return self;
+});
+// Enemy class
+var Enemy = Container.expand(function () {
+ var self = Container.call(this);
+ var enemyGfx = self.attachAsset('enemyUnit', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.hp = 2 + wave;
+ self.speed = 2 + 0.2 * wave;
+ self.targetX = commandCenterPos.x;
+ self.targetY = commandCenterPos.y;
+ self.reward = 10 + 2 * wave;
+ self.update = function () {
+ var dx = self.targetX - self.x;
+ var dy = self.targetY - self.y;
+ var dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist > 2) {
+ self.x += dx / dist * self.speed;
+ self.y += dy / dist * self.speed;
+ }
+ };
+ return self;
+});
+// Turret class
+var Turret = Container.expand(function () {
+ var self = Container.call(this);
+ // Attach base
+ var base = self.attachAsset('turretBase', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Attach barrel
+ var barrel = self.attachAsset('turretBarrel', {
+ anchorX: 0.5,
+ anchorY: 0.85,
+ y: -30
+ });
+ self.level = 1;
+ self.fireRate = 60; // ticks between shots
+ self.lastShot = 0;
+ self.range = 500;
+ self.damage = 1;
+ self.upgrade = function () {
+ if (self.level < 3) {
+ self.level += 1;
+ self.fireRate = Math.max(30, self.fireRate - 10);
+ self.range += 80;
+ self.damage += 1;
+ // Animate upgrade
+ tween(self, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 120,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ tween(self, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 120,
+ easing: tween.easeIn
+ });
+ }
+ });
+ }
+ };
+ // Find nearest enemy in range
+ self.findTarget = function () {
+ var minDist = self.range;
+ var target = null;
+ for (var i = 0; i < enemies.length; i++) {
+ var e = enemies[i];
+ var dx = e.x - self.x;
+ var dy = e.y - self.y;
+ var dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist < minDist) {
+ minDist = dist;
+ target = e;
+ }
+ }
+ return target;
+ };
+ // Called every tick
+ self.update = function () {
+ // Find target
+ var target = self.findTarget();
+ if (target) {
+ // Rotate barrel towards target
+ var dx = target.x - self.x;
+ var dy = target.y - self.y;
+ var angle = Math.atan2(dy, dx) - Math.PI / 2;
+ barrel.rotation = angle;
+ // Fire if ready
+ if (LK.ticks - self.lastShot >= self.fireRate) {
+ self.lastShot = LK.ticks;
+ var b = new Bullet();
+ b.x = self.x;
+ b.y = self.y;
+ b.rotation = angle + Math.PI / 2;
+ b.dx = Math.cos(angle + Math.PI / 2) * 32;
+ b.dy = Math.sin(angle + Math.PI / 2) * 32;
+ b.damage = self.damage;
+ bullets.push(b);
+ game.addChild(b);
+ }
+ }
+ };
+ // Touch to upgrade
+ self.down = function (x, y, obj) {
+ if (resources >= turretUpgradeCost(self.level)) {
+ resources -= turretUpgradeCost(self.level);
+ self.upgrade();
+ updateResourceText();
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x222831
+});
+
+/****
+* Game Code
+****/
+// Build button
+// Upgrade button
+// Bullet
+// Enemy unit
+// Command center
+// Turret barrel
+// Turret base
+// Game constants
+var baseWidth = 2048;
+var baseHeight = 2732;
+var commandCenterPos = {
+ x: baseWidth / 2,
+ y: baseHeight - 350
+};
+var turretSpots = [{
+ x: baseWidth / 2 - 350,
+ y: baseHeight - 700
+}, {
+ x: baseWidth / 2 + 350,
+ y: baseHeight - 700
+}, {
+ x: baseWidth / 2 - 600,
+ y: baseHeight - 1100
+}, {
+ x: baseWidth / 2 + 600,
+ y: baseHeight - 1100
+}, {
+ x: baseWidth / 2,
+ y: baseHeight - 1100
+}];
+var maxTurrets = 5;
+var turretBuildCost = 50;
+function turretUpgradeCost(level) {
+ return 40 * level;
+}
+var wave = 1;
+var enemies = [];
+var bullets = [];
+var turrets = [];
+var resources = 100;
+var commandCenterHP = 10;
+var isPlacingTurret = false;
+// Command Center
+var commandCenter = LK.getAsset('commandCenter', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: commandCenterPos.x,
+ y: commandCenterPos.y
+});
+game.addChild(commandCenter);
+// GUI: Resource display
+var resourceTxt = new Text2('Resources: 100', {
+ size: 80,
+ fill: "#fff"
+});
+resourceTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(resourceTxt);
+// GUI: Wave display
+var waveTxt = new Text2('Wave: 1', {
+ size: 80,
+ fill: "#fff"
+});
+waveTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(waveTxt);
+waveTxt.y = 90;
+// GUI: Command Center HP
+var hpTxt = new Text2('Base HP: 10', {
+ size: 80,
+ fill: "#fff"
+});
+hpTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(hpTxt);
+hpTxt.y = 180;
+// GUI: Build Turret Button
+var buildBtn = LK.getAsset('buildBtn', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: baseWidth / 2 - 250,
+ y: baseHeight - 180
+});
+var buildBtnTxt = new Text2('Build Turret\n50', {
+ size: 48,
+ fill: "#fff"
+});
+buildBtnTxt.anchor.set(0.5, 0.5);
+buildBtn.addChild(buildBtnTxt);
+game.addChild(buildBtn);
+// GUI: Upgrade All Button
+var upgradeBtn = LK.getAsset('upgradeBtn', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: baseWidth / 2 + 250,
+ y: baseHeight - 180
+});
+var upgradeBtnTxt = new Text2('Upgrade All', {
+ size: 48,
+ fill: "#fff"
+});
+upgradeBtnTxt.anchor.set(0.5, 0.5);
+upgradeBtn.addChild(upgradeBtnTxt);
+game.addChild(upgradeBtn);
+// Update resource text
+function updateResourceText() {
+ resourceTxt.setText('Resources: ' + resources);
+}
+function updateWaveText() {
+ waveTxt.setText('Wave: ' + wave);
+}
+function updateHPText() {
+ hpTxt.setText('Base HP: ' + commandCenterHP);
+}
+// Build turret on next available spot
+function buildTurret() {
+ if (resources < turretBuildCost) return;
+ if (turrets.length >= maxTurrets) return;
+ var spot = turretSpots[turrets.length];
+ var t = new Turret();
+ t.x = spot.x;
+ t.y = spot.y;
+ turrets.push(t);
+ game.addChild(t);
+ resources -= turretBuildCost;
+ updateResourceText();
+}
+// Upgrade all turrets
+function upgradeAllTurrets() {
+ for (var i = 0; i < turrets.length; i++) {
+ var t = turrets[i];
+ if (t.level < 3 && resources >= turretUpgradeCost(t.level)) {
+ resources -= turretUpgradeCost(t.level);
+ t.upgrade();
+ }
+ }
+ updateResourceText();
+}
+// Build button event
+buildBtn.down = function (x, y, obj) {
+ buildTurret();
+};
+// Upgrade button event
+upgradeBtn.down = function (x, y, obj) {
+ upgradeAllTurrets();
+};
+// Place initial turret
+buildTurret();
+// Enemy spawn logic
+var spawnTimer = 0;
+var enemiesToSpawn = 0;
+function startWave() {
+ enemiesToSpawn = 4 + wave * 2;
+ spawnTimer = 0;
+ updateWaveText();
+}
+startWave();
+// Main game update
+game.update = function () {
+ // Turrets update
+ for (var i = 0; i < turrets.length; i++) {
+ turrets[i].update();
+ }
+ // Bullets update
+ for (var i = bullets.length - 1; i >= 0; i--) {
+ var b = bullets[i];
+ b.update();
+ // Remove if out of bounds
+ if (b.x < -100 || b.x > baseWidth + 100 || b.y < -100 || b.y > baseHeight + 100 || b.lifetime <= 0) {
+ b.destroy();
+ bullets.splice(i, 1);
+ continue;
+ }
+ // Check collision with enemies
+ for (var j = enemies.length - 1; j >= 0; j--) {
+ var e = enemies[j];
+ if (b.intersects(e)) {
+ e.hp -= b.damage;
+ b.destroy();
+ bullets.splice(i, 1);
+ // Animate hit
+ tween(e, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 80,
+ onFinish: function onFinish() {
+ tween(e, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 80
+ });
+ }
+ });
+ if (e.hp <= 0) {
+ // Enemy destroyed
+ resources += e.reward;
+ updateResourceText();
+ e.destroy();
+ enemies.splice(j, 1);
+ }
+ break;
+ }
+ }
+ }
+ // Enemies update
+ for (var i = enemies.length - 1; i >= 0; i--) {
+ var e = enemies[i];
+ e.update();
+ // Check if reached command center
+ if (e.intersects(commandCenter)) {
+ commandCenterHP -= 1;
+ updateHPText();
+ // Animate base hit
+ LK.effects.flashObject(commandCenter, 0xff0000, 300);
+ e.destroy();
+ enemies.splice(i, 1);
+ if (commandCenterHP <= 0) {
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ return;
+ }
+ }
+ }
+ // Enemy spawn
+ if (enemiesToSpawn > 0) {
+ if (spawnTimer <= 0) {
+ // Spawn enemy at random edge
+ var edge = Math.floor(Math.random() * 3);
+ var ex, ey;
+ if (edge === 0) {
+ // left
+ ex = 100;
+ ey = 600 + Math.random() * 800;
+ } else if (edge === 1) {
+ // right
+ ex = baseWidth - 100;
+ ey = 600 + Math.random() * 800;
+ } else {
+ // top
+ ex = baseWidth / 2 - 400 + Math.random() * 800;
+ ey = 100;
+ }
+ var enemy = new Enemy();
+ enemy.x = ex;
+ enemy.y = ey;
+ enemies.push(enemy);
+ game.addChild(enemy);
+ enemiesToSpawn--;
+ spawnTimer = Math.max(30, 90 - wave * 2);
+ } else {
+ spawnTimer--;
+ }
+ } else if (enemies.length === 0) {
+ // Next wave
+ wave++;
+ commandCenterHP = Math.min(10, commandCenterHP + 2);
+ updateHPText();
+ startWave();
+ }
+};
+// Touch to upgrade turrets directly
+game.down = function (x, y, obj) {
+ // Check if touch is on a turret
+ for (var i = 0; i < turrets.length; i++) {
+ var t = turrets[i];
+ var dx = x - t.x;
+ var dy = y - t.y;
+ if (dx * dx + dy * dy < 100 * 100) {
+ // Try upgrade
+ if (resources >= turretUpgradeCost(t.level) && t.level < 3) {
+ resources -= turretUpgradeCost(t.level);
+ t.upgrade();
+ updateResourceText();
+ }
+ return;
+ }
+ }
+};
+// Prevent placing elements in top left 100x100
+// (All GUI is centered or at bottom, so nothing to do here)
\ No newline at end of file
uçan kuş. In-Game asset. 2d. High contrast. No shadows
uçan kaz. In-Game asset. 2d. High contrast. No shadows
bulut. In-Game asset. 2d. High contrast. No shadows
güneş. In-Game asset. 2d. High contrast. No shadows
çimen uzun otlar.. In-Game asset. 2d. High contrast. No shadows
ağaç çınar. In-Game asset. 2d. High contrast. No shadows
karlı büyük dağ.. In-Game asset. 2d. High contrast. No shadows
grii dağlar.. In-Game asset. 2d. High contrast. No shadows
ağaçlı, çimenli dağ.. In-Game asset. 2d. High contrast. No shadows
tüfek saçması.. In-Game asset. 2d. High contrast. No shadows
beyaz kaz tüyü.. In-Game asset. 2d. High contrast. No shadows
kamuflaj giymiş avcı ayakta yukarıya ateş ediyor .gerçek fotoğraf.. In-Game asset. 2d. High contrast. No shadows sırtı bize dönük olsun