<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Defold</title>
		<description>Defold is a free, cross-platform game engine for building 2D and 3D games for desktop, web, mobile, and consoles.</description>
		<link>https://www.defold.com</link>
		<atom:link href="https://www.defold.com/feed.xml" rel="self" type="application/rss+xml" />
		
		<item>
			<title>From Unity to Defold - how Orenji Spark rebuilt Jane&apos;s Fashion Studio for Poki</title>
			<description>&lt;p&gt;In this Defold Creator Spotlight we invited Iwan from Orenji Spark to tell us about his journey from a decade of mobile and web development to independent game creation, and about rebuilding &lt;em&gt;Jane’s Fashion Studio&lt;/em&gt; in Defold during its Poki soft-launch.&lt;/p&gt;

&lt;p&gt;Orenji Spark is a two-person team, with Iwan handling development and his wife shaping the art and creative direction. Together they have already released several smaller Defold projects such as &lt;a href=&quot;https://orenjispark.com/play/b7fd521a631c4fe2a9bc97de3b89bb2b/&quot;&gt;Capybara Suika&lt;/a&gt;, &lt;a href=&quot;https://orenjispark.com/play/c62767db6c984841a95341d73ff498b5/&quot;&gt;Pool Merge Mania&lt;/a&gt;, and &lt;a href=&quot;https://gamedistribution.com/games/tiny-farm/&quot;&gt;Tiny Farm&lt;/a&gt;, while continuing to grow &lt;a href=&quot;https://poki.com/en/g/janes-fashion-studio&quot;&gt;Jane’s Fashion Studio&lt;/a&gt; for the web.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/creator-spotlight-orenji-spark/Jane%27s%20fashion%20studio%20-%20cover.png&quot; alt=&quot;Jane&apos;s Fashion Studio cover art&quot; /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
  &lt;p&gt;&lt;em&gt;Jane’s Fashion Studio&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h5 id=&quot;hello-introduce-yourself-to-the-defold-community---who-is-behind-orenji-spark&quot;&gt;Hello! Introduce yourself to the Defold community - who is behind Orenji Spark?&lt;/h5&gt;

&lt;p&gt;Hi! First of all, thank you for the opportunity. I really appreciate being featured in the Creator Spotlight.&lt;/p&gt;

&lt;p&gt;I’d also like to thank &lt;a href=&quot;https://poki.com/&quot;&gt;Poki&lt;/a&gt;, not just as a platform, but also the team behind it. Their support and guidance throughout the process have been very helpful.&lt;/p&gt;

&lt;p&gt;I’m Iwan, the developer behind Orenji Spark. I’ve been building games and applications for around 10 years now, mostly across mobile and web platforms. More recently, I decided to move into independent development.&lt;/p&gt;

&lt;p&gt;Orenji Spark is actually a team of two. My wife is also a big part of it. She handles the art and creative design for our games, so it’s a collaborative effort between us. I focus more on the technical and development side, while she shapes the visual identity and overall feel of the games.&lt;/p&gt;

&lt;h5 id=&quot;youve-spent-a-decade-building-games-and-applications-how-did-that-experience-shape-you-as-a-developer-and-what-pushed-you-toward-independent-development&quot;&gt;You’ve spent a decade building games and applications. How did that experience shape you as a developer, and what pushed you toward independent development?&lt;/h5&gt;

&lt;p&gt;Over the years, my mindset has shifted quite a lot. Earlier in my career, I tended to focus on building systems that were flexible and feature-rich, sometimes a bit over-engineered.&lt;/p&gt;

&lt;p&gt;But with experience, I’ve learned to value simplicity, iteration speed, and clarity much more. Shipping something playable and improving it step by step has become more important than trying to perfect everything upfront.&lt;/p&gt;

&lt;p&gt;Moving toward independent development felt like a natural step. I wanted more control over both the creative and technical direction, and also the freedom to experiment with different ideas more quickly.&lt;/p&gt;

&lt;h5 id=&quot;which-game-engines-have-you-worked-with-so-far&quot;&gt;Which game engines have you worked with so far?&lt;/h5&gt;

&lt;p&gt;I’ve explored quite a few engines over the years, including Cocos Creator, Construct, and Godot.&lt;/p&gt;

&lt;p&gt;But the ones I’ve spent the most time with are Unity, Phaser, Cocos Creator, and now Defold. Unity was one of my primary engines for many years.&lt;/p&gt;

&lt;p&gt;More recently, I’ve been leaning toward engines that are better suited for lightweight and performant web games, which is what led me to Defold. I’ve also released a few small games using Defold on platforms like Google Play and web portals, such as &lt;em&gt;Capybara Suika&lt;/em&gt;, &lt;em&gt;Pool Merge Mania&lt;/em&gt;, and &lt;em&gt;Tiny Farm&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/creator-spotlight-orenji-spark/ss-2.png&quot; alt=&quot;Capybara Suika&quot; /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
  &lt;p&gt;&lt;em&gt;Capybara Suika&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h5 id=&quot;looking-back-how-did-your-priorities-change-as-you-shifted-more-toward-web-games-and-performance-sensitive-platforms&quot;&gt;Looking back, how did your priorities change as you shifted more toward web games and performance-sensitive platforms?&lt;/h5&gt;

&lt;p&gt;The biggest shift was putting performance at the center of decision making.&lt;/p&gt;

&lt;p&gt;For web games, things like build size, loading time, and stability across devices have a direct impact on player retention. Even small delays can affect whether a player stays or leaves.&lt;/p&gt;

&lt;p&gt;So I started designing with constraints in mind from the beginning, keeping assets lean, simplifying systems, and making sure the game runs well even on lower-end devices.&lt;/p&gt;

&lt;h5 id=&quot;for-readers-who-havent-played-it-yet-what-is-janes-fashion-studio-and-what-kind-of-player-experience-were-you-aiming-for-with-the-game&quot;&gt;For readers who haven’t played it yet, what is Jane’s Fashion Studio, and what kind of player experience were you aiming for with the game?&lt;/h5&gt;

&lt;p&gt;&lt;em&gt;Jane’s Fashion Studio&lt;/em&gt; is a casual dress-up and styling game where players help different characters by choosing outfits and styling combinations.&lt;/p&gt;

&lt;p&gt;Each character also has their own small storyline, so the experience is not just about dressing up, but also progressing through these character moments.&lt;/p&gt;

&lt;p&gt;The goal was to create something relaxing, cozy, and accessible, while still giving players a sense of progression and creativity.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/creator-spotlight-orenji-spark/jfs-2.png&quot; alt=&quot;Jane&apos;s Fashion Studio gameplay&quot; /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
  &lt;p&gt;&lt;em&gt;Jane’s Fashion Studio gameplay&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h5 id=&quot;you-shared-on-the-defold-forum-that-janes-fashion-studio-started-in-unity-and-was-later-rebuilt-in-defold-during-the-poki-soft-launch-phase-what-feedback-or-warning-signs-made-you-realize-that-porting-the-game-was-the-right-move&quot;&gt;You shared on the Defold Forum that Jane’s Fashion Studio started in Unity and was later rebuilt in Defold during the Poki soft-launch phase. What feedback or warning signs made you realize that porting the game was the right move?&lt;/h5&gt;

&lt;p&gt;During the soft-launch phase on Poki, we started to see clear signals that something needed improvement, especially around loading time and performance.&lt;/p&gt;

&lt;p&gt;We also received direct feedback from players mentioning that the loading felt too long.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://sdk.poki.com/&quot;&gt;Poki’s dashboard&lt;/a&gt; was really helpful. It provides very detailed insights, gameplay metrics, engagement, conversion (C2P), device breakdowns, error tracking, and even player feedback.&lt;/p&gt;

&lt;p&gt;Seeing all of that together made it much easier to identify where the issues were and how impactful they were. At that point, it became clear that we needed a more optimized approach for the web, which led me to try rebuilding the game in Defold.&lt;/p&gt;

&lt;h5 id=&quot;which-of-the-improvements-mattered-most-in-practice-and-how-did-they-affect-the-games-path-to-a-global-poki-release&quot;&gt;Which of the improvements mattered most in practice, and how did they affect the game’s path to a global Poki release?&lt;/h5&gt;

&lt;p&gt;The improvements were quite significant.&lt;/p&gt;

&lt;p&gt;The build size was reduced by around 65%, which had a big impact on initial loading time. The game became noticeably faster to start and more responsive overall, especially on lower-end devices.&lt;/p&gt;

&lt;p&gt;We could also see the impact reflected in the Poki dashboard. Engagement and C2P started improving.&lt;/p&gt;

&lt;p&gt;These changes made the experience more consistent across devices and gave more confidence moving toward a wider, global release.&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
  &lt;p style=&quot;font-size: larger&quot;&gt;&lt;i&gt;“The build size was reduced by around 65%, which had a big impact on initial loading time.”&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h5 id=&quot;which-parts-of-the-project-were-the-most-straightforward-to-recreate-in-defold-and-which-parts-forced-you-to-rethink-your-approach-from-scratch&quot;&gt;Which parts of the project were the most straightforward to recreate in Defold, and which parts forced you to rethink your approach from scratch?&lt;/h5&gt;

&lt;p&gt;The core gameplay logic was relatively straightforward to recreate.&lt;/p&gt;

&lt;p&gt;The biggest difference was in data flow and structure. In Unity, I relied a lot on component-based patterns, ScriptableObjects, and prefabs to manage data and mappings.&lt;/p&gt;

&lt;p&gt;In Defold, I approached it differently, using atlases and carefully structured naming for mapping. It required a bit of rethinking at first, but it actually made the workflow feel cleaner and lighter, with less overhead.&lt;/p&gt;

&lt;p&gt;One feature I really like is GUI Layouts, which makes it much easier to handle different layouts like portrait and landscape without complicating the setup.&lt;/p&gt;

&lt;p&gt;I also want to highlight the Defold community here. The extensions and libraries created by the community made the migration process much smoother and very enjoyable. They were genuinely helpful and saved a lot of time.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/creator-spotlight-orenji-spark/jfs-1.png&quot; alt=&quot;Jane&apos;s Fashion Studio in the Defold Editor&quot; /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
  &lt;p&gt;&lt;em&gt;Jane’s Fashion Studio in the Defold Editor&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h5 id=&quot;for-developers-who-currently-have-a-2d-game-in-unity-and-are-considering-defold-for-web-deployment-what-would-you-tell-them-based-on-your-own-experience&quot;&gt;For developers who currently have a 2D game in Unity and are considering Defold for web deployment, what would you tell them based on your own experience?&lt;/h5&gt;

&lt;p&gt;I’d definitely recommend trying it, especially if your focus is web, performance, or reaching a wide range of devices, including lower-end ones.&lt;/p&gt;

&lt;p&gt;It’s not a one-to-one transition from Unity, and you may need to rethink some systems. But that process can actually lead to simpler and more efficient solutions.&lt;/p&gt;

&lt;h5 id=&quot;what-kinds-of-projects-do-you-think-are-especially-well-suited-to-defold&quot;&gt;What kinds of projects do you think are especially well suited to Defold?&lt;/h5&gt;

&lt;p&gt;I’m still learning Defold myself, but from my experience so far, it works especially well for 2D games that require good performance, particularly on web platforms and across a wide range of devices.&lt;/p&gt;

&lt;p&gt;That said, I’ve also seen developers create very impressive and diverse projects with Defold across different genres. It definitely has more flexibility and capability than I initially assumed.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/creator-spotlight-orenji-spark/tf.png&quot; alt=&quot;Tiny Farm in the Defold Editor&quot; /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
  &lt;p&gt;&lt;em&gt;Tiny Farm in the Defold Editor&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h5 id=&quot;youve-now-released-multiple-smaller-defold-games-including-capybara-suika-pool-merge-mania-and-tiny-farm-and-you-also-shared-work-in-the-community-challenge-and-the-defold-showreel-what-have-these-smaller-projects-taught-you&quot;&gt;You’ve now released multiple smaller Defold games, including Capybara Suika, Pool Merge Mania, and Tiny Farm, and you also shared work in the community challenge and the Defold showreel. What have these smaller projects taught you?&lt;/h5&gt;

&lt;p&gt;These smaller projects have been really valuable for learning and experimentation.&lt;/p&gt;

&lt;p&gt;They allow me to try different ideas quickly, test workflows, and understand the engine better without the pressure of a large project.&lt;/p&gt;

&lt;p&gt;One key takeaway is the importance of keeping scope manageable and focusing on the core experience first. Each project becomes a stepping stone for improving both technical decisions and game design.&lt;/p&gt;

&lt;h5 id=&quot;your-tiny-worlds-challenge-entry-and-your-other-community-posts-show-that-youre-not-just-using-defold-privately-but-also-engaging-with-the-community-how-has-being-part-of-the-defold-community-influenced-the-way-you-learn-experiment-or-choose-what-to-build-next&quot;&gt;Your Tiny Worlds challenge entry and your other community posts show that you’re not just using Defold privately, but also engaging with the community. How has being part of the Defold community influenced the way you learn, experiment, or choose what to build next?&lt;/h5&gt;

&lt;p&gt;The Defold community has been a really positive experience for me.&lt;/p&gt;

&lt;p&gt;The forum is especially helpful. I often find solutions there, and what’s interesting is that even posts from years ago are still relevant and still work well today. That consistency makes it much easier to learn and troubleshoot.&lt;/p&gt;

&lt;p&gt;Participating in community activities like the Tiny Worlds challenge has also been very meaningful for me. My entry was selected for the Rookie Award, which was a really encouraging experience as someone still exploring Defold.&lt;/p&gt;

&lt;p&gt;Being part of the community makes learning more enjoyable. Seeing what others are building and how they approach problems often inspires me to explore new ideas and different approaches.&lt;/p&gt;

&lt;p&gt;The community is also very supportive, and the available resources are solid and reliable. Many older tutorials still work today, which reflects how stable and well-structured Defold’s fundamentals are.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/creator-spotlight-orenji-spark/pm.png&quot; alt=&quot;Pool Merge Mania in the Defold Editor&quot; /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
  &lt;p&gt;&lt;em&gt;Pool Merge Mania in the Defold Editor&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h5 id=&quot;what-are-you-most-excited-to-explore-next-either-in-this-project-or-in-future-games&quot;&gt;What are you most excited to explore next, either in this project or in future games?&lt;/h5&gt;

&lt;p&gt;Right now, I’m mainly excited to continue growing &lt;em&gt;Jane’s Fashion Studio&lt;/em&gt;, adding more stories, new characters, and more outfit variations so the experience can keep expanding over time.&lt;/p&gt;

&lt;p&gt;At the same time, I also want to keep creating and publishing more games on web platforms using Defold. I really enjoy the process of building smaller projects, learning from each release, and gradually improving both the technical and design side.&lt;/p&gt;

&lt;p&gt;I’m also interested in deepening my understanding of Defold itself. Seeing other developers create really impressive projects with it makes me realize there’s still a lot of potential I haven’t explored yet.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/creator-spotlight-orenji-spark/cs-2.png&quot; alt=&quot;Capybara Suika in the Defold Editor&quot; /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
  &lt;p&gt;&lt;em&gt;Capybara Suika in the Defold Editor&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h5 id=&quot;finally-how-can-our-community-follow-you&quot;&gt;Finally, how can our community follow you?&lt;/h5&gt;

&lt;p&gt;If you’re interested, you can find our work and updates here:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Website: &lt;a href=&quot;https://orenjispark.com&quot;&gt;https://orenjispark.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Instagram: &lt;a href=&quot;https://instagram.com/orenjibrush&quot;&gt;https://instagram.com/orenjibrush&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;X (Twitter): &lt;a href=&quot;https://x.com/orenjibrush&quot;&gt;https://x.com/orenjibrush&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;TikTok: &lt;a href=&quot;https://www.tiktok.com/@orenji.brush&quot;&gt;https://www.tiktok.com/@orenji.brush&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ll be sharing updates about our games and new releases there.&lt;/p&gt;

&lt;h5 id=&quot;thank-you-very-much-for-the-interview-and-we-wish-you-a-success-with-janes-fashion-studio-and-your-future-defold-games&quot;&gt;Thank you very much for the interview, and we wish you a success with Jane’s Fashion Studio and your future Defold games!&lt;/h5&gt;
</description>
			<pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate>
			<link>https://www.defold.com/2026/04/02/Creator-Spotlight-Orenji-Spark/</link>
			<guid isPermaLink="true">https://www.defold.com/2026/04/02/Creator-Spotlight-Orenji-Spark/</guid>
		</item>
		
		<item>
			<title>Why did Fingersoft use Defold to bring Hill Climb Racing to Poki?</title>
			<description>&lt;p&gt;We invited Shiho Kaneko from Fingersoft, to tell us about their adventure with Defold to create &lt;a href=&quot;https://poki.com/en/g/hill-climb-racing-lite&quot;&gt;Hill Climb Racing Lite&lt;/a&gt; for &lt;a href=&quot;https://poki.com/&quot;&gt;Poki&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/interview-fingersoft/hill_climb_racing_lite_banner.png&quot; alt=&quot;Hill Climb Racing Lite made with Defold&quot; /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
  &lt;p&gt;&lt;em&gt;Hill Climb Racing Lite made with Defold&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h4 id=&quot;hello-shiho-introduce-yourself-to-our-community-what-is-your-role-at-fingersoft-what-are-your-favorite-games&quot;&gt;Hello Shiho! Introduce yourself to our community! What is your role at Fingersoft? What are your favorite games?&lt;/h4&gt;

&lt;p&gt;Hi, I’m Shiho Kaneko, producer of Hill Climb Racing Lite. I love games like &lt;em&gt;Rhythm Heaven&lt;/em&gt;, &lt;em&gt;Gorogoa&lt;/em&gt;, and &lt;em&gt;Don’t Starve Together&lt;/em&gt;.&lt;/p&gt;

&lt;h4 id=&quot;for-readers-who-know-fingersoft-but-not-hill-climb-racing-lite-on-the-web-what-kind-of-game-is-it-and-what-were-your-goals-for-making-a-web-version&quot;&gt;For readers who know Fingersoft, but not Hill Climb Racing Lite on the web, what kind of game is it, and what were your goals for making a web version?&lt;/h4&gt;

&lt;p&gt;Hill Climb Racing Lite on the web is based on the original &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.fingersoft.hillclimb&quot;&gt;Hill Climb Racing&lt;/a&gt;, but it’s not just the classic endless driving mode. We kept the infinite mode that players already know, but we also added a new mode called &lt;strong&gt;World Tour&lt;/strong&gt;. This mode has a more linear progression and focuses more on skill-based challenge levels. In the World Tour, there are no unlocks or upgrades. Players can jump in and use powerful vehicles right away, without needing to grind first. The idea was to let players focus purely on mastering their skills.&lt;/p&gt;

&lt;p&gt;Hill Climb Racing has always had a lot of hidden mechanics and depth that not all players notice at first. With the web version, one of our goals was to make those mechanics more visible. At the same time, we wanted to create something that feels &lt;strong&gt;fresh for modern web players, while still keeping the core feeling&lt;/strong&gt; of the original game.&lt;/p&gt;

&lt;h4 id=&quot;preserving-the-classic-feel-of-the-mobile-game-is-definitely-noticeable-when-playing-hill-climb-racing-lite-yet-what-had-to-change-for-modern-browsers-and-audiences&quot;&gt;Preserving the classic feel of the mobile game is definitely noticeable when playing Hill Climb Racing Lite, yet what had to change for modern browsers and audiences?&lt;/h4&gt;

&lt;p&gt;During the soft launch, we learned or at least formed a hypothesis that our original format might not be the best fit for modern browser audiences. We noticed that &lt;strong&gt;browser players tend to prefer short-term goals&lt;/strong&gt; rather than long-term commitments, and they expect more frequent changes in gameplay.&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
  &lt;p style=&quot;font-size: larger&quot;&gt;&lt;i&gt;“Based on this, we designed the World Tour mode around three key ideas: a clear sense of progression, minimal decision-making friction, and strong variety.”&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;In addition to offering different vehicles and levels, this mode shifts the focus from simply driving as far as possible. Instead, players are given different objectives and win conditions, encouraging skill-based play and alternative play styles.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/interview-fingersoft/hill_climb_racing_lite_map.png&quot; alt=&quot;Hill Climb Racing Lite World Tour&quot; /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
  &lt;p&gt;&lt;em&gt;Hill Climb Racing Lite - World Tour&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h4 id=&quot;why-web-and-why-now-what-did-you-see-in-the-web-games-market-that-made-this-release-a-reality&quot;&gt;Why web and why now? What did you see in the web games market that made this release a reality?&lt;/h4&gt;

&lt;p&gt;The Hill Climb Racing franchise is evergreen on mobile, and the original is one of the incumbents of the free-to-play mobile gaming era. We realized that web gaming, after the decline of Flash, was making a comeback and we wanted to offer an &lt;strong&gt;authentic Hill Climb Racing experience&lt;/strong&gt; for the players who’d rather play short, instant sessions on web platforms like Poki.&lt;/p&gt;

&lt;h4 id=&quot;why-did-you-choose-defold-for-porting-the-game-to-the-web&quot;&gt;Why did you choose Defold for porting the game to the web?&lt;/h4&gt;

&lt;p&gt;We &lt;strong&gt;evaluated several different engines before selecting Defold&lt;/strong&gt; — in fact, it was the last one we tested. Previously, we had released a predecessor of Hill Climb Racing Lite on YouTube (YouTube Playables), so we were already familiar with platform-agnostic technical requirements.&lt;/p&gt;

&lt;p&gt;There were a few key constraints. The game had to run in HTML5, the &lt;strong&gt;engine size needed to be very small, and solid Box2D integration was essential&lt;/strong&gt; for our physics-based gameplay. Another important requirement was support for portrait orientation, as the game needed to be fully playable in that format.&lt;/p&gt;

&lt;p&gt;We shortlisted around five HTML5-capable engines and built prototypes with each of them. Many had significant limitations when it came to Box2D support. While Defold does not offer built-in Box2D integration at the same level as some native engines, we discovered that someone had implemented a full Box2D conversion using Defold’s native extensions (&lt;em&gt;Editor’s note: &lt;a href=&quot;https://defold.com/assets/defold-box2d/&quot;&gt;defold-box2d&lt;/a&gt; by user d954mas&lt;/em&gt;). This made it viable for our needs.
Additionally, &lt;strong&gt;Defold’s visual editor was a major advantage.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The original Hill Climb Racing still doesn’t use visual tools, so having a proper visual UI editor, especially for portrait layout, significantly improved our workflow.&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
  &lt;p style=&quot;font-size: larger&quot;&gt;&lt;i&gt;“Considering all these factors, Defold turned out to be the best fit for our technical and production requirements.”&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/interview-fingersoft/hill_climb_racing_lite_defold.png&quot; alt=&quot;Hill Climb Racing Lite in the Defold Editor&quot; /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
  &lt;p&gt;&lt;em&gt;Hill Climb Racing Lite in the Defold Editor&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h4 id=&quot;thats-awesome-to-hear-how-did-defold-feel-in-production-at-your-scale-what-did-the-day-to-day-workflow-look-like&quot;&gt;That’s awesome to hear! How did Defold feel in production at your scale? What did the day-to-day workflow look like?&lt;/h4&gt;

&lt;p&gt;Our production team is small and agile, typically consisting of one to three programmers. In that setup, &lt;strong&gt;Defold worked well for collaboration&lt;/strong&gt;, especially since all project files are stored as text. This made version control and merging much smoother compared to engines that rely heavily on binary files.&lt;/p&gt;

&lt;p&gt;That said, the beginning was quite frustrating. Initially, we tried to use Defold the same way we had used other engines like Unity or Godot. Over time, we realized that this approach didn’t work well. Defold is fundamentally different in its architecture, and once we accepted that and started using it as intended, things improved significantly.&lt;/p&gt;

&lt;p&gt;One of the biggest mindset shifts was adapting to Defold’s strong emphasis on decoupling through its message-passing system between objects. Instead of tightly connected components, communication happens via explicit messages, which &lt;strong&gt;encourages a more modular structure&lt;/strong&gt;. After adjusting to this paradigm, the workflow became more predictable and efficient for our small team.&lt;/p&gt;

&lt;h4 id=&quot;what-challenges-have-you-faced-during-the-development-of-hill-climb-racing-lite-if-any-and-how-did-you-overcome-them&quot;&gt;What challenges have you faced during the development of Hill Climb Racing Lite, if any, and how did you overcome them?&lt;/h4&gt;

&lt;p&gt;One of the day-to-day challenges was actually the built-in Defold code editor — particularly the undo functionality, which didn’t feel up to modern standards. This sparked multiple heated internal debates :)&lt;/p&gt;

