Home | What IS Qodot? | Setting Up Your Project | The Game Manager Autoload | What's an Entity? | Base Classes and Property Definitions | Solid Entities | Point Entities, Part 1 | Point Entities, Part 2 | Game Configuration | Forge Game Data | Textures! | Finally. TrenchBroom. | Building the QodotMap | Helpful Resources | Frequently Asked Qodots
We're almost there! We only have one step (no, really) before we can start making maps. Let's open up TrenchBroom real quick and create a New Map.
Whoa! Game not found! That's okay though, we can fix that. Open up preferences. Remember the tb directory we made for our FGD files and map textures? Well that's what we'll be using as our Game Path in our TrenchBroom preferences.
And with a quick click of Apply, we're finally ready to start mapping! Go ahead and create that New Map! Ignore the error about the Marsfrog model. I don't know exactly what causes it, but it doesn't cause us any problems. Instead, go check out the Entities tab in the sidebar.
The first thing you'll notice is that our worldspawn
doesn't have any properties. This is because we never defined a worldspawn entity. If we did define one, we would see properties there much like the ones we saw in the Worldspawn example so many millennia ago.
The next thing you most definitely noticed was 3 of our entities just hanging out in the Entity Browser. Oh man, there's Marsfrog!
At the very beginning of all this I made the point that Qodot is not a BSP compiler. If we map like we do in traditional Quake mapping...
... we don't get the same result.
Instead we need to change our approach.
For those not familiar with traditional Quake mapping, the finished MAP gets compiled into a BSP file to be read by the engine. The compiling process calculates visibility between all of the rooms of your map and removes all faces that won't be viewed due to being outside the map. That means maps must be sealed completely, but you're also allowed to be lazy with brush texturing since if a face is "outside" the map it will get culled.
With Godot we need to think of these brushes as what they'll become in-engine: composited MeshInstance3Ds and CollisionShape3Ds. If we want to achieve the culled result on the left, we'll need to change the way we do things on the right.
The Skip texture is arguably our most important texture when mapping for Godot. Whatever texture is set as the QodotMap's Skip texture will be used to cull any face textured with it from the generated geometry. In a Convex collision entity this only removes the faces from the final MeshInstance3D, but in a Concave collision entity this also removes the faces from the CollisionPolygonShape3D.
The Clip texture will cull the Mesh face, too, while also maintaining collision on a Concave Solid Entity (as opposed to Skip's future removal of it). Just keep in mind the general rule of thumb: if you want your entities to collide with the brush, use Clip.
Let's go ahead and fix our map up. Build a small room with a 256x256 floor and no roof and turn it into a func_geo
brush entity. Then completely texture it with Skip. We should have something like this.
Next you'll want to texture just the inside faces of the func_geo.
You can already see the TrenchBroom Tag we made earlier in action. Additionally we've got some other options we can play with to further alter our view.
You'll want to leave Show clip/skip/trigger
on for now, but if you want a quick preview of what your map will look like in Godot that's where you'll find it.
You'll also notice that we have the Entity Groups I promised way back when we talked about naming patterns. Neat.
Speaking of entities...
Your new objectives:
-
Create an
info_intermission
somewhere in the room. Usemangle
to point it towards the center of the floor. -
Create a
sound_3d
in a corner of the room. Set itssound
toamazing.wav
, itstarget
tofroggy
, and itsmessage
toLittle Marsfrog! Little Marsfrog!
. -
Create an
actor_marsfrog
in the middle of the room on the floor. Set itstargetname
tofroggy
. Modifyangle
if desired. -
Create a second
actor_marsfrog
next to it. Set itsappearance_flags
toNot on Normal
. Modifyangle
if desired.
You should have a map that looks more or less like this:
Qodot does not require us to compile the map. Save the map in your project's tb folder. Do *NOT save it in the maps folder. Recall the .gdignore file we created for our Autosave folder. This is only located in the tb/autosave/ folder. If you save the map in the maps folder it will create a new autosave folder and begin saving backups to it, unnecessarily importing superfluous map files.
Once you've saved the map file, it's time to go back to Godot.
Home | What IS Qodot? | Setting Up Your Project | The Game Manager Autoload | What's an Entity? | Base Classes and Property Definitions | Solid Entities | Point Entities, Part 1 | Point Entities, Part 2 | Game Configuration | Forge Game Data | Textures! | Finally. TrenchBroom. | Building the QodotMap | Helpful Resources | Frequently Asked Qodots