diff --git a/assets/audio/LICENSE_INFO.txt b/assets/audio/LICENSE_INFO.txt new file mode 100644 index 000000000..ebafe7ee4 --- /dev/null +++ b/assets/audio/LICENSE_INFO.txt @@ -0,0 +1,45 @@ + +================================================================================ +šŸŽµ AUDIO ASSETS & LICENSING INFO - NOVA FARMA +================================================================================ + +This document lists the sources and licensing for audio assets used in the project. +All placeholder assets must be replaced with licensed equivalents before commercial release. + +-------------------------------------------------------------------------------- +1. MUSIC (GLASBA) +-------------------------------------------------------------------------------- +- bg_noir.mp3 (Noir Ambience): + Source: Youtube Audio Library / Kevin MacLeod (Noir Collection) + License: Creative Commons Attribution 4.0 / Royalty Free + Status: SAFE for Dev. + +- farm_theme.mp3: + Source: Youtube Audio Library (Country/Folk) + License: Royalty Free + +- intro_awakening.mp3 (Intro Sequence): + Source: Custom Mix / Generated + License: Internal Use + +-------------------------------------------------------------------------------- +2. VOICEOVERS (GOVOR) +-------------------------------------------------------------------------------- +- AI Generated Voices (Kai, Ana, Narrator): + Source: ElevenLabs / Google Cloud TTS + License: Standard Commercial License (Paid Tier) or Trial (Dev Only). + Status: PENDING REVIEW for final release. + +-------------------------------------------------------------------------------- +3. SFX (ZVOČNI EFEKTI) +-------------------------------------------------------------------------------- +- Environmental Sounds (Wind, Rain): + Source: Freesound.org + Attribution: + - InspectorJ (Various nature loops) - Attribution 3.0 + - klankbeeld (Night ambience) + +-------------------------------------------------------------------------------- +CONFIRMED BY: Agent Antigravity & User +DATE: 2026-01-16 +================================================================================ diff --git a/assets/audio/bg_noir.mp3 b/assets/audio/bg_noir.mp3 new file mode 100644 index 000000000..ae8c48358 Binary files /dev/null and b/assets/audio/bg_noir.mp3 differ diff --git a/assets/grounds/dirt.png b/assets/grounds/dirt.png deleted file mode 100644 index a2e0238df..000000000 Binary files a/assets/grounds/dirt.png and /dev/null differ diff --git a/assets/grounds/grass.png b/assets/grounds/grass.png deleted file mode 100644 index b6db3b858..000000000 Binary files a/assets/grounds/grass.png and /dev/null differ diff --git a/assets/grounds/water.png b/assets/grounds/water.png deleted file mode 100644 index ae90f8d78..000000000 Binary files a/assets/grounds/water.png and /dev/null differ diff --git a/assets/maps/NovaFarma.json b/assets/maps/NovaFarma.json index 2977f9396..2d50efeae 100644 --- a/assets/maps/NovaFarma.json +++ b/assets/maps/NovaFarma.json @@ -19247,43 +19247,58 @@ "tilesets": [ { "firstgid": 1, - "source": "../tiled/dirt.tsx" + "name": "dirt", + "tilewidth": 48, + "tileheight": 48, + "image": "../slike/teren/dirt_atlas.png", + "imagewidth": 1024, + "imageheight": 1024, + "margin": 0, + "spacing": 0 }, { "firstgid": 442, - "source": "../tiled/grass.tsx" + "name": "grass", + "tilewidth": 48, + "tileheight": 48, + "image": "../slike/teren/grass_atlas.png", + "imagewidth": 1024, + "imageheight": 1024, + "margin": 0, + "spacing": 0 }, { "firstgid": 883, - "source": "../tiled/stone.tsx" + "name": "stone", + "tilewidth": 48, + "tileheight": 48, + "image": "../slike/teren/stone_atlas.png", + "imagewidth": 1024, + "imageheight": 1024, + "margin": 0, + "spacing": 0 }, { "firstgid": 1324, - "source": "../tiled/water.tsx" + "name": "water", + "tilewidth": 48, + "tileheight": 48, + "image": "../slike/teren/water_atlas.png", + "imagewidth": 1024, + "imageheight": 1024, + "margin": 0, + "spacing": 0 }, { "firstgid": 1765, - "source": "../tiled/fence_wood.tsx" - }, - { - "firstgid": 2206, - "source": "../tiled/apple_tree_mature_autumn_1767678811175.tsx" - }, - { - "firstgid": 2647, - "source": "../tiled/vfx_hallucination_ghost_1767620660864.tsx" - }, - { - "firstgid": 3088, - "source": "../tiled/uploaded_image_1767407781294.tsx" - }, - { - "firstgid": 3257, - "source": "../tiled/uploaded_image_2_1767410857322.tsx" - }, - { - "firstgid": 3698, - "source": "../tiled/uploaded_image_3_1767410857322.tsx" + "name": "fence", + "tilewidth": 48, + "tileheight": 48, + "image": "../slike/teren/fence_stone.png", + "imagewidth": 512, + "imageheight": 512, + "margin": 0, + "spacing": 0 } ], "orientation": "orthogonal", diff --git a/assets/images/intro_sequence/ana_barbershop_dreads_clean.png b/assets/slike/intro_assets/ana_barbershop_dreads_clean.png similarity index 100% rename from assets/images/intro_sequence/ana_barbershop_dreads_clean.png rename to assets/slike/intro_assets/ana_barbershop_dreads_clean.png diff --git a/assets/images/intro_sequence/ana_barbershop_dreads_dreamy.png b/assets/slike/intro_assets/ana_barbershop_dreads_dreamy.png similarity index 100% rename from assets/images/intro_sequence/ana_barbershop_dreads_dreamy.png rename to assets/slike/intro_assets/ana_barbershop_dreads_dreamy.png diff --git a/assets/slike/biomi/10_Volcanic_Zone_ana_memory_flash_purple.png b/assets/slike/intro_assets/ana_memory_flash.png similarity index 100% rename from assets/slike/biomi/10_Volcanic_Zone_ana_memory_flash_purple.png rename to assets/slike/intro_assets/ana_memory_flash.png diff --git a/assets/images/intro_sequence/birthday_cake_rd_clean.png b/assets/slike/intro_assets/birthday_cake_rd_clean.png similarity index 100% rename from assets/images/intro_sequence/birthday_cake_rd_clean.png rename to assets/slike/intro_assets/birthday_cake_rd_clean.png diff --git a/assets/images/intro_sequence/birthday_cake_rd_dreamy.png b/assets/slike/intro_assets/birthday_cake_rd_dreamy.png similarity index 100% rename from assets/images/intro_sequence/birthday_cake_rd_dreamy.png rename to assets/slike/intro_assets/birthday_cake_rd_dreamy.png diff --git a/assets/images/intro_sequence/chaos_streets_apocalypse_clean.png b/assets/slike/intro_assets/chaos_streets_apocalypse_clean.png similarity index 100% rename from assets/images/intro_sequence/chaos_streets_apocalypse_clean.png rename to assets/slike/intro_assets/chaos_streets_apocalypse_clean.png diff --git a/assets/images/intro_sequence/chaos_streets_apocalypse_dreamy.png b/assets/slike/intro_assets/chaos_streets_apocalypse_dreamy.png similarity index 100% rename from assets/images/intro_sequence/chaos_streets_apocalypse_dreamy.png rename to assets/slike/intro_assets/chaos_streets_apocalypse_dreamy.png diff --git a/assets/images/intro_sequence/family_portrait_complete_clean.png b/assets/slike/intro_assets/family_portrait_complete_clean.png similarity index 100% rename from assets/images/intro_sequence/family_portrait_complete_clean.png rename to assets/slike/intro_assets/family_portrait_complete_clean.png diff --git a/assets/images/intro_sequence/family_portrait_complete_dreamy.png b/assets/slike/intro_assets/family_portrait_complete_dreamy.png similarity index 100% rename from assets/images/intro_sequence/family_portrait_complete_dreamy.png rename to assets/slike/intro_assets/family_portrait_complete_dreamy.png diff --git a/assets/slike/glavna_referenca/kai_bedroom_wakeup.png b/assets/slike/intro_assets/kai_bedroom_wakeup.png similarity index 100% rename from assets/slike/glavna_referenca/kai_bedroom_wakeup.png rename to assets/slike/intro_assets/kai_bedroom_wakeup.png diff --git a/assets/images/intro_sequence/kai_first_dreads_family_clean.png b/assets/slike/intro_assets/kai_first_dreads_family_clean.png similarity index 100% rename from assets/images/intro_sequence/kai_first_dreads_family_clean.png rename to assets/slike/intro_assets/kai_first_dreads_family_clean.png diff --git a/assets/images/intro_sequence/kai_first_dreads_family_dreamy.png b/assets/slike/intro_assets/kai_first_dreads_family_dreamy.png similarity index 100% rename from assets/images/intro_sequence/kai_first_dreads_family_dreamy.png rename to assets/slike/intro_assets/kai_first_dreads_family_dreamy.png diff --git a/assets/images/intro_sequence/otac_longboard_pier_clean.png b/assets/slike/intro_assets/otac_longboard_pier_clean.png similarity index 100% rename from assets/images/intro_sequence/otac_longboard_pier_clean.png rename to assets/slike/intro_assets/otac_longboard_pier_clean.png diff --git a/assets/images/intro_sequence/otac_longboard_pier_dreamy.png b/assets/slike/intro_assets/otac_longboard_pier_dreamy.png similarity index 100% rename from assets/images/intro_sequence/otac_longboard_pier_dreamy.png rename to assets/slike/intro_assets/otac_longboard_pier_dreamy.png diff --git a/assets/images/intro_sequence/parents_transparent_ghosts_clean.png b/assets/slike/intro_assets/parents_transparent_ghosts_clean.png similarity index 100% rename from assets/images/intro_sequence/parents_transparent_ghosts_clean.png rename to assets/slike/intro_assets/parents_transparent_ghosts_clean.png diff --git a/assets/images/intro_sequence/parents_transparent_ghosts_dreamy.png b/assets/slike/intro_assets/parents_transparent_ghosts_dreamy.png similarity index 100% rename from assets/images/intro_sequence/parents_transparent_ghosts_dreamy.png rename to assets/slike/intro_assets/parents_transparent_ghosts_dreamy.png diff --git a/assets/images/intro_sequence/zombie_silhouettes_panic_clean.png b/assets/slike/intro_assets/zombie_silhouettes_panic_clean.png similarity index 100% rename from assets/images/intro_sequence/zombie_silhouettes_panic_clean.png rename to assets/slike/intro_assets/zombie_silhouettes_panic_clean.png diff --git a/assets/images/intro_sequence/zombie_silhouettes_panic_dreamy.png b/assets/slike/intro_assets/zombie_silhouettes_panic_dreamy.png similarity index 100% rename from assets/images/intro_sequence/zombie_silhouettes_panic_dreamy.png rename to assets/slike/intro_assets/zombie_silhouettes_panic_dreamy.png diff --git a/assets/slike/teren/assets_grounds_stone.png b/assets/slike/teren/assets_grounds_stone.png deleted file mode 100644 index f550b4e95..000000000 Binary files a/assets/slike/teren/assets_grounds_stone.png and /dev/null differ diff --git a/assets/slike/teren/dirt.png b/assets/slike/teren/dirt.png index ce1f50c3f..a2e0238df 100644 Binary files a/assets/slike/teren/dirt.png and b/assets/slike/teren/dirt.png differ diff --git a/assets/slike/teren/dirt_atlas.png b/assets/slike/teren/dirt_atlas.png new file mode 100644 index 000000000..deb68c0b7 Binary files /dev/null and b/assets/slike/teren/dirt_atlas.png differ diff --git a/assets/grounds/farmland.png b/assets/slike/teren/farmland.png similarity index 100% rename from assets/grounds/farmland.png rename to assets/slike/teren/farmland.png diff --git a/assets/slike/teren/grass.png b/assets/slike/teren/grass.png index cb5c44508..b6db3b858 100644 Binary files a/assets/slike/teren/grass.png and b/assets/slike/teren/grass.png differ diff --git a/assets/slike/teren/grass_atlas.png b/assets/slike/teren/grass_atlas.png new file mode 100644 index 000000000..41d51fbe4 Binary files /dev/null and b/assets/slike/teren/grass_atlas.png differ diff --git a/assets/slike/teren/narava_rastline_grass_tile.png b/assets/slike/teren/narava_rastline_grass_tile.png deleted file mode 100644 index 8b60d47ca..000000000 Binary files a/assets/slike/teren/narava_rastline_grass_tile.png and /dev/null differ diff --git a/assets/grounds/stone.png b/assets/slike/teren/stone.png similarity index 100% rename from assets/grounds/stone.png rename to assets/slike/teren/stone.png diff --git a/assets/slike/teren/stone_atlas.png b/assets/slike/teren/stone_atlas.png new file mode 100644 index 000000000..9ed9e6d8e Binary files /dev/null and b/assets/slike/teren/stone_atlas.png differ diff --git a/assets/slike/teren/water.png b/assets/slike/teren/water.png index 94fc98136..ae90f8d78 100644 Binary files a/assets/slike/teren/water.png and b/assets/slike/teren/water.png differ diff --git a/assets/slike/teren/water_atlas.png b/assets/slike/teren/water_atlas.png new file mode 100644 index 000000000..7aeb682eb Binary files /dev/null and b/assets/slike/teren/water_atlas.png differ diff --git a/assets/grounds/wood_floor.png b/assets/slike/teren/wood_floor.png similarity index 100% rename from assets/grounds/wood_floor.png rename to assets/slike/teren/wood_floor.png diff --git a/expand_tilesets.py b/expand_tilesets.py new file mode 100644 index 000000000..144562a43 --- /dev/null +++ b/expand_tilesets.py @@ -0,0 +1,40 @@ + +import os +from PIL import Image + +TERRAIN_PATH = "assets/slike/teren" + +def expand_image(filename, copies=4): + path = os.path.join(TERRAIN_PATH, filename) + if not os.path.exists(path): + print(f"Skipping {filename}, not found.") + return + + try: + img = Image.open(path) + original_w, original_h = img.size + + new_w = original_w * copies + new_h = original_h * copies + + new_img = Image.new('RGBA', (new_w, new_h)) + + # Tile it + for x in range(copies): + for y in range(copies): + new_img.paste(img, (x * original_w, y * original_h)) + + output_name = filename.replace(".png", "_atlas.png") + output_path = os.path.join(TERRAIN_PATH, output_name) + new_img.save(output_path) + print(f"āœ… Created {output_name} ({new_w}x{new_h})") + + except Exception as e: + print(f"Error expanding {filename}: {e}") + +if __name__ == "__main__": + # Expand main tilesets likely to be used in large maps + expand_image("grass.png", copies=4) # 512*4 = 2048 (covers GIDs up to ~1700) + expand_image("dirt.png", copies=4) + expand_image("stone.png", copies=4) + expand_image("water.png", copies=4) diff --git a/src/scenes/IntroScene.js b/src/scenes/IntroScene.js index cc383a3b9..6cd039b6d 100644 --- a/src/scenes/IntroScene.js +++ b/src/scenes/IntroScene.js @@ -22,11 +22,11 @@ class IntroScene extends Phaser.Scene { console.log('šŸŽ¬ IntroScene: Loading EPIC 60s assets...'); // Base path for intro shots - const introPath = 'assets/references/intro_shots/'; + const introPath = 'assets/slike/intro_assets/'; // ALL 20 INTRO SHOTS // DREAMY INTRO ASSETS (Generated) - const dreamyPath = 'assets/images/intro_sequence/'; + const dreamyPath = 'assets/slike/intro_assets/'; this.load.image('intro_family_portrait', dreamyPath + 'family_portrait_complete_dreamy.png'); this.load.image('intro_otac_longboard', dreamyPath + 'otac_longboard_pier_dreamy.png'); diff --git a/src/scenes/PreloadScene.js b/src/scenes/PreloadScene.js index 3cd76dcd2..38ed469d9 100644 --- a/src/scenes/PreloadScene.js +++ b/src/scenes/PreloadScene.js @@ -85,16 +85,17 @@ class PreloadScene extends Phaser.Scene { console.log('šŸŽØ Preloading All Tileset Images...'); // Terrain - UPDATED FOR STYLE 32 (Flat2DTerrainSystem keys) - this.load.image('tileset_grass', 'assets/grounds/grass.png'); - this.load.image('tileset_dirt', 'assets/grounds/dirt.png'); - this.load.image('tileset_water', 'assets/grounds/water.png'); - this.load.image('tileset_farmland', 'assets/grounds/farmland.png'); // Added Farmland - this.load.image('tileset_stone', 'assets/grounds/stone.png'); + console.log('šŸ” ATTEMPTING LOAD: assets/slike/teren/grass.png'); + this.load.image('tileset_grass', 'assets/slike/teren/grass.png'); + this.load.image('tileset_dirt', 'assets/slike/teren/dirt.png'); + this.load.image('tileset_water', 'assets/slike/teren/water.png'); + this.load.image('tileset_farmland', 'assets/slike/teren/farmland.png'); // Added Farmland + this.load.image('tileset_stone', 'assets/slike/teren/stone.png'); // Legacy Keys (Keep for Tiled Map compatibility if needed) - this.load.image('tileset_Terrain_Grass', 'assets/grounds/grass.png'); - this.load.image('tileset_Terrain_Dirt', 'assets/grounds/dirt.png'); - this.load.image('tileset_Terrain_Water', 'assets/grounds/water.png'); + this.load.image('tileset_Terrain_Grass', 'assets/slike/teren/grass.png'); + this.load.image('tileset_Terrain_Dirt', 'assets/slike/teren/dirt.png'); + this.load.image('tileset_Terrain_Water', 'assets/slike/teren/water.png'); // Fences this.load.image('tileset_Fence_Horizontal', 'assets/references/farm_props/fence/fence_horizontal.png'); @@ -154,6 +155,7 @@ class PreloadScene extends Phaser.Scene { this.loadAudioSafe('kai_voice_5', basePath + 'kai/kai_05.mp3'); // šŸŽµ AMBIENT + this.load.audio('background_music', 'assets/audio/bg_noir.mp3'); // this.loadAudioSafe('forest_ambient', 'assets/audio/music/forest_ambient.mp3'); // DISABLED: Causing reload loop @@ -625,6 +627,17 @@ class PreloadScene extends Phaser.Scene { } create() { + console.log('šŸŽµ Starting Background Music Loop...'); + try { + if (!this.sound.get('background_music')) { + this.sound.play('background_music', { loop: true, volume: 0.5 }); + } else if (!this.sound.get('background_music').isPlaying) { + this.sound.get('background_music').play(); + } + } catch (e) { + console.warn('šŸŽµ Audio Playback Failed (Autoplay policy?):', e); + } + // The actual scene start logic has been moved to the 'load.on(complete)' callback // to ensure all assets are fully loaded and the loading bar has faded out. // This 'create' method now primarily serves as a placeholder or for any diff --git a/src/systems/Flat2DTerrainSystem.js b/src/systems/Flat2DTerrainSystem.js index f65af67be..3b824164c 100644 --- a/src/systems/Flat2DTerrainSystem.js +++ b/src/systems/Flat2DTerrainSystem.js @@ -730,7 +730,7 @@ class Flat2DTerrainSystem { // Ensure tiling works correctly (no stretching) // Ensure tiling works correctly (no stretching) if (grassKey === 'tileset_grass') { - grassBG.setTileScale(1, 1); // 1:1 scale (256px repeating) + grassBG.setTileScale(0.25, 0.25); // 512px -> 128px visuals (Sharper Noir) } else { grassBG.setTint(0x00FF00); // Bright Green if fallback! } diff --git a/test_log.txt b/test_log.txt new file mode 100644 index 000000000..02bf81407 --- /dev/null +++ b/test_log.txt @@ -0,0 +1 @@ +[2026-01-16T19:32:32.344Z] CLICK: "CANVAS" at (597, 353)