&lt;p&gt;In the end, we handled it in two different ways: one of us accepted the situation and adapted, while the others “escaped” to Visual Studio Code. Moving to VS Code significantly improved the development experience and solved most of the frustration (&lt;em&gt;Editor’s note: &lt;a href=&quot;https://defold.com/assets/vs-code-ide/&quot;&gt;VS Code integration&lt;/a&gt; by user Roman Silin&lt;/em&gt;).&lt;/p&gt;

&lt;h4 id=&quot;good-that-we-have-options-then-by-the-way-this-undo-functionality-change-is-our-priority-in-the-defold-roadmap-now---we-hope-it-will-be-satisfying-then-and-how-was-the-release-workflow&quot;&gt;Good that we have options then! By the way this undo functionality change is our priority in the Defold roadmap now - we hope it will be satisfying then. And how was the release workflow?&lt;/h4&gt;

&lt;p&gt;We found the &lt;a href=&quot;https://sdk.poki.com/playtesting.html&quot;&gt;Poki Playtesting&lt;/a&gt; feature very helpful. It helped us to identify potential UX related issues.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/interview-fingersoft/hill_climb_racing_lite_title.png&quot; alt=&quot;Hill Climb Racing Lite made with Defold&quot; /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
  &lt;p&gt;&lt;em&gt;Hill Climb Racing Lite - main menu&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h4 id=&quot;what-did-you-learn-about-a-web-first-game-design-during-this-project-was-there-anything-particularly-surprising&quot;&gt;What did you learn about a “web-first” game design during this project? Was there anything particularly surprising?&lt;/h4&gt;

&lt;p&gt;On mobile, it’s relatively safe to design for multi-day progression and deeper meta systems, since players have already committed by downloading the game. You can rely on longer retention loops and layered progression.On the web, however, player behavior is very different. Users tend to look for quick gratification and immediate fun. Sessions are shorter, and the commitment level is much lower.&lt;/p&gt;

&lt;p&gt;As a result, deep multi-layered meta systems don’t work as well — players are less willing to invest time before the game becomes rewarding. What surprised us most was how quickly web players decide whether to stay or leave.&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
  &lt;p style=&quot;font-size: larger&quot;&gt;&lt;i&gt;“A “web-first” design needs to deliver value almost instantly, rather than building up slowly over time.”&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;This forced us to rethink onboarding, pacing, and reward timing.&lt;/p&gt;

&lt;h5 id=&quot;what-would-be-your-recommendation-for-developers-new-to-defold&quot;&gt;What would be your recommendation for developers new to Defold?&lt;/h5&gt;

&lt;p&gt;&lt;strong&gt;Just try it yourself, it’s free!&lt;/strong&gt; Give it at least a week before forming an opinion. Defold has a different architecture and mindset compared to engines like Unity or Godot, and it can feel unfamiliar at first.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/interview-fingersoft/hill_climb_racing_lite_moon.png&quot; alt=&quot;Hill Climb Racing Lite made with Defold&quot; /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
  &lt;p&gt;&lt;em&gt;Hill Climb Racing Lite - to the moon!&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h5 id=&quot;can-you-share-with-us-whats-next-with-hill-climb-racing-andor-fingersoft&quot;&gt;Can you share with us what’s next with Hill Climb Racing and/or Fingersoft?&lt;/h5&gt;

&lt;p&gt;Our company’s main focus is still on supporting the growth of Hill Climb Racing and Hill Climb Racing 2, but in addition we’re developing and iterating on the next title of the franchise, Hill Climb Racing 3. That being said, we are keeping a keen eye on what platforms and distribution opportunities emerge, and aim to provide supply wherever there is demand for Hill Climb Racing.&lt;/p&gt;

&lt;h5 id=&quot;thank-you-very-much-for-the-interview-and-we-wish-you-a-tremendous-success-with-hill-climb-racing-lite&quot;&gt;Thank you very much for the interview, and we wish you a tremendous success with Hill Climb Racing Lite!&lt;/h5&gt;

&lt;p&gt;Check out the game on Poki:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://poki.com/en/g/hill-climb-racing-lite&quot;&gt;Hill Climb Racing Lite&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow Fingersoft on social media:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://facebook.com/fingersoft&quot;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://x.com/fingersoft&quot;&gt;X&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/3127905&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.instagram.com/fingersoft_official/&quot;&gt;Instagram&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/c/FingersoftLtd&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Join Hill Climb Racing Discord:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.discord.gg/hillclimbracing&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And subreddit:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/HillClimbRacing/&quot;&gt;Reddit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And follow Hill Climb Racing accounts:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.facebook.com/HillClimbRacing&quot;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://x.com/HCR_Official_&quot;&gt;X&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.instagram.com/hillclimbracing_official/&quot;&gt;Instagram&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.tiktok.com/@hillclimbracing_game&quot;&gt;TikTok&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
			<pubDate>Thu, 12 Mar 2026 00:00:00 +0000</pubDate>
			<link>https://www.defold.com/2026/03/12/Interview-Fingersoft/</link>
			<guid isPermaLink="true">https://www.defold.com/2026/03/12/Interview-Fingersoft/</guid>
		</item>
		
		<item>
			<title>Defold release 1.12.2</title>
			<description>&lt;h1 id=&quot;defold-1122&quot;&gt;Defold 1.12.2&lt;/h1&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11788&quot;&gt;#11784&lt;/a&gt;) Property options refactor (by Jhonnyg)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11602&quot;&gt;#9746&lt;/a&gt;) Add support for setting and getting custom attribute data for model components (by Jhonnyg)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11644&quot;&gt;#11616&lt;/a&gt;) Added 3D Third Person Playground as sample in the Editor (by paweljarosz)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11883&quot;&gt;#10516&lt;/a&gt;) Remove redunant uniform keyword (by Jhonnyg)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11806&quot;&gt;#3417&lt;/a&gt;) Get and set properties from ParticleFX emitters (by Jhonnyg)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11850&quot;&gt;#3575&lt;/a&gt;) Added JobSystem C api to dmsdk (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11888&quot;&gt;#9547&lt;/a&gt;) Support more than 8 vertex streams (by Jhonnyg)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11660&quot;&gt;#11530&lt;/a&gt;) Added GLTF models to built-in assets. (by paweljarosz)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11895&quot;&gt;#11825&lt;/a&gt;) Moved texture transcoding to a thread during the resource preload step (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11645&quot;&gt;#11597,#10761&lt;/a&gt;) Asset Browser: Group by resources for “New…” menu (by JosephFerano)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11734&quot;&gt;#11717&lt;/a&gt;) Added support for WebP and AVIF image formats for the HTML5 splash screen (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11769&quot;&gt;#10220&lt;/a&gt;) Add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;editor.ui.image()&lt;/code&gt; editor script function (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11890&quot;&gt;#11733&lt;/a&gt;) Make &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/command/build&lt;/code&gt; respond on build completion (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11811&quot;&gt;#11000&lt;/a&gt;) Backspace key (⌫) now performs a Delete action on macOS (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11878&quot;&gt;#5453&lt;/a&gt;) Localize error messages in the editor (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11648&quot;&gt;#11567&lt;/a&gt;) Fix WebGPU crash when mipmaps are enabled (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11751&quot;&gt;#11751&lt;/a&gt;) Uniform buffer as first class object (by Jhonnyg)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11804&quot;&gt;#11764&lt;/a&gt;) Handle proxy unload and load during the same frame (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11834&quot;&gt;#9560,#11779,#9568&lt;/a&gt;) Fix issues where DF fonts appear blurry in some cases. (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11836&quot;&gt;#8998&lt;/a&gt;) Fix blurry distance field font in HTML5 when &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;High DPI&lt;/code&gt; is off (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11848&quot;&gt;#11848&lt;/a&gt;) Improve the empty resource message in bob (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11869&quot;&gt;#11844&lt;/a&gt;) Avoid unnecessary resize calls when the size hasn’t changed. (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11874&quot;&gt;#11870&lt;/a&gt;) Fix the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gui.pick_node()&lt;/code&gt; function when Safe Area is used (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11885&quot;&gt;#11885&lt;/a&gt;) Added dmsdk C api for Window creation (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11778&quot;&gt;#11773&lt;/a&gt;) Fixed an issue where errors in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;go.property()&lt;/code&gt; might prevent the project from compiling (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11752&quot;&gt;#11711&lt;/a&gt;) Improved scrolling behavior in Assets Browser and Outline Pane (by JosephFerano)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11787&quot;&gt;#11787&lt;/a&gt;) Significantly improve load time and memory consumption of large projects (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11799&quot;&gt;#11799&lt;/a&gt;) Improve project load time on big projects by 9% (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11801&quot;&gt;#11293&lt;/a&gt;) Custom game.project fields now show the correct UI after editor restart (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11814&quot;&gt;#9976,#11618,#11713,#11381&lt;/a&gt;) Fix issues around editor symlink handling (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11837&quot;&gt;#11759,#11268,#6300&lt;/a&gt;) Make code editor resilient against defective resource nodes (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11851&quot;&gt;#11851&lt;/a&gt;) Make DF fonts sharp in the editor (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11875&quot;&gt;#11875&lt;/a&gt;) Include engine log files among defignored patterns in the editor (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11803&quot;&gt;#11786&lt;/a&gt;) Limit max dialog height to the height of the screen (by vlaaad)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;engine&quot;&gt;Engine&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11788&quot;&gt;#11784&lt;/a&gt;) &lt;strong&gt;‘Property options refactor’&lt;/strong&gt; by Jhonnyg
Refactored the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dmGameObject::PropertyOptions&lt;/code&gt; struct from dmSDK into an API that can be used to encapsulate multiple options from an options table in the lua script API (e.g &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;go.get / go.set&lt;/code&gt;):&lt;/p&gt;

&lt;div class=&quot;language-c++ highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;typedef&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;PropertyOptions&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;HPropertyOptions&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;uint32_t&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;GetPropertyOptionsCount&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;HPropertyOptions&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;PropertyResult&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;GetPropertyOptionsIndex&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;HPropertyOptions&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;uint32_t&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;options_index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int32_t&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;result&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;PropertyResult&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;GetPropertyOptionsKey&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;HPropertyOptions&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;uint32_t&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;options_index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;dmhash_t&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;result&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Since this is an SDK change, certain adjustments are required in custom components:&lt;/p&gt;

&lt;div class=&quot;language-c++ highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;// Old code:&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;dmGameSystem&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;SetMaterialConstant&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;material&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;m_PropertyId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;m_Value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;m_Options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;m_Index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;set_constant_cb&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;component&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;// New code:&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;int32_t&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;value_index&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;dmGameObject&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;GetPropertyOptionsIndex&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;m_Options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;value_index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;dmGameSystem&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;SetMaterialConstant&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;material&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;m_PropertyId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;m_Value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;value_index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;set_constant_cb&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;component&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11602&quot;&gt;#9746&lt;/a&gt;) &lt;strong&gt;‘Add support for setting and getting custom attribute data for model components’&lt;/strong&gt; by Jhonnyg
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;go.get&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;go.set&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;go.animate&lt;/code&gt; can now be used to query or set custom vertex data for models. This will only be supported for the first mesh in the component, if the model file contains multiple meshes there is currently no way of indexing or referencing those. This will be added at a later time!&lt;/p&gt;

&lt;p&gt;Note: that this can be an expensive operation depending on how large the mesh is and if you are setting an instanced attribute or not. To learn more about instancing read &lt;a href=&quot;https://defold.com/manuals/material/#instancing&quot;&gt;here&lt;/a&gt;, and to learn more about custom vertex formats read &lt;a href=&quot;https://defold.com/manuals/material/#setting-custom-vertex-attribute-data&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This example uses go.animate on the separate cubes to animate a custom vertex stream called “custom_color”:&lt;/p&gt;

&lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rnd_color&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;vmath&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vector4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;math.random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;math.random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;math.random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rnd_time&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;math.random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;go&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;animate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/go&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;#model&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;custom_color&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;go&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;PLAYBACK_LOOP_PINGPONG&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rnd_color&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;go&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;EASING_INQUAD&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rnd_time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/d3e5b48f-e080-4c0a-a0da-8d09908a9fe2&quot; alt=&quot;instancing_custom_vertex_formats&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Test project: 
&lt;a href=&quot;https://github.com/user-attachments/files/24735176/issue-9746-model-set-custom-attributes.zip&quot;&gt;issue-9746-model-set-custom-attributes.zip&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11644&quot;&gt;#11616&lt;/a&gt;) &lt;strong&gt;‘Added 3D Third Person Playground as sample in the Editor’&lt;/strong&gt; by paweljarosz
Added an official 3D Third Person Playground Defold sample game from https://github.com/defold/sample-third-person-playground to the Samples in the Defold Editor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11883&quot;&gt;#10516&lt;/a&gt;) &lt;strong&gt;‘Remove redunant uniform keyword’&lt;/strong&gt; by Jhonnyg&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11806&quot;&gt;#3417&lt;/a&gt;) &lt;strong&gt;‘Get and set properties from ParticleFX emitters’&lt;/strong&gt; by Jhonnyg
The first iteration of getting and setting properties for particlefx emitters via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;go.get&lt;/code&gt; / &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;go.set&lt;/code&gt; is now available:&lt;/p&gt;

&lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;go&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;my_material&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;material&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;())&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;cone_material&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;go&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;#particlefx&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;material&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;keys&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{{&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;emitter_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;cone_emitter&quot;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}}})&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;-- change the material for the next time the particlefx is played&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;go&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;#particlefx&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;material&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;my_material&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;keys&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{{&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;emitter_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;cone_emitter&quot;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}}})&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Important note: The changes invoked via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;go.set&lt;/code&gt; will NOT affect the &lt;em&gt;currently&lt;/em&gt; playing particlefx, they will only have an effect when playing the fx next time. For example, if you want to change material in an input handler, you need to first stop the particlefx and then play it again:&lt;/p&gt;

&lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;on_input&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;space&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;released&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;particlefx&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;#particlefx&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;go&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;#particlefx&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;material&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;my_material&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;keys&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{{&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;emitter_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;cone_emitter&quot;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}}})&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;particlefx&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;play&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;#particlefx&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The properties we currently support for emitters are:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;“material” - get and set the emitter material&lt;/li&gt;
  &lt;li&gt;“image” - get and set the emitter image, i.e atlas or tile source used for rendering&lt;/li&gt;
  &lt;li&gt;“animation” - get and set the animation (the animation must exist in the image!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As this is the first iteration of this feature, very few properties are available. In the future, we hope to support more properties and even curved properties!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11850&quot;&gt;#3575&lt;/a&gt;) &lt;strong&gt;‘Added JobSystem C api to dmsdk’&lt;/strong&gt; by JCash
This allows developers to either use the precreated job system (named “jobs” in the context cache), or create their own when needed.&lt;/p&gt;

&lt;p&gt;For non threaded targets (e.g. html5), the default job system is also updated on the main thread, as that where our synchronisation with Lua happens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11888&quot;&gt;#9547&lt;/a&gt;) &lt;strong&gt;‘Support more than 8 vertex streams’&lt;/strong&gt; by Jhonnyg
Vertex shaders can now use more than 8 inputs, which was the previous limit. Now there is no limitation from the engine to how many input streams you can use, but please keep in mind that there are still GPU / driver limitations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11660&quot;&gt;#11530&lt;/a&gt;) &lt;strong&gt;‘Added GLTF models to built-in assets.’&lt;/strong&gt; by paweljarosz
Added GLTF (embedded with buffers) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.gltf&lt;/code&gt; files as replacement for equivalent built-in Collada &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.dae&lt;/code&gt; files.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;cube.gltf&lt;/li&gt;
  &lt;li&gt;quad.gltf&lt;/li&gt;
  &lt;li&gt;quad_2x2.gltf&lt;/li&gt;
  &lt;li&gt;sphere.gltf&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11895&quot;&gt;#11825&lt;/a&gt;) &lt;strong&gt;‘Moved texture transcoding to a thread during the resource preload step’&lt;/strong&gt; by britzl
Texture transcoding is now done on a thread during the resource preload step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11648&quot;&gt;#11567&lt;/a&gt;) &lt;strong&gt;‘Fix WebGPU crash when mipmaps are enabled’&lt;/strong&gt; by britzl
This fixes a crash when mipmaps are enabled when using WebGPU on Chrome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11751&quot;&gt;#11751&lt;/a&gt;) &lt;strong&gt;‘Uniform buffer as first class object’&lt;/strong&gt; by Jhonnyg
The engine can now create, bind and manipulating uniform buffer objects in runtime. These can then be used for immutable data storage inside the engine for storing things like PBR materials and light component data. There is no user facing code involved here yet, but it is a requirement for the upcoming light component refactor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11804&quot;&gt;#11764&lt;/a&gt;) &lt;strong&gt;‘Handle proxy unload and load during the same frame’&lt;/strong&gt; by britzl
This fixes an issue when unloading and loading the same collection in a single frame.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11834&quot;&gt;#9560,#11779,#9568&lt;/a&gt;) &lt;strong&gt;‘Fix issues where DF fonts appear blurry in some cases.’&lt;/strong&gt; by AGulev
DF smoothing for distance-field fonts is now computed in screen space rather than world space. The renderer derives a pixels-per-local-unit scale from the current view-projection matrix and viewport, ensuring stable edge thickness under camera zoom and perspective.&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;600&quot; height=&quot;300&quot; alt=&quot;Distance-field font rendering before and after screen-space smoothing&quot; src=&quot;https://github.com/user-attachments/assets/5d49cd98-92aa-4dbe-ab55-332f80f136c5&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11836&quot;&gt;#8998&lt;/a&gt;) &lt;strong&gt;‘Fix blurry distance field font in HTML5 when &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;High DPI&lt;/code&gt; is off’&lt;/strong&gt; by AGulev
Distance-field font smoothing is now clamped at runtime to prevent text from becoming overly soft or gray when it becomes too small in pixel size. This typically happens when High DPI is turned off, the camera is heavily zoomed out, or the font scale is reduced too much.&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;716&quot; height=&quot;58&quot; alt=&quot;HTML5 distance-field text rendered sharply with High DPI disabled&quot; src=&quot;https://github.com/user-attachments/assets/8f914048-6c02-4fba-94e8-b08d761e542d&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11848&quot;&gt;#11848&lt;/a&gt;) &lt;strong&gt;‘Improve the empty resource message in bob’&lt;/strong&gt; by britzl
This change improves the exception message when a required resource field is empty.&lt;/p&gt;

&lt;p&gt;From this forum discussion: https://forum.defold.com/t/cant-make-a-build/82323/3?u=britzl&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11869&quot;&gt;#11844&lt;/a&gt;) &lt;strong&gt;‘Avoid unnecessary resize calls when the size hasn’t changed.’&lt;/strong&gt; by AGulev
This fixes a problem where the HTML5 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;resize_window_callback&lt;/code&gt; function is executed every time a resize event occurs, even when the window size has not actually changed. The callback is now only executed when the window size changes compared to the previous stored values, not on every resize event.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11874&quot;&gt;#11870&lt;/a&gt;) &lt;strong&gt;‘Fix the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gui.pick_node()&lt;/code&gt; function when Safe Area is used’&lt;/strong&gt; by AGulev
This fixes an issue with touch events being offset when using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gui.pick_node()&lt;/code&gt; in combination with the new built-in safe area mode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11885&quot;&gt;#11885&lt;/a&gt;) &lt;strong&gt;‘Added dmsdk C api for Window creation’&lt;/strong&gt; by JCash&lt;/p&gt;

&lt;h2 id=&quot;editor&quot;&gt;Editor&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11645&quot;&gt;#11597,#10761&lt;/a&gt;) &lt;strong&gt;‘Asset Browser: Group by resources for “New…” menu’&lt;/strong&gt; by JosephFerano
The “New…” right-click context menu in the Asset Browser was getting a bit tall, so now it is formatted as a grid with sub-categories that groups items together for more compact organization. Supports arbitrary group names and uncategorized resources.&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;950&quot; height=&quot;719&quot; alt=&quot;Asset Browser New menu grouped into resource categories&quot; src=&quot;https://github.com/user-attachments/assets/2c94b339-92ad-4a75-8480-ba9cefb42309&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11734&quot;&gt;#11717&lt;/a&gt;) &lt;strong&gt;‘Added support for WebP and AVIF image formats for the HTML5 splash screen’&lt;/strong&gt; by britzl
It is now possible to select WebP and AVIF image files for the HTML5 Splash Image game.project field.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11769&quot;&gt;#10220&lt;/a&gt;) &lt;strong&gt;‘Add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;editor.ui.image()&lt;/code&gt; editor script function’&lt;/strong&gt; by vlaaad
Now, editor scripts can show images, supporting both project files and external URLs, e.g.:&lt;/p&gt;
&lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;editor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;show_dialog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;editor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dialog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;title&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Images&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;content&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;editor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;horizontal&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;padding&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;editor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;PADDING&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LARGE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;children&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;editor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;image&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;image&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/builtins/assets/images/logo/logo_256.png&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;width&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;height&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}),&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;editor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;image&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;image&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;https://defold.com/images/assets/monarch-hero.jpg&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img width=&quot;652&quot; height=&quot;443&quot; alt=&quot;Editor script dialog displaying images with editor.ui.image&quot; src=&quot;https://github.com/user-attachments/assets/4703f47b-630f-407b-8565-899fa418a13d&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11890&quot;&gt;#11733&lt;/a&gt;) &lt;strong&gt;‘Make &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/command/build&lt;/code&gt; respond on build completion’&lt;/strong&gt; by vlaaad
We made the HTTP command that triggers the editor build block until the build completes, and made it respond with the build status + compilation issues. This should make it much more useful for AI agents and third-party IDE integrations.&lt;/p&gt;

