|
| 1 | + |
| 2 | + |
| 3 | +Quake *.map* file support for Godot 4.x. **For the original Godot 3.x plugin, see [Qodot-Plugin](https://github.com/QodotPlugin/qodot-plugin/).** |
| 4 | + |
| 5 | +# Before you enable Qodot |
| 6 | + |
| 7 | +1. [Use Godot Engine .NET / mono build](https://godotengine.org/download/). |
| 8 | +2. [Download .NET SDK](https://dotnet.microsoft.com/en-us/download), **must be .NET SDK 7.0 or higher**. |
| 9 | +3. Run the .NET SDK installer, ensure it completes successfully. |
| 10 | +4. Go to Project > C# > Create C# Solution. Then click *Build* in the top-right corner. |
| 11 | +5. Go to Project > Project Settings > Plugins, then enable Qodot. |
| 12 | + |
| 13 | +# About this version |
| 14 | + |
| 15 | +Latest Tested Engine Version: **4.0.stable.mono** |
| 16 | + |
| 17 | +This is a port of Qodot to Godot 4.x. It requires the .NET build of Godot to function correctly. |
| 18 | + |
| 19 | +Moving forward this will be the official version of the plugin and where active development will continue. |
| 20 | + |
| 21 | +## Documentation |
| 22 | + |
| 23 | +Consult the [Qodot User Guide](https://qodotplugin.github.io/). Documentation may not be up to date for 4.0, but most things should be the same. |
| 24 | + |
| 25 | +## Overview |
| 26 | + |
| 27 | +Qodot extends the Godot editor to import Quake *.map* files, and provides a data-driven framework for converting the entities and brushes contained therein into a custom node hierarchy. |
| 28 | + |
| 29 | + |
| 30 | + |
| 31 | +## Features |
| 32 | + |
| 33 | +- Natively import `.map` files into Godot and convert them into a usable scene tree |
| 34 | +- Supports |
| 35 | + - Brush geometry |
| 36 | + - Textures and customized UVs |
| 37 | + - Convex and concave collision volumes |
| 38 | + - Gameplay entities |
| 39 | + - FGD (Forge Game Data) export for custom game definitions |
| 40 | +- Configurable scene population |
| 41 | + - Leverages the map format's classname and key/value property systems |
| 42 | + - Spawn and configure custom Godot scenes and scripts based on entities defined in the map editor |
| 43 | + - Define the visual and collision properties of brush entities on a per-classname basis |
| 44 | +- TrenchBroom Integration |
| 45 | + - Simple, intuitive map editor with a strong feature set |
| 46 | + - TrenchBroom game configurations can be exported for tighter workflow integration |
| 47 | + - Nested TrenchBroom groups can be used to build a tree hierarchy from the format's standard flat structure |
| 48 | + |
| 49 | +## Showcase |
| 50 | + |
| 51 | +[](https://raw.githubusercontent.com/Shfty/qodot-extras/master/showcase/sunkper-props.jpg) |
| 52 | + |
| 53 | +Assorted props by [@SunkPer](https://twitter.com/SunkPer) |
| 54 | + |
| 55 | +[](https://cdn.discordapp.com/attachments/651209074930876416/659427504309796876/Project_Summer_Island_WIP_25.mp4) |
| 56 | + |
| 57 | +Summer Island by [@SunkPer](https://twitter.com/SunkPer) |
| 58 | + |
| 59 | +## Thesis |
| 60 | + |
| 61 | +Qodot was created to solve a long-standing problem with modern game engines: The lack of simple, accessible level editing functionality for users without 3D modeling expertise. |
| 62 | + |
| 63 | +Unity, Unreal and Godot are all capable of CSG to some extent or other with varying degrees of usability, but lack fine-grained direct manipulation of geometry, as well as per-face texture and UV manipulation. It's positioned more as a prototyping tool to be used ahead of a proper art pass than a viable methodology. |
| 64 | + |
| 65 | +Conversely, dedicated 3D modeling packages like Maya or Blender are very powerful and can iterate fast in experienced hands, but have an intimidating skill floor for users with a programming-focused background that just want to build levels for their game. |
| 66 | + |
| 67 | +Enter the traditional level editor: Simple tools built for games like Doom, Quake and Duke Nukem 3D that operate in the design language of a video game and are created for use by designers, artists and programmers alike. Thanks to years of community support, classic Quake is still alive, kicking, and producing high-quality content and mapping software alike. This continued popularity combined with its simplicity means the Quake *.map* format presents a novel solution. |
| 68 | + |
| 69 | +## Extra Content |
| 70 | + |
| 71 | +[The Qodot extra content repository](https://github.com/Shfty/qodot-extras) contains a set of additional resources, such as map editor plugins, logo graphics, showcase content and screenshots. |
| 72 | + |
| 73 | +## Qodot Elsewhere |
| 74 | + |
| 75 | +[Discord - Qodot](https://discord.gg/c72WBuG) |
| 76 | + |
| 77 | +[Reddit - Qodot](https://www.reddit.com/r/godot/comments/e41ldk/qodot_quake_map_file_support_for_godot/) |
| 78 | + |
| 79 | +[Godot Forums - Qodot](https://godotforums.org/discussion/21573/qodot-quake-map-file-support-for-godot) |
| 80 | + |
| 81 | +[Godot Asset Library - Qodot 3.x](https://godotengine.org/asset-library/asset/446) |
| 82 | + |
| 83 | +[Hannah's Twitter](https://twitter.com/STUDIOEMBYR) |
| 84 | + |
| 85 | +## Credits |
| 86 | + |
| 87 | +[Josh "Shifty" Palmer](https://twitter.com/ShiftyAxel) - Original Qodot plugin |
| 88 | + |
| 89 | +[Hannah "EMBYR" Crawford](https://twitter.com/STUDIOEMBYR) - Godot 4.x & C# port & maintainance |
| 90 | + |
| 91 | +[Kristian Duske](https://twitter.com/kristianduske) - For creating TrenchBroom and inspiring the creation of Qodot |
| 92 | + |
| 93 | +[Arkii](https://github.com/GoomiChan) - For example code and handy documentation of the Valve 220 format |
| 94 | + |
| 95 | +[TheRektafire](https://github.com/TheRektafire) - For a variety of useful tidbits on the .map format |
| 96 | + |
| 97 | +[Ember](https://github.com/deertears/) - For creating the user guide |
| 98 | + |
| 99 | +[Calinou](https://github.com/Calinou) - For making Qodot work on case-sensitive systems |
| 100 | + |
| 101 | +[SunkPer](https://twitter.com/SunkPer) - For showcase screenshots |
| 102 | + |
| 103 | +[lordee](https://github.com/lordee), [DistractedMOSFET](https://github.com/distractedmosfet) and [winadam](https://github.com/winadam) - For laying the groundwork of the FGD export and entity scripting systems. |
| 104 | + |
| 105 | +[fossegutten](https://github.com/fossegutten) - For a typed GDScript pass |
| 106 | + |
| 107 | +[Corruptinator](https://github.com/Corruptinator) - For the idea of using TrenchBroom groups as a scene tree. |
| 108 | + |
| 109 | +[grenappels](https://github.com/grenappels) - For implementing smoothed brush normal edge splitting |
| 110 | + |
| 111 | +[FreePBR.com](https://freepbr.com) - For royalty-free PBR example textures |
0 commit comments