- Implemented registration of draw-relief-icons with WebGL2LayerFramework, removing module-level renderer state. - Updated drawRelief, undrawRelief, and rerenderReliefIcons functions to utilize framework methods. - Ensured SVG fallback path is preserved and functional. - Added performance criteria for rendering relief icons. - Created tests to verify fallback integration and visual parity with existing SVG output. test: Add WebGL2 fallback integration verification - Introduced new tests for WebGL2LayerFramework to ensure no-ops when fallback is active. - Verified that drawRelief routes to SVG when WebGL2 is unavailable. - Confirmed visual parity between SVG output and existing implementation. - Ensured all tests pass with updated coverage metrics. |
||
|---|---|---|
| .docker | ||
| .github | ||
| _bmad | ||
| _bmad-output | ||
| public | ||
| scripts | ||
| src | ||
| tests | ||
| .gitignore | ||
| biome.json | ||
| CODE_OF_CONDUCT.md | ||
| Dockerfile | ||
| ISSUE_TEMPLATE.md | ||
| LICENSE | ||
| netlify.toml | ||
| package-lock.json | ||
| package.json | ||
| playwright.config.ts | ||
| README.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
| vitest.browser.config.ts | ||
Fantasy Map Generator
Azgaar's Fantasy Map Generator is a free web application that helps fantasy writers, game masters, and cartographers create and edit fantasy maps.
Link: azgaar.github.io/Fantasy-Map-Generator.
Refer to the project wiki for guidance. The current progress is tracked in Trello. Some details are covered in my old blog Fantasy Maps for fun and glory.
Join our Discord server and Reddit community to share your creations, discuss the Generator, suggest ideas and get the most recent updates.
Contact me via email if you have non-public suggestions. For bug reports please use GitHub issues or #fmg-bugs channel on Discord. If you are facing performance issues, please read the tips.
You can support the project on Patreon.
Inspiration:
-
Martin O'Leary's Generating fantasy maps
-
Amit Patel's Polygonal Map Generation for Games
-
Scott Turner's Here Dragons Abound
Contribution
Pull requests are highly welcomed. The codebase is messy and I will appreciate if you start with minor changes. Check out the data model before contributing.
The codebase is gradually transitioning from vanilla JavaScript to TypeScript while maintaining compatibility with the existing generation pipeline and old .map user files.
The expected future architecture is based on a separation between world data, procedural generation, interactive editing, and rendering. The application is conceptually divided into four main layers: world data and styles (state), generators (model), editors (controllers), renderers (view).
Flow: settings → generators → world data → renderer UI → editors → world data → renderer.
The data layer must contain no logic and no rendering code. Generators implement the procedural world simulation. Editors implement interactive editing tools used by the user. They perform controlled mutations of the world state. Editors can be viewed as interactive generators. The renderer converts the world state into SVG or WebGl graphics. Renderer must be pure visualization step and not modify world data.