&lt;h2 id=&quot;example-use&quot;&gt;Example use&lt;/h2&gt;
&lt;h3 id=&quot;successful-build&quot;&gt;Successful build&lt;/h3&gt;
&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;curl &lt;span class=&quot;nt&quot;&gt;-X&lt;/span&gt; POST &lt;span class=&quot;s2&quot;&gt;&quot;http://127.0.0.1:&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cat&lt;/span&gt; .internal/editor.port&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/command/build&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--silent&lt;/span&gt; | jq
&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;s2&quot;&gt;&quot;success&quot;&lt;/span&gt;: &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt;,
  &lt;span class=&quot;s2&quot;&gt;&quot;issues&quot;&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;[]&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;failed-build&quot;&gt;Failed build&lt;/h3&gt;
&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;curl &lt;span class=&quot;nt&quot;&gt;-X&lt;/span&gt; POST &lt;span class=&quot;s2&quot;&gt;&quot;http://127.0.0.1:&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cat&lt;/span&gt; .internal/editor.port&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/command/build&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--silent&lt;/span&gt; | jq
&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;s2&quot;&gt;&quot;success&quot;&lt;/span&gt;: &lt;span class=&quot;nb&quot;&gt;false&lt;/span&gt;,
  &lt;span class=&quot;s2&quot;&gt;&quot;issues&quot;&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;s2&quot;&gt;&quot;severity&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;error&quot;&lt;/span&gt;,
      &lt;span class=&quot;s2&quot;&gt;&quot;message&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;go.property declaration should be a top-level statement&quot;&lt;/span&gt;,
      &lt;span class=&quot;s2&quot;&gt;&quot;resource&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;/main/logo.script&quot;&lt;/span&gt;,
      &lt;span class=&quot;s2&quot;&gt;&quot;range&quot;&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&quot;start&quot;&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;line&quot;&lt;/span&gt;: 3,
          &lt;span class=&quot;s2&quot;&gt;&quot;character&quot;&lt;/span&gt;: 4
        &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;,
        &lt;span class=&quot;s2&quot;&gt;&quot;end&quot;&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;s2&quot;&gt;&quot;line&quot;&lt;/span&gt;: 3,
          &lt;span class=&quot;s2&quot;&gt;&quot;character&quot;&lt;/span&gt;: 35
        &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;minimal-agentsmd-to-get-started&quot;&gt;Minimal AGENTS.md to get started&lt;/h3&gt;
&lt;div class=&quot;language-md highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gh&quot;&gt;# Docs&lt;/span&gt;
https://defold.com/llms.txt

&lt;span class=&quot;gh&quot;&gt;# Build&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; Read editor port from &lt;span class=&quot;sb&quot;&gt;`.internal/editor.port`&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; Build game: &lt;span class=&quot;sb&quot;&gt;`curl -X POST http://127.0.0.1:&amp;lt;PORT&amp;gt;/command/build`&lt;/span&gt;

&lt;span class=&quot;gh&quot;&gt;# Console&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; After launch, check logs at &lt;span class=&quot;sb&quot;&gt;`http://127.0.0.1:&amp;lt;PORT&amp;gt;/console`&lt;/span&gt;.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11811&quot;&gt;#11000&lt;/a&gt;) &lt;strong&gt;‘Backspace key (⌫) now performs a Delete action on macOS’&lt;/strong&gt; by vlaaad
Pressing Backspace (⌫) now performs a Delete action on macOS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11878&quot;&gt;#5453&lt;/a&gt;) &lt;strong&gt;‘Localize error messages in the editor’&lt;/strong&gt; by vlaaad
Error messages are now localized in the editor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11778&quot;&gt;#11773&lt;/a&gt;) &lt;strong&gt;‘Fixed an issue where errors in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;go.property()&lt;/code&gt; might prevent the project from compiling’&lt;/strong&gt; by AGulev
Throw a proper error when math is used in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;go.property()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11752&quot;&gt;#11711&lt;/a&gt;) &lt;strong&gt;‘Improved scrolling behavior in Assets Browser and Outline Pane’&lt;/strong&gt; by JosephFerano&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;When dragging and dropping, scroll just enough to make the items visible, rather than always at the top, which should help track movement of files/nodes&lt;/li&gt;
  &lt;li&gt;Center a resource when opening with right-click “Show in Asset Browser”, rather than up top&lt;/li&gt;
  &lt;li&gt;Fix bug when auto-scrolling downwards with mouse drag-n-drop where it would scroll by a whole page, rather than gradually&lt;/li&gt;
  &lt;li&gt;Auto-scrolling now has variable speed depending on how close to the edge you move the mouse while dragging. It’s also smoother!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11787&quot;&gt;#11787&lt;/a&gt;) &lt;strong&gt;‘Significantly improve load time and memory consumption of large projects’&lt;/strong&gt; by vlaaad
On some large projects:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;The time to open the project was reduced by 50% (4m00s-&amp;gt;2m01s on an example project)&lt;/li&gt;
  &lt;li&gt;Memory consumption after load was reduced by 71% (10.59GB-&amp;gt;3.04Gb on the same project)&lt;/li&gt;
  &lt;li&gt;The time to perform a full build improved by 40% (13m50s-&amp;gt;8m11s).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was achieved by delaying the computation of data that is used for applying changes in the editor until it is actually needed, rather than computing it eagerly when loading the project.&lt;/p&gt;

&lt;p&gt;The downside is that in some cases, the first time a change to a particular element is made, it will take longer than before (worst case: 6s-&amp;gt;35s). It is noticeable only in some rare cases in large projects when changing resources that are widely used throughout the project (e.g., when changing a GUI button layout when the button is referenced in hundreds/thousands of places). Subsequent changes to the same element will be faster than before.&lt;/p&gt;

&lt;p&gt;Overall, the tradeoff is worth it, because previously, every user had to always pay this cost when opening the project, while now, the cost is only paid when actually making certain changes to edge case elements, and even then, the wait is significantly reduced (30s instead of 2m).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11799&quot;&gt;#11799&lt;/a&gt;) &lt;strong&gt;‘Improve project load time on big projects by 9%’&lt;/strong&gt; by vlaaad
Now the editor opens big projects a bit faster. As measured on an example big project, the load time reduced from 2m01s to 1m50s.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11801&quot;&gt;#11293&lt;/a&gt;) &lt;strong&gt;‘Custom game.project fields now show the correct UI after editor restart’&lt;/strong&gt; by vlaaad
Previously, custom values defined in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.project&lt;/code&gt; via the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.properties&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ext.properties&lt;/code&gt; would always be shown as strings upon restarting the editor. Now they are displayed with their correct types (e.g., checkboxes for booleans, list views for lists).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11814&quot;&gt;#9976,#11618,#11713,#11381&lt;/a&gt;) &lt;strong&gt;‘Fix issues around editor symlink handling’&lt;/strong&gt; by matgis&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Fixed various issues around the editors handling of symbolic links.&lt;/li&gt;
  &lt;li&gt;Fixed an exception when trying to paste files into the Asset Browser that were deleted from disk since they were placed on the clipboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11837&quot;&gt;#11759,#11268,#6300&lt;/a&gt;) &lt;strong&gt;‘Make code editor resilient against defective resource nodes’&lt;/strong&gt; by matgis
Fixed an exception in the editor when a resource open in a code editor view became defective while the view had input focus.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11851&quot;&gt;#11851&lt;/a&gt;) &lt;strong&gt;‘Make DF fonts sharp in the editor’&lt;/strong&gt; by AGulev
Improve DF font rendering in the Editor&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;4268&quot; height=&quot;1186&quot; alt=&quot;Editor text rendering with sharper distance-field fonts&quot; src=&quot;https://github.com/user-attachments/assets/8e7a83f6-63ef-4613-8ee6-ed5fdc61f28e&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11875&quot;&gt;#11875&lt;/a&gt;) &lt;strong&gt;‘Include engine log files among defignored patterns in the editor’&lt;/strong&gt; by matgis
The editor will now ignore log files written by the engine runtime when scanning the project for changes. Previously, changes to these log files would cause the editor to reload external changes into the graph and clear the undo queue unless the log file patterns were explicitly listed in a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.defignore&lt;/code&gt; file or configured to be written outside the project directory.&lt;/p&gt;

&lt;p&gt;Partially addresses #11408.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11803&quot;&gt;#11786&lt;/a&gt;) &lt;strong&gt;‘Limit max dialog height to the height of the screen’&lt;/strong&gt; by vlaaad
Dialog height is now limited to the height of the screen to prevent dialog content from overflowing outside of the visible area.&lt;/p&gt;
</description>
			<pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate>
			<link>https://www.defold.com/2026/03/02/Defold-1-12-2/</link>
			<guid isPermaLink="true">https://www.defold.com/2026/03/02/Defold-1-12-2/</guid>
		</item>
		
		<item>
			<title>Creator Spotlight - Erick - Kuyi Mobile</title>
			<description>&lt;p&gt;In this Defold Creator Spotlight we invited Erick to tell us a little bit about himself and his latest Defold projects! Erick has a vast experience in game development and now runs Kuyi Mobile, and releases a lot of games, recently: &lt;a href=&quot;https://poki.com/en/g/bos-bedroom&quot;&gt;Bo’s Bedroom on Poki&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you’re interested in a more in-depth description of Bo’s Bedroom’s development process, Erick wrote about it on his &lt;a href=&quot;https://kuyimobile.substack.com/p/my-game-production-process-and-how&quot;&gt;substack too&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/developer-spotlight-erick-kuyi-mobile/bos_bedroom.png&quot; alt=&quot;Bo’s Bedroom&quot; /&gt;&lt;/p&gt;

&lt;h5 id=&quot;hello-introduce-yourself-to-our-community-what-do-you-do&quot;&gt;Hello! Introduce yourself to our community! What do you do?&lt;/h5&gt;

&lt;p&gt;I’m Erick, a full-time solo indie game developer from Manila, Philippines.&lt;/p&gt;

&lt;h5 id=&quot;what-are-your-favorite-games-and-hobbies&quot;&gt;What are your favorite games and hobbies?&lt;/h5&gt;

&lt;p&gt;I recently finished Octopath Traveler 0 (120+ hours!), which made the franchise one of my favorites to date — especially since I’ve also completed Octopath Traveler I and Octopath Traveler II.&lt;/p&gt;

&lt;p&gt;When I’m not making games, I love traveling with my family, reading books, and illustrating comics.&lt;/p&gt;

&lt;h5 id=&quot;can-you-tell-us-about-your-background-and-how-you-founded-kuyi-mobile-what-experiences-shaped-your-approach-to-game-development&quot;&gt;Can you tell us about your background and how you founded Kuyi Mobile? What experiences shaped your approach to game development?&lt;/h5&gt;

&lt;p&gt;I’m an engineer by profession and previously worked in the IT industry before transitioning into game development. Kuyi Mobile is actually the third company I founded, and it has been around since the early days of the iPhone.&lt;/p&gt;

&lt;p&gt;As a solo developer, I’ve focused primarily on mobile game development because of the quicker turnaround times and smaller project scopes. Over the years, I’ve developed games for various platforms, including ones that younger developers today may not even recognize anymore, such as J2ME and Symbian. Before moving into web games, I was mainly focused on mobile — both iOS and Android — and have released several dozen games over the past decade.&lt;/p&gt;

&lt;h5 id=&quot;i-was-playing-some-of-those-games-and-i-guess-a-lot-of-devs-might-also-recognize-some-of-them---can-you-share-some-of-the-titles-you-were-working-on&quot;&gt;I was playing some of those games (and I guess a lot of devs might also recognize some of them) - can you share some of the titles you were working on?&lt;/h5&gt;

&lt;p&gt;Some of the games that I made back then were Cubeex, a match-three game and Word Challenge, which was a collection of popular word games like Hangman, Word Factory, Word Finder, etc.&lt;/p&gt;

&lt;h5 id=&quot;tell-us-about-your-games-what-goals-or-philosophies-drive-the-kinds-of-games-you-create&quot;&gt;Tell us about your games! What goals or philosophies drive the kinds of games you create?&lt;/h5&gt;

&lt;p&gt;I’ve created over four dozen games across various platforms, from PC and consoles to tablets and smartphones. In 2025, I released four new web games on Poki.&lt;/p&gt;

&lt;p&gt;Web game development excites me because it feels like the early days of game development, where technical limitations push you to be more creative. One of the most impactful constraints is file size—keeping a game within 5–7MB forces me to be extremely intentional with assets and design decisions.&lt;/p&gt;

&lt;p&gt;My philosophy is simple: make games that are fun, accessible, and polished within a manageable scope.&lt;/p&gt;

&lt;h5 id=&quot;your-poki-catalogue-includes-titles-like-coin-machine-sushi-merge-and-tower-merge-all-featuring-some-form-of-merge-gameplay-what-draws-you-to-the-merge-mechanic-as-a-core-design-what-is-it-about-merge-that-keeps-players-engaged&quot;&gt;Your Poki catalogue includes titles like Coin Machine, Sushi Merge, and Tower Merge, all featuring some form of merge gameplay. What draws you to the merge mechanic as a core design? What is it about merge that keeps players engaged?&lt;/h5&gt;

&lt;p&gt;You guessed it — I’m a huge fan of merge games! Even before developing web games, I was already playing a lot of merge titles on mobile. There’s something deeply satisfying about combining two items and magically producing a new one.&lt;/p&gt;

&lt;p&gt;What most people don’t know is that before Sushi Merge was accepted on Poki, I had already submitted nine different games (all rejected!) — and none of them were merge games! I experimented with different genres and mechanics to find what resonated with Poki’s audience. Over time, I gathered valuable game design insights and player data, which helped me better understand what works for Poki’s platform.&lt;/p&gt;

&lt;h5 id=&quot;being-rejected-9-times-on-poki-while-having-such-a-strong-experience-is-wild-can-you-say-a-little-bit-more-about-it-what-did-you-learn-from-those-rejections&quot;&gt;Being rejected 9 times on Poki, while having such a strong experience is wild! Can you say a little bit more about it? What did you learn from those rejections?&lt;/h5&gt;

&lt;p&gt;I learned that Tetris-like, Find Me, and Idle games don’t really resonate well with Poki’s audience! I guess it’s also important to mention that Poki requires an average session time of at least 3 minutes for the game to pass the initial test.&lt;/p&gt;

&lt;h5 id=&quot;you-do-also-make-games-with-defold-on-other-platforms&quot;&gt;You do also make games with Defold on other platforms!&lt;/h5&gt;

&lt;p&gt;Oh sure! I have released 2 (non-web) games using Defold. One was Clinko, which was a &lt;a href=&quot;https://itch.io/jam/made-with-defold-jam-2024/rate/2858601&quot;&gt;game jam winner way back in 2024&lt;/a&gt; and the other is Jeepney Stories, which is a visual novel I released on Steam back in December 2024.&lt;/p&gt;

&lt;p&gt;Clinko: https://kuyimobile.itch.io/clinko&lt;/p&gt;

&lt;p&gt;Jeepney Stories: https://kuyimobile.itch.io/jeepney&lt;/p&gt;

&lt;p&gt;Both of these have playable demos on itch.io.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/developer-spotlight-erick-kuyi-mobile/jeepney_stories.png&quot; alt=&quot;Jeepney Stories&quot; /&gt;&lt;/p&gt;

&lt;h5 id=&quot;and-recently-you-also-made-bos-bedroom-which-is-a-management-game-what-was-new-in-your-game-development-process-when-making-this-game&quot;&gt;And recently you also made Bo’s Bedroom, which is a management game? What was new in your game development process when making this game?&lt;/h5&gt;

&lt;p&gt;Bo’s Bedroom originally started as a casual hack-and-slash RPG set in a fantasy world. I’ve always wanted to create a hack-and-slash experience that would be more suitable for younger audiences.&lt;/p&gt;

&lt;p&gt;However, that concept didn’t resonate well with Poki’s audience, so I pivoted and redesigned it into more of a management-style game. The final product turned out great and was well received when we launched globally in January 2026. Since launch, Bo’s Bedroom has reached over 2 million gameplays.&lt;/p&gt;

&lt;h5 id=&quot;you-also-released-a-ton-of-games-on-mobile-what-advantages-do-you-see-in-releasing-games-on-web-platforms-compared-to-native-mobile-app-stores&quot;&gt;You also released a ton of games on mobile. What advantages do you see in releasing games on web platforms, compared to native mobile app stores?&lt;/h5&gt;

&lt;p&gt;On mobile, if you don’t have a publisher or direct support from Apple or Google, your game can easily get lost in a vast sea of apps. Discovery is incredibly difficult unless you have a significant marketing budget.&lt;/p&gt;

&lt;p&gt;With web games, I found a fantastic partner in Poki. They allow me to focus on developing the games, while they bring in the players. It feels more like a true publisher–developer relationship.&lt;/p&gt;

&lt;h5 id=&quot;how-has-working-with-poki-shaped-your-development-process&quot;&gt;How has working with Poki shaped your development process?&lt;/h5&gt;

&lt;p&gt;Working with the Poki team has been an amazing experience. I still maintain full control over the game design and creative direction of my game projects, while Poki provides valuable input—especially during the soft launch phase.&lt;/p&gt;

&lt;p&gt;Our development process is highly data-driven. Every major decision is informed by playtesting, player feedback, and analytics. That structured feedback loop has significantly improved the quality of my games.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/developer-spotlight-erick-kuyi-mobile/goyle_tank.png&quot; alt=&quot;Goyle Tank&quot; /&gt;&lt;/p&gt;

&lt;h5 id=&quot;what-made-you-choose-defold-for-your-games&quot;&gt;What made you choose Defold for your games?&lt;/h5&gt;

&lt;p&gt;Having been in the game industry for more than two decades, I’ve tried many different tools. Defold stood out to me because of its simplicity and efficiency.&lt;/p&gt;

&lt;p&gt;It’s fast, lightweight, and gives me complete control over my projects — no hidden systems or unnecessary bloat. It also allows me to create extremely small builds, which is essential for web games. Most importantly, the Defold community and team are incredibly helpful and responsive.&lt;/p&gt;

&lt;h5 id=&quot;what-technical-challenges-have-you-encountered-when-targeting-the-web&quot;&gt;What technical challenges have you encountered when targeting the web?&lt;/h5&gt;

&lt;p&gt;When releasing my first web game, keeping the build size small was critical — especially for players in regions where internet access can be slow or expensive.&lt;/p&gt;

&lt;p&gt;Another major challenge was supporting multiple screen resolutions. My games need to run smoothly on desktops, mobile phones, tablets, and even foldable devices.&lt;/p&gt;

&lt;p&gt;Defold made it possible to handle both file size optimization and responsive design without major complications, and I couldn’t be happier!&lt;/p&gt;

&lt;h5 id=&quot;if-you-could-add-or-improve-one-feature-in-defold-that-would-directly-benefit-your-workflow-especially-for-games-you-make-what-would-it-be&quot;&gt;If you could add or improve one feature in Defold that would directly benefit your workflow, especially for games you make, what would it be?&lt;/h5&gt;

&lt;p&gt;Is “none” an acceptable answer? 😅&lt;/p&gt;

&lt;p&gt;I’m genuinely happy with how Defold allows me to focus on making fun games while it handles the technical heavy lifting. I guess I’m a simple developer with simple needs and Defold has everything I need and more!&lt;/p&gt;

&lt;h5 id=&quot;what-would-be-your-recommendation-for-developers-new-to-defold&quot;&gt;What would be your recommendation for developers new to Defold?&lt;/h5&gt;

&lt;p&gt;I always advise new Defold users to just jump in and make their first game. The engine is very straightforward and easy to understand, and there’s no better way to learn than by building something.&lt;/p&gt;

&lt;p&gt;I can almost guarantee you’ll enjoy using it — whether you’re a beginner or an experienced developer looking for a streamlined tool.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/developer-spotlight-erick-kuyi-mobile/clinko.png&quot; alt=&quot;Clinko&quot; /&gt;&lt;/p&gt;

&lt;h5 id=&quot;can-you-share-with-us-whats-next-at-kuyi-mobile-are-there-new-directions-like-new-genres-deeper-systems-or-platform-expansions-youd-like-to-take-on&quot;&gt;Can you share with us what’s next at Kuyi Mobile? Are there new directions, like new genres, deeper systems, or platform expansions you’d like to take on?&lt;/h5&gt;

&lt;p&gt;As I’m answering this, I’ve already started working on a new game project — and it’s progressing really well. At my current pace, I expect to release it within the next month or so. I can see myself making more web games in the next 2 to 3 years!&lt;/p&gt;

&lt;h5 id=&quot;finally-how-can-the-community-follow-you&quot;&gt;Finally, how can the community follow you?&lt;/h5&gt;

&lt;p&gt;You can always find me on &lt;a href=&quot;&quot;&gt;X (Twitter) as @kuyimobile&lt;/a&gt; or on &lt;a href=&quot;https://bsky.app/profile/kuyimobile.bsky.social&quot;&gt;Bluesky at @kuyimobile.bsky.social&lt;/a&gt;. I also lurk on Defold’s Discord server, so feel free to tag if you have any questions!&lt;/p&gt;

&lt;p&gt;Please visit &lt;a href=&quot;https://www.kuyimobile.com/about.php&quot;&gt;my website&lt;/a&gt; as well if you’d like to try out my games! 🙏&lt;/p&gt;

&lt;h5 id=&quot;thank-you-very-much-for-the-interview-and-we-wish-you-more-and-more-successes&quot;&gt;Thank you very much for the interview, and we wish you more and more successes!&lt;/h5&gt;

&lt;p&gt;&lt;a href=&quot;https://linktr.ee/kuyimobile&quot;&gt;Kuyi Mobile Linktree&lt;/a&gt;&lt;/p&gt;
</description>
			<pubDate>Tue, 17 Feb 2026 00:00:00 +0000</pubDate>
			<link>https://www.defold.com/2026/02/17/Creator-Spotlight-Kuyi-Mobile/</link>
			<guid isPermaLink="true">https://www.defold.com/2026/02/17/Creator-Spotlight-Kuyi-Mobile/</guid>
		</item>
		
		<item>
			<title>A look ahead for 2026</title>
			<description>&lt;p&gt;One of the most common questions we get is: “What’s next for Defold?”&lt;/p&gt;

&lt;p&gt;We understand why: having a sense of direction helps teams plan ahead.&lt;/p&gt;

&lt;p&gt;At the same time, building a game engine and editor means operating in a constantly shifting environment: platforms change their requirements, sometimes new opportunities appear, and sometimes some work turns out to be more complex than expected, while other work becomes more valuable and needed than we anticipated. That’s why we’ve repeated this many times over the years: a roadmap we present is just a plan, not a contract.&lt;/p&gt;

&lt;p&gt;Nevertheless, we’d like to share a near-term snapshot of the areas we’re actively aiming to push forward over the coming quarters:&lt;/p&gt;

&lt;h2 id=&quot;productivity-and-customised-editor-workflows&quot;&gt;Productivity and customised Editor workflows&lt;/h2&gt;

&lt;p&gt;A major theme for us is making Defold faster and more pleasant to use in real production. Especially when your project gets large, your content pipeline grows, or your team needs repeatable workflows.&lt;/p&gt;

&lt;p&gt;Over the past period, we’ve steadily expanded editor scripting, first with interactive UI creation, and more recently with deeper scene-editing capabilities. The next step is to build on that foundation and &lt;strong&gt;continue improving the day-to-day editor experience&lt;/strong&gt;, so we’ll be continuing to expand what you can automate and build inside the editor. We are very happy that the community is using and sharing a lot of useful Editor Scripts with some clever and inspiring ideas.&lt;/p&gt;

