forked from funnymemellama/funnymemellama
split the maps
This commit is contained in:
parent
416b55826a
commit
3b5bc0158b
6 changed files with 161 additions and 14 deletions
22
LICENSE
Normal file
22
LICENSE
Normal 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
113
README.md
Normal 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
2
assets
|
@ -1 +1 @@
|
||||||
Subproject commit a12c85395fe3a3aac9ace8192983746af2ccfd75
|
Subproject commit 62a2a9b0ebae9ef7da4ce9e3b9d1d30753ecb95d
|
9
devworld.tscn
Normal file
9
devworld.tscn
Normal 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
9
hazardcourse.tscn
Normal 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")
|
20
world.tscn
20
world.tscn
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue