split the maps

This commit is contained in:
zombie maniac 2023-09-28 19:53:22 -04:00
parent 416b55826a
commit 3b5bc0158b
Signed by untrusted user: nbrooks211
GPG key ID: F43C85C0DF0C334E
6 changed files with 161 additions and 14 deletions

22
LICENSE Normal file
View file

@ -0,0 +1,22 @@
Copyright 2023 Hannah "EMBYR" Crawford
Copyright 2019 Josh "Shifty" Palmer
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

113
README.md Normal file
View file

@ -0,0 +1,113 @@
![](https://raw.githubusercontent.com/Shfty/qodot-extras/master/graphics/qodot_logo_small.png)
Quake *.map* file support for Godot 4.x. **For the original Godot 3.x plugin, see [Qodot-Plugin](https://github.com/QodotPlugin/qodot-plugin/).**
# Before you enable Qodot
1. [Use Godot Engine .NET / mono build](https://godotengine.org/download/). **You can still use GDScript with Mono build.**
2. [Download 7.0 .NET SDK](https://dotnet.microsoft.com/en-us/download) and run the 7.0 SDK installer.
4. In your Godot Project, go to Project > Tools > C# > Create C# Solution.
5. Build your C# scripts by pressing <kbd>Alt</kbd> + <kbd>B</kbd>, or click the square *Build* button in the top-right corner.
6. Go to Project > Project Settings > Plugins, then enable Qodot.
If you modify any C# scripts in the plugin, press <kbd>Alt</kbd> + <kbd>B</kbd> or click the square *Build* button to bring back the "Full Build" toolbar in the 3D Viewport.
# About this version
Latest Tested Engine Version: **4.1.stable.mono**
This is a port of Qodot to Godot 4.x. It requires the .NET build of Godot to import maps correctly. Games can be exported with the standard editor/export templates however.
Unlike [Qodot-plugin](https://github.com/QodotPlugin/qodot-plugin/), this [Qodot](https://github.com/QodotPlugin/Qodot/) repository is currently the official version of the plugin and where active development continues. You can also find the plugin on Godot's Asset Library.
## Documentation
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.
## Overview
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.
![](https://raw.githubusercontent.com/wiki/Shfty/qodot-plugin/images/2-usage/in-editor.gif)
## Features
- Natively import `.map` files into Godot and convert them into a usable scene tree
- Supports
- Brush geometry
- Textures and customized UVs
- Convex and concave collision volumes
- Gameplay entities
- FGD (Forge Game Data) export for custom game definitions
- Configurable scene population
- Leverages the map format's classname and key/value property systems
- Spawn and configure custom Godot scenes and scripts based on entities defined in the map editor
- Define the visual and collision properties of brush entities on a per-classname basis
- TrenchBroom Integration
- Simple, intuitive map editor with a strong feature set
- TrenchBroom game configurations can be exported for tighter workflow integration
- Nested TrenchBroom groups can be used to build a tree hierarchy from the format's standard flat structure
## Showcase
[![](https://raw.githubusercontent.com/Shfty/qodot-extras/master/showcase/sunkper-props-thumbnail.jpg)](https://raw.githubusercontent.com/Shfty/qodot-extras/master/showcase/sunkper-props.jpg)
Assorted props by [@SunkPer](https://twitter.com/SunkPer)
[![](https://raw.githubusercontent.com/Shfty/qodot-extras/master/showcase/sunkper-summer-island.gif)](https://cdn.discordapp.com/attachments/651209074930876416/659427504309796876/Project_Summer_Island_WIP_25.mp4)
Summer Island by [@SunkPer](https://twitter.com/SunkPer)
## Thesis
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.
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.
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.
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.
## Extra Content
[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.
## Qodot Elsewhere
[Discord - Qodot](https://discord.gg/c72WBuG)
[Reddit - Qodot](https://www.reddit.com/r/godot/comments/e41ldk/qodot_quake_map_file_support_for_godot/)
[Godot Forums - Qodot](https://godotforums.org/discussion/21573/qodot-quake-map-file-support-for-godot)
[Godot Asset Library - Qodot 3.x](https://godotengine.org/asset-library/asset/446)
[Hannah's Twitter](https://twitter.com/STUDIOEMBYR)
## Credits
[Josh "Shifty" Palmer](https://twitter.com/ShiftyAxel) - Original Qodot plugin
[Hannah "EMBYR" Crawford](https://twitter.com/STUDIOEMBYR) - Godot 4.x & C# port & maintainance
[Kristian Duske](https://twitter.com/kristianduske) - For creating TrenchBroom and inspiring the creation of Qodot
[Arkii](https://github.com/GoomiChan) - For example code and handy documentation of the Valve 220 format
[TheRektafire](https://github.com/TheRektafire) - For a variety of useful tidbits on the .map format
[Ember](https://github.com/deertears/) - For creating the user guide
[Calinou](https://github.com/Calinou) - For making Qodot work on case-sensitive systems
[SunkPer](https://twitter.com/SunkPer) - For showcase screenshots
[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.
[fossegutten](https://github.com/fossegutten) - For a typed GDScript pass
[Corruptinator](https://github.com/Corruptinator) - For the idea of using TrenchBroom groups as a scene tree.
[grenappels](https://github.com/grenappels) - For implementing smoothed brush normal edge splitting
[FreePBR.com](https://freepbr.com) - For royalty-free PBR example textures

2
assets

@ -1 +1 @@
Subproject commit a12c85395fe3a3aac9ace8192983746af2ccfd75
Subproject commit 62a2a9b0ebae9ef7da4ce9e3b9d1d30753ecb95d

9
devworld.tscn Normal file
View file

@ -0,0 +1,9 @@
[gd_scene load_steps=2 format=3 uid="uid://266v5x36xoa0"]
[ext_resource type="ArrayMesh" uid="uid://cfm21e1rmsbvt" path="res://assets/maps/devworld.obj" id="1_67d5q"]
[node name="devworld" type="Node3D"]
[node name="Devworld" type="MeshInstance3D" parent="."]
transform = Transform3D(0.04, 0, 0, 0, -1.74846e-09, 0.04, 0, -0.04, -1.74846e-09, 0, 0, 0)
mesh = ExtResource("1_67d5q")

9
hazardcourse.tscn Normal file
View file

@ -0,0 +1,9 @@
[gd_scene load_steps=2 format=3 uid="uid://d0nismfmty8jc"]
[ext_resource type="ArrayMesh" uid="uid://ctefgtnmh5x2g" path="res://assets/maps/hazardcourse.obj" id="1_01pb3"]
[node name="hazardcourse" type="Node3D"]
[node name="Hazardcourse" type="MeshInstance3D" parent="."]
transform = Transform3D(0.04, 0, 0, 0, -1.74846e-09, 0.04, 0, -0.04, -1.74846e-09, 0, 0, 0)
mesh = ExtResource("1_01pb3")

File diff suppressed because one or more lines are too long