&lt;p&gt;Therefore, we would like to allow users to add &lt;a href=&quot;https://github.com/defold/defold/issues/10220&quot;&gt;custom images inside Editor UIs&lt;/a&gt;, so tools can become more visual and domain-specific - think custom icons, previews, and richer widgets.&lt;/p&gt;

&lt;p&gt;We also plan to add &lt;a href=&quot;https://github.com/defold/defold/issues/11671&quot;&gt;non-modal panels&lt;/a&gt; created by editor scripts, so tool UIs can live alongside the editor (similar to other editor panes), instead of being limited to blocking dialogs. This might unlock better tools, like inspectors, guided workflows, interactive tutorials, and other kinds of “mini-editors” tailored to a project.&lt;/p&gt;

&lt;p&gt;We’re also genuinely happy to see how the community is already using editor scripts in clever ways. A standout example was the &lt;a href=&quot;https://forum.defold.com/t/defold-in-editor-asset-store/81969&quot;&gt;Asset Store&lt;/a&gt; built by Insality using Editor scripts and UI. and we would like at some point to incorporate such a powerful asset browser into the Editor in some way. Longer term, ideas like this are exactly the kind of experimentation that can inspire improvements to the core editor experience.&lt;/p&gt;

&lt;p&gt;We would also like to start changing how the Editor handles history and allow for &lt;strong&gt;local undo&lt;/strong&gt; as a dedicated next step.&lt;/p&gt;

&lt;h2 id=&quot;editor-performance-and-size&quot;&gt;Editor performance and size&lt;/h2&gt;

&lt;p&gt;A major theme for us is making Defold Editor faster to use in real game development projects, especially when your project gets large, your content pipeline grows, or your team needs repeatable workflows.&lt;/p&gt;

&lt;p&gt;We’ve already made several fixes and changes in different areas, resulting in multiple improvements for loading time, responsiveness, and performance. Our partners are developing impressive games that are huge in terms of scope, help us focus on the performance for real projects, and we’d also like to improve the Editor for 3D projects. We already improved performance for handling huge 3D scenes in the Editor or scenes with many 3D models, and we’ll continue to make further improvements.&lt;/p&gt;

&lt;p&gt;Defold has always cared about performance, stability, and staying lean. One concrete focus area is engine size optimizations, including reducing the shipped footprint by nulling out unused components where possible. This also aligns with our continued push toward better modularization.&lt;/p&gt;

&lt;p&gt;We’re also planning to improve controller behavior across devices by integrating the &lt;strong&gt;SDL gamepad database&lt;/strong&gt; to help normalize and recognize controllers more consistently across platforms.&lt;/p&gt;

&lt;h2 id=&quot;further-improvements-for-3d&quot;&gt;Further improvements for 3D&lt;/h2&gt;

&lt;p&gt;For 3D projects specifically, we want to keep reducing friction in scene authoring. On top of the other UI and UX improvements we made to the Editor for 3D projects, like Grid settings, camera component, and its frustum preview improvements, one of the closest examples is a new &lt;a href=&quot;https://github.com/defold/defold/issues/11185#issue-3380495023&quot;&gt;Free Fly camera&lt;/a&gt; in the Editor that we work on.&lt;/p&gt;

&lt;p&gt;On the boundary between 3D and physics, we want to make collision authoring more flexible by allowing &lt;strong&gt;any model to be used as a collision shape&lt;/strong&gt;, removing common pipeline friction when bringing complex geometry into Defold.&lt;/p&gt;

&lt;p&gt;We’re also exploring a 3D multi-instance component aimed to improve performance with repeated scene elements such as vegetation, rocks, props, and other repeated scene elements. We think it can unlock meaningful performance and workflow wins.&lt;/p&gt;

&lt;h2 id=&quot;3d-animations&quot;&gt;3D Animations&lt;/h2&gt;

&lt;p&gt;We’ve seen increasing demand for richer animation workflows and more capable 3D features. Our approach remains focused on improving what matters most in production.&lt;/p&gt;

&lt;p&gt;On animation, we’re targeting &lt;a href=&quot;https://github.com/defold/defold/issues/8024&quot;&gt;morph targets and animation mixing&lt;/a&gt;, which are both foundational pieces for more expressive characters and smoother transitions between states.&lt;/p&gt;

&lt;h2 id=&quot;new-light-component-and-rendering-works&quot;&gt;New Light component and rendering works&lt;/h2&gt;

&lt;p&gt;Lighting is one of the most requested building blocks for developers working in 3D, and it’s also an area where the community has filled gaps with impressive extensions and solutions over time.&lt;/p&gt;

&lt;p&gt;We’re planning to add a &lt;strong&gt;new Light component&lt;/strong&gt; and supporting shader pipeline improvements. The intent is to make modern rendering workflows easier to set up and more consistent—especially in combination with existing rendering solutions and extensions.&lt;/p&gt;

&lt;p&gt;We plan to allow the &lt;strong&gt;PBR extension to use more built-in features&lt;/strong&gt; and make it feel easier to set up for the developers.&lt;/p&gt;

&lt;p&gt;We also have in plans a continued &lt;strong&gt;Metal-related work&lt;/strong&gt; to keep Apple platform support strong and future-proof. Defold has invested in modern graphics backends for years, and we’ll keep that momentum going.&lt;/p&gt;

&lt;h2 id=&quot;extensions-rive-20-and-photon-fusion&quot;&gt;Extensions: Rive 2.0 and Photon Fusion&lt;/h2&gt;

&lt;p&gt;Extensions remain a core part of Defold’s strategy of keeping the engine focused, while enabling powerful opt-in integrations where they make sense.&lt;/p&gt;

&lt;p&gt;Rive is a great example of that approach. The Foundation partnered with Rive early to bring real-time animation workflows to Defold, and it was one of the first game engines to support Rive. We’ve continued to update and improve the integration over time. In the meantime, Rive got so much traction that we were having trouble keeping our extension up to date with their new features and improvements. We did however do some work to change the approach for this extension that will allow us to keep up with the pace of Rive updates better, because it delegates more to the Rive renderer itself. We want to move the integration forward with &lt;strong&gt;Rive 2.0&lt;/strong&gt; support.&lt;/p&gt;

&lt;p&gt;We also want to reduce the friction for developers shipping multiplayer games. Last year we announced an official Photon Realtime integration, and we’ll continue investing in making networking more accessible in Defold projects. For the upcoming period, our intent is to &lt;strong&gt;work toward a seamless netcode solution&lt;/strong&gt;, and we’ll communicate specifics when we’re confident we can do so responsibly.&lt;/p&gt;

&lt;h2 id=&quot;new-platforms-microsoft-xbox&quot;&gt;New platforms: Microsoft Xbox&lt;/h2&gt;

&lt;p&gt;In earlier roadmap communication, we described Xbox as something we wanted to add, and we continue to treat it as an important platform goal. We’ve been working on Xbox support for quite some time and added core features already, and we’re closer than ever to finalizing the work on supporting the platform, but bear in mind it is work being sponsored by the Defold Foundation only, and therefore, its pace is simply slow.&lt;/p&gt;

&lt;h2 id=&quot;tutorials-and-examples&quot;&gt;Tutorials and examples&lt;/h2&gt;

&lt;p&gt;We know our tutorials and examples haven’t received the attention they deserve for some time, so we’re now investing steadily in improving onboarding and learning resources. This work has already started and includes refreshing and verifying our existing manuals, expanding the defold.com/examples collection with more practical, bite-sized projects, and adding new guides that help developers ramp up faster. A recent step in this direction is the &lt;a href=&quot;https://defold.com/manuals/unity/&quot;&gt;Defold for Unity users manual&lt;/a&gt;, and we plan to create a similar manual for Godot users, and potentially later for GameMaker users, so that developers coming from other engines can more easily map familiar concepts to Defold and start building confidently.&lt;/p&gt;

&lt;p&gt;We’ll also be organising new Community Challenges—like the current &lt;a href=&quot;https://forum.defold.com/t/community-challenge-5-break-it/82303&quot;&gt;Break it!&lt;/a&gt;, which revolves around physics—as well as a Defold game jam, which we’ll start sharing more information about soon. We’re incredibly proud of our community: always eager to help others, share knowledge, and showcase interesting projects. Keeping things lighthearted, welcoming, and engaging is important to us, and we’re happy to have you with us on this journey!&lt;/p&gt;

&lt;h2 id=&quot;future-is-bright&quot;&gt;Future is bright!&lt;/h2&gt;

&lt;p&gt;We still have more great news to share, but you’ll have to wait just a little longer. As always, please keep in mind that everything outlined above reflects our current focus and intentions, not a set of promises. The priorities may shift, but with that said, we’re genuinely excited about what’s ahead, and we believe the future of Defold looks bright.&lt;/p&gt;
</description>
			<pubDate>Tue, 10 Feb 2026 00:00:00 +0000</pubDate>
			<link>https://www.defold.com/2026/02/10/Defold-A-look-ahead-for-2026/</link>
			<guid isPermaLink="true">https://www.defold.com/2026/02/10/Defold-A-look-ahead-for-2026/</guid>
		</item>
		
		<item>
			<title>Defold release 1.12.1</title>
			<description>&lt;h1 id=&quot;defold-1121&quot;&gt;Defold 1.12.1&lt;/h1&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11563&quot;&gt;#11553&lt;/a&gt;) Update XCode to 26.2, MacOS SDK to 26.2, iOS SDK to 26.2 (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11612&quot;&gt;#11554&lt;/a&gt;) Update Android SDK to version 36.1.0 and targetSdkVersion to 36 (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11540&quot;&gt;#11447&lt;/a&gt;) Add support for http proxy connections (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11664&quot;&gt;#9505&lt;/a&gt;) Replaced the deprecated &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ALooper_pollAll&lt;/code&gt; call with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ALooper_pollOnce&lt;/code&gt; (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11740&quot;&gt;#11739&lt;/a&gt;) Report old and new shader combinations (by Jhonnyg)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11436&quot;&gt;#11429&lt;/a&gt;) Added editor option to select when to build with the profiler (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11584&quot;&gt;#11577&lt;/a&gt;) Add support for mounting live update archives from Android assets (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11626&quot;&gt;#11558&lt;/a&gt;) Fix regex for linux shared libraries (by ekharkunov)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11629&quot;&gt;#11164&lt;/a&gt;) Removed unnecessary lock of main thread when loading many large textures (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11571&quot;&gt;#11528&lt;/a&gt;) Added ‘Help’ to the list of permitted locations for editor scripts (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11441&quot;&gt;#7047&lt;/a&gt;) Breakpoints tab view (by JosephFerano)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11600&quot;&gt;#11600&lt;/a&gt;) Skip unnecessary traversal in update-overrides (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11595&quot;&gt;#11276&lt;/a&gt;) Added an ability to specify &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;library.defold_min_version&lt;/code&gt; for extensions to prevent using incompatible extensions  (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11630&quot;&gt;#11630&lt;/a&gt;) Decrease editor memory pressure from transaction steps (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11642&quot;&gt;#11607&lt;/a&gt;) Add a window title to splash, welcome, and project loading (by JosephFerano)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11696&quot;&gt;#11406&lt;/a&gt;) Editor: Add drag and drop from Assets to Properties Resource Picker (by JosephFerano)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11748&quot;&gt;#4156&lt;/a&gt;) Move project dependencies into their own separate category in the Assets panel (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11704&quot;&gt;#8960&lt;/a&gt;) Added “Close” button to the animation preview in atlas (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11708&quot;&gt;#11676&lt;/a&gt;) Add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;zlib&lt;/code&gt; module to editor scripts (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11715&quot;&gt;#11396&lt;/a&gt;) Do not rename items on double-click in the outline (keep only F2 for renaming) (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11526&quot;&gt;#11526&lt;/a&gt;) Update LuaJIT (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11541&quot;&gt;#11541&lt;/a&gt;) Performance optimisations for atlas creation (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11547&quot;&gt;#11547&lt;/a&gt;) Bob performance optimizations for sequential builds (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11555&quot;&gt;#11517&lt;/a&gt;) Fixed missing delete key binding on HTML5 (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11609&quot;&gt;#11609&lt;/a&gt;) Improved atlas texture creation speed in the editor (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11614&quot;&gt;#11613&lt;/a&gt;) Unblock main thread while loading a collection and a texture at the same time (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11624&quot;&gt;#11624&lt;/a&gt;) Various leak fixes: SSL socket, physics, script table, game system, engine (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11678&quot;&gt;#11678&lt;/a&gt;) Make sure the mesh component buffer’s version is taken into account when updating the vertex buffer (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11679&quot;&gt;#11679&lt;/a&gt;) Fixes in the Vulkan graphics backend (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11706&quot;&gt;#10571&lt;/a&gt;) Dont use valueptr for models in GetProperty for material constants (by Jhonnyg)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11709&quot;&gt;#11627&lt;/a&gt;) Added Safe Area related functionality (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11718&quot;&gt;#11689&lt;/a&gt;) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bob.jar&lt;/code&gt; now scans for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ext.properties&lt;/code&gt; in all folders, not just extension folders (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11741&quot;&gt;#11736&lt;/a&gt;) Fix text layout regression (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11746&quot;&gt;#11746&lt;/a&gt;) Fix Android resource detection (by ekharkunov)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11175&quot;&gt;#11104&lt;/a&gt;) Copy dynamic libs into result bundle (by ekharkunov)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11349&quot;&gt;#11349&lt;/a&gt;) Add logic to recover lost sound device on Windows (by deurell)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11663&quot;&gt;#11663&lt;/a&gt;) Fix a rare potential ANR issue on Android (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11674&quot;&gt;#11673&lt;/a&gt;) Fixed missing tracking when doing layout of glyphs (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11685&quot;&gt;#11685&lt;/a&gt;) Added support for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.jpeg&lt;/code&gt; files for models (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11720&quot;&gt;#11683&lt;/a&gt;) Added check if font glyph bitmap will fit into the font glyph texture before uploading (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11559&quot;&gt;#9702,#9401&lt;/a&gt;) Fix issues around textures shared between Model Scenes (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11568&quot;&gt;#11568&lt;/a&gt;) Revamp the Properties view (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11569&quot;&gt;#11556&lt;/a&gt;) Fixed an issue where the camera component icon would disappear after copy-pasting a camera component (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11570&quot;&gt;#11570&lt;/a&gt;) Improve project open performance in large projects (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11601&quot;&gt;#11601&lt;/a&gt;) Improve project load performance by 19% (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11604&quot;&gt;#11604&lt;/a&gt;) Improve project loading performance of large projects by 4% (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11593&quot;&gt;#10688&lt;/a&gt;) Editor: Optimize atlas preview generation (by JosephFerano)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11617&quot;&gt;#8463&lt;/a&gt;) Editor: Optimize Atlas Preview Image Generation for faster iterations (by JosephFerano)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11652&quot;&gt;#11619&lt;/a&gt;) Editor: Fix exception when showing Context Menu for a missing resource (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11655&quot;&gt;#11655&lt;/a&gt;) Exclude insignificant entries when applying gui property overrides in the editor (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11693&quot;&gt;#4959&lt;/a&gt;) Add an embedded sound component instead of using a raw sound (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11700&quot;&gt;#8442&lt;/a&gt;) Select the first element by default in forms where choosing an option reveals additional settings (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11753&quot;&gt;#11532&lt;/a&gt;) Limit max height of editor script dialogs (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11690&quot;&gt;#11690&lt;/a&gt;) Add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/prefs/...&lt;/code&gt; editor HTTP server enpoints (by vlaaad)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;engine&quot;&gt;Engine&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11563&quot;&gt;#11553&lt;/a&gt;) &lt;strong&gt;‘Update XCode to 26.2, MacOS SDK to 26.2, iOS SDK to 26.2’&lt;/strong&gt; by AGulev
Build toolchain updated with:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;XCode 26.2&lt;/li&gt;
  &lt;li&gt;macOS SDK 26.2&lt;/li&gt;
  &lt;li&gt;iOS SDK 26.2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MinimumOSVersion&lt;/code&gt; for iOS has been updated to 15.0 (it was 11.0 previously)
⚠️ The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LSMinimumSystemVersion&lt;/code&gt; for macOS has been updated to 11.5 (it was 10.15 previously)
⚠️ &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;info.plist&lt;/code&gt; notice: if your project uses a custom &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;info.plist&lt;/code&gt; file, ensure it includes the latest changes from the default version&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11612&quot;&gt;#11554&lt;/a&gt;) &lt;strong&gt;‘Update Android SDK to version 36.1.0 and targetSdkVersion to 36’&lt;/strong&gt; by AGulev
Android SDK updated to the latest stable version 36.1.0&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11540&quot;&gt;#11447&lt;/a&gt;) &lt;strong&gt;‘Add support for http proxy connections’&lt;/strong&gt; by britzl
HTTP requests can now specify a proxy server to use when connecting to the destination server. When a proxy is used the connection to the destination server is established using an a HTTP tunnel through the proxy. The HTTP tunnel is established using the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/CONNECT&quot;&gt;CONNECT HTTP method&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;	&lt;span class=&quot;c1&quot;&gt;-- connect to www.defold.com via localhost proxy on port 8888&lt;/span&gt;
	&lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;https://www.defold.com:443&quot;&lt;/span&gt;
	&lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;method&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;GET&quot;&lt;/span&gt;
	&lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{}&lt;/span&gt;
	&lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;post_data&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;nil&lt;/span&gt;
	&lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;options&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;n&quot;&gt;proxy&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;https://127.0.0.1:8888&quot;&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;method&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;n&quot;&gt;pprint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;headers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;post_data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11664&quot;&gt;#9505&lt;/a&gt;) &lt;strong&gt;‘Replaced the deprecated &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ALooper_pollAll&lt;/code&gt; call with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ALooper_pollOnce&lt;/code&gt;‘&lt;/strong&gt; by AGulev
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ALooper_pollAll&lt;/code&gt; has been deprecated due to &lt;a href=&quot;https://github.com/android/ndk-samples/issues/999&quot;&gt;a potential race condition&lt;/a&gt;. It has been replaced with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ALooper_pollOnce&lt;/code&gt; in the engine code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11740&quot;&gt;#11739&lt;/a&gt;) &lt;strong&gt;‘Report old and new shader combinations’&lt;/strong&gt; by Jhonnyg
When mixing old and new shader pipelines, we currently show a warning but don’t tell the users which shaders is causing it. Instead, we now show which shader resources that are causing this to happen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11436&quot;&gt;#11429&lt;/a&gt;) &lt;strong&gt;‘Added editor option to select when to build with the profiler’&lt;/strong&gt; by JCash
This allows for the option to use the profiler in a release build.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11584&quot;&gt;#11577&lt;/a&gt;) &lt;strong&gt;‘Add support for mounting live update archives from Android assets’&lt;/strong&gt; by britzl
It is now possible to mount a live update archive located inside the assets folder of an Android bundle by using a specific prefix to the archive path:&lt;/p&gt;

&lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;liveupdate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;add_mount&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;my_mount&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;zip:/android_asset/myassets.zip&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;priority&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;callback&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The archive can be added to the Android bundle using the bundle resources option or as an install-time Play Asset Delivery pack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11626&quot;&gt;#11558&lt;/a&gt;) &lt;strong&gt;‘Fix regex for linux shared libraries’&lt;/strong&gt; by ekharkunov&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11629&quot;&gt;#11164&lt;/a&gt;) &lt;strong&gt;‘Removed unnecessary lock of main thread when loading many large textures’&lt;/strong&gt; by britzl
This change makes sure that the resource system doesn’t lock the main thread when loading many large textures (or other large resources).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11526&quot;&gt;#11526&lt;/a&gt;) &lt;strong&gt;‘Update LuaJIT’&lt;/strong&gt; by AGulev
This update resolves performance issues on arm64 platforms with JIT enabled, such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;arm64-mac&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;arm64-android&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;arm64-linux&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11541&quot;&gt;#11541&lt;/a&gt;) &lt;strong&gt;‘Performance optimisations for atlas creation’&lt;/strong&gt; by AGulev
These improvements reduced the total atlas build time in Bob.jar from ~2850ms down to ~1100ms for a tested atlas (8192x4096, 4818 images on MBP M1 Max), including a drop in layout calculation time from ~1300ms down to ~490ms. With the reduced algorithmic complexity, adding more images will affect performance far less than before.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11547&quot;&gt;#11547&lt;/a&gt;) &lt;strong&gt;‘Bob performance optimizations for sequential builds’&lt;/strong&gt; by AGulev
Load the native libraries used for shader, model and texture building in advance during Bob’s initialisation stage, and do it in parallel. This can save up to 2 seconds during a rebuild when all three libraries are needed. While that might not be a big deal for a full build, for sequential builds (builds without &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;clean&lt;/code&gt;) it can be a noticeable improvement (for example, 4s -&amp;gt; 2s).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11555&quot;&gt;#11517&lt;/a&gt;) &lt;strong&gt;‘Fixed missing delete key binding on HTML5’&lt;/strong&gt; by britzl
The delete key was not correctly identified in HTML5 builds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11609&quot;&gt;#11609&lt;/a&gt;) &lt;strong&gt;‘Improved atlas texture creation speed in the editor’&lt;/strong&gt; by AGulev&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11614&quot;&gt;#11613&lt;/a&gt;) &lt;strong&gt;‘Unblock main thread while loading a collection and a texture at the same time’&lt;/strong&gt; by britzl
This fixes an issue where the main thread locked for an extender period of time when loading and initialising a collection while at the same time doing a texture upload on Vulkan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11624&quot;&gt;#11624&lt;/a&gt;) &lt;strong&gt;‘Various leak fixes: SSL socket, physics, script table, game system, engine’&lt;/strong&gt; by JCash&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11678&quot;&gt;#11678&lt;/a&gt;) &lt;strong&gt;‘Make sure the mesh component buffer’s version is taken into account when updating the vertex buffer’&lt;/strong&gt; by JCash
This fixes an issue when setting a buffer via the “vertices” property, and the vertex buffer wasn’t updated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11679&quot;&gt;#11679&lt;/a&gt;) &lt;strong&gt;‘Fixes in the Vulkan graphics backend’&lt;/strong&gt; by JCash
The issue presented itself when running with diagnostics, but could lead to odd behaviors at runtime.
The fixes:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;an image size was occasionally miscalculated, which could result in a read out-of-bounds&lt;/li&gt;
  &lt;li&gt;the graphics async state was written to twice, in a non thread safe manner&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11706&quot;&gt;#10571&lt;/a&gt;) &lt;strong&gt;‘Dont use valueptr for models in GetProperty for material constants’&lt;/strong&gt; by Jhonnyg
