Open-source code and free assets
One command, dozens of packages
Kai wants sparkly explosions in Hyper Shards and runs one command: npm install with a particle library. Seconds later the node_modules folder holds dozens of new packages. Kai only asked for one.
Every package is code someone else wrote, so it is copyrighted. We can still ship most of it in a game we sell, because it is open source: code whose authors publish it with a license that lets anyone use, change and share it. Each license has its own rules, though.
Permissive licenses: MIT and Apache 2.0
- MITUse, change, share and sell. The condition: keep the copyright notice and license text with every copy. The code comes with no warranty, so if it breaks, that is on us.
- Apache 2.0The same freedoms, plus a patent license from contributors for their code. We must mark files we changed, and it gives no right to use the project's trademarks.
Permissive licenses allow almost anything, including use in a closed game we sell, as long as we follow a few conditions.
Copyleft: the GPL shares alike
Copyleft licenses pass their freedom forward. The best known is the GPL (GNU General Public License). It allows commercial use, even selling. But if we distribute a program that includes GPL code, the whole program must be released under the GPL, with its complete source code available to the people who get it.
That is "share alike" for code. For Hyper Shards, a closed game we sell, one GPL package inside would mean publishing all our source code, or taking the package out.
Quick check
Which license would require us to release all of Hyper Shards' source code if we shipped a package under it inside the game?
- MIT
- Apache 2.0
- GPL-3.0
Show the answer
GPL-3.0
The GPL is copyleft: a larger program that includes GPL code must be shared under the GPL, with its source. MIT and Apache 2.0 only ask us to keep their notices (and, for Apache, mark our changes).
Packages have packages
Every npm package declares its license in its package.json with a short standard code called an SPDX identifier: "MIT", "Apache-2.0", "GPL-3.0-only". "(MIT OR Apache-2.0)" means we may pick either. "UNLICENSED" means the author grants nobody the right to use it.
Packages depend on other packages, which have their own dependencies: a whole tree. npm ls --all prints the tree, and license-checking tools list every license in it. We check before installing, and again before each release.
License scan
1Hyper Shards dependencies (made-up names)2star-particles MIT3tiny-tween Apache-2.04wave-physics GPL-3.0-only5pixel-text (MIT OR Apache-2.0)6sound-sprite UNLICENSED
Before paid Hyper Shards ships, which two packages must the team replace, or get the author's written permission for?
- Lines 2 and 3
- Lines 4 and 6
- Lines 3 and 5
- Line 5 only
Show the answer
Lines 4 and 6
wave-physics is GPL, so shipping it would mean releasing all our code under the GPL. sound-sprite grants nobody a license at all. MIT and Apache-2.0 are fine with their notices, and with an OR license we pick the one we prefer.
Notices travel with the game
Our credits and license list already tracks every asset (the Copyright and licenses lesson explains it). Code adds a duty: MIT, Apache and most open-source licenses require their copyright notice and license text to travel with the game, not just sit in our repo.
So the studio ships a THIRD-PARTY-NOTICES.txt file and an "Open-source licenses" screen in the settings menu. An Apache package may include a NOTICE file, whose credits we pass on too. Build tools can collect all this, and we read the result before release.
Free asset licenses, element by element
CC0 and the license basics are in the Copyright and licenses lesson. Here is what each Creative Commons element means for a real sprite, sound or font:
- BY: credit as askedCreative Commons recommends TASL: Title, Author, Source (a link) and License. For example: "Laser Pack" by Ana Ruiz, OpenGameArt, CC BY 4.0.
- SA: share alikeIf we change the asset, our changed version must use the same license. Creative Commons counts music synced to video, like a trailer, as a change too.
- ND: no derivativesUse it exactly as it is. No recolouring, cropping, speeding up or cutting a loop.
- NC: non-commercialNot for a work mainly aimed at earning money. A game that earns from sales or ads is commercial.
- Fonts: SIL Open Font LicenseOFL fonts can be built into a game we sell. We may not sell the font by itself, and an edited version must drop its reserved name.
Asset check
Free download! 40 laser sounds. License: CC BY-ND 4.0
Kai wants one of these lasers, sped up and cut shorter, in paid Hyper Shards. Is that allowed?
- Yes, because the pack is a free download
- No. ND means no changes, so we use it unchanged with a credit, or find a pack that allows edits
- Yes, as long as we credit the creator
Show the answer
No. ND means no changes, so we use it unchanged with a credit, or find a pack that allows edits
ND (no derivatives) allows only unchanged copies, so speeding it up and cutting it is not allowed, credit or not. Used unchanged with a proper credit, it is fine even in a paid game, because the license has no NC.
Where good free assets come from
Free to download is not the same as free to use in a game we sell. These sources are popular with game makers, and each works differently:
- KenneyGame asset packs released as CC0: free even for commercial games, no credit required (giving one is kind). The Kenney logo is not included.
- OpenGameArtEach asset has its own license: CC0, CC BY, CC BY-SA, OGA-BY or GPL. Read its license notice, and treat previews as all rights reserved unless it says otherwise.
- itch.io asset packsEach creator sets their own terms, on the page or in a file in the download. No license stated? Ask the creator in writing and keep the reply.
Bolt says: Save each license page (a screenshot or PDF, with the date) next to the asset on our list. If a license changes later, we can show what we agreed to.
True story: the fee that never started
Unity is a commercial game engine, the toolkit behind many games, and Unity writes its own terms. In 2023, Unity announced a new Runtime Fee: from 1 January 2024, games made with Unity would pay a fee based on how many times they were installed.
Many developers objected. On 22 September 2023, Unity's Marc Whitten wrote, "I want to start with this: I am sorry," and changed the plan. On 12 September 2024, Unity cancelled the fee for games. It never took effect.
The terms of the code and tools we build on can change. We read them, and keep a dated copy.
Source: Unity is canceling the Runtime Fee (12 September 2024), unity.com
Bolt says: Next: EULAs, the license players agree to when they get our games.
Fact-checked 11 October 2026
- Choose a License: licenses choosealicense.com
- npm: package.json license field docs.npmjs.com
- Creative Commons: about the licenses creativecommons.org
- Creative Commons: recommended attribution wiki.creativecommons.org
- Creative Commons FAQ creativecommons.org
- SIL Open Font License FAQ openfontlicense.org
- Kenney: support kenney.nl
- OpenGameArt FAQ opengameart.org
- Unity: plan pricing and packaging updates (the Runtime Fee announcement, 2023) discussions.unity.com
- Unity: an open letter to our community (22 September 2023) unity.com
- Unity is canceling the Runtime Fee (12 September 2024) unity.com
- Unity: pricing updates unity.com