diff --git a/_data/games.json b/_data/games.json index 04eb6c4dc..7e6d0ec3a 100644 --- a/_data/games.json +++ b/_data/games.json @@ -4,7 +4,6 @@ "description": "What would your life be without modern technology on the deserted island? Dive into simplicity of the primal world with the modern Stone Age family in this thrilling offline adventure game. Stranded on the remote island, a family of four - Bruce, Eva and their kids - needs your guidance and help starting a new family home from scratch and navigating through various family life situations with humour.", "developer": "MoonActive", "downloads": "50M+ on Google Play (Sep 2025)", - "frontpage": "full", "id": "family_island", "images": { "full": "familyisland-full.png", @@ -18,28 +17,10 @@ "showcase": "full", "url": "https://play.google.com/store/apps/details?id=com.MelsoftGames.FamilyIslandFarm" }, - { - "description": "A classic style platformer with spacious levels, bonuses, treasure hunts and boss battles. Two playable characters (currently) to choose from to be used to adventure with. The game features mini games played for bonuses. It feels like true classic style gaming for mobile devices.", - "developer": "Genesys East Games", - "frontpage": "full", - "id": "shiboriland", - "images": { - "full": "shiboriland-full.png", - "half": "shiboriland-half.png", - "third": "shiboriland-third.png" - }, - "name": "Adventures in Shibori-Land", - "platforms": "Android", - "publisher": "", - "releasedate": "February 24, 2025", - "showcase": "full", - "url": "https://play.google.com/store/apps/details?id=com.genesyseast.shiboriland" - }, { "about": "third", "description": "Blast through rocks with your machine gun drill. Collect rare gems, ores and ancient artefacts, upgrade your ship and unlock new abilities. Uncover the mysteries of the deep and the dangers that lurk below.", "developer": "8BitSkull", - "games": "half", "id": "boreblasters", "images": { "full": "boreblasters-full.png", @@ -47,7 +28,7 @@ "third": "boreblasters-third.png" }, "name": "BORE BLASTERS", - "platforms": "Steam (Windows, Linux, macOS)", + "platforms": "Windows, macOS, Linux, Steam", "publisher": "8BitSkull", "releasedate": "March 2024", "showcase": "full", @@ -57,7 +38,6 @@ "about": "third", "description": "Monkey Mart is an idle/management game where you control a cute monkey character that just created their supermarket.", "developer": "TinyDobbins", - "frontpage": "full", "id": "monkeymart", "images": { "full": "monkeymart-full.png", @@ -65,7 +45,7 @@ "third": "monkeymart-third.png" }, "name": "Monkey Mart", - "platforms": "Web, Android", + "platforms": "Poki, Web, iOS, Android", "publisher": "TinyDobbins", "releasedate": "Q4 2022", "showcase": "full", @@ -74,8 +54,6 @@ { "description": "You are the unusual archer in this blocky adventure. Fight enemies, explore the world and defeat bosses in your journey to repair the portal and save the universe.", "developer": "d954mas", - "frontpage": "full", - "games": "half", "id": "blocky-universe", "images": { "full": "blocky-universe-full.png", @@ -86,13 +64,12 @@ "platforms": "Android, HTML5, Poki", "publisher": "d954mas", "releasedate": "November 2023", - "showcase": "full", + "showcase": "half", "url": "https://poki.com/en/g/blocky-universe" }, { "description": "Void Scrappers is a space horde survival shooter. Blast hordes of alien ships into junk. Collect the scrap to upgrade your ship into an unstoppable force of destruction. Unlock new characters and weapons and upgrade your stats between runs.", "developer": "8BitSkull", - "frontpage": "full", "id": "voidscrappers", "images": { "full": "voidscrappers-full.png", @@ -103,7 +80,7 @@ "platforms": "Steam (Windows, Linux, macOS), Nintendo Switch", "publisher": "8BitSkull", "releasedate": "Q4 2022", - "showcase": "full", + "showcase": "half", "url": "https://store.steampowered.com/app/2005210/Void_Scrappers/" }, { @@ -135,13 +112,12 @@ "platforms": "itch.io", "publisher": "", "releasedate": "September 2022", - "showcase": "half", + "showcase": "more-games", "url": "https://rhythmlynx.itch.io/curious-fishing/" }, { "description": "The investigation of multiple disappearances in the midst of the Black Death turns into a bloody stand against a new mysterious threat. Survive in a turn-based, tactical sandbox, managing a settlement and dozens of peasants, craftsmen and warriors to stop the upcoming Scourge.", "developer": "Red Unit Studios", - "frontpage": "full", "id": "plaguelords", "images": { "full": "plaguelords-full.png", @@ -149,9 +125,9 @@ "third": "plaguelords-third.png" }, "name": "Plague Lords", - "platforms": "Windows, Steam, Switch", + "platforms": "Windows, Steam", "publisher": "HypeTrain Digital", - "releasedate": "Q3 2024", + "releasedate": "2026", "showcase": "full", "url": "https://store.steampowered.com/app/2616100/Plague_Lords/" }, @@ -159,7 +135,6 @@ "about": "third", "description": "You land on a frozen planet in a tiny rocket with a robot inside. Harvest and combine materials to discover new ones. Use visual programming to make the robot do the tiresome work for you. Slowly build a gang of self-sustaining robot workers and watch them terraform the planet.", "developer": "Luden.io", - "frontpage": "full", "id": "craftomation-101", "images": { "full": "craftomation-101-full.png", @@ -167,14 +142,14 @@ "third": "craftomation-101-third.png" }, "name": "Craftomation 101", - "platforms": "iOS, Android, macOS, Windows, Linux, HTML5, Steam, Poki, itch.io", - "publisher": "", + "platforms": "Windows, macOS, Linux, Steam, Poki, itch.io, HTML5", + "publisher": "Luden.io", "releasedate": "February 2024", "showcase": "full", "url": "https://luden.io/craftomation/" }, { - "description": "BoxRob is a puzzle platform game. In this game, your objective is to load cargo onto a truck with your flexible forklift. In order to complete a level, you need to collect all the boxes and drop them into their appropriate slot. Some levels are easy and you are just driving around to collect the boxes, but as you proceed in the game the levels become harder. Perform special moves or follow sequences to solve the puzzle and complete the level.", + "description": "BoxRob is a puzzle-platformer where you use a flexible forklift to load cargo onto a truck. To complete each level, collect all the boxes and place them in the correct slots. Early stages are straightforward, but the puzzles ramp up in difficulty as you progress.", "developer": "7Spot Games", "id": "boxrob", "images": { @@ -183,7 +158,7 @@ "third": "boxrob-third.png" }, "name": "BoxRob", - "platforms": "Poki", + "platforms": "Android, Poki, HTML5", "publisher": "", "releasedate": "November 1, 2021", "showcase": "half", @@ -206,7 +181,7 @@ "url": "https://curiousfoxes.itch.io/catstories-newyear" }, { - "description": "Do you play Classic Solitaire, Pyramid, Freecell, Mahjong, Spider, Tripeaks Solitaire or other card puzzle free games? Solitaire fans and card puzzle games fans will love the Solitaire Towers Tournaments (also known as Towers, Tri peaks, Triple Peaks or Three Peaks)! Our puzzle game is a relaxing and challenging free card solitaire with new and unique concepts of playing solitaire games! Explore the world of Solitaire Towers Tournaments, the classic card game which allows you to train your brain with hundreds of entertaining solitaire card puzzles.", + "description": "Do you play Classic Solitaire, Pyramid, FreeCell, Mahjong, Spider, TriPeaks, or other card puzzle games? Solitaire fans will love Solitaire Towers Tournaments (also known as Towers, TriPeaks, Triple Peaks, or Three Peaks). It’s a relaxing yet challenging free card puzzle game with fresh, unique twists on classic solitaire.", "developer": "XI-ART Sp.z o.o.", "id": "solitaire-towers-tournaments", "images": { @@ -218,7 +193,7 @@ "platforms": "iOS, Android, HTML5", "publisher": "XI-ART Sp.z o.o.", "releasedate": "August 2021", - "showcase": "half", + "showcase": "more-games", "url": "https://www.xi-art.com/solitaire-towers-tournaments-game/" }, { @@ -231,7 +206,7 @@ "third": "zoom-be-third.png" }, "name": "ZOOM-BE", - "platforms": "Switch, Poki, iOS, Android, HTML5", + "platforms": "Nintendo Switch, Poki, iOS, Android, HTML5", "publisher": "Poki", "release_date": "May 2020", "showcase": "more-games", @@ -247,7 +222,7 @@ "third": "" }, "name": "Interrogation", - "platforms": "Switch, Desktop (Steam)", + "platforms": "Nintendo Switch, Windows, Linux, macOS, Steam, Android, iOS", "publisher": "Mixtvision", "releasedate": "2019", "showcase": "half", @@ -263,7 +238,7 @@ "third": "fatesofort-third.png" }, "name": "Fates of Ort", - "platforms": "Switch, Desktop", + "platforms": "Nintendo Switch, Desktop", "publisher": "", "releasedate": "2020", "showcase": "half", @@ -488,8 +463,8 @@ "name": "SpaceboomX", "platforms": "iOS", "publisher": "Lunius Entertainment", - "release_date": "Jan 2020", - "releasedate": "Jan 2020", + "release_date": "January 2020", + "releasedate": "January 2020", "showcase": "more-games", "url": "https://apps.apple.com/de/app/spaceboomx/id1543264384?l=en" }, @@ -560,8 +535,6 @@ { "description": "Take a trip to paradise in Cashchubbies Island! In this idle tycoon game, it's up to you to build and upgrade all the different parts of your island.", "developer": "d954mas", - "frontpage": "full", - "games": "half", "id": "cashchubbies_islands", "images": { "full": "cashchubbies_islands-full.png", @@ -569,17 +542,14 @@ "third": "cashchubbies_islands-third.png" }, "name": "Cashchubbies Islands", - "platforms": "Android, HTML5, Poki", - "publisher": "d954mas", + "platforms": "Android, Poki, HTML5", "releasedate": "April 2025", - "showcase": "full", + "showcase": "half", "url": "https://poki.com/en/g/cashchubbies-islands" }, { - "description": "Build your mining empire in Drills Merge Master, the ultimate idle miner tycoon game! Merge drills, dig deep for riches", + "description": "Build your mining empire in Drills Merge Master, the ultimate idle miner tycoon game! Merge drills, dig deeper for rich resources, and build a powerful mining machinery.", "developer": "d954mas", - "frontpage": "full", - "games": "half", "id": "drills_merge_master", "images": { "full": "drills_merge_master-full.png", @@ -587,17 +557,15 @@ "third": "drills_merge_master-third.png" }, "name": "Drills Merge Master", - "platforms": "Android, HTML5, Poki", + "platforms": "Android, Poki, HTML5", "publisher": "d954mas", "releasedate": "September 2025", "showcase": "full", "url": "https://poki.com/en/g/drills-merge-master" }, { - "description": "The ultimate idle boxing experience! Start your training journey, mastering gyms from boxing gym to space station.Ascend from a novice boxer to a legendary fighter.", + "description": "The ultimate idle boxing experience! Start your training journey, mastering gyms from a boxing gym to a space station. Ascend from a novice boxer to a legendary fighter.", "developer": "d954mas", - "frontpage": "full", - "games": "half", "id": "punch_legend_simulator", "images": { "full": "punch_legend_simulator-full.png", @@ -605,7 +573,7 @@ "third": "punch_legend_simulator-third.png" }, "name": "Punch Legend Simulator", - "platforms": "Android, HTML5, Poki", + "platforms": "Android, Poki, HTML5", "publisher": "d954mas", "releasedate": "June 2024", "showcase": "full", @@ -614,7 +582,6 @@ { "description": "A mash-up of Bubble Shooter and 2048: swipe to aim, bounce shots, and merge equal balls to build huge numbers. Clear tricky boards, beat boss layouts, and chase massive combos!", "developer": "WeDoYouPlay", - "games": "half", "id": "bounceball", "images": { "full": "bounceball-full.png", @@ -625,13 +592,12 @@ "platforms": "Android,Poki", "publisher": "", "releasedate": "June 2025", - "showcase": "full", + "showcase": "half", "url": "https://poki.com/en/g/bounce-ball" }, { - "description": "Combine weapons to craft powerful guns and take on stick figures", + "description": "A casual merge-and-shoot game where you combine weapons to craft stronger guns, then put them to the test by shooting moving stick-figure targets on a range. Build your arsenal through upgrades and power-ups as you progress toward increasingly powerful weapon tiers.", "developer": "TinyDobbins", - "games": "half", "id": "stickmerge", "images": { "full": "stickmerge-full.png", @@ -639,37 +605,33 @@ "third": "stickmerge-third.png" }, "name": "Stick Merge", - "platforms": "iOS,Android", + "platforms": "iOS, Android, Poki, HTML5", "publisher": "TinyDobbins", "releasedate": "Q1 2025", - "showcase": "full", - "url": "https://play.google.com/store/apps/details?id=com.tinydobbins.stickmerge" + "showcase": "half", + "url": "https://poki.com/en/g/stick-merge" }, { - "description": "A co-op automation adventure set in\u2026 we're not sure? But it's ok: just fix everything to get outta here, maybe. Use flags to set tasks for hordes of rusty robots! Make them work for you, as they march towards their doom. Sounds perfectly normal, right?", + "description": "An automation roguelite where single-use JunkDroids turn out to be surprisingly useful: automate production network, rebuild a broken world piece by piece, and stop the Goofy Goo before it consumes everything. Play solo or in coop.", "developer": "Luden.io", - "frontpage": "full", - "games": "half", "id": "superweird", "images": { - "full": "superweird-full.jpg", + "full": "superweird-full.png", "half": "superweird-half.jpg", "third": "superweird-third.jpg" }, "name": "SuperWEIRD", - "platforms": "iOS,Android,macOS,Windows,Linux,HTML5,Steam,Poki,itch.io", + "platforms": "Windows, macOS, Linux, Steam, Poki, itch.io, HTML5", "releasedate": "2026", "showcase": "full", - "url": "https://store.steampowered.com/app/3818770/SuperWEIRD/" + "url": "https://superweird.io/" }, { "description": "A turn-based grand strategy game, simple for newbies yet challenging for masters. As the leader of a nation, you will conquer territories and advance in military, technology, culture, or politics. Choose from historical scenarios or create your own with an editor.", "developer": "Luden.io", - "frontpage": "full", - "games": "half", "id": "warnament", "images": { - "full": "warnament-full.jpg", + "full": "warnament-full.png", "half": "warnament-half.jpg", "third": "warnament-third.jpg" }, @@ -683,7 +645,6 @@ { "description": "Feel the real medieval weirdness when you fight creatures and monsters painted by real medieval artists more than 5 centuries ago.", "developer": "Kebab Games", - "games": "half", "id": "marginalia_hero", "images": { "full": "", @@ -700,7 +661,6 @@ { "description": "Enter an enchanting world full of wonders, monsters, and match-making adventure with Monster Duo!", "developer": "Potato Jam", - "games": "half", "id": "monster_duo", "images": { "full": "monster_duo-full.png", @@ -716,24 +676,22 @@ { "description": "A nostalgic top-down racing game with vibrant pixel art. Choose from unique vehicles, conquer contrasting tracks, and master different modes. With intuitive arcade controls, experience high-speed excitement and become the ultimate racing champion in this retro race adventure! ", "developer": "171Dev", - "games": "half", "id": "tinyracing", "images": { "full": "tiny-racing-full.jpg", - "half": "tiny-racing-half.jpg", + "half": "tiny-racing-half.png", "third": "tiny-racing-third.jpg" }, "name": "Tiny Racing", "platforms": "Steam (Windows, Linux), Nintendo Switch", "publisher": "171Dev", "releasedate": "June 2025", - "showcase": "full", + "showcase": "half", "url": "https://store.steampowered.com/app/3358900/Tiny_Racing/" }, { "description": "Perfect+1 is a bite-sized, retro-styled, puzzle game in which you navigate through 48 mazes (of various sizes) in hope of reaching the exit. DO NOT take the shortest path to the exit. Instead, find a path with exactly 1 more move over perfection. If the shortest path is 3 moves, find a path that takes 4. Find Perfect+1.", "developer": "Hell Hog Games", - "games": "half", "id": "perfect-plus1", "images": { "full": "perfect-plus1-full.png", @@ -741,17 +699,15 @@ "third": "perfect-plus1-third.png" }, "name": "Perfect+1", - "platforms": "Android,macOS,Windows,Linux,HTML5,itch.io", + "platforms": "Android, macOS, Windows, Linux, HTML5, itch.io", "publisher": "Hell Hog Games", "releasedate": "August 2025", - "showcase": "half", + "showcase": "more-games", "url": "https://hellhog.itch.io/perfect-plus1" }, { "description": "A cozy merge-2 puzzle game for women who love cooking, decorating, and romance.\nMerge ingredients, discover hidden objects, and unlock chapters of your family's love story along the way.", "developer": "Happy Games Studio", - "frontpage": "full", - "games": "half", "id": "piece-of-cake", "images": { "full": "piece-of-cake-full.png", @@ -768,7 +724,6 @@ { "description": "A casual merge-2 puzzle game. Merge items, discover treasures, and restore each floor, revealing new challenges and surprises.", "developer": "Happy Games Studio", - "games": "half", "id": "hotel-rush", "images": { "full": "hotel-rush-full.png", @@ -776,17 +731,16 @@ "third": "hotel-rush-third.png" }, "name": "Hotel Rush : Merge Story", - "platforms": "iOS,Android,macOS,Windows,Linux,HTML5,Steam,Poki,itch.io,Kongregate,Facebook Instant Games", + "platforms": "iOS, Android, macOS, Windows, Linux, HTML5, Steam, Poki, itch.io, Kongregate, Facebook Instant Games", "publisher": "", "release_date": "2021", "releasedate": "2021", - "showcase": "half", + "showcase": "full", "url": "https://play.google.com/store/apps/details?id=com.happygames.mergehotel" }, { "description": "A strategy game where you lead your army through history, from the Stone Age to futuristic battles. Upgrade your troops, build powerful bases, and use unique units and tactics to defeat your enemies.", "developer": "Happy Games Studio", - "games": "half", "id": "time-warriors", "images": { "full": "time-warriors-full.png", @@ -803,10 +757,9 @@ { "description": "An easy-to-learn card battler with incredible strategic depth and near infinite fun! Which of your favorite characters from myth and fairy tale will you choose?", "developer": "Million Dreams Games", - "games": "half", "id": "once-upon-a-galaxy", "images": { - "full": "once-upon-a-galaxy-full.jpg", + "full": "once-upon-a-galaxy-full.png", "half": "once-upon-a-galaxy-half.jpg", "third": "once-upon-a-galaxy-third.jpg" }, @@ -816,5 +769,280 @@ "releasedate": "July 2025", "showcase": "full", "url": "https://galaxy.fun/" + }, + { + "description": "An open-source development kit to create a game with real-time shadows from a single light source and many point light sources. It includes a ready-made demo with extras, there’s also a separate Fog of War branch that adds a fog shader/Lua module, and a pathfinding module", + "developer": "Dragosha", + "id": "lights-shadows", + "images": { + "full": "lights-shadows-full.png" + }, + "name": "Lights and Shadows", + "license": "MIT", + "publisher": "", + "releasedate": "September 2022", + "showcase": "full", + "url": "https://github.com/Dragosha/defold-light-and-shadows" + }, + { + "description": "An open-source example of a beautiful tiny city with cars and planes using graph pathfinding to navigate in the area. It’s a technical demo rather than a full game, showcasing a small animated scene with traffic and atmosphere thanks to nice lighting work.", + "developer": "Selim Anaç", + "id": "tiny-city", + "images": { + "full": "tiny_city-full.png" + }, + "name": "Tiny City", + "license": "custom", + "publisher": "", + "releasedate": "November 2025", + "showcase": "full", + "url": "https://github.com/selimanac/defold-tiny-city" + }, + { + "description": "It is an advanced open-source deferred rendering sample for the Defold engine, featuring a G-buffer pipeline (albedo, normals, roughness, depth) and a BRDF/PBR-style lighting pass. It includes tiled light culling, cubemap shadow mapping with soft shadows, and volumetric lighting for atmospheric light rays. The demo also showcases post-processing like fisheye or chromatic aberration.", + "developer": "Mikhail Martianov", + "id": "brdf", + "images": { + "full": "brdf-full.png" + }, + "name": "BRDF Deferred Rendering Example", + "license": "CC-BY-4.0", + "publisher": "", + "releasedate": "November 2025", + "showcase": "full", + "url": "https://github.com/martianovdev/Defold-BRDF-Deferred-Rendering-V2" + }, + { + "description": "Skull Horde is an auto battler dungeon crawler where you play as a flying skull necromancer. Find powerful loot and create overpowered builds. Summon a horde of skeletons in a battle of bone versus flesh! Explore procedurally generated dungeons while collecting loot and building your squad.", + "developer": "8BitSkull", + "id": "skullhorde", + "images": { + "full": "skull_horde-full.png" + }, + "name": "Skull Horde", + "platforms": "Steam (Windows, Linux, macOS)", + "publisher": "8BitSkull", + "releasedate": "2026", + "showcase": "full", + "url": "https://store.steampowered.com/app/2398170/BORE_BLASTERS/" + }, + { + "description": "A classic style platformer with spacious levels, bonuses, treasure hunts and boss battles. Two playable characters (currently) to choose from to be used to adventure with. The game features mini games played for bonuses. It feels like true classic style gaming for mobile devices.", + "developer": "Genesys East Games", + "id": "shiboriland", + "images": { + "full": "shiboriland-full.png", + "half": "shiboriland-half.png", + "third": "shiboriland-third.png" + }, + "name": "Adventures in Shibori-Land", + "platforms": "Android", + "publisher": "", + "releasedate": "February 24, 2025", + "showcase": "more-games", + "url": "https://play.google.com/store/apps/details?id=com.genesyseast.shiboriland" + }, + { + "description": "Animal Hero is a free-to-play, cross-platform MMORPG adventure game that will surprise you with its unique storyline, captivating gameplay, and colorful graphics. In a post-apocalyptic world where humans have mysteriously vanished, intelligent animals have taken charge of rebuilding civilization.", + "developer": "Maningame", + "id": "animal-hero", + "images": { + "full": "", + "half": "animal-hero-half.png", + "third": "" + }, + "name": "Animal Hero: Mobile MMORPG", + "platforms": "Android", + "publisher": "", + "releasedate": "2025", + "showcase": "half", + "url": "https://play.google.com/store/apps/details?id=app.animalhero.gp&hl=en" + }, + { + "description": "Dive into a world of color and strategy! Drop vibrant tapioca pearls (bubbles) into the tank and watch as matching colors merge into bigger, brand-new shades. The challenge? Don’t let any pearls fall out of the tank - if one does, it’s game over!", + "developer": "Artex Games", + "id": "boba-tea-merge", + "images": { + "full": "", + "half": "boba-tea-merge-half.png", + "third": "" + }, + "name": "Boba Tea Merge", + "platforms": "Nintendo Switch, iOS, Android, HTML5", + "publisher": "", + "releasedate": "2025", + "showcase": "half", + "url": "https://www.nintendo.com/en-gb/Games/Nintendo-Switch-download-software/Boba-Tea-Merge-2876468.html" + }, + { + "description": "A reverse tower defense game where you play as the zombies and attack human fortifications instead of defending against them. The core idea is simple: you’re not building towers, you’re overwhelming them with massive zombie hordes.", + "developer": "Aeolian codeLab", + "id": "you-are-zombies", + "images": { + "full": "", + "half": "you-are-zombies-half.png", + "third": "you-are-zombies-third.png" + }, + "name": "You are Zombies", + "platforms": "Android", + "publisher": "", + "releasedate": "February 2026", + "showcase": "more-games", + "url": "https://play.google.com/store/apps/details?id=com.youarethezombies.reverse.towerdefense" + }, + { + "description": "Lead a team of survivors into the abandoned Kaiju Control Force facilities, where bioengineered rats escaped and research went awry long ago, in this one-screen arcade platformer. Jump, climb and buy items from vending machines to reach the Mecha Kaiju Maintenance Bay and reclaim our city!", + "developer": "PlayMedusa", + "id": "kaiju", + "images": { + "full": "", + "half": "kaiju-half.png", + "third": "kaiju-third.png" + }, + "name": "Kaiju Control Force", + "platforms": "Windows, Linux, Steam, Web", + "publisher": "Aurita Games", + "releasedate": "November 2024", + "showcase": "half", + "url": "https://store.steampowered.com/app/3268730/Kaiju_Control_Force/" + }, + { + "description": "Battle your way through 3 realms of 'Sector 781', a pixel art Metroidvania platformer. Upgrade your character and weapons. Collect shards to increase your energy supply. Use teleports to navigate around the realms. Shoot things that move and some that don't.", + "developer": "171Dev", + "id": "sector-781", + "images": { + "full": "", + "half": "sector-half.png", + "third": "sector-third.png" + }, + "name": "Sector 781", + "platforms": "Nintendo Switch, Windows, Linux, Steam, Poki, Web", + "publisher": "", + "releasedate": "2020", + "showcase": "half", + "url": "https://store.steampowered.com/app/3268730/Kaiju_Control_Force/" + }, + { + "description": "Game of Fitna Vol. 1: A thrilling death game visual novel set in 2030. Play as Zayn, a high school student thrown into sinister survival games known as \"TEST.\" Fight for your life, uncover shocking truths, and face intense moral dilemmas in this mature, thought-provoking experience.", + "developer": "FIAgames", + "id": "game-of-fitna", + "images": { + "full": "gameoffitna-full.png", + "half": "gameoffitna-half.png", + "third": "gameoffitna-third.png" + }, + "name": "Game of Fitna", + "platforms": "Windows, macOS, Linux, Steam", + "publisher": "FIAgames", + "releasedate": "2026", + "showcase": "full", + "url": "https://store.steampowered.com/app/2725340/Game_of_Fitna_Vol_1/" + }, + { + "description": "Jeepney Stories is a heartwarming, slice-of-life, funny and chill visual novel about family, chances, getting old and living in the third world set in the bustling city of Manila, Philippines.", + "developer": "Kuyi Mobile", + "id": "jeepney-stories", + "images": { + "full": "", + "half": "jeepney-half.png", + "third": "jeepney-third.png" + }, + "name": "Jeepney Stories", + "platforms": "Windows, macOS, Steam", + "publisher": "Kuyi Mobile", + "releasedate": "March 2025", + "showcase": "half", + "url": "https://store.steampowered.com/app/3203470/Jeepney_Stories/" + }, + { + "description": "Extinction Zone is a zombie themed combat action survival game with 2D pixel art environments, puzzles to solve and a conspiracy to unravel. The game resurrects the golden age of gaming with a stunning twist that will have your trigger finger twitching.", + "developer": "171Dev", + "id": "extinction-zone", + "images": { + "full": "", + "half": "extinction-zone-half.png", + "third": "extinction-zone-third.png" + }, + "name": "Extinction Zone", + "platforms": "Windows, Linux, Steam", + "publisher": "171Dev", + "releasedate": "2026", + "showcase": "half", + "url": "https://store.steampowered.com/app/3203470/Jeepney_Stories/" + }, + { + "description": "The classic Sudoku puzzle is a numbers-based brain teaser. The goal of the game is to complete each level, progressing from the beginner to master, to improve your Sudoku ranking.", + "developer": "OpenMyGame", + "id": "sudoku-master", + "images": { + "full": "", + "half": "sudoku-master-half.png", + "third": "sudoku-master-third.png" + }, + "name": "Sudoku Master", + "platforms": "Android, iOS, HTML5, Facebook Instant", + "releasedate": "2025", + "showcase": "more-games", + "url": "https://play.google.com/store/apps/details?id=com.openmygame.games.android.sudokumaster&hl=en&gl=US" + }, + { + "description": "A real-time tactical hacking puzzle where every move reshapes the challenge. Infiltrate megacorp servers, reroute connections, gather valuable data, and outsmart evolving defenses, all while racing against the clock and the ever-present threat of adaptive sentinels.", + "developer": "Jeferson Silva", + "id": "nullptr", + "images": { + "full": "", + "half": "nullptr-half.png", + "third": "nullptr-third.png" + }, + "name": "NULLPTR", + "platforms": "Windows, Linux, Steam", + "releasedate": "2025", + "showcase": "half", + "url": "https://store.steampowered.com/app/1579650/NULLPTR/" + }, + { + "description": "Spot the bees in this lovingly hand-illustrated hidden objects game. A literal thousand bees are spread out over a dozen beautiful levels. Can you find all secret levels, too? Enjoy a perfect summer day, deeply inspired by the cozy honeycore aesthetic.", + "developer": "Make It a Triple", + "id": "a-thousand-bees", + "images": { + "full": "", + "half": "a-thousand-bees-half.png", + "third": "a-thousand-bees-third.png" + }, + "name": "A Thousand Bees", + "platforms": "Windows, Linux, Steam", + "releasedate": "2026", + "showcase": "half", + "url": "https://store.steampowered.com/app/4281370/A_Thousand_Bees/" + }, + { + "description": "In this sideways scrolling shmup, take control of your spaceship and navigate through vibrant pixelated environments filled with hordes of enemy spacecraft. Power-up your ship and weapons, dodge enemy fire while blasting through each stage. Survive the onslaught and emerge victorious!", + "developer": "171Dev", + "id": "tameshi", + "images": { + "full": "", + "half": "tameshi-half.png", + "third": "tameshi-third.png" + }, + "name": "Tameshi", + "platforms": "Nintendo Switch, Windows, Steam", + "releasedate": "2023", + "showcase": "more-games", + "url": "https://store.steampowered.com/app/1954720/Tameshi/" + }, + { + "description": "A fast-paced side-scrolling motocross racing game, where players compete on challenging dirt tracks using precise physics-based bike controls, mastering jumps, speed, and balance to beat rivals and set the best times. The game features multiple bikes to unlock, dozens of tracks, and online competitions where players race against others worldwide. Its responsive controls and competitive gameplay have made it one of the most popular motocross games on mobile platforms.", + "developer": "Turborilla", + "id": "madskillsmotocross2", + "images": { + "full": "madskillsmotocross2-full.png", + "half": "madskillsmotocross2-half.png", + "third": "madskillsmotocross2-third.png" + }, + "name": "Mad Skills Motocross 2", + "platforms": "Poki", + "releasedate": "2025", + "showcase": "full", + "url": "https://poki.com/en/g/mad-skills-motocross-2" } ] \ No newline at end of file diff --git a/_data/showcase_featured_full.json b/_data/showcase_featured_full.json new file mode 100644 index 000000000..31240a959 --- /dev/null +++ b/_data/showcase_featured_full.json @@ -0,0 +1,20 @@ +[ + "family_island", + "brdf", + "once-upon-a-galaxy", + "lights-shadows", + "monkeymart", + "tiny-city", + "superweird", + "madskillsmotocross2", + "skullhorde", + "warnament", + "boreblasters", + "craftomation-101", + "piece-of-cake", + "plaguelords", + "punch_legend_simulator", + "drills_merge_master", + "hotel-rush", + "game-of-fitna" +] diff --git a/_includes/donors_and_partners.html b/_includes/donors_and_partners.html index 3bba84f1f..7d39ee097 100644 --- a/_includes/donors_and_partners.html +++ b/_includes/donors_and_partners.html @@ -19,7 +19,7 @@
Corporate Platinum Partners
{%- for partner in platinum -%} - {{ partner.name }} logo + {{ partner.name }} logo {%- endfor -%}
{%- if include.button -%}{% include secondary_button.html link="/donate" text="Become a partner" %}{%- endif -%} @@ -35,7 +35,7 @@
Corporate Platinum PartnersCorporate Gold Partners
{%- for partner in gold -%} - {{ partner.name }} logo + {{ partner.name }} logo {%- endfor -%}
{%- if include.button -%}{% include secondary_button.html link="/donate" text="Become a partner" %}{%- endif -%} @@ -51,7 +51,7 @@
Corporate Gold Partners
Corporate Silver Partners
{%- for partner in silver -%} - {{ partner.name }} logo + {{ partner.name }} logo {%- endfor -%}
{%- if include.button -%}{% include secondary_button.html link="/donate" text="Become a partner" %}{%- endif -%} @@ -67,7 +67,7 @@
Corporate Silver Partners
Corporate Bronze Partners
{%- for partner in bronze -%} - {{ partner.name }} logo + {{ partner.name }} logo {%- endfor -%}
{%- if include.button -%}{% include secondary_button.html link="/donate" text="Become a partner" %}{%- endif -%} @@ -83,7 +83,7 @@
Corporate Bronze Partners
Special Partners
{%- for partner in special -%} - {{ partner.name }} logo + {{ partner.name }} logo {%- endfor -%}
{%- if include.button -%}{% include secondary_button.html link="/donate" text="Become a partner" %}{%- endif -%} @@ -99,7 +99,7 @@
Special Partners
Friends of Defold
{%- for partner in friends -%} - {{ partner.name }} logo + {{ partner.name }} logo {%- endfor -%}
{%- if include.button -%}{% include secondary_button.html link="/donate" text="Become a partner" %}{%- endif -%} @@ -136,7 +136,7 @@
Top Community Donors
Memberships
{%- for membership in memberships -%} - {{ membership.name }} logo + {{ membership.name }} logo {%- endfor -%}
diff --git a/_includes/features_section.html b/_includes/features_section.html index 4e199317c..db53e04a2 100644 --- a/_includes/features_section.html +++ b/_includes/features_section.html @@ -1,19 +1,22 @@ -
+
-
+
-

No setup

-

Defold comes fully featured out of the box. There's nothing to set up or configure, not even when building. Simply download the editor and get creative!

+

+ + All you need is Defold +

+

Defold is a modern, powerful and production ready all in one tool for truly cross-platform game development with an incredibly small engine size.

    -
  • Visual Editor
  • -
  • Code Editor
  • -
  • Lua Scripting
  • -
  • Lua Debugger
  • -
  • Scene Editor
  • -
  • Particle Editor
  • -
  • Tilemap Editor
  • -
  • 2D & 3D
  • +
  • A turn-key solution with all the building blocks you need.
  • +
  • No setup, no registration, just download and start creating.
  • +
  • Write game logic using Lua, enhance it with native extensions.
  • +
  • Make 2D and 3D games with one codebase and ship to all platforms.
  • +
  • Free forever and source available under a developer-friendly license.
  • +
  • Small engine size, with Live Update support out of the box.
  • +
  • Hot Reload, fast builds, profiler and debugger for quick iterations.
  • +
  • Customize both engine and editor however you like.
@@ -21,17 +24,20 @@

No setup

Bring me Cakes by PotatoJam
-
+
{%- include platforms.html minmax=100 transition="fadein" -%}
-

Truly cross-platform

+

+ + Ship everywhere easily +

Using just one code base, and without the need for external tools, Defold lets you publish your game to all of the major platforms:

    -
  • PlayStation®5
  • -
  • PlayStation®4
  • +
  • PlayStation® 5
  • +
  • PlayStation® 4
  • Nintendo Switch
  • Android
  • iOS
  • @@ -47,39 +53,55 @@

    Truly cross-platform

-



-
+
-

Turn-key solution

-
    -
  • Use basic building blocks to create complex behaviour.
  • -
  • Everything you need to make a game in one tool
  • -
  • Write game logic using Lua.
  • -
  • Zero-config cloud build for native code
  • -
+

+ + No setup +

+

Defold comes fully featured out of the box. Nothing to set up or configure, not even when building, no registration. Just download the editor - it has everything you need, including:

+
+
    +
  • Visual Editor
  • +
  • Code Editor
  • +
  • Lua Scripting
  • +
  • Lua Debugger
  • +
  • Scene Editor
  • +
  • Particle Editor
  • +
  • Tilemap Editor
  • +
  • 2D & 3D
  • +
+
Isometric turn-based roguelike by Dragosha
-
+
Star Jammer by Ben James
-

Custom configuration

+

+ + Customize it as you like +

  • Add new functionality from the Asset Portal.
  • -
  • Setup your own local build environment.
  • Write your own native code to extend the engine.
  • -
  • Integrated with tools such as Atom, VS Code, Rive, Spine, TexturePacker and Tiled.
  • +
  • Setup your own local build environment.
  • +
  • Customize your workflow with Editor Scripts and UI.
  • +
  • Use the localized Editor (currently: EN, RU, ZH, PT).
  • +
  • Integrated with Atom, VS Code, Rive, Spine, TexturePacker or Tiled.
-



-
+
-

Free. Forever.

+

+ + Free. Forever. +

  • No up-front cost.
  • No licensing cost.
  • @@ -92,12 +114,15 @@

    Free. Forever.

    Particle effects editor with live preview
-
+
Duo Vikings by Flazm
-

Production ready

+

+ + Production ready +

  • Proven track record of game releases on mobile, web, desktop and consoles.
  • Integrations with analytics, app economy and game services available out of the box.
  • @@ -106,10 +131,9 @@

    Production ready

-


-
+
- {% include primary_button.html link="/product" text="PRODUCT FEATURES" %} + {% include primary_button.html link="/product" text="SEE THE FULL OVERVIEW" %}
diff --git a/_includes/game_full.html b/_includes/game_full.html index 99086646f..0848ede07 100644 --- a/_includes/game_full.html +++ b/_includes/game_full.html @@ -1,21 +1,27 @@ {%- assign game=include.game -%} {%- assign url=include.url -%}{%- unless url -%}{%- assign url = game.url -%}{%- endunless -%} -
- - - +
+
+
+
+ + {{ game.name }} + +
+
+
-
+
-
-
{{ game.name }}
-

{{ game.description }}

-
-
- +
+

{{ game.name }}

+

{{ game.description }}

+
+
+
@@ -26,19 +32,27 @@
{{ game.name }}
{%- endif -%} - {%- if game.releasedate and game.releasedate != "" -%} - - - - - {%- endif -%} - - - - - {%- if game.downloads and game.downloads != "" -%} - - + {%- if game.releasedate and game.releasedate != "" -%} + + + + + {%- endif -%} + {%- if game.license and game.license != "" -%} + + + + + {%- endif -%} + {%- if game.platforms and game.platforms != "" -%} + + + + + {%- endif -%} + {%- if game.downloads and game.downloads != "" -%} + + {%- endif -%} diff --git a/_includes/game_half.html b/_includes/game_half.html index f4d074710..d3237ed4b 100644 --- a/_includes/game_half.html +++ b/_includes/game_half.html @@ -3,12 +3,12 @@ -

- -
{{ game.name }}
-

{{ game.description }}

-
-
Developer {{ game.developer }} {{ game.publisher }}
Release date{{ game.releasedate }}
Platforms{{ game.platforms }}
Downloads
Release date{{ game.releasedate }}
License{{ game.license }}
Platforms{{ game.platforms }}
Downloads {{ game.downloads }}
+

+
+

{{ game.name }}

+

{{ game.description }}

+
+
@@ -19,19 +19,27 @@
{{ game.name }}
{%- endif -%} - {%- if game.releasedate and game.releasedate != "" -%} - - - - - {%- endif -%} - - - - - {%- if game.extrainfo and game.extrainfo != "" -%} - - + {%- if game.releasedate and game.releasedate != "" -%} + + + + + {%- endif -%} + {%- if game.license and game.license != "" -%} + + + + + {%- endif -%} + {%- if game.platforms and game.platforms != "" -%} + + + + + {%- endif -%} + {%- if game.extrainfo and game.extrainfo != "" -%} + + {%- endif -%}
Developer {{ game.developer }} {{ game.publisher }}
Release date{{ game.releasedate }}
Platforms{{ game.platforms }}
{{ game.extrainfo }}
Release date{{ game.releasedate }}
License{{ game.license }}
Platforms{{ game.platforms }}
{{ game.extrainfo }}
diff --git a/_includes/game_third.html b/_includes/game_third.html index a88c055ed..79693ae6c 100644 --- a/_includes/game_third.html +++ b/_includes/game_third.html @@ -3,9 +3,9 @@ -

- -
{{ game.name }}
-

By {{ game.developer }}

-
+

+
+

{{ game.name }}

+

By {{ game.developer }}

+
diff --git a/_includes/games_full.html b/_includes/games_full.html index c409da5df..f79cbbcc4 100644 --- a/_includes/games_full.html +++ b/_includes/games_full.html @@ -1,12 +1,23 @@ {%- assign placement = include.placement -%} {%- assign full = site.data.games | where: placement, "full" -%} -{%- assign full_shuffled = full | sample: full.size -%} -{%- assign limit = include.limit -%} -{%- assign offset = include.offset -%} -{%- for game in full_shuffled limit: limit offset: offset -%} - {%- include game_full.html game=game url=include.url -%} - {%- if forloop.last != true -%} -
-
- {%- endif -%} -{%- endfor -%} +{%- assign featured_ids = site.data.showcase_featured_full -%} +{%- assign rendered_count = 0 -%} +{%- assign rendered_ids = "|" -%} + +{%- if featured_ids and featured_ids.size > 0 -%} + {%- for game_id in featured_ids -%} + {%- assign game_marker = "|" | append: game_id | append: "|" -%} + {%- unless rendered_ids contains game_marker -%} + {%- assign game = full | where: "id", game_id | first -%} + {%- if game -%} + {%- if rendered_count > 0 -%} +
+
+ {%- endif -%} + {%- include game_full.html game=game url=include.url -%} + {%- assign rendered_count = rendered_count | plus: 1 -%} + {%- assign rendered_ids = rendered_ids | append: game.id | append: "|" -%} + {%- endif -%} + {%- endunless -%} + {%- endfor -%} +{%- endif -%} diff --git a/_includes/head.html b/_includes/head.html index 8827cb9f3..bebecde09 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -91,6 +91,14 @@ +{%- if page.url == "/" or page.url == "/index.html" -%} + + + + + +{%- endif -%} + diff --git a/_includes/learn_section.html b/_includes/learn_section.html index 8b62cd7f9..17c109d06 100644 --- a/_includes/learn_section.html +++ b/_includes/learn_section.html @@ -8,24 +8,22 @@

Learn Defold

+{% include card.html title="Getting Started" body="Start here for a guided path through the Defold editor, core concepts, and first practical steps." link="/learn" icon="/images/icons/icons-learn-export_ic-learn-documents.svg" %} + {% include card.html title="Tutorials" body="Our tutorials section is the perfect starting point if you are new to Defold game development." link="/tutorials/getting-started" icon="/images/icons/icons-learn-export_ic-learn-tutorials.svg" %} +{% include card.html title="Videos" body="Learn Defold by watching practical walkthroughs, feature deep-dives, and creator tutorials." link="/videos" icon="/images/icons/icons-yt.svg" %} + {% include card.html title="Manuals" body="In-depth manuals provide understanding on how the Defold engine and its APIs work." link="/manuals/introduction" icon="/images/icons/icons-learn-export_ic-learn-manuals.svg" %} -{% include card.html title="API Reference" body="Reference documentation to all Defold Lua and C++ extension APIs.

" link="/ref/go" icon="/images/icons/icons-learn-export_ic-learn-apiref.svg" %} -
-
-
-
-

-
-
-
{% include card.html title="Examples" body="A selection of small and discrete code samples, examples and snippets to learn from." link="/examples" icon="/images/icons/icons-learn-export_ic-learn-lego.svg" %} +{% include card.html title="Courses" body="Follow structured, guided learning paths from beginner concepts to complete game projects." link="/courses" icon="/images/icons/icons-learn-export_ic-learn-toolbox.svg" %} + {% include card.html title="Forum" body="Stuck? Not for long! Talk to the Defold team and our fantastic developer community." link="https://forum.defold.com" icon="/images/icons/icons-learn-export_ic-learn-forum.svg" %} + +{% include card.html title="API Reference" body="Reference documentation to all Defold Lua and C++ extension APIs.

" link="/ref/go" icon="/images/icons/icons-learn-export_ic-learn-apiref.svg" %}
-

diff --git a/_includes/news_and_blog_section.html b/_includes/news_and_blog_section.html index 6df9349f5..044a8f80f 100644 --- a/_includes/news_and_blog_section.html +++ b/_includes/news_and_blog_section.html @@ -1,6 +1,11 @@
+
+
+

What's new?

+
+

Blog updates

@@ -9,7 +14,7 @@

Blog updates

{%- for post in posts -%} {%- if post.tags contains "news" or post.tags contains "newsletter" -%} {%- else -%} - {%- include post_preview_excerpt.html post=post -%} + {%- include post_preview_excerpt.html post=post title_link=true -%} {%- assign count = count | plus: 1 -%} {%- endif -%} @@ -22,7 +27,7 @@

Blog updates

Latest News

{%- assign posts = site.posts | where: "tags", "news" -%} {%- for post in posts limit: 3-%} - {%- include post_preview_excerpt.html post=post -%} + {%- include post_preview_excerpt.html post=post title_link=true -%} {%- endfor -%}
diff --git a/_includes/post_preview_excerpt.html b/_includes/post_preview_excerpt.html index bccde136d..b3c098ac4 100644 --- a/_includes/post_preview_excerpt.html +++ b/_includes/post_preview_excerpt.html @@ -1,4 +1,13 @@ - -

{{ include.post.title }}
+

+{%- if include.title_link -%} +{{ include.post.title }}
+{%- else -%} +{{ include.post.title }}
+{%- endif -%} Published on {{ include.post.date | date: "%b %d, %Y" }}
-{{ include.post.excerpt }} - READ

+{%- if include.title_link -%} +{{ include.post.excerpt }} +{%- else -%} +{{ include.post.excerpt }} - READ +{%- endif -%} +

diff --git a/_scss/defold.scss b/_scss/defold.scss index d997ba0e5..77d9d44df 100644 --- a/_scss/defold.scss +++ b/_scss/defold.scss @@ -16,6 +16,9 @@ --defold-orange: #fd6623; --defold-green: #57ab5a; + + /* Controls the large showcase image frame ratio (width / height). */ + --showcase-full-image-ratio: 2000 / 750; } @@ -350,6 +353,18 @@ color: white; } +/* Frontpage feature icons are external SVG images, so force them to white via filter. */ +.frontpage-feature-icons img { + filter: brightness(0) invert(1); +} + +.frontpage-feature-icons a, +.frontpage-feature-icons a:hover, +.frontpage-feature-icons a:focus, +.frontpage-feature-icons a:active { + text-decoration: none !important; +} + /******************************************************************************* * Skeleton.css overrides ******************************************************************************/ @@ -420,6 +435,10 @@ p.compact { margin-bottom: 1.5rem; } +.showcase-game-copy > .showcase-game-title { + margin-bottom: 2rem; +} + /******************************************************************************* * Page setup (to keep footer always at the bottom) * Used in _layouts/base.html @@ -920,9 +939,239 @@ img[alt="icon"] { ******************************************************************************/ .textshadow { - text-shadow: 3px 3px 3px black; + text-shadow: 0px 3px 5px rgba(0, 0, 0, 0.3); +} + +/******************************************************************************* +* Main header +******************************************************************************/ +.main-header { + font-size: clamp(3.2rem, 5.2vw, 6.5rem); + margin-top: clamp(1rem, 2vw, 3rem); + margin-bottom: clamp(1.5rem, 3vw, 5rem); +} + +.frontpage-top-banner { + --frontpage-content-scale: 1; + --frontpage-side-image-scale: calc(var(--frontpage-content-scale) * 0.6); + --frontpage-side-image-bleed: clamp(0px, calc((100vw - 1200px) * 0.5), 360px); + box-sizing: border-box; + position: relative; + overflow: hidden; + height: 750px; + padding-top: 0; + padding-bottom: 0; + background-color: #0f1216; + background-image: url("/images/frontpage/banner_bg.png"); + background-size: auto 100%; + background-repeat: repeat-x; + background-position: top center; + + .container { + position: relative; + z-index: 1; + height: 100%; + } + + .frontpage-side-art { + position: absolute; + bottom: 0; + pointer-events: none; + z-index: 0; + width: auto; + max-width: none; + display: block; + } + + .frontpage-side-art-left { + left: calc((-210px * var(--frontpage-side-image-scale)) - var(--frontpage-side-image-bleed)); + height: calc((538px * var(--frontpage-side-image-scale)) + (var(--frontpage-side-image-bleed) * 0.18)); + } + + .frontpage-side-art-right { + right: calc((-80px * var(--frontpage-side-image-scale)) - var(--frontpage-side-image-bleed)); + height: calc((567px * var(--frontpage-side-image-scale)) + (var(--frontpage-side-image-bleed) * 0.14)); + } + + .frontpage-top-banner-content { + position: relative; + z-index: 1; + height: 100%; + display: flex; + flex-direction: column; + justify-content: flex-start; + padding-left: clamp(1.2rem, 3.2vw, 3.5rem); + padding-right: clamp(1.2rem, 3.2vw, 3.5rem); + transform: scale(var(--frontpage-content-scale)); + transform-origin: top center; + } + + .frontpage-feature-icons { + display: flex; + justify-content: space-between; + gap: clamp(0.5rem, 1vw, 1.25rem); + margin-top: clamp(0.5rem, 1vw, 1.25rem); + margin-left: auto; + margin-right: auto; + max-width: 980px; + } + + .frontpage-feature-icons .columns.three { + float: none; + width: 25%; + margin-left: 0; + } + + .frontpage-feature-icons h4 { + font-size: clamp(1.5rem, 1.85vw, 2.35rem); + line-height: 1.2; + margin-bottom: clamp(0.7rem, 1.1vw, 1.3rem); + } + + .frontpage-feature-icons img { + width: clamp(38px, 4.1vw, 66px) !important; + height: auto; + } + + .frontpage-top-banner-cta { + margin-top: clamp(2.8rem, 5.2vw, 7.0rem); + margin-bottom: clamp(0.75rem, 1.6vw, 2rem); + } + + .frontpage-top-banner-cta .button { + height: clamp(34px, 3.1vw, 38px) !important; + line-height: clamp(34px, 3.1vw, 38px) !important; + padding: 0 clamp(16px, 2.2vw, 30px) !important; + font-size: clamp(9px, 0.85vw, 11px); + letter-spacing: clamp(0.04rem, 0.08vw, 0.1rem); + } + + .frontpage-top-download-cta .button.primary { + animation: frontpage-download-cta-glow 2.8s ease-in-out infinite; + will-change: box-shadow; + } + + .frontpage-top-download-cta .button.primary:hover, + .frontpage-top-download-cta .button.primary:focus-visible { + animation-name: frontpage-download-cta-glow-hover; + animation-duration: 1.9s; + } + + .frontpage-top-download-cta .button.primary:active { + animation: none; + box-shadow: none; + } + + .columns.twelve > img[alt="Defold Logo"] { + width: clamp(110px, 9vw, 160px); + height: auto; + } + } + +.section.narrow.frontpage-top-banner { + padding-top: 0; + padding-bottom: 0; +} + +@media (max-aspect-ratio: 16/10) and (min-width: 950px) { + .frontpage-top-banner { + --frontpage-content-scale: 0.93; + } +} + +@media (max-aspect-ratio: 3/2) and (min-width: 950px) { + .frontpage-top-banner { + --frontpage-content-scale: 0.87; + } +} + +@keyframes frontpage-download-cta-glow { + 0%, + 100% { + box-shadow: 0 0 8px rgba(255, 255, 255, 0.22), 0 0 18px rgba(255, 255, 255, 0.14); + } + 50% { + box-shadow: 0 0 16px rgba(255, 255, 255, 0.48), 0 0 32px rgba(255, 255, 255, 0.3); + } +} + +@keyframes frontpage-download-cta-glow-hover { + 0%, + 100% { + box-shadow: 0 0 14px rgba(255, 255, 255, 0.5), 0 0 30px rgba(255, 255, 255, 0.34); + } + 50% { + box-shadow: 0 0 24px rgba(255, 255, 255, 0.85), 0 0 50px rgba(255, 255, 255, 0.62); + } +} + +@media (max-width: 949px) { + .main-header { + font-size: clamp(2.5rem, 8vw, 4rem); + margin-top: 0.75rem; + margin-bottom: 1rem; + } + + .frontpage-top-banner { + height: max(520px, 68vw); + } + + .frontpage-top-banner .frontpage-side-art { + display: none; + } + + .frontpage-top-banner .frontpage-feature-icons img { + display: none !important; + } + + .frontpage-top-banner .frontpage-feature-icons { + display: block; + } + + .frontpage-top-banner .frontpage-feature-icons .columns.three { + float: none; + width: 100%; + margin-left: 0; + margin-bottom: 0.75rem; + } + + .frontpage-top-banner .frontpage-feature-icons h4 { + font-size: clamp(1.65rem, 6.2vw, 2.3rem); + margin-bottom: 0.75rem; + } + + .frontpage-top-banner .frontpage-top-banner-cta { + margin-top: clamp(2rem, 7vw, 3.2rem); + margin-bottom: 1.25rem; + } + } + +.no-decoration { + text-decoration: none; } +.feature-heading { + display: flex; + align-items: center; + gap: 0.75rem; +} + +.feature-heading-icon { + width: 48px; + height: 48px; + flex: 0 0 48px; + margin-right: 16px; +} + +.features-section .feature-row-spaced { + margin-top: 8rem; + margin-bottom: 8rem; +} + +.features-section .feature-cta-row { + margin-top: 4rem; + margin-bottom: 6rem; +} /******************************************************************************* * Typography @@ -1046,6 +1295,165 @@ ul.checkmark li:before { text-decoration: none; } +.showcase-full-media { + display: block; + width: 100%; + aspect-ratio: var(--showcase-full-image-ratio); + overflow: hidden; +} + +.showcase-full-media img { + display: block; + width: 100%; + height: 100%; + object-fit: contain; + object-position: center; + border-radius: 0px; + background-color: transparent; +} + +.showcase-game-meta { + width: 100%; +} + +.showcase-game-meta td:last-child { + text-align: right; +} + +.showcase-game-details-section { + padding-top: 1.5rem; + padding-bottom: 0; +} + +.showcase-half-meta { + width: 100%; + margin-top: 1.5rem; + margin-bottom: 1.5rem; +} + +.showcase-half-meta td:last-child { + text-align: right; +} + +.showcase-feature-video { + width: 100%; + aspect-ratio: 16 / 9; + overflow: hidden; + border-radius: 8px; + background-color: #000; + box-shadow: 0 10px 24px rgba(0, 0, 0, 0.25); +} + +.showcase-feature-video iframe { + display: block; + width: 100%; + height: 100%; + border: 0; +} + +.showcase-content-intro { + margin-top: 3rem; + margin-bottom: 3rem; +} + +.showcase-content-intro p { + margin-bottom: 0; +} + +.frontpage-showcase-carousel { + position: relative; + width: 100%; + aspect-ratio: 200 / 75; + overflow: hidden; + border-radius: 0px; + background-color: transparent; +} + +.frontpage-showcase-section { + background-image: url("/images/hero/testimonials-background-0.5x-grey.png"); + background-repeat: no-repeat; + background-position: center; + background-size: cover; +} + +.frontpage-section-heading { + margin-top: 5rem; + margin-bottom: 4rem; +} + +.frontpage-showcase-slide { + position: absolute; + inset: 0; + opacity: 0; + pointer-events: none; + transition: opacity 700ms ease-in-out; +} + +.frontpage-showcase-slide.active { + opacity: 1; + pointer-events: auto; + z-index: 2; +} + +.frontpage-showcase-slide img { + width: 100%; + height: 100%; + object-fit: contain; + object-position: center; + display: block; +} + +.game-carousel-dots { + display: flex; + justify-content: center; + align-items: center; + gap: 0.65rem; +} + +.frontpage-showcase-dots { + position: absolute; + left: 50%; + bottom: 1rem; + transform: translateX(-50%); + z-index: 3; + padding: 0.3rem 0.6rem; + border-radius: 999px; + background: rgba(0, 0, 0, 0.35); +} + +.game-carousel-dot { + width: 12px; + height: 12px; + padding: 0; + margin: 0; + border-radius: 50%; + border: 1px solid var(--lighter); + background-color: transparent; + cursor: pointer; + transition: background-color 0.2s ease, border-color 0.2s ease; +} + +.game-carousel-dot.active, +.game-carousel-dot:hover { + background-color: var(--lightest); + border-color: var(--lightest); +} + +.game-carousel-dot:focus-visible { + outline: 2px solid var(--defold-blue); + outline-offset: 2px; +} + +.frontpage-more-games-section { + margin-top: 7rem; + margin-top: 5rem; +} + +#frontpage-more-games-button { + margin-top: 3.5rem; + margin-bottom: 5rem; +} + /******************************************************************************* diff --git a/images/frontpage/banner_bg.png b/images/frontpage/banner_bg.png new file mode 100644 index 000000000..edb698405 Binary files /dev/null and b/images/frontpage/banner_bg.png differ diff --git a/images/frontpage/banner_left.png b/images/frontpage/banner_left.png new file mode 100644 index 000000000..98340c4cd Binary files /dev/null and b/images/frontpage/banner_left.png differ diff --git a/images/frontpage/banner_right.png b/images/frontpage/banner_right.png new file mode 100644 index 000000000..8c93ac91d Binary files /dev/null and b/images/frontpage/banner_right.png differ diff --git a/images/frontpage/voidscrappers.jpg b/images/frontpage/voidscrappers.jpg deleted file mode 100644 index e9e5df5d5..000000000 Binary files a/images/frontpage/voidscrappers.jpg and /dev/null differ diff --git a/images/games/a-thousand-bees-half.png b/images/games/a-thousand-bees-half.png new file mode 100644 index 000000000..92939e03e Binary files /dev/null and b/images/games/a-thousand-bees-half.png differ diff --git a/images/games/a-thousand-bees-third.png b/images/games/a-thousand-bees-third.png new file mode 100644 index 000000000..01c23daa2 Binary files /dev/null and b/images/games/a-thousand-bees-third.png differ diff --git a/images/games/animal-hero-half.png b/images/games/animal-hero-half.png new file mode 100644 index 000000000..5d17aaa64 Binary files /dev/null and b/images/games/animal-hero-half.png differ diff --git a/images/games/boba-tea-merge-half.png b/images/games/boba-tea-merge-half.png new file mode 100644 index 000000000..203330b88 Binary files /dev/null and b/images/games/boba-tea-merge-half.png differ diff --git a/images/games/boreblasters-full.png b/images/games/boreblasters-full.png index c0f8d36ba..5d8c665d9 100644 Binary files a/images/games/boreblasters-full.png and b/images/games/boreblasters-full.png differ diff --git a/images/games/brdf-full.png b/images/games/brdf-full.png new file mode 100644 index 000000000..0e2a29091 Binary files /dev/null and b/images/games/brdf-full.png differ diff --git a/images/games/cashchubbies_islands-full.png b/images/games/cashchubbies_islands-full.png index 95511eae3..8dc47d1e1 100644 Binary files a/images/games/cashchubbies_islands-full.png and b/images/games/cashchubbies_islands-full.png differ diff --git a/images/games/cashchubbies_islands-half.png b/images/games/cashchubbies_islands-half.png index 29191e00c..1c9db4c57 100644 Binary files a/images/games/cashchubbies_islands-half.png and b/images/games/cashchubbies_islands-half.png differ diff --git a/images/games/craftomation-101-full.png b/images/games/craftomation-101-full.png index 6dae5b74c..5ef1bdcf5 100644 Binary files a/images/games/craftomation-101-full.png and b/images/games/craftomation-101-full.png differ diff --git a/images/games/drills_merge_master-full.png b/images/games/drills_merge_master-full.png index 501cecca7..956eb3aba 100644 Binary files a/images/games/drills_merge_master-full.png and b/images/games/drills_merge_master-full.png differ diff --git a/images/games/extinction-zone-half.png b/images/games/extinction-zone-half.png new file mode 100644 index 000000000..cc143b49a Binary files /dev/null and b/images/games/extinction-zone-half.png differ diff --git a/images/games/extinction-zone-third.png b/images/games/extinction-zone-third.png new file mode 100644 index 000000000..055653c46 Binary files /dev/null and b/images/games/extinction-zone-third.png differ diff --git a/images/games/familyisland-full.png b/images/games/familyisland-full.png index 805f5156c..4f105c740 100644 Binary files a/images/games/familyisland-full.png and b/images/games/familyisland-full.png differ diff --git a/images/games/gameoffitna-full.png b/images/games/gameoffitna-full.png new file mode 100644 index 000000000..3415ef73d Binary files /dev/null and b/images/games/gameoffitna-full.png differ diff --git a/images/games/gameoffitna-half.png b/images/games/gameoffitna-half.png new file mode 100644 index 000000000..4c17f0d1a Binary files /dev/null and b/images/games/gameoffitna-half.png differ diff --git a/images/games/gameoffitna-third.png b/images/games/gameoffitna-third.png new file mode 100644 index 000000000..3f608ea9a Binary files /dev/null and b/images/games/gameoffitna-third.png differ diff --git a/images/games/hotel-rush-full.png b/images/games/hotel-rush-full.png index aa1e81bb5..82c0c53d4 100644 Binary files a/images/games/hotel-rush-full.png and b/images/games/hotel-rush-full.png differ diff --git a/images/games/hotel-rush-old.png b/images/games/hotel-rush-old.png new file mode 100644 index 000000000..aa1e81bb5 Binary files /dev/null and b/images/games/hotel-rush-old.png differ diff --git a/images/games/interrogation-half.png b/images/games/interrogation-half.png index f0ba6b850..f24d3a2c9 100644 Binary files a/images/games/interrogation-half.png and b/images/games/interrogation-half.png differ diff --git a/images/games/jeepney-half.png b/images/games/jeepney-half.png new file mode 100644 index 000000000..d21339e29 Binary files /dev/null and b/images/games/jeepney-half.png differ diff --git a/images/games/jeepney-third.png b/images/games/jeepney-third.png new file mode 100644 index 000000000..635c4b279 Binary files /dev/null and b/images/games/jeepney-third.png differ diff --git a/images/games/kaiju-half.png b/images/games/kaiju-half.png new file mode 100644 index 000000000..9c61bad5e Binary files /dev/null and b/images/games/kaiju-half.png differ diff --git a/images/games/kaiju-third.png b/images/games/kaiju-third.png new file mode 100644 index 000000000..1522de20f Binary files /dev/null and b/images/games/kaiju-third.png differ diff --git a/images/games/lights-shadows-full.png b/images/games/lights-shadows-full.png new file mode 100644 index 000000000..b00810453 Binary files /dev/null and b/images/games/lights-shadows-full.png differ diff --git a/images/games/madskillsmotocross2-full.png b/images/games/madskillsmotocross2-full.png new file mode 100644 index 000000000..150af73b7 Binary files /dev/null and b/images/games/madskillsmotocross2-full.png differ diff --git a/images/games/madskillsmotocross2-half.png b/images/games/madskillsmotocross2-half.png new file mode 100644 index 000000000..cfa2099f5 Binary files /dev/null and b/images/games/madskillsmotocross2-half.png differ diff --git a/images/games/madskillsmotocross2-third.png b/images/games/madskillsmotocross2-third.png new file mode 100644 index 000000000..dd1003cbb Binary files /dev/null and b/images/games/madskillsmotocross2-third.png differ diff --git a/images/games/monkeymart-full.png b/images/games/monkeymart-full.png index 1c38168f2..a50b8653d 100644 Binary files a/images/games/monkeymart-full.png and b/images/games/monkeymart-full.png differ diff --git a/images/games/nullptr-half.png b/images/games/nullptr-half.png new file mode 100644 index 000000000..354d6068d Binary files /dev/null and b/images/games/nullptr-half.png differ diff --git a/images/games/nullptr-third.png b/images/games/nullptr-third.png new file mode 100644 index 000000000..d70b04dcc Binary files /dev/null and b/images/games/nullptr-third.png differ diff --git a/images/games/once-upon-a-galaxy-full.png b/images/games/once-upon-a-galaxy-full.png new file mode 100644 index 000000000..2c550723a Binary files /dev/null and b/images/games/once-upon-a-galaxy-full.png differ diff --git a/images/games/once-upon-a-galaxy-full.jpg b/images/games/once-upon-a-galaxy-old.jpg similarity index 100% rename from images/games/once-upon-a-galaxy-full.jpg rename to images/games/once-upon-a-galaxy-old.jpg diff --git a/images/games/piece-of-cake-full.png b/images/games/piece-of-cake-full.png index 9aeb23aa3..69f4bdd7f 100644 Binary files a/images/games/piece-of-cake-full.png and b/images/games/piece-of-cake-full.png differ diff --git a/images/games/piece-of-cake-old.png b/images/games/piece-of-cake-old.png new file mode 100644 index 000000000..9aeb23aa3 Binary files /dev/null and b/images/games/piece-of-cake-old.png differ diff --git a/images/games/plaguelords-full.png b/images/games/plaguelords-full.png index 5f3fd28b1..508de26ca 100644 Binary files a/images/games/plaguelords-full.png and b/images/games/plaguelords-full.png differ diff --git a/images/games/plaguelords-old.png b/images/games/plaguelords-old.png new file mode 100644 index 000000000..5f3fd28b1 Binary files /dev/null and b/images/games/plaguelords-old.png differ diff --git a/images/games/punch_legend_simulator-full.png b/images/games/punch_legend_simulator-full.png index 521932ae9..4184e20e5 100644 Binary files a/images/games/punch_legend_simulator-full.png and b/images/games/punch_legend_simulator-full.png differ diff --git a/images/games/punch_legend_simulator-half.png b/images/games/punch_legend_simulator-half.png index 0ee816c25..b2b529912 100644 Binary files a/images/games/punch_legend_simulator-half.png and b/images/games/punch_legend_simulator-half.png differ diff --git a/images/games/punch_legend_simulator-third.png b/images/games/punch_legend_simulator-third.png index 579566cbe..55af4664b 100644 Binary files a/images/games/punch_legend_simulator-third.png and b/images/games/punch_legend_simulator-third.png differ diff --git a/images/games/sector-half.png b/images/games/sector-half.png new file mode 100644 index 000000000..9d8b32c55 Binary files /dev/null and b/images/games/sector-half.png differ diff --git a/images/games/sector-third.png b/images/games/sector-third.png new file mode 100644 index 000000000..cf01e104a Binary files /dev/null and b/images/games/sector-third.png differ diff --git a/images/games/skull_horde-full.png b/images/games/skull_horde-full.png new file mode 100644 index 000000000..4aa66b961 Binary files /dev/null and b/images/games/skull_horde-full.png differ diff --git a/images/games/stickmerge-full.png b/images/games/stickmerge-full.png index 41f8154b8..59eef2f2e 100644 Binary files a/images/games/stickmerge-full.png and b/images/games/stickmerge-full.png differ diff --git a/images/games/sudoku-master-half.png b/images/games/sudoku-master-half.png new file mode 100644 index 000000000..f6cfb1de9 Binary files /dev/null and b/images/games/sudoku-master-half.png differ diff --git a/images/games/sudoku-master-third.png b/images/games/sudoku-master-third.png new file mode 100644 index 000000000..4447b2465 Binary files /dev/null and b/images/games/sudoku-master-third.png differ diff --git a/images/games/superweird-full.jpg b/images/games/superweird-full.jpg deleted file mode 100644 index 704bf72ef..000000000 Binary files a/images/games/superweird-full.jpg and /dev/null differ diff --git a/images/games/superweird-full.png b/images/games/superweird-full.png new file mode 100644 index 000000000..beba54076 Binary files /dev/null and b/images/games/superweird-full.png differ diff --git a/images/games/tameshi-half.png b/images/games/tameshi-half.png new file mode 100644 index 000000000..b2650b9bf Binary files /dev/null and b/images/games/tameshi-half.png differ diff --git a/images/games/tameshi-third.png b/images/games/tameshi-third.png new file mode 100644 index 000000000..23d2d7834 Binary files /dev/null and b/images/games/tameshi-third.png differ diff --git a/images/games/tiny-racing-half.jpg b/images/games/tiny-racing-half.jpg deleted file mode 100644 index cd0eeae55..000000000 Binary files a/images/games/tiny-racing-half.jpg and /dev/null differ diff --git a/images/games/tiny-racing-half.png b/images/games/tiny-racing-half.png new file mode 100644 index 000000000..1783772de Binary files /dev/null and b/images/games/tiny-racing-half.png differ diff --git a/images/games/tiny_city-full.png b/images/games/tiny_city-full.png new file mode 100644 index 000000000..46cf81fad Binary files /dev/null and b/images/games/tiny_city-full.png differ diff --git a/images/games/warnament-full.jpg b/images/games/warnament-full.jpg deleted file mode 100644 index 7cc28679d..000000000 Binary files a/images/games/warnament-full.jpg and /dev/null differ diff --git a/images/games/warnament-full.png b/images/games/warnament-full.png new file mode 100644 index 000000000..daca2aefb Binary files /dev/null and b/images/games/warnament-full.png differ diff --git a/images/games/witchcrafter-full.png b/images/games/witchcrafter-full.png index 86cb03f07..deb0a46ad 100644 Binary files a/images/games/witchcrafter-full.png and b/images/games/witchcrafter-full.png differ diff --git a/images/games/witchcrafter-half.png b/images/games/witchcrafter-half.png index 0ce6af60e..5e8e49fc6 100644 Binary files a/images/games/witchcrafter-half.png and b/images/games/witchcrafter-half.png differ diff --git a/images/games/witchcrafter-third.png b/images/games/witchcrafter-third.png index 9c8e2e38c..834272188 100644 Binary files a/images/games/witchcrafter-third.png and b/images/games/witchcrafter-third.png differ diff --git a/images/games/you-are-zombies-half.png b/images/games/you-are-zombies-half.png new file mode 100644 index 000000000..ec3c99f47 Binary files /dev/null and b/images/games/you-are-zombies-half.png differ diff --git a/images/games/you-are-zombies-third.png b/images/games/you-are-zombies-third.png new file mode 100644 index 000000000..0814060cc Binary files /dev/null and b/images/games/you-are-zombies-third.png differ diff --git a/images/icons/icons-discord.svg b/images/icons/icons-discord.svg index fc01e2769..c1a2c86ac 100644 --- a/images/icons/icons-discord.svg +++ b/images/icons/icons-discord.svg @@ -1,14 +1,44 @@ - - - - + + + + + + + + diff --git a/images/icons/icons-yt.svg b/images/icons/icons-yt.svg new file mode 100644 index 000000000..10862eb19 --- /dev/null +++ b/images/icons/icons-yt.svg @@ -0,0 +1,54 @@ + + + + diff --git a/index.html b/index.html index eb3cb529a..a30ae1cb9 100644 --- a/index.html +++ b/index.html @@ -1,55 +1,48 @@ --- layout: page -title: Defold - Official Homepage - Cross platform game engine +title: Defold - Official Homepage - Free, small and truly cross platform game engine nav: floating -heatmap: false +heatmap: true --- -
+
-
-
-
-
- Defold Logo -
-
-

The game engine for high-performance cross-platform games

-
-
-
-
-
-
-
-

Free.
Forever.

- -
-
-
-
-

Production
ready

- -
-
+ + +
+
+
+
+ Defold Logo +
+

UNLEASH YOUR IMAGINATION

+
-
-

Cross
platform

- -
-
+ -
-

Source
available

- -
-
+
+
+ {% include primary_button.html link="/download" text="DOWNLOAD NOW" %} +
-
{%- assign news = site.data.news | where: "show", true -%} @@ -73,114 +66,48 @@

The game engine for high-performance cross-platform ga

{%- endif -%} - -{% include features_section.html %} - - -
- {% include game_dynamic_template.html %} -
- - - - - - -
-
-
-
- {% include primary_button.html link="/showcase" text="More games made with Defold" %} -
-
-
-
+ {% include news_and_blog_section.html %} diff --git a/js/frontpage-carousel.js b/js/frontpage-carousel.js new file mode 100644 index 000000000..ecd0f304a --- /dev/null +++ b/js/frontpage-carousel.js @@ -0,0 +1,310 @@ +(function() { + function initFrontpageCarousel() { + const rawGames = Array.isArray(window.frontpageGames) ? window.frontpageGames : []; + if (rawGames.length === 0) { + return; + } + + const featuredIds = Array.isArray(window.frontpageFeaturedGameIds) + ? window.frontpageFeaturedGameIds + : []; + + const config = window.frontpageCarouselConfig || {}; + const maxGames = Math.max(1, Number(config.maxGames) || 8); + const intervalMs = Math.max(1000, Number(config.intervalMs) || 10000); + + const featuredGames = []; + const seenIds = new Set(); + featuredIds.forEach(function(gameId) { + if (!gameId || seenIds.has(gameId)) { + return; + } + const game = rawGames.find(function(candidate) { + return candidate.id === gameId; + }); + if (game) { + featuredGames.push(game); + seenIds.add(gameId); + } + }); + + const sourceGames = featuredGames.length > 0 ? featuredGames : rawGames; + const games = sourceGames.slice(0, maxGames); + + const carousel = document.getElementById('frontpage-showcase-carousel'); + const dotsContainer = document.getElementById('game-carousel-dots'); + if (!carousel || !dotsContainer) { + return; + } + + let currentIndex = 0; + let rotationTimer = null; + let isTransitioning = false; + let slides = []; + let carouselInViewport = true; + let pageVisible = !document.hidden; + + function getImageSrc(game) { + return '/images/games/' + game.image; + } + + function trackImpression(game) { + if (typeof gtag === 'undefined') { + return; + } + gtag('event', 'game_impression', { + 'game_id': game.id, + 'source_location': 'frontpage_hero' + }); + } + + function bindBannerClick(game) { + const slide = slides[currentIndex]; + if (!slide) { + return; + } + slide.onclick = function() { + if (typeof gtag === 'undefined') { + return; + } + gtag('event', 'game_click', { + 'game_id': game.id, + 'source_location': 'frontpage_banner' + }); + }; + } + + function canRotate() { + return games.length > 1 && carouselInViewport && pageVisible; + } + + function stopAutoRotation() { + if (rotationTimer) { + clearInterval(rotationTimer); + rotationTimer = null; + } + } + + function startAutoRotation() { + if (rotationTimer || !canRotate()) { + return; + } + rotationTimer = setInterval(nextGame, intervalMs); + } + + function restartAutoRotation() { + stopAutoRotation(); + startAutoRotation(); + } + + function createSlide(game, isActive) { + const slide = document.createElement('a'); + slide.href = '/showcase'; + slide.className = 'frontpage-showcase-slide game-banner-link'; + if (isActive) { + slide.classList.add('active'); + } + slide.dataset.gameId = game.id; + slide.setAttribute('aria-label', game.name); + + const img = document.createElement('img'); + img.alt = game.name; + img.decoding = 'async'; + img.loading = isActive ? 'eager' : 'lazy'; + + if (isActive) { + img.src = getImageSrc(game); + img.dataset.loaded = 'true'; + } else { + img.dataset.src = getImageSrc(game); + } + + slide.appendChild(img); + return slide; + } + + function ensureImageLoaded(slide) { + const img = slide.querySelector('img'); + if (!img || img.dataset.loaded === 'true') { + return Promise.resolve(); + } + + return new Promise(function(resolve) { + let done = false; + function finish() { + if (done) { + return; + } + done = true; + img.dataset.loaded = 'true'; + resolve(); + } + + img.addEventListener('load', finish, { once: true }); + img.addEventListener('error', finish, { once: true }); + + if (!img.src) { + img.src = img.dataset.src; + } + + if (img.complete) { + finish(); + } + }); + } + + function updateDots() { + const dots = dotsContainer.querySelectorAll('.game-carousel-dot'); + dots.forEach(function(dot, index) { + const isActive = index === currentIndex; + dot.classList.toggle('active', isActive); + dot.setAttribute('aria-current', isActive ? 'true' : 'false'); + }); + } + + function preloadNextImage() { + if (slides.length <= 1) { + return; + } + const nextIndex = (currentIndex + 1) % slides.length; + ensureImageLoaded(slides[nextIndex]); + } + + function renderCurrentGame() { + const game = games[currentIndex]; + updateDots(); + bindBannerClick(game); + trackImpression(game); + preloadNextImage(); + } + + function showSlide(nextIndex) { + if (nextIndex === currentIndex || isTransitioning) { + return; + } + + isTransitioning = true; + const currentSlide = slides[currentIndex]; + const nextSlide = slides[nextIndex]; + + ensureImageLoaded(nextSlide).then(function() { + currentSlide.classList.remove('active'); + nextSlide.classList.add('active'); + currentIndex = nextIndex; + renderCurrentGame(); + }).finally(function() { + window.setTimeout(function() { + isTransitioning = false; + }, 700); + }); + } + + function nextGame() { + const nextIndex = (currentIndex + 1) % games.length; + showSlide(nextIndex); + } + + function initSlides() { + const fallbackSlide = carousel.querySelector('.frontpage-showcase-slide'); + slides = []; + + games.forEach(function(game, index) { + let slide; + if (index === 0 && fallbackSlide) { + slide = fallbackSlide; + slide.dataset.gameId = game.id; + slide.setAttribute('aria-label', game.name); + slide.classList.add('active'); + const img = slide.querySelector('img'); + img.src = getImageSrc(game); + img.alt = game.name; + img.dataset.loaded = 'true'; + img.decoding = 'async'; + img.loading = 'eager'; + } else { + slide = createSlide(game, false); + carousel.insertBefore(slide, dotsContainer); + } + slides.push(slide); + }); + } + + function createDots() { + dotsContainer.innerHTML = ''; + games.forEach(function(game, index) { + const dot = document.createElement('button'); + dot.type = 'button'; + dot.className = 'game-carousel-dot'; + dot.setAttribute('aria-label', 'Show game ' + (index + 1) + ': ' + game.name); + dot.addEventListener('click', function() { + showSlide(index); + restartAutoRotation(); + }); + dotsContainer.appendChild(dot); + }); + + if (games.length <= 1) { + dotsContainer.style.display = 'none'; + } + } + + function trackMoreGamesButton() { + const moreGamesButton = document.querySelector('#frontpage-more-games-button a'); + if (!moreGamesButton) { + return; + } + moreGamesButton.addEventListener('click', function() { + if (typeof gtag === 'undefined') { + return; + } + gtag('event', 'game_click', { + 'game_id': games[currentIndex].id, + 'source_location': 'frontpage_more_button' + }); + }); + } + + function setupAutoPause() { + if ('IntersectionObserver' in window) { + const observer = new IntersectionObserver(function(entries) { + entries.forEach(function(entry) { + if (entry.target !== carousel) { + return; + } + carouselInViewport = entry.isIntersecting && entry.intersectionRatio > 0.2; + if (canRotate()) { + startAutoRotation(); + } else { + stopAutoRotation(); + } + }); + }, { + threshold: [0, 0.2, 0.5] + }); + observer.observe(carousel); + } + + document.addEventListener('visibilitychange', function() { + pageVisible = !document.hidden; + if (canRotate()) { + startAutoRotation(); + } else { + stopAutoRotation(); + } + }); + } + + initSlides(); + createDots(); + renderCurrentGame(); + trackMoreGamesButton(); + setupAutoPause(); + startAutoRotation(); + } + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', initFrontpageCarousel); + } else { + initFrontpageCarousel(); + } +})(); diff --git a/learn.html b/learn.html index a161043ba..4ac75a285 100644 --- a/learn.html +++ b/learn.html @@ -2,4 +2,5 @@ layout: learn title: Defold manuals and other learning resources nav: floating +heatmap: true --- diff --git a/showcase.html b/showcase.html index b531774f0..9fee027f4 100644 --- a/showcase.html +++ b/showcase.html @@ -2,6 +2,7 @@ layout: page title: Defold Games Showcase nav: floating +heatmap: true ---
@@ -9,7 +10,7 @@

Get inspired

-

Your next hit game is just an idea away. See what’s made with Defold, and what the community is building right now.

+

Your next hit game is just an idea away. See what’s made with Defold!

{% include secondary_button.html link="https://github.com/defold/games-showcase/tree/master?tab=readme-ov-file#submitting-a-game" text="Submit game" %} @@ -18,6 +19,36 @@

Get inspired

+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+

Made with Defold

+

Explore games and community projects built with Defold.

+
+
+
+
+ {%- include games.html placement="showcase" -%}