Fixed an issue where using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;go.animate&lt;/code&gt; to animate material constants would cause model hashes to not be updated. This would cause model instancing to behave incorrectly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11709&quot;&gt;#11627&lt;/a&gt;) &lt;strong&gt;‘Added Safe Area related functionality’&lt;/strong&gt; by AGulev
Safe Area support for Android and iOS phones is now available in the engine out of the box.
You can control how the GUI respects the safe area using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gui.safe_area_mode = none|long|short|both&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.project&lt;/code&gt;, with the option to override this per GUI scene at runtime via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gui.gui.set_safe_area_mode(gui.SAFE_AREA_*)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;408&quot; height=&quot;233&quot; alt=&quot;Safe area settings available in game.project&quot; src=&quot;https://github.com/user-attachments/assets/3b0c7a82-b9ff-4ec7-98ff-0dc30d7f3f9a&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This allows UI elements to stay within safe zones on devices with notches, while still using the full screen when no cutout is present (On platforms without cutouts, the inset values are returned as 0).
The new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;window.get_safe_area()&lt;/code&gt; API provides the current safe area rectangle along with inset values, making it possible to use this data in custom layout and positioning logic.&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;1000&quot; height=&quot;648&quot; alt=&quot;User interface laid out within the safe area on a device with a notch&quot; src=&quot;https://github.com/user-attachments/assets/f4d12bec-5b3c-4088-94db-2b624859fb9b&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11718&quot;&gt;#11689&lt;/a&gt;) &lt;strong&gt;‘&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bob.jar&lt;/code&gt; now scans for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ext.properties&lt;/code&gt; in all folders, not just extension folders’&lt;/strong&gt; by AGulev
Fix an inconsistency where the Editor scans &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ext.properties&lt;/code&gt; in all folders, while &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bob.jar&lt;/code&gt; only scans extension folders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11741&quot;&gt;#11736&lt;/a&gt;) &lt;strong&gt;‘Fix text layout regression’&lt;/strong&gt; by britzl
This fixes a regression and discrepancy between how fonts are viewed in the editor and rendered in the engine. Monospace font padding were not properly respected and trailing spaces had an incorrect length.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11746&quot;&gt;#11746&lt;/a&gt;) &lt;strong&gt;‘Fix Android resource detection’&lt;/strong&gt; by ekharkunov
Fixed issue when bundle resources doesn’t detected as valid Android resources because of additional .DS_Store files&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11175&quot;&gt;#11104&lt;/a&gt;) &lt;strong&gt;‘Copy dynamic libs into result bundle’&lt;/strong&gt; by ekharkunov&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11349&quot;&gt;#11349&lt;/a&gt;) &lt;strong&gt;‘Add logic to recover lost sound device on Windows’&lt;/strong&gt; by deurell
Handle recovery of lost sound device on Windows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11663&quot;&gt;#11663&lt;/a&gt;) &lt;strong&gt;‘Fix a rare potential ANR issue on Android’&lt;/strong&gt; by AGulev
The expensive part of window termination on android was moved from the looper thread to the engine thread to prevent potential ANRs when terminating a window.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11674&quot;&gt;#11673&lt;/a&gt;) &lt;strong&gt;‘Fixed missing tracking when doing layout of glyphs’&lt;/strong&gt; by JCash&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11685&quot;&gt;#11685&lt;/a&gt;) &lt;strong&gt;‘Added support for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.jpeg&lt;/code&gt; files for models’&lt;/strong&gt; by JCash
Previously, models could only refer to .jpg or .png files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11720&quot;&gt;#11683&lt;/a&gt;) &lt;strong&gt;‘Added check if font glyph bitmap will fit into the font glyph texture before uploading’&lt;/strong&gt; by JCash
This fixes an issue where blitting an image outside of the texture size is throwing errors on OpenGL backend.&lt;/p&gt;

&lt;h2 id=&quot;editor&quot;&gt;Editor&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11571&quot;&gt;#11528&lt;/a&gt;) &lt;strong&gt;‘Added ‘Help’ to the list of permitted locations for editor scripts’&lt;/strong&gt; by AGulev&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11441&quot;&gt;#7047&lt;/a&gt;) &lt;strong&gt;‘Breakpoints tab view’&lt;/strong&gt; by JosephFerano
Breapoints Tab has been added to the Tool’s Panel which allows the user to manage all breakpoints in their project. Breakpoints also received an enhancement with the ability to toggle their enabled state, allowing users to temporarily disable them without deleting them. Breakpoints also now persistent across sessions so you don’t lose them when you close the project.&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;528&quot; height=&quot;229&quot; alt=&quot;Breakpoints tab showing all breakpoints in a project&quot; src=&quot;https://github.com/user-attachments/assets/d0849419-d734-4744-b287-73836c04fde3&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;1328&quot; height=&quot;358&quot; alt=&quot;Breakpoint actions and conditions available from the new Breakpoints tab&quot; src=&quot;https://github.com/user-attachments/assets/2bd727a4-e3b5-4c2e-b227-7d996b68cd6c&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Features include:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Enable/Disable/Toggle/Remove All or selected with right-click context menu actions&lt;/li&gt;
  &lt;li&gt;Toggle breakpoint enabled state checkbox&lt;/li&gt;
  &lt;li&gt;Add/Edit/Remove conditions&lt;/li&gt;
  &lt;li&gt;Go to line or show asset in the browser&lt;/li&gt;
  &lt;li&gt;Keyboard shortcuts!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11600&quot;&gt;#11600&lt;/a&gt;) &lt;strong&gt;‘Skip unnecessary traversal in update-overrides’&lt;/strong&gt; by matgis
Skipping some graph traversal in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;update-overrides&lt;/code&gt; step that concludes transactions is now around 14.7 times faster. In the large project we were testing with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;update-overrides&lt;/code&gt; step during the initial project loading went from taking 1:43 to 6.8 seconds, resulting in a 27% project load time improvement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11595&quot;&gt;#11276&lt;/a&gt;) &lt;strong&gt;‘Added an ability to specify &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;library.defold_min_version&lt;/code&gt; for extensions to prevent using incompatible extensions ‘&lt;/strong&gt; by AGulev
Extensions that define &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;library.defold_min_version&lt;/code&gt; are now validated against the current Defold version.
If the extension requires a newer version than the one being used, the build will fail with an error message.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11630&quot;&gt;#11630&lt;/a&gt;) &lt;strong&gt;‘Decrease editor memory pressure from transaction steps’&lt;/strong&gt; by matgis
Refactored the data structures we use to represent atomic changes to the editor graph. This yields a small improvement to peak memory usage when loading the project.&lt;/p&gt;

&lt;p&gt;For comparison, in our large test project, the transaction steps needed to load the project went from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1.02 GB&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;695 MB&lt;/code&gt;. In practice, the improvement will not be directly reflected as a corresponding decrease in peak memory usage, but the change puts less pressure on the garbage collector and enables further optimizations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11642&quot;&gt;#11607&lt;/a&gt;) &lt;strong&gt;‘Add a window title to splash, welcome, and project loading’&lt;/strong&gt; by JosephFerano
Defold now has an OS window title while starting up, showing the welcome screen, and during the project loading window.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11696&quot;&gt;#11406&lt;/a&gt;) &lt;strong&gt;‘Editor: Add drag and drop from Assets to Properties Resource Picker’&lt;/strong&gt; by JosephFerano
Allow dragging and dropping of assets from the Asset Browser pane into a Resource Picker in the Properties pane.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11748&quot;&gt;#4156&lt;/a&gt;) &lt;strong&gt;‘Move project dependencies into their own separate category in the Assets panel’&lt;/strong&gt; by vlaaad
In projects with many dependencies, having them all in the main folder can be disruptive. To improve this, all dependencies are moved into a separate Dependencies folder at the same root level as the project.&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;562&quot; height=&quot;902&quot; alt=&quot;Dependencies folder shown separately in the Assets panel&quot; src=&quot;https://github.com/user-attachments/assets/1b7a9084-080d-463f-b3b0-4a1bf8631fe0&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11704&quot;&gt;#8960&lt;/a&gt;) &lt;strong&gt;‘Added “Close” button to the animation preview in atlas’&lt;/strong&gt; by AGulev
It wasn’t obvious how to close the animation preview in the atlas, so a Close button was added along with a tooltip reminding users of the shortcut:&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;422&quot; height=&quot;198&quot; alt=&quot;Atlas animation preview with the new Close button&quot; src=&quot;https://github.com/user-attachments/assets/5d38c15f-9dfc-41bb-91df-037a7711d2f8&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11708&quot;&gt;#11676&lt;/a&gt;) &lt;strong&gt;‘Add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;zlib&lt;/code&gt; module to editor scripts’&lt;/strong&gt; by vlaaad
Now, the editor scripts’ Lua runtime has &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;zlib&lt;/code&gt; module — with the same semantics as the engine’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;zlib&lt;/code&gt; module.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11715&quot;&gt;#11396&lt;/a&gt;) &lt;strong&gt;‘Do not rename items on double-click in the outline (keep only F2 for renaming)’&lt;/strong&gt; by AGulev&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11559&quot;&gt;#9702,#9401&lt;/a&gt;) &lt;strong&gt;‘Fix issues around textures shared between Model Scenes’&lt;/strong&gt; by matgis
Texture resources shared across multiple Model Scenes (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.gltf&lt;/code&gt; files) will now properly share VRAM resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11568&quot;&gt;#11568&lt;/a&gt;) &lt;strong&gt;‘Revamp the Properties view’&lt;/strong&gt; by vlaaad
We have now refreshed the Properties view.&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;![522333438-7a215758-fe39-4b9b-991f-4cf46db9f833&lt;/td&gt;
      &lt;td&gt;video](upload://2sokhM2b8I35J8KaiAtqHeKtXq0.mp4)&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;It looks better than it was before; it shows the updates immediately, and its styling is now more consistent with the rest of the editor, particularly with the editor scripts UI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11569&quot;&gt;#11556&lt;/a&gt;) &lt;strong&gt;‘Fixed an issue where the camera component icon would disappear after copy-pasting a camera component’&lt;/strong&gt; by AGulev&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11570&quot;&gt;#11570&lt;/a&gt;) &lt;strong&gt;‘Improve project open performance in large projects’&lt;/strong&gt; by vlaaad
A project now opens approximately 15% faster (as measured on a large project with thousands of assets: time to open reduced from 3m36s to 3m02s on my machine).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11601&quot;&gt;#11601&lt;/a&gt;) &lt;strong&gt;‘Improve project load performance by 19%’&lt;/strong&gt; by vlaaad
This performance optimization improves project load performance on big projects. As measured on a large project, the load time decreased from 3:01 to 2:25, a 19% improvement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11604&quot;&gt;#11604&lt;/a&gt;) &lt;strong&gt;‘Improve project loading performance of large projects by 4%’&lt;/strong&gt; by vlaaad
This change defines resource types for common file formats (binary and text) to avoid binary/text detection during project load.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11593&quot;&gt;#10688&lt;/a&gt;) &lt;strong&gt;‘Editor: Optimize atlas preview generation’&lt;/strong&gt; by JosephFerano
Working with Atlases now have better performance characteristics. Changes to image and animation properties that do not affect the atlas texture are now near instant, and changes to Atlas properties that do require recalculation perform faster. Finally, an error is now shown in the Scene View when texture page count exceeds 8 pages, since that is the maximum supported amount.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11617&quot;&gt;#8463&lt;/a&gt;) &lt;strong&gt;‘Editor: Optimize Atlas Preview Image Generation for faster iterations’&lt;/strong&gt; by JosephFerano
The time it takes to generate a new atlas preview after changing its properties was reduced significantly. It should now be around 6x faster on slower machines. As well, dragging/dropping images or moving them up/down in the Outline view of an Atlas when working with Animations will no longer trigger a recalculation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11652&quot;&gt;#11619&lt;/a&gt;) &lt;strong&gt;‘Editor: Fix exception when showing Context Menu for a missing resource’&lt;/strong&gt; by matgis
Accessing the Context Menu for a deleted image file referenced from an Atlas no longer throws an exception.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11655&quot;&gt;#11655&lt;/a&gt;) &lt;strong&gt;‘Exclude insignificant entries when applying gui property overrides in the editor’&lt;/strong&gt; by matgis
When applying property overrides to Gui nodes, filter out entries that have no significance. This significantly shrinks the list of affected nodes and properties that will need to be applied when loading, which saves around 82 MB of memory and a few seconds of load time in the large project we’re testing with.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11693&quot;&gt;#4959&lt;/a&gt;) &lt;strong&gt;‘Add an embedded sound component instead of using a raw sound’&lt;/strong&gt; by AGulev
When a raw sound component is added to a GameObject, it is automatically wrapped and converted into an embedded sound component.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11700&quot;&gt;#8442&lt;/a&gt;) &lt;strong&gt;‘Select the first element by default in forms where choosing an option reveals additional settings’&lt;/strong&gt; by vlaaad
In some forms, it’s not immediately clear that menu selections reveal additional options. To improve this, those options are selected by default.&lt;/p&gt;

&lt;p&gt;Here’s an example showing how the same file looks to the user immediately after opening it, before and after the changes:
&lt;img width=&quot;1448&quot; height=&quot;762&quot; alt=&quot;Before-and-after comparison of a form with a default option selected&quot; src=&quot;https://github.com/user-attachments/assets/b799cfa4-b1f8-459d-a6b6-096cb182c1ec&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11753&quot;&gt;#11532&lt;/a&gt;) &lt;strong&gt;‘Limit max height of editor script dialogs’&lt;/strong&gt; by vlaaad
Now, editor dialogs are limited in height. Users are encouraged to use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;editor.ui.scroll()&lt;/code&gt; container for dialogs that may display a lot of content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11690&quot;&gt;#11690&lt;/a&gt;) &lt;strong&gt;‘Add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/prefs/...&lt;/code&gt; editor HTTP server enpoints’&lt;/strong&gt; by vlaaad
Now, the editor’s HTTP server allows querying and modifying the preferences using its &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/prefs/...&lt;/code&gt; endpoints.&lt;/p&gt;

&lt;p&gt;Use a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GET&lt;/code&gt; request for reading all preferences:&lt;/p&gt;
&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;curl http://localhost:&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cat&lt;/span&gt; .internal/editor.port&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;/prefs | jq
&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
  ...big JSON blob...
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Or a group of settings:&lt;/p&gt;
&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;curl http://localhost:&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cat&lt;/span&gt; .internal/editor.port&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;/prefs/build | jq
&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;s2&quot;&gt;&quot;lint-code&quot;&lt;/span&gt;: &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt;,
  &lt;span class=&quot;s2&quot;&gt;&quot;texture-compression&quot;&lt;/span&gt;: &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt;,
  &lt;span class=&quot;s2&quot;&gt;&quot;open-html5-build&quot;&lt;/span&gt;: &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Or a single setting:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ curl http://localhost:$(cat .internal/editor.port)/prefs/build/texture-compression | jq
true
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Use a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;POST&lt;/code&gt; request for writing:&lt;/p&gt;
&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;curl http://localhost:&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cat&lt;/span&gt; .internal/editor.port&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;/prefs/build/texture-compression &lt;span class=&quot;nt&quot;&gt;-X&lt;/span&gt; POST &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;false&apos;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
			<pubDate>Wed, 04 Feb 2026 00:00:00 +0000</pubDate>
			<link>https://www.defold.com/2026/02/04/Defold-1-12-1/</link>
			<guid isPermaLink="true">https://www.defold.com/2026/02/04/Defold-1-12-1/</guid>
		</item>
		
		<item>
			<title>Defold release 1.12.0</title>
			<description>&lt;h1 id=&quot;defold-1120&quot;&gt;Defold 1.12.0&lt;/h1&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;BREAKING CHANGE&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11491&quot;&gt;#11491&lt;/a&gt;) Rearrange component’s update (by ekharkunov)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11403&quot;&gt;#11386&lt;/a&gt;) Added new camera functions for converting between world and screen coordinates.   (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11445&quot;&gt;#8309&lt;/a&gt;) Added engine throttle performance Lua api (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11285&quot;&gt;#9981&lt;/a&gt;) Add sys.get_config_boolean() (by appsoluut)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11448&quot;&gt;#10948&lt;/a&gt;) Added support for .astc texture format in gui.new_texture() (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11512&quot;&gt;#7277&lt;/a&gt;) Introduce &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;late_update&lt;/code&gt; script function (by ekharkunov)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11427&quot;&gt;#8763&lt;/a&gt;) Added sound group mute functionality to C++ dmSDK (by deurell)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11014&quot;&gt;#9844&lt;/a&gt;) Added support for text shaping (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11367&quot;&gt;#11184&lt;/a&gt;) WelcomeScreen: Enter keybinding to open selected project (by JosephFerano)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11407&quot;&gt;#11334&lt;/a&gt;) Check ENV and validate DM_SERVICE_PORT (by JosephFerano)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11385&quot;&gt;#3868&lt;/a&gt;) Save and Restore open tabs (by JosephFerano)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11518&quot;&gt;#10999&lt;/a&gt;) Build runtime-generated fonts from the editor (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11508&quot;&gt;#11508&lt;/a&gt;) Improve Model rendering performance in Scene View (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11072&quot;&gt;#10971&lt;/a&gt;) New sound backend for iOS and macOS: AVAudio (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11434&quot;&gt;#11416&lt;/a&gt;) Make sure ASTC used in maximum possible cases in HTML5 bundle (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11357&quot;&gt;#10312&lt;/a&gt;) Fixed Crash when using raycasts under certain conditions (by DarkRavenStar)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11485&quot;&gt;#11464&lt;/a&gt;) Add astc encoding context destruction to deallocate memory (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11498&quot;&gt;#9917&lt;/a&gt;) Fix frustrum culling for sprites with pivot point  (by ekharkunov)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11519&quot;&gt;#11519&lt;/a&gt;) ASTC encoder fixes (by AGulev)&lt;/li&gt;
  &lt;li&gt;
    &lt;table&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11419&quot;&gt;#11419&lt;/a&gt;) Added Microsoft Xbox Series S&lt;/td&gt;
          &lt;td&gt;X Controller for Linux (by paweljarosz)&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11537&quot;&gt;#11537&lt;/a&gt;) Add multithreaded encoding for ASTC encoder (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11633&quot;&gt;#11632&lt;/a&gt;) Fix text metrics width calculation (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11728&quot;&gt;#11728&lt;/a&gt;) Fix memory leak / fragmentation in PreStepEmscripten (by meehaul)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11762&quot;&gt;#11743&lt;/a&gt;) Remove validation of glyph order (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11414&quot;&gt;#11379&lt;/a&gt;) Allow typing tilde (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~&lt;/code&gt;) on Swedish keyboard layout (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11412&quot;&gt;#11377&lt;/a&gt;) Repaint up to last visible minimap row (by JosephFerano)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11354&quot;&gt;#10891&lt;/a&gt;) Update Java version to 25 (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11428&quot;&gt;#11400&lt;/a&gt;) Show errors from exceptions thrown during tile source texture layout (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11442&quot;&gt;#11166&lt;/a&gt;) Produce user-friendly build errors from invalid Tile Sources (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11455&quot;&gt;#11452&lt;/a&gt;) Fix exceptions from removed nodes when getting overridden properties (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11457&quot;&gt;#11457&lt;/a&gt;) Localize resource type labels (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11465&quot;&gt;#11465&lt;/a&gt;) Localize form views (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11484&quot;&gt;#11462&lt;/a&gt;) Fix editor exception when double-clicking on a Build Error from a resource with an empty Outline  (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11487&quot;&gt;#11487&lt;/a&gt;) Localize editor scripts and bundle dialogs (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11489&quot;&gt;#11461&lt;/a&gt;) Fix outline re-ordering (by vlaaad)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/extender/pull/804&quot;&gt;extender#802&lt;/a&gt;) Update JDK to 25 (Docker image only) (by ekharkunov)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/extender/pull/803&quot;&gt;extender#801&lt;/a&gt;) Fix extension build errors when PodSpec has more than 2 level of subspecs (by ekharkunov)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/extender/pull/810&quot;&gt;extender#806&lt;/a&gt;) Rework health report collection (by ekharkunov)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/doc/pull/590&quot;&gt;doc#590&lt;/a&gt;) Updated Application Lifecycle for Defold 1.12.0+ and added new diagrams. (by paweljarosz)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;engine&quot;&gt;Engine&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;BREAKING CHANGE&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11491&quot;&gt;#11491&lt;/a&gt;) &lt;strong&gt;‘Rearrange component’s update’&lt;/strong&gt; by ekharkunov
⚠️ ⚠️ ⚠️ &lt;strong&gt;Possible breaking change&lt;/strong&gt; ⚠️ ⚠️ ⚠️
Our Lua script update order has changed, and fixed_update() is now called &lt;em&gt;before&lt;/em&gt; update().
We’ve also added &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;late_update()&lt;/code&gt; which happens last in the engine frame, just before the render script is called.&lt;/p&gt;

&lt;p&gt;For each engine update, you will now get:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;* fixed_update(fixed_dt) -- zero or more times *
* update(dt)             -- one time
* late_update(dt)        -- one time
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In terms of how components are updated in relation to those functions.
Between each of these steps, we also flush any posted messages, it’s just left out here to make the description more compact:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Engine Component Fixed Update (zero or more steps)
    &lt;ul&gt;
      &lt;li&gt;Lua fixed_update(fixed_dt)
        &lt;ul&gt;
          &lt;li&gt;Lua Flush Messages&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;…&lt;/li&gt;
      &lt;li&gt;Physics Fixed Update(fixed_dt) *&lt;/li&gt;
      &lt;li&gt;…&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Engine Component Update
    &lt;ul&gt;
      &lt;li&gt;Lua update(dt)
        &lt;ul&gt;
          &lt;li&gt;Lua Flush Messages&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;…&lt;/li&gt;
      &lt;li&gt;Physics Update(dt) *&lt;/li&gt;
      &lt;li&gt;…&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Engine Component Late Update
    &lt;ul&gt;
      &lt;li&gt;Lua late_update(dt)
        &lt;ul&gt;
          &lt;li&gt;Lua Flush Messages&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;…&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*) Note that fixed_update() is only called if you’ve enabled it in project settings “Use fixed timestep”&lt;/p&gt;

&lt;p&gt;For further information regarding life cycle, and component update order, we’ll refer to the &lt;a href=&quot;https://defold.com/manuals/application-lifecycle/&quot;&gt;documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11403&quot;&gt;#11386&lt;/a&gt;) &lt;strong&gt;‘Added new camera functions for converting between world and screen coordinates.  ‘&lt;/strong&gt; by AGulev
Adds three camera-space conversion helpers to the Lua &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;camera&lt;/code&gt; module:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;camera.world_to_screen(world_pos, [camera])&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;camera.screen_xy_to_world(x, y, [camera])&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;camera.screen_to_world(pos, [camera])&lt;/code&gt;
    &lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;-- Place objects at the touch point.&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;on_input&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;touch&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pressed&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;world_position&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;screen_xy_to_world&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;screen_x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;screen_y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;go&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set_position&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;world_position&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/go1&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;-- Place objects at the touch point with a random Z position, keeping them within the visible view zone.&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;on_input&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;touch&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pressed&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;percpective_camera&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;msg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;#perspective_camera&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;random_z&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;math.random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get_near_z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;percpective_camera&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get_far_z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;percpective_camera&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;world_position&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;screen_to_world&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vmath&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vector3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;screen_x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;screen_y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;random_z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;percpective_camera&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;go&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set_position&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;world_position&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/go1&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;-- Convert go position into screen position&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;go&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;update_world_transform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/go1&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;world_pos&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;go&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get_world_position&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/go1&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;screen_pos&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;world_to_screen&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;world_pos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11445&quot;&gt;#8309&lt;/a&gt;) &lt;strong&gt;‘Added engine throttle performance Lua api’&lt;/strong&gt; by JCash
This api allows the developer to skip engine updates altogether, except input detection.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;No update or rendering will occur once the engine is throttled&lt;/li&gt;
  &lt;li&gt;Any input will wake up the engine again&lt;/li&gt;
  &lt;li&gt;The engine will be throttled again after the cooldown period&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Api:&lt;/p&gt;
&lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set_engine_throttle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;-- No throttling, full engine updates + rendering (default)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set_engine_throttle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;-- Throttling with a cooldown. Engine will wake up for 1 second after each input&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set_engine_throttle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;-- Throttling with a cooldown. Engine will wake up for 1 frame after each input.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11285&quot;&gt;#9981&lt;/a&gt;) &lt;strong&gt;‘Add sys.get_config_boolean()’&lt;/strong&gt; by appsoluut
Allow to get the config parameter as a boolean in Lua. Converts only &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0&lt;/code&gt; to their boolean counterparts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11448&quot;&gt;#10948&lt;/a&gt;) &lt;strong&gt;‘Added support for .astc texture format in gui.new_texture()’&lt;/strong&gt; by JCash
This allows for using compressed textures in gui.&lt;/p&gt;

&lt;p&gt;There are some restrictions on the input .astc file:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Format should be RGBA&lt;/li&gt;
  &lt;li&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;flip&lt;/code&gt; parameter is not supported, so make sure texture is already flipped&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;
&lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/assets/images/logo_4x4.astc&quot;&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;buffer&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;load_resource&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;new_box_node&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;vmath&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vector3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;gui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;new_texture&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;astc&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;buffer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;gui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set_texture&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11512&quot;&gt;#7277&lt;/a&gt;) &lt;strong&gt;‘Introduce &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;late_update&lt;/code&gt; script function’&lt;/strong&gt; by ekharkunov
New script function &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;late_update(self, dt)&lt;/code&gt; was introduced. That function runs &lt;strong&gt;after&lt;/strong&gt; regular &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;update(self, dt)&lt;/code&gt; function. All in-games messages are dispacthed in between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;update(self, dt)&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;late_update(self, dt)&lt;/code&gt;. You can safely update game object’s transforms in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;late_update(self, dt)&lt;/code&gt; because components will update inner transforms after script execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11427&quot;&gt;#8763&lt;/a&gt;) &lt;strong&gt;‘Added sound group mute functionality to C++ dmSDK’&lt;/strong&gt; by deurell
Add functionality to mute sound groups from extensions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11014&quot;&gt;#9844&lt;/a&gt;) &lt;strong&gt;‘Added support for text shaping’&lt;/strong&gt; by JCash
Added support for&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Text shaping&lt;/li&gt;
  &lt;li&gt;Font Collections&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deprecated support for the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;extension-font&lt;/code&gt; native extension.
Most that code has moved into the core engine, along with major improvements to the workflow.&lt;/p&gt;

&lt;p&gt;We added the Lua script functions:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;font.add_font(font_hash, ttf_hash)&lt;/code&gt; – associate .ttf font with .fontc&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;font.remove_font(font_hash, ttf_hash)&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;font.prewarm_text(font_hash, text, callback)&lt;/code&gt; – generate necessary glyphs before rendering.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;font.get_info(font_hash)&lt;/code&gt; - print info about the .fontc&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;text-shaping&quot;&gt;Text shaping&lt;/h3&gt;
&lt;p&gt;This feature adds support for unicode text shaping at runtime.
For instance proper pair kernings, ligatures and right-to-left text.&lt;/p&gt;

&lt;p&gt;The overhead of the extra engine code is around 22%, which means ca 178kb size increase on Wasm target (brotli compressed). That should be compared to the prerasterized font textures in our ligacy system, and the new system where it includes the raw .ttf fonts.
We feel that this is an acceptable cost to pay, for the return value of getting better support for different languages.&lt;/p&gt;

&lt;h4 id=&quot;prewarming-glyph-cache&quot;&gt;Prewarming glyph cache&lt;/h4&gt;

&lt;p&gt;As the text layout system considers the internal glyph indices of a font, it is no longer sufficient to specify a list of code points to use for prewarming the glyph texture cache.
Instead, add an example text is currently recommended&lt;/p&gt;

&lt;h4 id=&quot;asynchronous&quot;&gt;Asynchronous&lt;/h4&gt;
&lt;p&gt;On systems that support threading, the glyph image generation is handled on a worker thread.
Due to this fact, and the fact that the font resource glyph cache may not yet contain your needed glyphs, we also added helper functions to prewarm the font glyph cache.&lt;/p&gt;

&lt;p&gt;The helper has a callback function, which is useful to let you know when the glyphs have landed in the cache, and it’s safe to show the text on screen.&lt;/p&gt;

&lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;font_hash&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/assets/fonts/roboto.fontc&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;font&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;prewarm_text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;font_hash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Some text&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;font-collections&quot;&gt;Font Collections&lt;/h3&gt;

&lt;p&gt;To help with localization, we added support to our font resources to associate multiple &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.ttf&lt;/code&gt; files with a single font resource. It allows for easier memory management. E.g. only load the language fonts you need.&lt;/p&gt;

&lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;font_hash&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/assets/fonts/roboto.fontc&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ttf_hash&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/assets/fonts/Roboto/Roboto-Bold.ttf&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;font&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;add_font&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;font_hash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ttf_hash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;how-to-use-in-your-project&quot;&gt;How to use in your project&lt;/h3&gt;

&lt;p&gt;You need to…&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;set the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;font.runtime_generation = 1&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.project&lt;/code&gt; to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.ttf&lt;/code&gt; fonts at runtime.&lt;/li&gt;
  &lt;li&gt;use an app manifest, selecting the “Font Layout” feature.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11072&quot;&gt;#10971&lt;/a&gt;) &lt;strong&gt;‘New sound backend for iOS and macOS: AVAudio’&lt;/strong&gt; by AGulev
This new backend replaces the deprecated OpenAL backend on iOS and macOS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11434&quot;&gt;#11416&lt;/a&gt;) &lt;strong&gt;‘Make sure ASTC used in maximum possible cases in HTML5 bundle’&lt;/strong&gt; by AGulev
&lt;a href=&quot;https://issues.chromium.org/issues/434983812&quot;&gt;Because of a Chromium-side issue&lt;/a&gt;, Defold uses a workaround that disables ASTC compression when the issue is detected, falling back to ETC2 - which offers lower visual quality.&lt;/p&gt;

&lt;p&gt;This update narrows the fallback to ETC2 so it only applies to &lt;strong&gt;paged atlases&lt;/strong&gt; in affected cases.&lt;br /&gt;
As a result, single-paged atlases now use ASTC for maximum texture quality, while multi-paged atlases remain visible even on devices impacted by the Chromium problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11357&quot;&gt;#10312&lt;/a&gt;) &lt;strong&gt;‘Fixed Crash when using raycasts under certain conditions’&lt;/strong&gt; by DarkRavenStar
This fixes a crash when the length of a 2D or 3D raycast is zero.
This fix specifically takes into account the case when the ray length becomes zero after applying the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;physics.scale&lt;/code&gt; setting in game.project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11485&quot;&gt;#11464&lt;/a&gt;) &lt;strong&gt;‘Add astc encoding context destruction to deallocate memory’&lt;/strong&gt; by JCash
Added memory fix when using ASTC texture compression. It previously leaked memory after each compressed image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11498&quot;&gt;#9917&lt;/a&gt;) &lt;strong&gt;‘Fix frustrum culling for sprites with pivot point ‘&lt;/strong&gt; by ekharkunov
Fixed culling for sprites with pivot points. Also implemented some optimization on how geometry data calculated and stored between batches. So now it should be a bit faster in terms of calculation but consume some memory to store cached information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11519&quot;&gt;#11519&lt;/a&gt;) &lt;strong&gt;‘ASTC encoder fixes’&lt;/strong&gt; by AGulev&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Updated the ASTC encoder to version 5.3.0&lt;/li&gt;
  &lt;li&gt;Enabled the release flag to ensure full performance&lt;/li&gt;
  &lt;li&gt;Fixed the ASTC 4x4 RGB build&lt;/li&gt;
&lt;/ul&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11419&quot;&gt;#11419&lt;/a&gt;) __‘Added Microsoft Xbox Series S&lt;/td&gt;
      &lt;td&gt;X Controller for Linux’__ by paweljarosz&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Added gamepad mapping for the Microsoft Xbox Series S&lt;/td&gt;
      &lt;td&gt;X controller for Linux to the built-in default.gamepads.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11537&quot;&gt;#11537&lt;/a&gt;) &lt;strong&gt;‘Add multithreaded encoding for ASTC encoder’&lt;/strong&gt; by AGulev
Speed up the ASTC encoder using a few threads per image (in addition to encoding a few images at the same time)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11633&quot;&gt;#11632&lt;/a&gt;) &lt;strong&gt;‘Fix text metrics width calculation’&lt;/strong&gt; by britzl
This change fixes an issue with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;resource.get_text_metrics()&lt;/code&gt; calculation where the width of the last character of a string of text is incorrect. This leads to problems when placing words one by one or align other objects next to words.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11728&quot;&gt;#11728&lt;/a&gt;) &lt;strong&gt;‘Fix memory leak / fragmentation in PreStepEmscripten’&lt;/strong&gt; by meehaul
Fixed a memory leak on every frame with Emscripten builds, resulting in significant heap fragmentation and usage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11762&quot;&gt;#11743&lt;/a&gt;) &lt;strong&gt;‘Remove validation of glyph order’&lt;/strong&gt; by britzl
This fixes a crash when using fonts in the BMFont format when the glyphs of the font are not sorted in increasing order.&lt;/p&gt;

&lt;h2 id=&quot;editor&quot;&gt;Editor&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11367&quot;&gt;#11184&lt;/a&gt;) &lt;strong&gt;‘WelcomeScreen: Enter keybinding to open selected project’&lt;/strong&gt; by JosephFerano
Currently pressing ENTER in the welcome screen to select a project doesn’t do anything. This PR adds the ENTER keybinding so it opens the currently selected project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11407&quot;&gt;#11334&lt;/a&gt;) &lt;strong&gt;‘Check ENV and validate DM_SERVICE_PORT’&lt;/strong&gt; by JosephFerano
Editor used to ignore &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DM_SERVICE_PORT&lt;/code&gt; and always use a dynamic port. Now the editor can read the port when the environment variable supplied.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11385&quot;&gt;#3868&lt;/a&gt;) &lt;strong&gt;‘Save and Restore open tabs’&lt;/strong&gt; by JosephFerano
Currently, when a user has open tabs and assigned to different panes, when they close the editor, they are all closed out and require opening them up again. This PR will restore all previous open tabs, in the correct order, and in the proper splits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11518&quot;&gt;#10999&lt;/a&gt;) &lt;strong&gt;‘Build runtime-generated fonts from the editor’&lt;/strong&gt; by matgis
The editor now respects the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;font.runtime_generation&lt;/code&gt; setting in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.project&lt;/code&gt;. Previously only Bob would produce runtime-generated fonts when this setting was enabled for the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11508&quot;&gt;#11508&lt;/a&gt;) &lt;strong&gt;‘Improve Model rendering performance in Scene View’&lt;/strong&gt; by matgis
The editor responsiveness in scenes that feature Models has been drastically improved, especially when per-instance vertex attributes are involved.&lt;/p&gt;

&lt;p&gt;Partially adresses #9817.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11414&quot;&gt;#11379&lt;/a&gt;) &lt;strong&gt;‘Allow typing tilde (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~&lt;/code&gt;) on Swedish keyboard layout’&lt;/strong&gt; by vlaaad
Now it’s possible to enter the tilde character (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~&lt;/code&gt;) when using the Swedish keyboard layout by pressing &lt;kbd&gt;⌥ ^&lt;/kbd&gt; followed by space or another character.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11412&quot;&gt;#11377&lt;/a&gt;) &lt;strong&gt;‘Repaint up to last visible minimap row’&lt;/strong&gt; by JosephFerano
The minimap in the code editor wasn’t syntax highlighting all the lines visible in larger files. Now the minimap will have syntax colors all the way through.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11354&quot;&gt;#10891&lt;/a&gt;) &lt;strong&gt;‘Update Java version to 25’&lt;/strong&gt; by vlaaad
Defold Java version is updated to 25 (from 21). If you are only using the editor, you don’t need to do anything, but if you use bob.jar (e.g., in a CI pipeline), you’ll need to update Java from 21 to 25.&lt;/p&gt;

&lt;p&gt;The update gives us a small, but noticeable performance and memory use improvement:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;memory usage when opening a big project decreased by 5% (7.4Gb -&amp;gt; 7Gb)&lt;/li&gt;
  &lt;li&gt;time to open a big project decreased by 17% (4m34s -&amp;gt; 3m47s)&lt;/li&gt;
  &lt;li&gt;time to build a big project decreased by 10% (8m18s -&amp;gt; 7m20s)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11428&quot;&gt;#11400&lt;/a&gt;) &lt;strong&gt;‘Show errors from exceptions thrown during tile source texture layout’&lt;/strong&gt; by matgis&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11442&quot;&gt;#11166&lt;/a&gt;) &lt;strong&gt;‘Produce user-friendly build errors from invalid Tile Sources’&lt;/strong&gt; by matgis&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;All invalid properties in Tile Sources now generate clickable build errors.&lt;/li&gt;
  &lt;li&gt;Highlight Tile Source Animations with invalid properties in the Outline View.&lt;/li&gt;
  &lt;li&gt;Render errors in the Scene View will now report the source file when the error originates from a substructure node.&lt;/li&gt;
  &lt;li&gt;Fixed Exception in the editor when setting the Tile Source Tile Margin to a negative value.&lt;/li&gt;
  &lt;li&gt;Tile Source Tile Width and Height must be positive.&lt;/li&gt;
  &lt;li&gt;The error tooltip for the Sprite Default Animation field now refers to the correct Image property label.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11455&quot;&gt;#11452&lt;/a&gt;) &lt;strong&gt;‘Fix exceptions from removed nodes when getting overridden properties’&lt;/strong&gt; by matgis&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11457&quot;&gt;#11457&lt;/a&gt;) &lt;strong&gt;‘Localize resource type labels’&lt;/strong&gt; by vlaaad&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11465&quot;&gt;#11465&lt;/a&gt;) &lt;strong&gt;‘Localize form views’&lt;/strong&gt; by vlaaad&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11484&quot;&gt;#11462&lt;/a&gt;) &lt;strong&gt;‘Fix editor exception when double-clicking on a Build Error from a resource with an empty Outline ‘&lt;/strong&gt; by matgis&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Fixed exception in the editor if the user double-clicked a Build Error originating from a resource whose Outline view was empty after opened.&lt;/li&gt;
  &lt;li&gt;Fixed empty Outline view for Tile Sources whose tile count couldn’t be determined as a result of invalid property values. This was a regression introduced by #11442.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11487&quot;&gt;#11487&lt;/a&gt;) &lt;strong&gt;‘Localize editor scripts and bundle dialogs’&lt;/strong&gt; by vlaaad&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11489&quot;&gt;#11461&lt;/a&gt;) &lt;strong&gt;‘Fix outline re-ordering’&lt;/strong&gt; by vlaaad
We introduced a regression in 1.11.2 during the outline refactor that made re-ordering behavior erratic. Now the issue is fixed.&lt;/p&gt;

&lt;h2 id=&quot;other&quot;&gt;Other&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/extender/pull/804&quot;&gt;extender#802&lt;/a&gt;) &lt;strong&gt;‘Update JDK to 25 (Docker image only)’&lt;/strong&gt; by ekharkunov
The base Docker image has been updated to use JDK 25&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/extender/pull/803&quot;&gt;extender#801&lt;/a&gt;) &lt;strong&gt;‘Fix extension build errors when PodSpec has more than 2 level of subspecs’&lt;/strong&gt; by ekharkunov
This change fixes issues when building extensions with certain Cocopod dependencies, for instance Appmetrica.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/extender/pull/810&quot;&gt;extender#806&lt;/a&gt;) &lt;strong&gt;‘Rework health report collection’&lt;/strong&gt; by ekharkunov
Improved how the data for the &lt;a href=&quot;https://defold.com/status/&quot;&gt;build server status page&lt;/a&gt; is collected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/doc/pull/590&quot;&gt;doc#590&lt;/a&gt;) &lt;strong&gt;‘Updated Application Lifecycle for Defold 1.12.0+ and added new diagrams.’&lt;/strong&gt; by paweljarosz&lt;/p&gt;

</description>
			<pubDate>Mon, 12 Jan 2026 00:00:00 +0000</pubDate>
			<link>https://www.defold.com/2026/01/12/Defold-1-12-0/</link>
			<guid isPermaLink="true">https://www.defold.com/2026/01/12/Defold-1-12-0/</guid>
		</item>
		
		<item>
			<title>Creator Spotlight - Koen Bollen</title>
			<description>&lt;p&gt;In the Creator Spotlight posts we invite Defold users to present themselves and share a bit of their background, their work and things that inspire them. It is an excellent opportunity for the community to come together, to recognise achievements and to share some of the great work done by Defold users.&lt;/p&gt;

&lt;p&gt;In this Defold Creator Spotlight we invited Koen Bollen to tell us a little bit about himself and his latest Defold project - Sprint City - a competitive platformer from the original creators of SpeedRunners now being developed with Defold!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/developer-spotlight-koen-bollen/header.png&quot; alt=&quot;Sprint City Made with Defold&quot; /&gt;&lt;/p&gt;

&lt;h5 id=&quot;hello-koen-introduce-yourself-to-our-community&quot;&gt;Hello Koen! Introduce yourself to our community!&lt;/h5&gt;

&lt;p&gt;Hello! My name is Koen Bollen, or &lt;em&gt;Kaji&lt;/em&gt; in-game. I’m the co-founder and lead engineer of the Second Stage Studio.&lt;/p&gt;

&lt;h5 id=&quot;what-is-your-favorite-game-of-all-time&quot;&gt;What is your favorite game of all time?&lt;/h5&gt;

&lt;p&gt;My favorite games, with a healthy amount of recency-bias are &lt;em&gt;Half-Life: Alyx&lt;/em&gt;, &lt;em&gt;Minecraft&lt;/em&gt; and &lt;em&gt;Hollow Knight: Silksong&lt;/em&gt;.&lt;/p&gt;

&lt;h5 id=&quot;we-know-youve-had-an-interesting-journey-tell-us-a-bit-about-your-experience-prior-to-forming-second-stage-studio-what-is-your-background-in-game-development&quot;&gt;We know you’ve had an interesting journey. Tell us a bit about your experience prior to forming Second Stage Studio. What is your background in game development?&lt;/h5&gt;

&lt;p&gt;Where to start? Well, I started tinkering with computers at the age of 11, breaking my parents’ computer often enough to get my own. I started making games at around age 21 whilst teaching gamedev and computer science. Later I did a lot of backend engineering, most notably at &lt;a href=&quot;https://poki.com/&quot;&gt;Poki&lt;/a&gt; (a web games platform) and I’ve been making Sprint City for about two years now.&lt;/p&gt;

&lt;h5 id=&quot;what-is-sprint-city-about-what-can-players-expect-from-the-game-and-its-core-gameplay&quot;&gt;What is Sprint City about? What can players expect from the game and its core gameplay?&lt;/h5&gt;

&lt;p&gt;The core of our game is movement and momentum, “got to go fast!”. When you race against others, you try to drain their clocks by finishing a lap first and clock them out! Or you time trial alone and set the world record on every track.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/developer-spotlight-koen-bollen/sprint_city_climbing.gif&quot; alt=&quot;Sprint City Climbing&quot; /&gt;&lt;/p&gt;

&lt;h5 id=&quot;what-are-you-working-on-in-the-project&quot;&gt;What are you working on in the project?&lt;/h5&gt;

&lt;p&gt;I’m responsible for all things tech-heavy: The backend, hosting, net-code. But also shaders, the render pipeline and designing more complicated game systems.&lt;/p&gt;

&lt;h5 id=&quot;with-an-official-speedrunners-2-in-development-by-another-studio-what-led-your-team-to-create-sprint-city-independently-as-a-spiritual-successor&quot;&gt;With an official SpeedRunners 2 in development by another studio, what led your team to create Sprint City independently as a spiritual successor?&lt;/h5&gt;

&lt;p&gt;Casper van Est (the creator of Speedrunners) and I decided to do a week-long gamejam (just us, not a public event). The result of that was so much fun, and it inspired Casper to maybe make a new game or even a sequel. So we started a new studio and worked on our game, codenamed Playground.&lt;/p&gt;

&lt;p&gt;In parallel, tinyBuild, who owns Speedrunners, got a proposal for Speedrunners 2 and went ahead with this.
Because of this mismatch we decided to pivot into a new IP, Sprint City!&lt;/p&gt;

&lt;h5 id=&quot;speedrunners-became-a-cult-hit-in-the-competitive-platformer-genre-what-lessons-from-that-game-are-you-carrying-over-into-sprint-city-and-in-what-ways-are-you-pushing-the-concept-further-or-in-a-new-direction&quot;&gt;SpeedRunners became a cult hit in the competitive platformer genre. What lessons from that game are you carrying over into Sprint City, and in what ways are you pushing the concept further or in a new direction?&lt;/h5&gt;

&lt;p&gt;The main thing we want to carry over is the feel of movement; you need to be flying through the city. Just traversal on its own should be fun, other gameplay is just extra.&lt;/p&gt;

&lt;p&gt;Something we wanted to improve on is waiting in menus to start playing the game (while waiting for matchmaking for example), so in Sprint City you are always gaming! At the end of a race, you just stay in the game and can hang around with friends and show off your moves.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/developer-spotlight-koen-bollen/sprint_city_hooks.gif&quot; alt=&quot;Sprint City Grapling Hooks&quot; /&gt;&lt;/p&gt;

&lt;h5 id=&quot;were-curious-about-the-story-behind-the-studios-name-does-second-stage-studio-have-a-special-meaning&quot;&gt;We’re curious about the story behind the studio’s name. Does Second Stage Studio have a special meaning?&lt;/h5&gt;

&lt;p&gt;Ha. Not a lot of thought went into this. This is the second game studio for both Casper and me, and we like space and rockets. “Second Stage Studio? As in the second stage of a rocket? Sounds good!”&lt;/p&gt;

&lt;h5 id=&quot;sprint-city-is-planned-for-early-access-on-steam-in-2026-do-you-have-additional-launch-plans-or-platforms-in-mind&quot;&gt;Sprint City is planned for Early Access on Steam in 2026. Do you have additional launch plans or platforms in mind?&lt;/h5&gt;

&lt;p&gt;We are focusing on Steam during development and early access. This platform is the easiest to update on frequently.
When the game is fully released we plan to launch on the major consoles as well.&lt;/p&gt;

&lt;h5 id=&quot;the-game-will-let-players-invite-friends-via-a-web-browser-to-play-for-free--a-very-unique-feature-how-does-that-system-work-and-what-was-the-motivation-behind-it&quot;&gt;The game will let players invite friends via a web browser to play for free – a very unique feature! How does that system work, and what was the motivation behind it?&lt;/h5&gt;

&lt;p&gt;A couple of things came together for this idea. We wanted to support cross-play between platforms. I had a lot of experience with WebRTC (the browser network technology that Discord and Zoom use). And Defold has excellent support for the web.&lt;/p&gt;

&lt;p&gt;And we feel it’s super fair if you can have your friends play without having to convince them to buy and download/install it first.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/developer-spotlight-koen-bollen/sprint_city.gif&quot; alt=&quot;Sprint City Sliding&quot; /&gt;&lt;/p&gt;

&lt;h5 id=&quot;what-have-been-the-biggest-technical-challenges-in-developing-sprint-city-and-how-did-you-overcome-them-every-developer-sometimes-has-a-funny-horror-story-did-you-have-to-resort-to-any-ugly-hacks-or-quick-and-dirty-tricks-during-sprint-citys-development-to-make-something-work-in-a-pinch&quot;&gt;What have been the biggest technical challenges in developing Sprint City, and how did you overcome them? Every developer sometimes has a funny horror story. Did you have to resort to any “ugly” hacks or quick-and-dirty tricks during Sprint City’s development to make something work in a pinch?&lt;/h5&gt;

&lt;p&gt;Three categories:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;The most work: The networking code. We created a custom extension that allows for WebRTC P2P communication. And a backend that dynamically has players connect to each other when they are in proximity in the game world.&lt;/li&gt;
  &lt;li&gt;The hardest to get to work: The shader based parallaxing and Defold’s frustum culling. We do parallaxing using a vertex shader, since we have too big of a world to do it based on the game-object position. But far away objects got culled by the rendering frustum. We, and mostly our intern Leo, designed a way to make a perspective projection matrix that would include all objects in rendering, even though the game objects are technically far offscreen&lt;/li&gt;
  &lt;li&gt;The hackiest: Our in-game shadows use a very hacky rendering trick to insert them in a postshader phase. I already have a better system cooked up, but who has time to improve on an already working system?&lt;/li&gt;
&lt;/ol&gt;

&lt;h5 id=&quot;sprint-citys-art-style-and-animation-are-striking--the-game-is-set-in-a-seemingly-vibrant-solarpunk-city-with-cool-and-funky-character-animations-can-you-tell-us-about-your-art-pipeline-and-tools&quot;&gt;Sprint City’s art style and animation are striking – the game is set in a seemingly vibrant solarpunk city with cool and funky character animations. Can you tell us about your art pipeline and tools?&lt;/h5&gt;

&lt;p&gt;Our artists and animator just work in our Git repository, they use Defold to add images to atlases and use our in-game level editor to place decals and other visuals like shadows. Then they make a pull-request (PR) and one of the coders checks their work before we merge it. We also have a bunch of automated checks (like naming conventions on animation names and no capital letters in filename).&lt;/p&gt;

&lt;p&gt;Super useful feature: We use a github Action to automatically build a PR and host that somewhere, so we can play that version without having to pull it and build it locally.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/developer-spotlight-koen-bollen/sprint_city.png&quot; alt=&quot;Sprint City Solarpunk&quot; /&gt;&lt;/p&gt;

&lt;h5 id=&quot;being-based-in-the-netherlands-how-do-you-find-the-local-game-development-scene&quot;&gt;Being based in the Netherlands, how do you find the local game development scene?&lt;/h5&gt;

&lt;p&gt;The indie scene here is very nice and active, there are plenty of meetups and other get-togethers. We sometimes have people over to work from our office for a day. Sadly, there are not many AAA studios in the Netherlands.&lt;/p&gt;

&lt;h5 id=&quot;when-and-how-did-you-first-discover-defold-and-why-did-you-choose-defold-as-the-engine-for-sprint-city-what-made-defold-stand-out-for-this-project&quot;&gt;When and how did you first discover Defold, and why did you choose Defold as the engine for Sprint City? What made Defold stand out for this project?&lt;/h5&gt;

&lt;p&gt;I learned about Defold in my time at Poki. And I have a soft spot for web games. Defold is very light weight, 2D friendly and very flexible in extending. Making an extension was very important for our network stack, using (crossplatform) WebRTC was not possible in other engines (at least not super easy). Then having a build-server was a big plus for the rest of the team.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/developer-spotlight-koen-bollen/sprint_city_gui.png&quot; alt=&quot;Sprint City Defold GUI&quot; /&gt;&lt;/p&gt;

&lt;h5 id=&quot;what-do-you-like-the-most-about-working-with-defold-are-there-particular-features-workflows-or-aspects-of-defold-that-you-and-your-team-appreciate-during-development&quot;&gt;What do you like the most about working with Defold? Are there particular features, workflows or aspects of Defold that you and your team appreciate during development?&lt;/h5&gt;

&lt;p&gt;Mostly ease of use, and fast build speed. You just need to install Defold and you can build our project, even though we use a lot of custom extensions and C++ code.
We don’t use the Defold editor a lot - we code in VSCode and only use the Defold editor for atlases, particles and GUIs, and we use it to build the game during development of course.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/developer-spotlight-koen-bollen/sprint_city_defold_editor.png&quot; alt=&quot;Sprint City Defold Editor&quot; /&gt;&lt;/p&gt;

&lt;h5 id=&quot;what-would-be-your-recommendations-for-defold-developers&quot;&gt;What would be your recommendations for Defold developers?&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;Add &lt;a href=&quot;https://luals.github.io/wiki/annotations/&quot;&gt;Lua type annotations&lt;/a&gt; to everything, from the start! Lua is a great language for hacking, not so great for larger engineering projects. Adding annotations later on in the project is just not going to happen. Having types (and a system that checks them) will prevent a lot of bugs from being introduced, and helps auto-complete while developing.&lt;/li&gt;
  &lt;li&gt;I also recommend setting up a repository wide formatter like &lt;a href=&quot;https://github.com/JohnnyMorganz/StyLua&quot;&gt;StyLua&lt;/a&gt; to never have to think about it again (and enforce it with a Github Action).&lt;/li&gt;
  &lt;li&gt;Have dynamic loading from the start, or very early on. We added dynamic loading (having the game in a Collection Proxy) later on in the process and it was very hard to get it to work and have the communication working in our game. Later we also added large open world loading (where regions load/unload as you run around) and that would have been 100x easier, if created from the start.&lt;/li&gt;
  &lt;li&gt;Your game will be played in different aspect-ratios, make sure you support that from the beginning.&lt;/li&gt;
  &lt;li&gt;Protip: Use &lt;a href=&quot;https://github.com/subsoap/defos&quot;&gt;defos&lt;/a&gt; to randomize the window size every time you run your game in debug while developing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h5 id=&quot;finally-how-can-the-community-follow-your-progress-and-get-their-hands-on-sprint-city&quot;&gt;Finally, how can the community follow your progress and get their hands on Sprint City?&lt;/h5&gt;

&lt;p&gt;Wishlist the game on Steam: &lt;a href=&quot;https://store.steampowered.com/app/4191250/Sprint_City&quot;&gt;https://store.steampowered.com/app/4191250/Sprint_City&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Join us on Discord:
&lt;a href=&quot;https://discord.com/invite/sprintcity&quot;&gt;https://discord.com/invite/sprintcity&lt;/a&gt;&lt;/p&gt;

&lt;h5 id=&quot;thank-you-very-much-for-the-interview-and-we-wish-you-a-tremendous-success-with-sprint-city&quot;&gt;Thank you very much for the interview, and we wish you a tremendous success with Sprint City!&lt;/h5&gt;

&lt;h6 id=&quot;official-sprint-city-announcement-trailer&quot;&gt;Official Sprint City announcement trailer:&lt;/h6&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=2M4SkQLFRGM&quot;&gt;https://www.youtube.com/watch?v=2M4SkQLFRGM&lt;/a&gt;&lt;/p&gt;
</description>
			<pubDate>Sat, 03 Jan 2026 00:00:00 +0000</pubDate>
			<link>https://www.defold.com/2026/01/03/Creator-Spotlight-Koen-Bollen/</link>
			<guid isPermaLink="true">https://www.defold.com/2026/01/03/Creator-Spotlight-Koen-Bollen/</guid>
		</item>
		
		<item>
			<title>Defold in 2025 - A Year in Review</title>
			<description>&lt;h1 id=&quot;defold-in-2025--a-year-in-review&quot;&gt;Defold in 2025 — A year in Review&lt;/h1&gt;

&lt;p&gt;Another year has gone by, and it’s time to reflect on the events and highlights of Defold in 2025.&lt;/p&gt;

&lt;p&gt;First of all, we want to thank our amazing and growing community! Many of the improvements delivered in 2025 were possible thanks to our community contributors, and we are genuinely grateful for the time, feedback, bug reports, pull requests, extensions, and examples you shared. And we want to thank our partners that made it possible for Defold to evolve this year and the Defold team to grow.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/defold-2025-retrospective/header.png&quot; alt=&quot;Defold 2025 Retrospective&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We maintained a steady release cadence throughout the year, aiming for (almost) monthly releases with a ~2 weeks of beta period for each. This predictable schedule helps ensure each release brings meaningful features, improvements, and fixes, while giving the community time to catch issues early during the beta window. To everyone who tested betas and provided feedback: thank you! Your help was essential to making 2025 another successful year for Defold.&lt;/p&gt;

&lt;h2 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;/h2&gt;

&lt;p&gt;In keeping with our philosophy, we strive to avoid breaking changes unless absolutely necessary. A couple of updates in 2025 did however introduce breaking changes, but they were minor and affected only specific areas. We want to apologize if it caused any inconvenience.&lt;/p&gt;

&lt;h3 id=&quot;box2d-version-3&quot;&gt;Box2D version 3&lt;/h3&gt;

&lt;p&gt;We upgraded the built-in physics engine to &lt;a href=&quot;https://defold.com/2025/04/14/Defold-1-10-0/&quot;&gt;Box2D version 3&lt;/a&gt;. To make adoption safe and gradual, we shipped Box2D 3 as an optional feature, so developers can opt in via an app manifest and test their projects with the new physics. It behaves similarly in most cases, but due to internal changes, you may notice subtle differences in collision reporting or require minor tuning of physics settings. We plan to make Box2D 3 the default once we iron out all remaining edge cases, as it was almost a rewrite from scratch.&lt;/p&gt;

&lt;h3 id=&quot;removal-of-scale-along-z&quot;&gt;Removal of Scale Along Z&lt;/h3&gt;

&lt;p&gt;We &lt;a href=&quot;https://defold.com/2025/09/08/Defold-1-11-0/&quot;&gt;removed the “scale along Z”&lt;/a&gt; feature to simplify the engine and avoid confusion. This was a long-overdue cleanup, because it required changes in users’ projects in some cases, but we needed to do so.&lt;/p&gt;

&lt;p&gt;There were some other small fixes that could be breaking in certain situations (e.g. &lt;a href=&quot;https://defold.com/2025/05/12/Defold-1-10-1/&quot;&gt;passing nil to go.delete() now throws an error&lt;/a&gt; or a &lt;a href=&quot;https://defold.com/2025/07/07/Defold-1-10-3/&quot;&gt;fix for sys.load() for corrupt files&lt;/a&gt;) and there were some other breaking changes that &lt;a href=&quot;https://defold.com/2025/05/12/Defold-1-10-1/&quot;&gt;affected only Native Extensions&lt;/a&gt;. As always, we communicated breaking changes clearly in release notes and worked to ensure migrations were as smooth as possible.&lt;/p&gt;

&lt;h2 id=&quot;releases&quot;&gt;Releases&lt;/h2&gt;

&lt;p&gt;The 10 Defold releases in 2025 included dozens of new features and hundreds of fixes and tweaks. We decided to publish the 11th release in a few days, so it will be technically in 2026, but we cover some of its most important features in this retrospective too.&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Month&lt;/th&gt;
      &lt;th&gt;Version&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;February&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://forum.defold.com/t/defold-1-9-7-has-been-released/79650&quot;&gt;1.9.7&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;March&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://forum.defold.com/t/defold-1-9-8-has-been-released/80012&quot;&gt;1.9.8&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;April&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://forum.defold.com/t/defold-1-10-0-has-been-released/80264&quot;&gt;1.10.0&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;May&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://forum.defold.com/t/defold-1-10-1-has-been-released/80481&quot;&gt;1.10.1&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;June&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://forum.defold.com/t/defold-1-10-2-has-been-released/80687&quot;&gt;1.10.2&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;July&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://forum.defold.com/t/defold-1-10-3-has-been-released/80882&quot;&gt;1.10.3&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;August&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://forum.defold.com/t/defold-1-10-4-has-been-released/81160&quot;&gt;1.10.4&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;September&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://forum.defold.com/t/defold-1-11-0-has-been-released/81515&quot;&gt;1.11.0&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;October&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://forum.defold.com/t/defold-1-11-1-has-been-released/81704&quot;&gt;1.11.1&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;November&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://forum.defold.com/t/defold-1-11-2-has-been-released/81884&quot;&gt;1.11.2&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;rendering-and-3d-support&quot;&gt;Rendering and 3D support&lt;/h2&gt;

&lt;p&gt;We continued moving Defold’s rendering architecture forward with the goal of improving GPU utilization and enabling stronger 3D support. We aim to provide better 3D support and significantly improve GPU usage. We are obviously not moving away from 2D support, but it doesn’t change the fact that we are very happy that more and more users started making 3D projects in Defold in 2025.&lt;/p&gt;

&lt;p&gt;A key step was the shader pipeline refactor. Defold now uses a &lt;a href=&quot;https://github.com/defold/defold/pull/10097&quot;&gt;single combined shader resource&lt;/a&gt; per program, allowing multiple materials to share the same underlying program and reducing memory usage.&lt;/p&gt;

&lt;p&gt;Later releases expanded the new pipeline with &lt;a href=&quot;https://github.com/defold/defold/pull/10351&quot;&gt;shader resource merging&lt;/a&gt; across stages and automatic remapping of vertex outputs to fragment inputs, improving correctness on non-OpenGL backends.&lt;/p&gt;

&lt;p&gt;The Vulkan backend has now &lt;a href=&quot;https://github.com/defold/defold/pull/11180&quot;&gt;improved performance for texture uploads&lt;/a&gt; and few other fixes and clean ups.&lt;/p&gt;

&lt;p&gt;We added support for &lt;a href=&quot;https://github.com/defold/defold/pull/9680&quot;&gt;structs in uniforms&lt;/a&gt;, which is a small addition, yet allows for some fine grained, cleaner and more scalable shader implementations. We also added helpful rendering-adjacent APIs and runtime capabilities, including &lt;a href=&quot;https://github.com/defold/defold/pull/9946&quot;&gt;model AABB queries&lt;/a&gt;, &lt;a href=&quot;https://github.com/defold/defold/pull/10823&quot;&gt;dynamic GUI textures&lt;/a&gt; and &lt;a href=&quot;https://github.com/defold/defold/pull/10794&quot;&gt;improved web viewport behaviour&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;gpu-skinning&quot;&gt;GPU Skinning&lt;/h3&gt;

&lt;p&gt;We expanded GPU-driven rendering capabilities, including &lt;a href=&quot;https://github.com/defold/defold/pull/9983&quot;&gt;GPU skinning&lt;/a&gt; for model animations. Model components can be rendered with vertex shaders that perform skinning on the GPU, freeing the CPU from animation work and improving performance for animated characters and complex scenes.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/defold-2025-retrospective/gpu_skinning.png&quot; alt=&quot;GPU skinning&quot; /&gt;&lt;/p&gt;

&lt;p&gt;To complement this, we added an &lt;a href=&quot;https://github.com/defold/defold/pull/10885&quot;&gt;option to disable the creation of game objects for each skeleton bone&lt;/a&gt;, that reduces overhead when instancing animated models and enables much larger crowds of animated entities. Combined with the model instancing capability introduced earlier (allowing many copies of a mesh to be drawn efficiently), Defold’s 3D rendering stack can now handle significantly more content per frame.&lt;/p&gt;

&lt;h2 id=&quot;xbox-support&quot;&gt;Xbox support&lt;/h2&gt;

&lt;p&gt;We made significant progress toward bringing Xbox support to Defold, we shipped &lt;a href=&quot;https://github.com/defold/defold/pull/10100&quot;&gt;initial work on a DirectX 12 adapter&lt;/a&gt; and added &lt;a href=&quot;https://github.com/defold/defold/pull/9456&quot;&gt;Wasapi sound backend&lt;/a&gt; to support future Xbox-related efforts, but had to pause work mid-year due to team capacity constraints. The good news is that development will resume soon, and we are well-positioned to finish and announce official Xbox support next year.&lt;/p&gt;

&lt;h2 id=&quot;platforms&quot;&gt;Platforms&lt;/h2&gt;

&lt;p&gt;We kept all platform SDKs up to date. These updates are routine but crucial. They ensure that Defold apps meet Google’s and Apple’s latest requirements and can take advantage of new OS features.&lt;/p&gt;

&lt;h2 id=&quot;live-update&quot;&gt;Live Update&lt;/h2&gt;

&lt;p&gt;We continued expanding what can be excluded from the initial build and downloaded later – either as optional content, a patch, or a post-install update, allowing developers to reduce initial download size and ship updates more efficiently.&lt;/p&gt;

&lt;p&gt;To support this, we added the ability for more components (now &lt;a href=&quot;https://github.com/defold/defold/pull/9969&quot;&gt;sounds&lt;/a&gt;, &lt;a href=&quot;https://github.com/defold/defold/pull/10627&quot;&gt;fonts&lt;/a&gt;, &lt;a href=&quot;https://github.com/defold/defold/pull/10631&quot;&gt;GUI&lt;/a&gt;, &lt;a href=&quot;https://github.com/defold/defold/pull/10547&quot;&gt;textures&lt;/a&gt;) to define their resources at runtime and, where appropriate, create those resources. Live Update was also extended with support for &lt;a href=&quot;https://github.com/defold/defold/pull/9910&quot;&gt;ZIP files and folders&lt;/a&gt;, simplifying how projects can structure and deliver updates.&lt;/p&gt;

&lt;p&gt;We also created &lt;a href=&quot;https://defold.com/extension-pad/&quot;&gt;Play Assets Delivery extension&lt;/a&gt;, letting developers ship large or optional content as Google Play hosted asset packs instead of relying on a separate CDN. PAD supports install-time, fast-follow, and on-demand delivery modes, and asset packs can be used to distribute Live Update ZIP archives or individual files.&lt;/p&gt;

&lt;h2 id=&quot;fonts&quot;&gt;Fonts&lt;/h2&gt;

&lt;p&gt;Signed-distance field (SDF) fonts can now also be &lt;a href=&quot;https://github.com/defold/defold/pull/10627&quot;&gt;generated at runtime&lt;/a&gt;. This is especially useful for games that download fonts or support multiple locales dynamically – you can now create high-quality text on the fly.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/defold-2025-retrospective/fonts.png&quot; alt=&quot;Fonts&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In late 2025 we also took a major step toward proper international typography by introducing runtime Unicode &lt;a href=&quot;https://github.com/defold/defold/pull/11014&quot;&gt;Text Shaping&lt;/a&gt;, including right-to-left (RTL) layout, correct kerning pairs, and ligatures. The feature ships together with a revamped runtime font workflow and Font Collections, so a single font resource can dynamically associate multiple .ttf files per locale, and you can prewarm the glyph cache asynchronously to ensure shaped text is ready before it appears on screen.&lt;/p&gt;

&lt;h2 id=&quot;sound&quot;&gt;Sound&lt;/h2&gt;

&lt;p&gt;We added the ability to &lt;a href=&quot;https://github.com/defold/defold/pull/9969&quot;&gt;create sound data at runtime&lt;/a&gt; and “sound” property, making it possible to assign and play audio assets that were downloaded via Live Update, and some new options for playing sounds, like &lt;a href=&quot;https://github.com/defold/defold/pull/11239&quot;&gt;start_time and start_frame&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We also added powerful &lt;a href=&quot;https://defold.com/manuals/sound-streaming/&quot;&gt;Sound Streaming&lt;/a&gt;, allowing audio to be loaded and played in chunks instead of being fully loaded into memory up front. It’s useful both for reducing runtime memory usage and for scenarios where audio content is delivered dynamically (for example, streamed from an HTTP URL to avoid an initial download and enable updates on the server side).&lt;/p&gt;

&lt;h2 id=&quot;camera&quot;&gt;Camera&lt;/h2&gt;

&lt;p&gt;In 2025 we made the Camera component more predictable and production-friendly – both in runtime behavior and in the Editor workflow. &lt;a href=&quot;https://github.com/defold/defold/pull/9847&quot;&gt;Camera is now taking precedence&lt;/a&gt; in the default render script.&lt;/p&gt;

&lt;p&gt;We also improved the Scene View navigation including smarter zooming behaviour (&lt;a href=&quot;https://github.com/defold/defold/pull/10200&quot;&gt;zooming towards the cursor in 2D mode&lt;/a&gt;), making day-to-day scene navigation faster and refined the editor’s orthographic camera UX so what you see is what you get: correct gizmo sizing based on display dimensions and zoom, sensible property disabling in orthographic mode, validation of zoom values, and a pixel-stable camera icon.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/defold-2025-retrospective/camera.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We revamped the &lt;a href=&quot;](https://github.com/defold/defold/pull/11077)&quot;&gt;camera aspect-ratio APIs&lt;/a&gt; so they finally reflect what developers expect. We also have functions to &lt;a href=&quot;https://github.com/defold/defold/pull/11403&quot;&gt;convert between world and screen coordinates&lt;/a&gt; or to &lt;a href=&quot;https://github.com/defold/defold/pull/10624&quot;&gt;set orthographic zoom&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Orthographic cameras got also a major upgrade with &lt;a href=&quot;https://forum.defold.com/t/defold-1-11-1-has-been-released/81704&quot;&gt;orthographic projection modes&lt;/a&gt;: Fixed, Auto Fit (contain), and Auto Cover (zoom) – including editor support and dedicated Lua APIs.&lt;/p&gt;

&lt;h2 id=&quot;editor&quot;&gt;Editor&lt;/h2&gt;

&lt;p&gt;The Defold Editor received a lot of attention in 2025, continuing our focus on workflow, usability, and extensibility.&lt;/p&gt;

&lt;h3 id=&quot;performance-and-quality-of-life&quot;&gt;Performance and Quality of Life&lt;/h3&gt;

&lt;p&gt;We added several User Experience and Quality of Life improvements, including better &lt;a href=&quot;https://forum.defold.com/t/defold-1-10-4-has-been-released/81160&quot;&gt;grid configuration&lt;/a&gt;, expanded drag-and-drop workflows, color picker improvements, curve color enhancements, build cancellation, and more.&lt;/p&gt;

&lt;p&gt;We also improved atlas and GUI workflows and performance – particularly for projects with large numbers of GUI nodes – while reducing memory usage in key scenarios. Recent changes also significantly improved editor performance when &lt;a href=&quot;https://github.com/defold/defold/pull/11508&quot;&gt;working with scenes containing many large 3D models&lt;/a&gt; and we will continue to improve the performance in the next year.&lt;/p&gt;

&lt;h3 id=&quot;customizability---editor-scripts-and-ui&quot;&gt;Customizability - Editor Scripts and UI&lt;/h3&gt;

&lt;p&gt;We continued pushing the Editor in the direction of customization and tooling. Editor Scripts and UI capabilities were expanded and enabled in more contexts (&lt;a href=&quot;https://github.com/defold/defold/pull/10494&quot;&gt;Project, Debug&lt;/a&gt; and &lt;a href=&quot;https://github.com/defold/defold/pull/10263&quot;&gt;Scene&lt;/a&gt;), have &lt;a href=&quot;https://github.com/defold/defold/pull/10314&quot;&gt;HTTP server routes&lt;/a&gt;. With Editor Scripts we can edit ParticleFX emitters and modifiers, GUI ParticleFX, GUI nodes, layers, layouts and fonts, tilesource animations, tilemaps, collision groups, collision shapes, collections and game objects and even game.project and many more properties. We can also unpack ZIPs in editor scripts. And the community has already created impressive productivity tools on top of these APIs.&lt;/p&gt;

&lt;h3 id=&quot;templates&quot;&gt;Templates&lt;/h3&gt;

&lt;p&gt;We also enabled &lt;a href=&quot;https://github.com/defold/defold/pull/9854&quot;&gt;templates&lt;/a&gt; for newly created files of a given type, allowing teams to improve setup speed and standardize project conventions.&lt;/p&gt;

&lt;p&gt;The editor continues to grow stronger for smoother, more customizable development and we have more planned for 2026.&lt;/p&gt;

&lt;h2 id=&quot;languages&quot;&gt;Languages&lt;/h2&gt;

&lt;p&gt;In 2025 we experimented with both C# (for Native Extensions) and Teal (for scripting) support for Defold.&lt;/p&gt;

&lt;h3 id=&quot;teal-support&quot;&gt;Teal support&lt;/h3&gt;

&lt;p&gt;Perhaps the biggest boost for scripting in Defold was the leap towards first-class Teal support. The updated &lt;a href=&quot;https://github.com/defold/extension-teal&quot;&gt;Teal extension&lt;/a&gt; released in September integrates a Teal language server for real-time type checking and auto-completion. As you write scripts in Teal, the editor can highlight type issues, offer completions and documentation, and format Teal code on the fly.&lt;/p&gt;

&lt;h3 id=&quot;c-support&quot;&gt;C# support&lt;/h3&gt;

&lt;p&gt;In 2025 we also announced &lt;a href=&quot;https://forum.defold.com/t/defold-c-support/79479&quot;&gt;experimental C# support&lt;/a&gt; for Defold, aimed primarily at studios with existing, battle-tested C# codebases who want a more realistic migration path to Defold. To be clear, it’s not scripting, C# can be used in the same “low-level” way as C/C++ to build native extensions or even game logic, compiled via the build server. We are interested however, if there will be more interest to use C# in Defold.&lt;/p&gt;

&lt;h2 id=&quot;web&quot;&gt;Web&lt;/h2&gt;

&lt;p&gt;Our partnership with &lt;a href=&quot;https://defold.com/2025/04/25/Defold-Foundation-And-Poki-Integration/&quot;&gt;Poki&lt;/a&gt; has made web game development with Defold smoother than ever. Defold developers can now bundle and publish their games to Poki with &lt;a href=&quot;https://forum.defold.com/t/defold-x-poki-integration/80349&quot;&gt;a single click from the editor&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We also created an official Poki SDK template for new Defold projects, so key platform features (such as ad pausing, progress saving, and other Poki APIs) are available out of the box. By lowering the barrier to entry, we hope more Defold developers will bring their games to web portals—and that more web game developers will discover Defold’s performance and workflow. This work also came with a substantial set of performance and memory improvements for HTML5 builds.&lt;/p&gt;

&lt;h3 id=&quot;web-gpu&quot;&gt;Web GPU&lt;/h3&gt;

&lt;p&gt;We also made significant progress toward next-generation web graphics with &lt;a href=&quot;https://github.com/defold/defold/pull/9951&quot;&gt;WebGPU&lt;/a&gt;. Defold’s HTML5 builds have traditionally used WebGL, but this year we added experimental WebGPU support as an optional graphics backend. You can enable WebGPU via project settings or an app manifest. Early results are promising, particularly in performance-sensitive content. We expect WebGPU support to mature further in 2026 as browser support expands and the ecosystem stabilizes.&lt;/p&gt;

&lt;h2 id=&quot;extensions&quot;&gt;Extensions&lt;/h2&gt;

&lt;p&gt;Defold is built around a rich ecosystem of native extensions, and 2025 was another fruitful year for extending the engine’s capabilities. We actively maintain a set of official extensions and welcome several important improvements and additions.&lt;/p&gt;

&lt;h3 id=&quot;photon-realtime&quot;&gt;Photon Realtime&lt;/h3&gt;

&lt;p&gt;We teamed up with Exit Games to create a &lt;a href=&quot;https://defold.com/2025/08/14/Photon-Realtime-Available-For-Defold/&quot;&gt;Photon Realtime extension&lt;/a&gt; for Defold, making it easier to add multiplayer features to games. Photon Realtime handles matchmaking, real-time communication, and room management. With the extension, developers can access Photon services through a straightforward Lua API.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/defold-2025-retrospective/photon.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;spine&quot;&gt;Spine&lt;/h3&gt;

&lt;p&gt;With &lt;a href=&quot;https://forum.defold.com/t/spine-extension-4-0-0/81483&quot;&gt;Spine Extension 4.0.0&lt;/a&gt; bringing &lt;strong&gt;multi-track support&lt;/strong&gt; for GUI Spine nodes, blending, mixing, enabling layered animations, and so on, it is now much easier to maintain complex character rigs and UI animation workflows.&lt;/p&gt;

&lt;p&gt;GUI Spine callbacks now receive both animation completion and Spine events, allowing richer event-driven workflows directly from Spine timelines.&lt;/p&gt;

&lt;p&gt;It’s now possible to create spine_scene resources at runtime using resource.create_spinescene(), making it easier to generate or swap Spine content dynamically.&lt;/p&gt;

&lt;p&gt;We also added better control over animation blending via &lt;strong&gt;mix blend settings&lt;/strong&gt; per track, new physics helper functions for translating/rotating Spine physics, and improved editor-script support, so tooling can programmatically edit GUI Spine scenes and nodes. Finally, runtime character customisation got stronger with APIs for mixing/copying/clearing skins, and several stability and workflow fixes.&lt;/p&gt;

&lt;h3 id=&quot;rive&quot;&gt;Rive&lt;/h3&gt;

&lt;p&gt;Last but not least, we updated the &lt;a href=&quot;https://github.com/defold/extension-rive&quot;&gt;Rive Extension&lt;/a&gt; to use Rive’s newer high-performance renderer on all supported platforms. We shipped an &lt;a href=&quot;https://github.com/defold/extension-rive/releases/tag/8.2.0&quot;&gt;Autobind&lt;/a&gt; option in the editor (enabled by default) for automatically binding the default view model, updated build scripts, and moved the previously hardcoded blit setup into an explicit asset. We also focused on correctness across modern render backends.&lt;/p&gt;

&lt;p&gt;Rive continues to evolve quickly, and we’re proud of the improvements and new features it brings to Defold-powered UI and animation workflows. We did some rework on our side and plan to catch up with additional Rive features next year.&lt;/p&gt;

&lt;h3 id=&quot;other-extensions&quot;&gt;Other extensions&lt;/h3&gt;

&lt;p&gt;We also improved the Firebase extension to keep pace with SDK changes. The AdMob extension was updated, our Facebook Instant Games extension received a patch, and on the analytics side we integrated newer SDK versions for GameAnalytics.&lt;/p&gt;

&lt;p&gt;We also made a fork of community &lt;a href=&quot;https://github.com/dapetcu21/defold-fmod&quot;&gt;FMOD extension&lt;/a&gt; and created the &lt;a href=&quot;https://github.com/defold/extension-fmod&quot;&gt;official Defold FMOD extension&lt;/a&gt; out of it - updated to work with FMOD 2.03.09 and it works on more platforms, there’s still some work to be done, but it’s getting closer.&lt;/p&gt;

&lt;h2 id=&quot;community&quot;&gt;Community&lt;/h2&gt;

&lt;p&gt;Defold’s philosophy is to keep the core engine lean and let developers opt in to the features they need through extensions. The community has truly embraced this approach. Many extensions, tools, and improvements were built or improved through community contributions, and we want to thank everyone who created or maintained Defold extensions in 2025.&lt;/p&gt;

&lt;p&gt;We also continue to be amazed by the games our community releases each year. 2025 was no exception – a steady stream of Defold-powered games launched across PC, consoles, web, and mobile. More than ever, developers chose to share their releases with us, and we’ll wrap up many of them in our &lt;a href=&quot;https://forum.defold.com/t/defold-showreel-2025-call-for-videos/82028&quot;&gt;yearly showreel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We are also proud of one of our flagship Defold titles: &lt;strong&gt;Family Island&lt;/strong&gt;. It remains a major success and continues to be supported and updated by our partner MoonActive. This partnership pushes Defold hard in real production conditions and helps us deliver top performance and stability – particularly on mobile and in editor workflows.&lt;/p&gt;

&lt;p&gt;In June, we collaborated with &lt;strong&gt;CrazyGames&lt;/strong&gt; to host a weekend-long &lt;a href=&quot;https://forum.defold.com/t/join-the-crazygames-x-defold-web-jam/80578&quot;&gt;CrazyGames x Defold Web Jam&lt;/a&gt; focused on HTML5 games. We love partnering with platforms to showcase what Defold can do – expect more of these events in the future, as they are a great way to grow the community and highlight web development strengths.&lt;/p&gt;

&lt;p&gt;There was also the annual community &lt;a href=&quot;https://forum.defold.com/t/madewithdefold-jam-2025/80624&quot;&gt;Made With Defold Jam&lt;/a&gt;, with lots of games and discussion around Defold and game development. The theme was &lt;strong&gt;“Twist on a Classic,”&lt;/strong&gt; and participants certainly delivered. We’ve &lt;a href=&quot;https://forum.defold.com/t/pawel-jarosz-joins-the-defold-team/81840&quot;&gt;brought the jam’s organizer onto our team&lt;/a&gt;, so next year it will become the official Defold Jam – and we plan to make it bigger than ever.&lt;/p&gt;

&lt;h2 id=&quot;whats-next&quot;&gt;What’s next?&lt;/h2&gt;

&lt;p&gt;Defold has come a long way, and we didn’t even properly celebrate its 5-year anniversary of becoming source-available. Yes, Defold was first released in 2015 and its source code was released publicly in 2020!&lt;/p&gt;

&lt;p&gt;If you want to, you can always &lt;a href=&quot;https://defold.com/contribute/&quot;&gt;contribute to Defold&lt;/a&gt; or &lt;a href=&quot;https://defold.com/donate/&quot;&gt;support Defold&lt;/a&gt;, we really appreciate your help!&lt;/p&gt;

&lt;p&gt;Time flies, but even though we ship Defold in frequent, incremental, but usually small and not so shouting steps, a retrospective makes it clear how much work and care went into the engine and its ecosystem.&lt;/p&gt;

&lt;p&gt;We will mainly focus on further Editor customisation options with Editor Scripts and UI and Editor performance, better rendering and 3D support (animations, physics), Xbox platform, engine size optimisations and further modularization, new extensions and many more! Stay tuned for 2026 - there’s a lot ahead!&lt;/p&gt;
</description>
			<pubDate>Fri, 02 Jan 2026 00:00:00 +0000</pubDate>
			<link>https://www.defold.com/2026/01/02/Defold-2025-Retrospective/</link>
			<guid isPermaLink="true">https://www.defold.com/2026/01/02/Defold-2025-Retrospective/</guid>
		</item>
		
		<item>
			<title>Defold release 1.11.2</title>
			<description>&lt;h1 id=&quot;defold-1112&quot;&gt;Defold 1.11.2&lt;/h1&gt;

&lt;h2 id=&quot;localisation-of-the-editor&quot;&gt;Localisation of the Editor!&lt;/h2&gt;

&lt;p&gt;We’ve started localizing the editor UI! While the process isn’t fully complete yet, many parts of the editor have already been translated — and we’re looking for localization contributors.&lt;/p&gt;

&lt;p&gt;We host our &lt;a href=&quot;https://crowdin.com/project/defold&quot;&gt;localization project&lt;/a&gt; on Crowdin. Join the project, choose the language you’d like to contribute to, and start translating the editor strings directly in Crowdin. All UI text is stored in the &lt;a href=&quot;https://github.com/defold/defold/blob/dev/editor/resources/localization/en.editor_localization&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;en.editor_localization&lt;/code&gt;&lt;/a&gt; source file, and Crowdin automatically exports the translated files back into the repository.&lt;/p&gt;

&lt;p&gt;If your language is missing, use the &lt;em&gt;Request language&lt;/em&gt; option in Crowdin, and we’ll add it for you. When translating, make sure to preserve placeholders such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;{template}&lt;/code&gt; exactly as they appear in the source string — we use the &lt;a href=&quot;https://unicode-org.github.io/icu/userguide/format_parse/messages/&quot;&gt;ICU message format&lt;/a&gt; for variable interpolation.&lt;/p&gt;

&lt;p&gt;Once translations are approved in Crowdin, they will be automatically incorporated into the editor.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11278&quot;&gt;#6553&lt;/a&gt;) Add gui.cancel_animations() to cancel one or all animation(s) at the same time (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11281&quot;&gt;#11281&lt;/a&gt;) Add Dualsense driver mapping for Linux (by wfzyx)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11363&quot;&gt;#11360&lt;/a&gt;) Simplify &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dmGraphics::IsTextureType3D(TextureType)&lt;/code&gt; (by vil02)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11311&quot;&gt;#7930&lt;/a&gt;) Automatically save any changes in the editor whenever it loses focus (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11359&quot;&gt;#8495,#11007&lt;/a&gt;) Enhanced the orthographic camera behavior in the editor for better usability and accuracy (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11332&quot;&gt;#11298&lt;/a&gt;) Issue 11298 resolve sound deadlock on Windows (by deurell)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11355&quot;&gt;#11330&lt;/a&gt;) Add caching for the “vanilla” engine when downloaded through Bob.jar to avoid repeated downloads (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11356&quot;&gt;#11356&lt;/a&gt;) Provide debug symbols for all HTML5 target architectures and build configurations (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11366&quot;&gt;#11366&lt;/a&gt;) HTML5 profiler now reports the correct memory usage (by smagnuso)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11315&quot;&gt;#11315&lt;/a&gt;) Add support for running the Android tools in bob from the commandline (by britzl)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11380&quot;&gt;#11380&lt;/a&gt;) Added dmResource::GetWithExt() to dmsdk for more robust resource loading (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;del&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11369&quot;&gt;#9917&lt;/a&gt;) Fix frustrum culling for sprites with pivot point (by ekharkunov)&lt;/del&gt; Removed from release&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11398&quot;&gt;#11397&lt;/a&gt;) Fix for when bitmap font uses 4 channels which caused a crash (by JCash)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11301&quot;&gt;#11290&lt;/a&gt;) Fix Tile Source Collision Group colors in Outline (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11337&quot;&gt;#11314&lt;/a&gt;) Feed positions and normals to all vertex attributes with a matching semantic-type (by matgis)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11375&quot;&gt;#7713&lt;/a&gt;) Ensure the camera component icon (gizmo) maintains a pixel-stable size on screen (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11365&quot;&gt;#11365&lt;/a&gt;) Update welcome screen for better discoverability.   (by AGulev)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11438&quot;&gt;#11438&lt;/a&gt;) Editor: Fix page count mismatch detection and error message for sprites (by matgis)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;engine&quot;&gt;Engine&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11278&quot;&gt;#6553&lt;/a&gt;) &lt;strong&gt;‘Add gui.cancel_animations() to cancel one or all animation(s) at the same time’&lt;/strong&gt; by JCash
We’ve renamed the function to better match &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;go.cancel_animations()&lt;/code&gt;
The function can now cancel a single animation of a node, or all animations at the same time:&lt;/p&gt;
&lt;div class=&quot;language-lua highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;gui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;cancel_animations&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;node&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;position.x&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;-- cancel a single animation&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;gui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;cancel_animations&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;node&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;-- cancel all animations&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;⚠️ The old function &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gui.cancel_animation()&lt;/code&gt; is now deprecated. Please use the new one instead!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11281&quot;&gt;#11281&lt;/a&gt;) &lt;strong&gt;‘Add Dualsense driver mapping for Linux’&lt;/strong&gt; by wfzyx&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11363&quot;&gt;#11360&lt;/a&gt;) &lt;strong&gt;‘Simplify &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dmGraphics::IsTextureType3D(TextureType)&lt;/code&gt;‘&lt;/strong&gt; by vil02
This resolves &lt;a href=&quot;https://clang.llvm.org/extra/clang-tidy/checks/misc/redundant-expression.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;misc-redundant-expression&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I did not observe more warnings of that type in defold code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11332&quot;&gt;#11298&lt;/a&gt;) &lt;strong&gt;‘Issue 11298 resolve sound deadlock on Windows’&lt;/strong&gt; by deurell
Resolve sound deadlock on Windows when disconnecting sound device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11355&quot;&gt;#11330&lt;/a&gt;) &lt;strong&gt;‘Add caching for the “vanilla” engine when downloaded through Bob.jar to avoid repeated downloads’&lt;/strong&gt; by AGulev
To keep Bob.jar lightweight, it doesn’t include all platform architectures and symbols. When needed, the “vanilla” engine is downloaded from the CDN.
This update introduces caching for those downloaded files in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.internal&lt;/code&gt; folder, avoiding repeated downloads on each bundle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11356&quot;&gt;#11356&lt;/a&gt;) &lt;strong&gt;‘Provide debug symbols for all HTML5 target architectures and build configurations’&lt;/strong&gt; by AGulev
HTML5 symbols are now provided for all build types and platforms: a folder &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;project_name&amp;gt;_symbols&lt;/code&gt; containing all symbols is created alongside the bundle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11366&quot;&gt;#11366&lt;/a&gt;) &lt;strong&gt;‘HTML5 profiler now reports the correct memory usage’&lt;/strong&gt; by smagnuso
On HTML5, our in game profiler now returns the memory usage as reported by Emscripten.
This affects both our in game profiler &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Memory&lt;/code&gt; variable, as well as the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;profiler.get_memory_usage()&lt;/code&gt; Lua function.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11315&quot;&gt;#11315&lt;/a&gt;) &lt;strong&gt;‘Add support for running the Android tools in bob from the commandline’&lt;/strong&gt; by britzl
Added the ability to run&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aapt2&lt;/code&gt; (Android Asset Packaging Tool), &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundletool&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jarsigner&lt;/code&gt; from the commandline.&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;java &lt;span class=&quot;nt&quot;&gt;-cp&lt;/span&gt; bob.jar com.dynamo.bob.tools.AndroidTools aapt2 &lt;span class=&quot;nb&quot;&gt;link&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--proto-format&lt;/span&gt; ....
java &lt;span class=&quot;nt&quot;&gt;-cp&lt;/span&gt; bob.jar com.dynamo.bob.tools.AndroidTools jarsigner &lt;span class=&quot;nt&quot;&gt;-verbose&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-keystore&lt;/span&gt; debug.keystore ...
java &lt;span class=&quot;nt&quot;&gt;-cp&lt;/span&gt; bob.jar com.dynamo.bob.tools.AndroidTools bundletool build-apks &lt;span class=&quot;nt&quot;&gt;--bundle&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; ...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11380&quot;&gt;#11380&lt;/a&gt;) &lt;strong&gt;‘Added dmResource::GetWithExt() to dmsdk for more robust resource loading’&lt;/strong&gt; by JCash
This allows the developer to pass in an expected extension, in order to make sure that the resources path passed in is the correct type. This is especially helpful if the code is data driven and the developer doesn’t know the resource path beforehand.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://defold.com/ref/beta/engine-resource-src-dmsdk-resource-resource-hpp/#GetWithExt:factory-path_hash-ext_hash-resource&quot;&gt;Documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;del&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11369&quot;&gt;#9917&lt;/a&gt;) &lt;strong&gt;‘Fix frustrum culling for sprites with pivot point’&lt;/strong&gt; by ekharkunov&lt;/del&gt;
&lt;del&gt;Fixed culling for sprites with pivot points. Also implemented some optimization on how geometry data calculated and stored between batches. So no it should be a bit faster in terms of calculation but consume some memory to store cached information.&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;###&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11398&quot;&gt;#11397&lt;/a&gt;) &lt;strong&gt;‘Fix for when bitmap font uses 4 channels which caused a crash’&lt;/strong&gt; by JCash&lt;/p&gt;

&lt;h2 id=&quot;editor&quot;&gt;Editor&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11311&quot;&gt;#7930&lt;/a&gt;) &lt;strong&gt;‘Automatically save any changes in the editor whenever it loses focus’&lt;/strong&gt; by AGulev
Introduced a new option that automatically saves all open files in the editor whenever it loses focus.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11359&quot;&gt;#8495,#11007&lt;/a&gt;) &lt;strong&gt;‘Enhanced the orthographic camera behavior in the editor for better usability and accuracy’&lt;/strong&gt; by AGulev&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Orthographic camera gizmo size in the scene view reflects &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.project&lt;/code&gt; display width/height and Orthographic Zoom.&lt;/li&gt;
  &lt;li&gt;Orthographic camera FOV is now disabled when Orthographic Projection is enabled.&lt;/li&gt;
  &lt;li&gt;Perspective-only fields are disabled in orthographic mode.&lt;/li&gt;
  &lt;li&gt;Orthographic Zoom must be greater than zero; invalid values show an error.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11301&quot;&gt;#11290&lt;/a&gt;) &lt;strong&gt;‘Fix Tile Source Collision Group colors in Outline’&lt;/strong&gt; by matgis&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11337&quot;&gt;#11314&lt;/a&gt;) &lt;strong&gt;‘Feed positions and normals to all vertex attributes with a matching semantic-type’&lt;/strong&gt; by matgis
The editor now supplies positions and normals to all vertex attributes with a matching semantic type when rendering objects in the Scene View. This reverts a change introduced in #10635, which caused a regression for shaders that make use of both world-space and local-space attributes of the same semantic type.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11375&quot;&gt;#7713&lt;/a&gt;) &lt;strong&gt;‘Ensure the camera component icon (gizmo) maintains a pixel-stable size on screen’&lt;/strong&gt; by AGulev
Ensure the camera component’s icon in the editor stays a constant size regardless of scene scale.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/7eed01ba-e81b-452a-9ea7-d116b02317ed&quot; width=&quot;512&quot; alt=&quot;Camera component icon staying a constant size in the editor&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11365&quot;&gt;#11365&lt;/a&gt;) &lt;strong&gt;‘Update welcome screen for better discoverability.  ‘&lt;/strong&gt; by AGulev
Moved the Templates, Samples, and Tutorials sections from a submenu to the root level to improve discoverability and make them easier to access.&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;2408&quot; height=&quot;1808&quot; alt=&quot;Updated Defold welcome screen with templates, samples, and tutorials at the top level&quot; src=&quot;https://github.com/user-attachments/assets/acfb6d1d-7965-4f52-97dc-bf3213ee45c4&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIX&lt;/strong&gt;: (&lt;a href=&quot;https://github.com/defold/defold/pull/11438&quot;&gt;#11438&lt;/a&gt;) &lt;strong&gt;‘Editor: Fix page count mismatch detection and error message for sprites’&lt;/strong&gt; by matgis
Fix issue where paged Materials were erroneously detected as unpaged when inspecting Sprite properties.&lt;/p&gt;
</description>
			<pubDate>Mon, 03 Nov 2025 00:00:00 +0000</pubDate>
			<link>https://www.defold.com/2025/11/03/Defold-1-11-2/</link>
			<guid isPermaLink="true">https://www.defold.com/2025/11/03/Defold-1-11-2/</guid>
		</item>
		
	</channel>
</rss>
