TheGamerPlanet

Game / Server Forums => Ghost Recon: Advanced Warfighter => Topic started by: Fishmonger on February 12, 2018, 01:03:39 PM

Title: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 01:03:39 PM
I am manually resurrecting the thread from the old forum database. It will not include all comment posts, because a) users do not exist here, and b) this is mostly a reference, not a discussion thread.

Ok - here we go. The hardest part of this entire tutorial was to come up with the title page ...
 
(https://www.speedcenter.com/graw/tutorial/map_making_for_dummies.jpg)
 
with that out of the way - let's move on and look at what we want to do here. The idea of the thread is to allow those who are not totally afraid of using notepad and a few small utility programs to create their own OGR Coop maps from existing maps. We'll use this thread to work on a project in which we all share the same map, keep our mission scripts and enemy group naming to a standard that lets these lines be reused for other maps, and look at the small little things that had me stumble when I was reading all I could find online to figure out how this map thing works. When done, we'll end up with a number of completely different variants of the same map.
 
What you will need to participate and create your very own GRAW OGR COOP map:
 
GRAW, obviously
GRAW map editor (if you have GRAW 1.35, you have this on your start menu as well)
Bundle Reader (https://www.speedcenter.com/graw/stuff/GRAWbundle-readerv1.0.zip) (this thing lets you take apart maps and use pieces of them)
Bundler (included in the game)
Notepad (I prefer this over dedicated XML editors)
MSDOS prompt (to run the bundler commands)
Calculator (to create the grid coordinates that define the area shown in minimap)
 
Optional
Photoshop or something else to customize/fix your minimap images.
 
 
For extra credit at this time, you can grab some files that I accumulated to help me do things I could not figure out from the sketchy documentation and help screens the GRAW editor provides. Don't look at this stuff right now - most of it you will never need to know unless you get ambitious:
 
The GRAW map editor tutorial (https://www.speedcenter.com/graw/stuff/GRAW_map_editor_tutorial.zip) (don't even remember what's in there)
 
Info on random scripting  (https://www.speedcenter.com/graw/stuff/random_events.txt)
 
Info on texture_scope.xml file (https://www.speedcenter.com/graw/stuff/texture_scope_info.txt)
 
"Clean" original game mission world files (https://www.speedcenter.com/graw/stuff/Wolfsong_CleanGRAWMapsv1.1.zip) (we may use one of these for this tutorial)
 
The complete "GRAW Scripting Reference" (https://www.speedcenter.com/graw/stuff/GRAWScripting.pdf) (I have it printed, but never find answers in it)
 
Using C4 in Coop maps (https://www.speedcenter.com/graw/stuff/c4_in_OGR_maps.txt) (I am going to use that on my next map, while you may never use it)
 
 
Right now, just get mentally ready to become a map maker - I'll post some files and instructions to get started later today, then take screen shots and write instructions up as I go. I'll have to actually sit at the computer I do this on to make sure I don't skip anything.
 
We'll keep this very simple for starters - no random spawns, only panhards, no custom objects on the map, just a few spawn zones on a smaller map. We'll probably use one of the larger multiplayer maps for this.
 
More when I get some time later today.
 
UPDATE 2-28-2011 - since people still play the game and I am not the only map maker, I decided to start a video tutorial collection for GRAW OGR map making. Note that only the DOWNLOAD option works these days, as Windows Media Server was outlasted by GRAW by many years  ;)

http://www.speedcenter.com/graw/tutorial/video/video_tutorials.html (http://www.speedcenter.com/graw/tutorial/video/video_tutorials.html)
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:05:06 PM
First Step:
 
picking an existing map. Best way to do that usually is to go into GRAW and choose your multiplayer screen, pick from the menu what you got and load it as a local server so you can walk around in it. Most of those maps will be known to you, but we rarely venture into TDM games, so a refresher visit may be necessary.
 
What I just did, not having the ability to run GRAW was to look at the bundle files that are in the game. Using the BundleReader application I simply extracted all the image files that are inside the game to provide the small mini map for each included mission.
 
Doing that, I came up with these files as most interesting candidates (converted to JPG format here so you can see them in the post). Reasons why they are interesting: a) no OGR missions exist on them as far as I know, b) they aren't as small as the normal TDM deathmatch terrains so you can actually get a mission feel at small scale.
 
Small maps can be a pain as you have to give up almost half of it so that the bad guys don't spawn in your face, and then you only have a very brief area to trigger secondary and further spawns. Why not spawn all at once? Lag and CPU load on the server makes anything over 20 AI walking around at the same time a bad idea.
 
 
ok - here the map I found as the most idea candidate for this tutorial and you'll probably recognize the place right away if you've done any TDM action:
 
This is mission "s01" in the game - no idea what it is called on the menu
 
 
(https://www.speedcenter.com/graw/tutorial/pix/s01.jpg)
 
 
There are 5 more that would be great candidates - we can all work on the same map, or you can take of of these - just let me know which one you're interested in and I'll get the necessary files ready to go for you (including info on what you need to do to replicate the process)
 
mp01, mp02, mp03, mp04, mp05 in that order
 
(https://www.speedcenter.com/graw/tutorial/pix/mp01.jpg)
 
(https://www.speedcenter.com/graw/tutorial/pix/mp02.jpg)
 
 
(https://www.speedcenter.com/graw/tutorial/pix/mp03.jpg)
 
(https://www.speedcenter.com/graw/tutorial/pix/mp04.jpg)
 
(https://www.speedcenter.com/graw/tutorial/pix/mp05.jpg)
 
 
My next post will be about using the tools to get the files ready to go for the editor. Once I have the files ready to be edited in the GUI of GRAW we're already at the point where zones and AI are placed. Piece of cake - we're almost done!
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:06:56 PM
To get started with a map you need to generate a map project with the editor, even if you are about to steal most of a map from the Grin-provided files. We need some of the files this process will generate, although we will then replace the main content with existing stuff.
 
Start up the editor - go to Start menu and find the Ubisoft Program group, then Ghost Recon Advanced Warfighter and in there the and launch it.
 
(https://www.speedcenter.com/graw/tutorial/pix/01_start_editor.gif)
 
since the editor almost takes as long to launch as the game itself, now is a good time to grab a potato chip with some dip and take a sip of that good Dogfish Head Raison d'Etre beer you got on your desk....
 
After a burp or two, or when you'll run out of beer and chips, you'll find yourself staring at this menu:
 
(https://www.speedcenter.com/graw/tutorial/pix/02_welcome_screen.jpg)
 
Here we hav to create a NEW project. The button is right there on the bottom left! Once you click it you are asked to fill in some information. The NAME of the project is the most important part at this level, but it helps to actually pick the proper texture set for the map you are about to hijack. My s01 map from the game clearly uses the "ghetto" set. Graffiti set is irrelevant unless you make your own map, and even then I don't know what you get in these.
 
(https://www.speedcenter.com/graw/tutorial/pix/03_create_new.jpg)
 
So you enter your information. Don't be too picky here since the stuff saved will always be called "My Level" no matter what you call it here.
 
(https://www.speedcenter.com/graw/tutorial/pix/04_name_project.jpg)
 
 
Click create and find yourself on the screen so many GRAW players have found only to spend a few confused minutes there and then leave it and never return. Here I already clicked on the top left layer menu, otherwise it would look even more desolate:
 
(https://www.speedcenter.com/graw/tutorial/pix/05_in_editor.jpg)
 
You are in an empty world. What we need to do to generate all the files we need to get this project folder set up so we can begin swapping in files from Grin is to place one single static object. To do so, click on the top left menu and then again on the "static" layer item on that list. You will get another menu to open up:
 
(https://www.speedcenter.com/graw/tutorial/pix/06_static_layer.jpg)
 
I then picked one of the grass pieces to lace on the blank map (that guy standing there on the gray slate has absolutely nothing to do with our map. It is just the "center" of the map you can build here. To place static object click on an item on the right side, then go over the map with your mouse pointer. Look for the blue indicators that show where it is about to drop the item. Once all of them show on your screen RIGHT CLICK your mouse. You just placed the first piece of a new map world into the void:
 
(https://www.speedcenter.com/graw/tutorial/pix/07_place_static.jpg)
 
At this point we have done enough for the editor to honor our efforts and let us save a full fledged project folder (into our custom levels folder!). So hit the ESC key and push the save button on this menu
 
(https://www.speedcenter.com/graw/tutorial/pix/08_save_it.jpg)
 
You just saved the first building block of your map. You can now tab out of the editor and move on to other things.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:08:10 PM
Let's take a look at what this thing just generated in our custom levels folder:
 
(https://www.speedcenter.com/graw/tutorial/pix/09_folders.gif)
 
in my case, there was already a folder called expendable_assets inside the "work" folder that now should be in your custom levels folder as well, but it added "my_level" and a number of files we will need there to work on our new map.
 
Before we go through the files and adjust the naming, we now go and grab the stuff we will need from Grin.
 
We use the Bundle Reader program to get to this stuff. See link in my first post to download this utility - it's the most important program you'll need for this job.
 
Running it you get this screen once you navigate to C:\Program Files\Ubisoft\Ghost Recon Advanced Warfighter\Bundles
 
(https://www.speedcenter.com/graw/tutorial/pix/10_open_bundle.gif)
 
in this case I am opening the patch.bundle which contains most of the multiplayer maps that were added to the game with the update patch. To get to a single player mission, you need to go to the quick.bundle file in that folder.
 
Expand the tree on the left pane until you find the folder s01 in the data/levels sub folders and hit the extract button. Place the output somewhere easy to find.
 
(https://www.speedcenter.com/graw/tutorial/pix/11_extract_node.gif)
 
This is what you'll find inside the generated S01 folder extracted by the bundle reader:
 
(https://www.speedcenter.com/graw/tutorial/pix/12_s01_folder.gif)
 
Right now we are after a file in that XML folder: world.xml holds the entire map world information that will save us days of work to build our own world file:
 
(https://www.speedcenter.com/graw/tutorial/pix/13_find_world_xml.gif)
 
Copy this file into the my_levels folder in your custom levels folder where you see world_01.xml - delete that file, and rename the one you just copied there to world_1.xml (oh - if you didn't close the editor, it would be a good idea to do that before this operation
 
Now go back to the editor and open your project file. You should find yourself in a screen that shows the S01 world. If there were version of the world file with numbers higher than 1, just delete those while moving this file there.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:10:08 PM
Here is what you'll see once the map is opened in the editor:
 
(https://www.speedcenter.com/graw/tutorial/pix/14_s02_loaded_in_editor.jpg)
 
on some maps you will actually find your first view to be below the surface level and look much stranger. Anyway - now we start to FLY through the map.
 
Move your mouse - nothing happens? Hit the space bar and try again.
 
then use the AWSD and Q and E keys in conjunction with your mouse to fly - AWSD work like in the game while Q and E are elevator keys to go up and down. Whenever you get to where you want to go and want to do some menu selections or place objects hit space bar again to lock the view. Practice some. Look around the map and get used to these controls.  The mouse wheel controls the speed of everything - want to go fast, roll forward, go slow and detailed, roll way back and move.
 
View from far above:
(https://www.speedcenter.com/graw/tutorial/pix/15_the_entire_map_view.jpg)
 
Now the bad news - this map is a TDM map and it is missing a bunch of stuff we need to create, plus the spawn bots are not in a location where I'd want them to be. I suppose now is a good time to get to know the map and make choices based on what kind of mission you want the Ghosts to run here. Spot two locations for spawn and zulu location, because you will need to stick to those in the future.
 
The real grunt work on these maps (not on the single player mission maps, since they do have AI) is that we need to create an AI graph for soldiers and vehicles so that they can move around. I'll show you how to do it and then provide the file so that we don't all have to duplicate the job. It easily will take 30 mins on this map to do that.
 
But before all that some more words about the editor while we are in here.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:11:25 PM
Some words about the layers in the editor:
 
Static - you already used it -this layer places stuff like buildings and roads on a map. We won't use this at all on the existing maps.
 
Props - those are things like fans, MGs, garbage cans, etc - we only use a few as only a handful of these will not require a new set of lightmaps to be rendered. More on that when we get there
 
Electric - only needed if you are building your own map. More on that when we do that tutorial
 
Dynamic - here's where you find cars and trucks - definitely needed!
 
Props Brush - only needed for map building. Ignore
 
Sky environment - very important to pick the sky this map was build with. How do we know what to pick? I looked it up in the XML we unbundled earlier - it is actually in the world.xml file we are using. Still a good idea to make sure the value we need is selected in the editor. Changing this will create unwanted results with shadows, etc. We have mission08 skies here:
Code: [Select]

  <sky name="first">
   <rotation yaw="0" pitch="0" roll="75.00177"/>
   <setup sky_name="mission08"/>
  </sky>

Related to the sky is the "light box" which we choose on export of the map data from the editor. We'll get to that much later, but it is linked to what you pick here.
 
Sound - here's the layer for ambient sounds and detailed localized sounds. Don't mess with it if you are re-using a map that was well made
 
Multiplayer - important layer - here we set up spawn and zulu bases and check if our map area is properly set (can only set that in the xml but here we check if we did our math properly)
 
Player - ignore - not needed for OGR
 
Area - here we set up spawn zones - very important
 
Human - most important for us - this is where we place and determine what the AI does
 
Vehicle - Panhards, Tanks, Helis - you find them here
 
AI graph - Here we create/check if the AI has "anchors" to allow them to move in our world. The AI graph is a network of nodes that are needed for AI to spawn and move around. More on that when I create the one for this map.
 
Mission Command - ignore
 
Composition - ignore
 
 
 
I'll leave it at this for now - tomorrow afternoon I'll dig into the AI graph and show you a mission script that we can import and use for most maps, as long as we use some proper naming conventions for AI groups and vehicles, etc.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:17:39 PM
Quote from: bullett;180511
If one could similate the terrain,A good mission would be to take hilltop Alpha in landing zone zebra of the movie "WE WERE SOLDIERS".What with the creekbed area,the small ridge,and then to take the mountain.Maybe a stretch but can it be done?

you have to remember that in OGR coop, there's only one single objective: reach Zulu. How you wrap that into a mission is up to you, however, to force a certain route and resolution of situations, you'll probably have to resort to blocking off the direct route with stuff on the map. I've done it on Snake On Point - lucky there are a few objects in the editor you can put on any map without causing major graphics issues. This is higher level stuff and right now I'd rather not get into that.
 
I'll continue with this thread in little while, and I will post my world.xml for everyone to download once I have fixed it up far enough to start putting in trigger zones and AI, which everyone should do for themselves. At that point I can also put a sidebar up how to block off routes in the map. The blow-up part to open up routes is something I have not yet done myself, so that'll have to wait
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:18:50 PM
not fnding the editor? that is because the editor IS the game executable, just starting up with different parameters. There's a special command line that is all the shortcut does for you. I'll grab it off my box downstairs and post it here - then just make a new shortcut and put the line in. I had a similar problem when I first started using the editor, as I was constantly swapping the startup XML files to launch either editor or game by editing the files, however, there are two files in the graw dir that let the program read presets for either editor or game mode. Some stuff is shared, like video settings, but the mode you go into is controlled by those files.
 
The game starts up using "context.xml"
 
The editor starts up using "context-editor.mxl"
 
the server starts up using "context-standalone.xml"
 
more on this in the next post - I gotta go to the system that has the program installed to get the startup info in detail. 
 
The only other reason why there may be no editor is that you're not running version 1.35, but that's unlikely.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:23:11 PM
this is the command line in my GRAW editor shortcut:
 
Target box:
 
"C:\Program Files\Ubisoft\Ghost Recon Advanced Warfighter\GRAW.exe" -o context-editor.xm"
 
Start in box:
 
"C:\Program Files\Ubisoft\Ghost Recon Advanced Warfighter"
 
just make a copy of your GRAW game shortcut and swap the command line and possibly adjust the path to where your game actually resides and that should do it. If it then still goes straight into the game, we need to edit your context-editor.xml file to look like this (the line I highlighted is the key - if yours is different you may still be loading the game and not the editor, even if you do all the above correctly)
 
Code: [Select]

<?xml version="1.0" encoding="ISO-8859-1"?>
<context>
<!-- exchange this line with the one under the comment to start in editor mode
<script base="data" exec="menu/menu" editor="false" language="english"/>
-->
<script base="data" exec="levels/editor/editor" editor="true" enforce_texture_sets="false" override_allow_autoload="true"/>
 
 <layer_config file="\data\settings\layers.xml"/>
 <scene_config file="\data\settings\scenes.xml"/>
 <unit_database file="\data\units.xml"/>
 <sound settings="/data/sound/settings.xml" />
 <network settings="/data/settings/network.xml" />
 <static_texture_scope file="\data\settings\static_texture_scope.xml"/>
 
 <skeleton_def file="\data\objects\def.xml"/>
 <animations def="\data\anims\anims.xml" state_machine="\data\anims\state_machines.xml"/>
 <texture base="\data\textures" />
 <effects file="\data\effects\effects.xml"/>
 <decals file="\data\effects\decals\decals.xml"/>
 <!--<keys disable_windows_key="false" />-->
 <default_shader_config file="\data\shader\default_shader_config.xml"/>
 <default_render_templates file="\data\shader\default_render_templates.xml"/>
 <physics settings="\data\settings\physics_settings.xml" fps="60" novodex="hardware" />
 <global_materials file="\data\settings\materials.xml" />
 <gui file="\data\gui" optimized="true"/>
 
 <camera shakes="\data\settings\camera_effects.xml" cameras="\data\settings\camera_settings.xml" />
 <bundler make_logs="false" />
 <nls_lookup size="64"/>
 <installer use="false"/>
 <calc_video_mem_adjust value="false"/>
 
 <!-- Enable this for bundled versions. -->
 <compile xml="false" scripts="false" mopps="false" texture_db="false"/>
</context>
 

The key line in that context file above your game should include is this one:

<script base="data" exec="levels/editor/editor" editor="true" enforce_texture_sets="false" override_allow_autoload="true"/>
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:24:47 PM
At the risk of talking to myself - let's get back into this thing. Next step is to make sure the map we are hacking has what GRIN calls an "AI graph" - those are essentially a network of invisible hooks the AI tangos need to be able to walk around on the maps. They don't have a clue about where they can go unless there is a grid for them to hang on to. All multiplayer maps of the game except for the coop map, that graph is not present. So you just add it!
 
Here is what you need to see when you go to the AI Graph layer of a map. IF this stuff doesn't show up, just start right-clicking all over the place and make the mesh grow. That's what I did here - 45 mins and the AI can go into bunkers, on top of buildings, everywhere I put these little "anchors" on the map:
 
(https://www.speedcenter.com/graw/tutorial/pix/16_ai_graph_human.jpg)
 
These things all have to link togther somewhere - not hard to do - the linking happens automatically if you click close to a node that can be reached.
 
There's a second AI Graph for vehicles. That one can be seen/edited/created by hitting the "N" key while in the AI Graph layer. Silly but that "N" key is a very valuable little key in the editor that does a bunch of stuff for placing objects as well. Here it toggles from human graph to vehicle graph.
 
The vehicle graph can only go where the biggest tank can fit - if the road is too narrow, it won't let you connect the dots. Do not have more than one vehicle graph on a map, as it will crash it when you try to load it later...
 
Here's my screen from the placing of my vehicle graph (right mouse button - green thing shows how far you can go from the last one)
 
(https://www.speedcenter.com/graw/tutorial/pix/17_ai_graph_vehicle.jpg)
 
When you're all done, you can check from overhead where you placed this stuff. Note that any vehicle you want to move on a map must spawn within the range of these green circles you see above to actually move somewhere on orders. Spawn away from the graph and the vehicle will not go anywhere.
 
This is where you order panhards or tanks or trucks to go in my map now:
 
 
(https://www.speedcenter.com/graw/tutorial/pix/18_vehicle_graph_top_view.jpg)
 
And, to save you the hassles of doing this yourself, I am uploading my files so you can start from here (almost ready to place the bad guys)
 
Starting at this point, decisions about the mission have to be made. The spawn zones and zulu location need to be defined.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:26:15 PM
In case you want to place your spawn and zulu in different corners than I did, you will need to go to the "Multiplayer" layer of the map and change the location where "base 1" Alpha and "base 2" bravo is located. That's pretty easily done by right clicking in that layer and then dragging a box on the map, then naming it off a pull down menu base 1 or base 2. Play with it to get the hang of the controls. You can delete them off the list if things don't look right and do it again.
 
here are my spawn and zulu zones (left spawn, zulu right). The red thing is the box that defines the minimap top view crop and the game area, although I have seen maps where we wander outside the box (that is when you are apparently outside the minimap). Anyway - here's my layout:
 
(https://didnt.doit.wisc.edu/graw/tutorial/pix/14_zones_on_map.jpg)
 
 
The very last thing to do before starting to set spawn trigger zones (area layer) and placing AI (human layer or vehicle) is to put 12 to 16 "spawn dummies" from the props layer menu into the spawn location. Here they are, defining where the Ghosts spawn, inside of "base 1" seen in purple on the top image. Select the spawn dummy from the props list and right click where to place them:
 
(https://www.speedcenter.com/graw/tutorial/pix/19_spawn_dummies.jpg)
 
 
Now we're ready to get the mission made. If all this was too much hassle so far, don't worry - just unzip my ?my_level folder into your work folder inside of custom_levels and you got all the above taken care of. We can always operate like this - I release maps for you to place AI on and then you send me back your world file and I'll make it work, just in case you don't want to do anything but be the tango general that schemes the defense against the ghosts. Over time you'll learn how all this works together anyway.
 
Here is the zip with the map pretty much ready for AI scripting. I placed my mission script in there that allows for 10 spawn areas and 3 MG spawns. Vehicles and random stuff would need to be added, but for starters, let's ignore that.
 
my_level.zip (https://www.speedcenter.com/graw/tutorial/my_level.zip)  (note that this file needs editing due to the invisible walls discovered later over the course of this project)
 
Up next information on the part that is much more fun than everything I have talked about so far - the creation of the AI on the map.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:27:05 PM
Quote from: G4F-Snake;180522
This stuff is way above my paygrade, I'd rather just shoot'em.

me too, but I got bored to be playing on the same map for 3 weeks in a row. The game is too good to have it get boring just because you don't get any new maps.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:29:36 PM
Up next:
 

Then we go to the MGs and vehicles, before we wrap up the basic stuff with a look at what to do in the scripting to make it all work.   I will provide a base script that will work with my naming convention and explain where you have to make small edits and have control over things like vehicle orders.
 
At the very end, a look at how to "bundle" it all up - a step you don't need for maps you build from scratch, but when reusing terrain, this is important and saves a ton of time, plus in some cases is the only way to get decent textures on large maps.
 
Anyway - can't upload my next lesson pix right now -I'll try again after lunch.
 
I think when this thread is done, I'll do a little bit about how to build your own map terrain with the editor - for me that was the most fun in my first map, but it is a huge time sink.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:30:32 PM
Let's have a look at the "Area" layer on the main menu. When you go in there on a new map, you will see only a small box pop up in the right. What to do now?
 
Right-click anywhere on the map - a new box shows up on your screen (usually bottom left corner). This box usually has the default "area1" label. I change these for each area to have them work with my scripts and remain sorted. I over type that name with   area01, area02, area03 etc. I also use area_mg1, area_mg2, and so forth.
 
When done naming you can use the left mouse button to drag a box on the map. That "box" is then listed as "shape1" in the bottom left menu. Don't like it? Hit delete and it is gone. Already deselected it? Click on the shape1 item in the menu and it is reselected and can be deleted. You can have more than one shape for each area. This is good when you need  very targeted trigger zones between buildings without overlapping zones that you don't want to be triggered. Here is a screen of what the first spawn area looks like on my newest map project: it simply sits around the spawn bots at the game start, so that when the game starts and players spawn, they automatically trigger the first wave of enemies
 
(https://www.speedcenter.com/graw/tutorial/pix/20_area01_box.jpg)
 
note that every time you click your left button, you are creating areas when in that mode. Those show up as thin lines sticking up through the map and to get rid of these accidental trigger area shapes, just run through all your areas and shapes by selecting them until the one you want to get rid of gets highlighted in light blue. That's the selection color for individual shapes. Green shows multiple shapes belonging to the same area, while red shows other areas you currently have not selected. Things can look pretty dense once you get these things on the map, especially since MG trigger areas sometimes overlap with those that trigger foot soldiers, etc. Here's a vew at an area between two or three spawn zones on my new map:
 
(https://www.speedcenter.com/graw/tutorial/pix/21_area_maze.jpg)
 
You can change these areas as you go at any time, but the naming of them is very important to keep your AI groups sorted. I use the area name to name enemy groups so I know where they belong.  I also place these zones on the map one enemy group at a time so I can work from spawn to zulu, building map areas one at a time. That way you know you put spawn areas where nobody can see the enemy yet when they do spawn - well, at least that's the goal.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:33:04 PM
And finally we can place some enemies on our map!
 
Go to the "human" layer and you will see a green stick man on your mouse pointer. That's the AI placement indicator.
 
To place an enemy at a location of your choice, click the right mouse button. Once placed, you can configure the AI in that spot by turning it to face the right direction, by assigning the type of enemy soldier(s) to spawn there, and by giving it orders and assigning it to an "enemy group" that will work well with our script code.
 
Every time you place a new soldier on the map, you get this "blackhawk crew" 4-enemy figure. The red dots on top are the number of enemies to spawn there. We really don't want a blackhawk crew to spawn where we want some gun toting Aguila 7 rebels to appear, so we need to change that.
 
(https://www.speedcenter.com/graw/tutorial/pix/22_place_blackhawk_crew.jpg)
 
 
first we want to orient the spawned enemy in the right direction. Note the red and green lines on the base. Red is the right arm, green is the viewing direction once spawned. Very important for soldiers on "guard" orders, as they will stare in that direction. I placed one guy in Lightning Unleashed on a balcony staring at the wall and he never notices any Ghosts - should have turned him...
 
Once placed and oriented, you select a soldier type and number to spawn there. The "Group Type" pulldown is where you do that, and it is a LONG list. Note that many items on that list will not work in OGR coop and actually crash the game if you put them in there (most recent mistake was one of these guys on an MG on the Snake on Point map). Here's a view at what is on the list - red means "do not use" - green means "works fine" and white means "I have not tried that yet but it may work"
 
(https://www.speedcenter.com/graw/tutorial/pix/28_AI_types_list.jpg)
 
and before this page gets too long and has too many images on it, let's break this post up into multiples.
 
And those rangers - you can use them. Not as lethal as Special Forces, but still pretty hard hitting enemy type. These are groups of multiple soldiers with various weapon combinations.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:34:26 PM
Of the soldier types on the list, you can see that there are three main categories: guerilla, infantry, and special forces. Their skill level and weapons skills go along with these levels. recon means mp5 or similar weapons, patrol means Scar or similar gun, heavy means light machine guns. The panhard crews are similar - three types for each as well as for their passengers. Use those only for Panhards or other vehicles which we will cover later. Also note that there are some "patrol" groups and panhard crews I marked as "do not use" - they absolutely do not work. Rule of thumb: if there's no number 1/2/3/4 behind it, you probably can't use it. Exception are snipers and RPG soldiers who only come in singles.
 
The naming box called "group ID" is very important, because the script that triggers the spawn of enemy soldiers needs to know which set of enemies to spawn at one time. When not using random spawns, I name each group after the area that triggers them. So for soldiers to trigger at the start of the game, I use "area01" as the group ID. All soldier groups labelled as area01 will be spawned by my script when a ghost walks into the area01 area trigger zone. For random spawn, I use area01easy, area01normal, area01hard and area01difficult, or a subset of those. This helps me sort out which set gets spawned but the name still has the area in it they belong to.
 
Once the ID is set, you can give the AI orders.
 
(https://www.speedcenter.com/graw/tutorial/pix/23_first_ai_orders_and_type.jpg)
 
The order pull down is the first step - here I chose "patrol" which popped up the patrol type pulldown as well. For "guard" duty, you don't need to do anything else but pointing the AI in the proper direction, because they will not leave the area. Very good for AI on buildings, because they cannot move up there anyway. Very few buildings can be walked around on (only those you can get on top of as well)
 
Patrol types are important. Some mean they walk in a loop, others mean they run to the final location you direct them to and stay there and yet others mean they go slowly and then return back to origination point. I generally use "pingpong idle" for those guys that come forward from the back at higher speed. For patrols that wait for you in some area, I use the pingpong recon, which has them at a higher alert (guns ready) and they keep moving back and forth on the path you defined for them. Here's a good reference on what the different terms in the list mean:
 
https://www.ghostrecon.net/forums/index.php?showtopic=39722 (https://www.ghostrecon.net/forums/index.php?showtopic=39722)
 
The path is that green stuff to the right of the AI on the top view. How to do it?
 
Hit "Insert key" on the keyboard and start clicking the nodes onto the map. Make sure they can actually go to these places and no obstacles re in their path. To undo, use the right mouse button, to redo left button. when done you must hit "insert" again, because you cannot place another AI while in that mode (right mouse button will actually take away nodes then and not place a new guy on the map_). So if you are clicking the right mouse button and nothing happens, go back to your last guy and check his path - you probably just deleted the last node... Hit the insert key and you're back in business for the next guy.
 
When you place a group ending on e.g. heavy4, you are placing 4 soldiers with the same orders. This save time.
 
Sniper orders: usually you do that order type for a sniper but you can actually tell any soldier to behave like a sniper, even an RPG guy (I've done it...) What you do after orienting the soldier to face in the proper direction (again, red is right shoulder, green is front), is you hit the "INsert" key again, as if you were about to put a track for them on the map, but you have a yellow cone showing for the sniper orders. thiscone has a center dot that you can direct on the map. It tells the sniper where to focus. use the Mouse Wheel button to set that cone center to the direction you want the guy to look. At least that's what I think the key was - already forgot how to do it since I took the below picture:
 
(https://www.speedcenter.com/graw/tutorial/pix/26_sniper_cone_placed.jpg)
 
 
as you can see all the other AI tracks show in the map all the time. This helps to see where you already placed some troops, but on big maps with multiple random group per area, it gets very dense and the fps in the editor drops massively at the end of the map. I now build the map in sections, cut the code of finished zones out, then build the next and at the very end when everything is tested, I paste all AI back into the very same world.xml to use for final export. For a simple map with just 100 soldiers you should not need to do that
 
Another important footnote to the above - when you give orders by hitting insert and clicking away with left or right mouse button to add or remove waypoints, you have to be extremely careful to NOT hit the right mouse button when there is no waypoint left to remove: it will crash the editor with some sort of cannot create in void error. Example, you place a sniper, don't need to place a waypoint, but you hit insert anyway. You then just aim the sniper cone with the center mouse button and want to move on placing the next enemy with the right mouse button before hitting insert again - kablammo, there goes the editor and all your changes since the last autosave... When in doubt what your insert key toggle is at, always click the LEFT mouse button, as it will add a waypoint when it's toggled on. You can remove that waypoint easily and toggle off, but when you try the right button and it's on, you crash without warning.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:37:44 PM
and in case you were wondering why I keep getting shot on maps I made: here's spawn zone area04 in my upcoming map - 4 different AI options on the same zone, and I have no clue what will happen with each spawn scenario it's RANDOM. OK, so after a while you learn all the random spawns, but I can make these maps quite unpredictable with some effort in the randomizer department (more work)
 
(https://didnt.doit.wisc.edu/graw/tutorial/pix/27_why_fish_gets_shot.jpg)
 
That is the skinny on placing regular AI soldiers. There's a little more to the MGs and Panhards. The info on that will follow as soon as I work on those in my new map and can take the screenies to show here. It's pretty simple and only needs one or two more things to be observed.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:40:40 PM
Let's have us some .50cals on our map!
 
What is different? To get a soldier to spawn with a /50 cal or MK19 launcher, you have to set up a set of area, AI human and gun prop with the same name and spawn this separately from a normal soldier group (easiest solution)
 
so first set up another trigger area, just for the MG coming up ahead. It can overlap with a group area, but can also be different to add some randomness. I sometimes make the zones not inclusive, allowing it to be bypassed by accident.
 
Anyway - for the coming pix, I set up "area_mg4" and then went to props and placed an MG on a building. This may be said easily, but your little green props pointer may refuse to "snap" to the roof of a building or the ground plane where you want to place the prop. That is because for prop placement there are two different modes in the editor. Hit the "N" key on the keyboard and see what it does to the placement tool - one mode automatically snaps to surfaces, while the other is locked at a fixed height. Most of the time you'll want the auto-snap, unless you want to override it and place an object half way below the main level (use the page up and page down keys in that mode to adjust height). Anyway - in this case and most of the time when you are placing props, use the N key to find the mode when the little green ball thingie snaps to the surface you want to snap to. Right click to place the MG, then go and name it "area_mg4" or whatever number MG you are working on.
 
See below what to choose from the props list and what I did to name the prop:
 
(http://thegamerplanet.com/forum/proxy.php?request=http%3A%2F%2Fwww.speedcenter.com%2Fgraw%2Ftutorial%2Fpix%2F29_placing_mg_tripod_prop.jpg&hash=3100fb163d1d9e084749cb49ed1fd7ab)
 
the legs of this thing are like the humans - use the arrow keys to rotate the legs so it points with the single leg in the direction it is supposed to shoot. The top part will point into all sorts of directions in the editor - ignore that and look at the red line at the base instead. It is the right side facing forward. I named it "area_mg4" to match the trigger zone name.
 
Now the human to operate it:
 
(http://thegamerplanet.com/forum/proxy.php?request=http%3A%2F%2Fwww.speedcenter.com%2Fgraw%2Ftutorial%2Fpix%2F30_naming_mg_gunner.jpg&hash=202cfaa9eb87ed9d7285765d67085b1b)
 
I chose a "mex_guerilla_Patrol1" for the job. It has to be a single user, so all the types ending on "1" are ok". Careful - if you use the soldier type ending on no number, your game will crash on load. The only OGR compatible types except for the Rangers all have a number at the end to designate the count. _1 is what you want on a fixed weapon, or you have a crowd of guys hovering over that gun.
 
I also named the soldier's group ID to match my trigger area name and mg name: "area_mg4" - point his face where he's supposed to shoot and leave orders on guard. This is it - as long as you don't mess any of this up, you will trigger one MG with one trigger zone. To do more than one you need to use some "trigger random event" logic in the script, but that will be in the advanced lesson.

 
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:41:36 PM
Now to the vehicles, and since Panhards are the most common, let's do one of those. The vehicles get spawned by using orders inside the script that are different from the AI and you don't have to use the same group ID with a spawn area. You just name vehicle and crew alike to make sure they spawn together when called by the script.
 
First you need to place the panhard on the map. The vehicle layer is where you find those that can be loaded up with AI crew. The "Dynamic" layer has panhards as well, but those are only good as decoration and can't drive or haul enemy around.
 
So pick it off the list and right click on the map as you hover over where you want to place it. Rotate the thing with the cursor keys, and drop on the map with the left mouse button. Sometimes they bounce and you end up with a wreck - just hit delete and do it again, dropping from lower altitude (use flight keys to get where you need to be). Here is a panhard hovering before being dropped on the bridge:
 
(https://www.speedcenter.com/graw/tutorial/pix/31_place_panhard.jpg)
 
 
Remember that vehicles must snap to the vehicle AI graph (N-key on AI Graph layer). When dropping it in the map, make sure the location is near the AI Graph for vehicles, or it won't work. Note the green ring around the AI Graph node here (select it to see the range): your vehicle should be in that range to be able to spawn or move or drive there.
 
(http://thegamerplanet.com/forum/proxy.php?request=http%3A%2F%2Fwww.speedcenter.com%2Fgraw%2Ftutorial%2Fpix%2F33_panhard_AI_graph.jpg&hash=c6975624389d12a522ff3d0096df8654)
 
 
I usually place a second Panhard for each actual vehicle I set up as destination marker. The world.xml file will have the exact coordinates for the destination panhard that I need for the mission script. I just delete those vehicles from the world file when I am making the script work. More on that later.
 
Next we need to fill in a few items in the box on the bottom left. I number my panhards from 0 through whatever (I heard 10 is the most you'd ever want on a map). This is Panhard2 on this map. Make sure it is set for "hostile" and check the "sequence spawn" if you don't want it to be sitting on the map from the start of the game, but be triggered by a spawn area (less AI on the map is always preferred)
 
(https://www.speedcenter.com/graw/tutorial/pix/32_panhard_setup_box.jpg)
 
Next we need to go over to the Human layer and set up some AI to operate this thing. The key is to make those soldiers "Group ID" and "Transport ID" match the Vehicle ID" you gave the panhard. Also, if it is the "crew" you must check the crew box. There is a Crew1 and crew2 option: only crew2 will man the machine gun.
 
(https://www.speedcenter.com/graw/tutorial/pix/34_panhard_crew_setup.jpg)
 
After the crew, you can add passengers to the panhard. They need to be placed close to the vehicle just like the crew. You can put between one and 4 passengers in there, and they come in guerilla, infantry and special forces caliber with appropriate skill levels. Here is how I set up the 4 passengers on this vehicle to match the crew and vehicle IDs:
 
(https://www.speedcenter.com/graw/tutorial/pix/35_panhard_passenger_setup.jpg)
 
I read somewhere that crew and passengers should have "patrol" orders and it should be moveguard recon. Not sure why, but it works and they are nicely active when they unload from the vehicle, so why bother trying the other options?
 
This is all you need to do to get a fully loaded panhard on the map. The scripting for this are two lines of code you can copy paste in your mission script, change panhard ID and coordinates for the destination and you are all set. Rinse and repeat for the next one.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:44:13 PM
Time to recap what we have done here so far:
 
We first created a project with the editor by starting it and placing one static object, saving it and exiting.
 
We then grabbed the terrain (world.xml) file from an existing map using the Bundle Reader.
 
This world file then was used to replace the near blank world_1.xml in our editor project by deleting the small file and renaming the one we extracted from the TDM map to world_1.xml and replacing it.
 
Then we opened that world file by simply running the editor again, finding the large world from the TDM map in our editor. It was missing a few things we need for an OGRcoop map, so I went in and added AI graphs for human and vehicle AI. I also set up the "spawn dummies" and Base 1 and Base 2 (spawn and zulu) that are necessary for this type of map.
 
Then areas were created to set trigger zones to have AI groups spawn gradually. We can't have more than 15-20 of these guys walking around at one time without getting serious server lag.
 
Adding the human AI is the biggest job on these maps - you actually need to sit back and think about a) where they need to spawn so they aren't visible to the players, b) what they should do to become a force that you have to face on the map, and c) how strong to make these groups, by picking various caliber troops and weapon loadouts for the AI. That part is all for you to figure out. All I know is that I avoid "guard" orders for the most part, unless I really want these guys to sit on a roof and wait for enemies. On the ground, I have them walk around to become less predictable, even if they are supposed to be in a very small area.
 
Last we looked at setting up MGs and Panhards.
 
What is still missing is how to get this map to actually be playable to go in and test what you have just edited. In just about every case, you will need to make some changes, and in order to save time you'll need to figure out the "bundler" application (command line tool to make bundle files out of those XML files without using the editor). You do have to export the map once from the editor to create a few files that will never change, but you can do this at "draft quality" and with just 2 passes. This still will take about 20 minutes on a normal system. The result is a bundle file in your custom levels folder you could go in and play, except with fuzzy graphics. No worries, we will steal the nice graphics from the GRIN provided bundle file just like we took the world.xml file out of there.
 
The process to get a map exported from the editor is simple - just go to the main menu with ESC key and choose the export. Don't worry about level description and any of that other stuff. Just make sure you make the map an OGRcoop map and give it a name that won't mess up once on a server (avoid spaces!). The export from the editor will generate everything that makes the map playable, including the minimap image file (which can be edited after that export and rebundled as well - that's how I get my info text onto that map image)
 
Once the map is exported and you play it once and it doesn't crash, you're just about done (has any map ever worked for me without crashing? I don't recall...), even if you want to make additional changes, things from here on go very quickly, as most changes are probably to the mission script. If you need to make changes to the AI after testing the map, you should open the map in the editor again, however, don't bother with exporting any longer. Just save and exit - then "unbundle" your original export into a temp dir, replace the world and/or mission files, run the bundler, and 2 seconds later you have a new version of your map.
 
I'll show those things in detail with a few screen shots so you can follow the process. It was the hardest thing to figure out but only because there's no documentation out there that really tells you how to do it. Everything I ever found about this online was full of errors or incomplete, presented by somebody in a "why don't you get it?" manner rather than with explanations a non-insider could follow.
 
Expect the next update in this thread in 2 or 3 days - I want to get a map done right now and I am still 2 days away from getting to that part where I can take screen shots to illustrate the process I just described here. I really need to be doing those things to the new map before I can get you proper samples. I assume that if you are actually trying to make a map, the information provided so far will keep you busy for a few days.
 
Feel free to ask questions - I am sure I forgot to explain some stuff that didn't cause me any trouble understanding. Right now I am going back to the machine gun post to add one thing I forgot about...
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:47:39 PM
Quote from: Thor3588;180932
Hey, I care too...
 
been waiting paitently for the next class. Still trying to get a handle on this. When I build out a map all the textures are blue and yellow boxes and it is night.
 

This is caused by incorrect texture_scope.xml entries - the editor is too dumb to combine more than one texture set in the game. GRIN limited textures to several subsets to make the game easier on lesser hardware back in 2006. You can override that after your export by going into the bundle file, where you can edit the text file that specifies what textures to load, or, if you have the time, just go into the /work subfolder inside /custom_levels where you can find it as a temp file from where the editor grabs it to make the bundle. Edit it there and make the file read-only so it wont' get blown away by the normal map export process.
 
Now - what do you edit in it? It depends on what you used in your map. If you combine historical, city, industrial and ghetto set items, you need all of them in there. Usually, the less, the better. I used Ghetto and Historical in Retirement_Party (the cemetery and a few walls didn't work with the ghetto texture set and turned blue/yellow)
 
these are the five lines you can put at the top of that texture_scope.xml file - you probably have only the /common and whatever you picked as your primary scope when you started the map:
 
Code: [Select]

<scope>
  <xi:include href="/data/settings/set_texture_scope_editor.xml#xpointer/include/common/*)"/>
  <xi:include href="/data/settings/set_texture_scope_editor.xml#xpointer/include/historical/*)"/>
  <xi:include href="/data/settings/set_texture_scope_editor.xml#xpointer/include/city/*)"/>
  <xi:include href="/data/settings/set_texture_scope_editor.xml#xpointer/include/industrial/*)"/>
  <xi:include href="/data/settings/set_texture_scope_editor.xml#xpointer/include/ghetto/*)"/>

if you can figure out the bundler program, you don't have to export the map again, although a quick test in draft mode with 1 pass will already show you if you picked the right settings. The export rendering does nothing to the texture quality - it only creates those shadow and light areas on the map, so if you have he right textures linked, you'll see that even in draft mode.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:49:01 PM
Quote from: sirgimmi;180946
Hallo
 
Nein ich bin neu hier Ihr kennt mich nicht. Leider ist meine Englisch sehr begrenzt deswegen bin ich froh dass jemand Deutsch kann :8-)
 
Fishmonger Dein turtorial ist perfekt, ich habe alles so gemacht wie Du es beschrieben hast aber leider komme ich nicht mehr weiter.
 
Wenn ich die Map exportiere ist die Map voller Farben und nicht so wie sie sein soll. Auch kann ich die Gegner nicht so einstellen so dass die Ghosts &#252;ber die Area01 gehen dann sollen doch die Gegener fortlaufend kommen? Muss ich hier irgendwas beim Scripten tun oder so?
 
Ich bin ein absoluter GRAW Spieler und m&#246;chte unbediengt eine Map erstellen.
 
Um jede Hilfe w&#228;re ich dankbar.
 
Danke SirGimmi

ok - zweisprachiges Tutorial :) Klar - das mission script ist noetig damit die Gegner ueberghaupt auf der Map auftauchen. "Vorlaufend" geht das aber nur mit mehr Areas fuer die anderen Gruppen. Ausnahme ist ein Trigger der sich "OnDeath" nennt - man kann damit ein Event starten sobald eine bestimmte Anzahl der Gegner in einer Gruppe getoetet worden sind. Ich habe das aber noch nie benutzt.
 
Ich habe gerade zwei Maps fertig gemacht die recht komplizert waren und sich nicht fuer das Tutorial geeignet haben. Die Karte die ich hier als Beispiel benutzt habe hatte einige ungewoenliche unsichtbare Waende die meine ganze Map blockiert haben. Das Ding habe ich mehr oder weniger zweimal bauen muessen.
 
In den naechsten Tagen werde ich damit weitermachen wenn ich eine kleine map vom originalen Spiel umbauen werde,.
 
Das beste ist das man das gleiche Script mit wenigen Aenderungen in jeder Map verwenden kann, solange man die gleichen Namen fuer Areas und Gruppen verwendet. Kommt alles in der naechsten Woche (auf English).
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:49:19 PM
and the translation of the important part for everyone - I'll continue the tutorial with a different base map. The S01 map was a @&*%! to work with due to these invisble walls we got stuck behind the first time around. I'll prep a different map from the list on the first page of the thread to continue and focus on the mission script, rendering, bundling and debugging of the script or map.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:50:14 PM
time to continue with this - and with a slightly different approach than what I posted before. I said earlier:
 
Quote from: Fishmonger;180568

What is still missing is how to get this map to actually be playable to go in and test what you have just edited.

Well, based on my experience with the S01 mission map, I think this step has to come much earlier to avoid possible errors that will force you to redo the entire AI and trigger zones. You don't really know what happens on these maps you haven't built yourself until you walk around on them.
 
so instead of doing all the AI and then testing the map, the below step could be inserted at a very early stage - I'd say right at the point when you have your original game map world file entered in your editor, created the zones for spawn and zulu, and placed the spawn bots on the map. That's when you should export the map (just quick and dirty, draft mode or low rez, 1 or two passes, so that the editor creates a usable map you can spawn into and see if you can actually walk from spawn to zulu. On my modified S01 map there were invisble walls (they are still in that zip you can download) and they cannot be removed. They are NOT props you could remove in the xml file by searching for them, but part of the landscape file - at least that's what I think, since I never found them.
 
My first release of Left_Behind had these walls keeping everyone from getting from the spawn to the second trigger area. I should have caught that before spending lots of time on AI and scripts to make the map larger than the area the TDM map used... Lesson learned.
 
In my current map project, I walked every possible route to make sure nothing was blocking my path, and THEN started editing trigger areas and AI.
 
So once you have done the first draft map, just load it in multiplayer, join the server yourself and walk around. It's time well spent. It also is a good thing to do when you're doing something funky with the zulu zone or trigger areas in multi-floor buildings like the parking garage - you want to see for example if your presence on the floor below the trigger area causes a spawn, or ends the game too early.
 
I had one of those issues on Ghost_Behavior, where you are walking under the top floor zulu zone. setting the "Z" coordinate of the zone in the zones.xml to 830 (8.3 meters) made sure nobody ends the map before reaching the final group of bad guys on the top floor. However, the first time I did this it was set too high and never triggered. It still behaves a little strange as it now takes 20-30 seconds to realize that somebody has entered the zone. These are somewhat more advanced issues, but if you plan on doing things with buildings like the embassy or parking ramp, you should test this stuff before you fill the map up with bad guys and force yourself to shoot 100 guys to even get to the area that has to be tested.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:50:58 PM
Let's assume your map has no invisible walls and you have put all sorts of bad guys on the map, you've named them properly by area (e.g. group_id="area01" for the first spawn group), you need to create  mission script that actually uses your trigger areas to spawn these bad boys... 
 
The map editor in GRAW does not do any of this work for you. You have to do this in a text editor. The good news - unless you get fancy in your maps, the code for spawning enemy groups by area triggers is virtually identical for each map and can be reused as long as you name your areas and groups the same way it has been done in the mission script.
 
So to save you time and to allow you to use most of a basic mission script I'll provide here, here are the naming conventions I usually adhere to:
 
Areas:
 
I name the trigger zones for regular foot soldier enemy groups as follows
 
area01
area02
area03
...
area11
area12 etc
 
(reason - it sorts better in the map editor than the suggested area1, area2 etc - once you exceed 9 zones, which you will on most maps.
 
I name dedicated zones to trigger an MG or MK19 launcher
 
area_mg1
area_mg2
area_mg3  etc
 
 
since I never really have more than 5 or 6 of these on a map. If you go back in this thread, you will see that I use the same names for enemy group IDs and Machine gun IDs, so they do spawn together and I am able to spot what belongs to what on the map easier.
 
 
I name AI enemy groups
 
area01
area02
area03
 
 
for single spawns where there are no optional groups availble to random spawn and select from. when I have more than one version for a trigger, I use
 
area01easy
area01hard
area02easy
area02hard
area03easy
area03hard
etc.
 
On some maps I have 4 versions for each enemy area with the first part of the name to match the trigger zone, so things still are easily spotted on the map editor. You don't what an area03 guy to spawn in area04, as that may just drop some AI right in the face of a ghost.
 
I name all my panhards and panhard crews in group_id and vehicle_id fields as follows
 
panhard0
panhard1
panhard2
 
etc.
 
things like tanks, helis and c4 triggers are a different thing and rare enough to carry custom names. There really won't be any copy/pasting necessary on those rare items. The mission script pretty much deals with area triggers and AI groups and vehicle spawns.
 
Now, the first time you see one of those scripts you're gonna go "whoah - wtf?" since the format is XML and it's rather verbose for what really is a very limited amount of content. It also is an unforgiving format - one typo and the map will crash on load...
 
Next post will take a look at one of those scripts to show you why we are naming things the way I just explained.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:53:56 PM
so here it is - a mission script for a basic map. I'll post the whole thing first, then analyze what it does and what you may have to change to make it work for your map.
 
The file usually sits in the edit environment in the /work/yourmapname/script/  folder and is called mission.xml. However, when exported, the file structure in the bundle is changed and the file is renamed to yourmapname.xml and moves to the data/levels/custom_levels/yourmapname/ folder
 
Here's the script for my small sawmill map - it has two MGs and 10 trigger areas, so it should work for any small to medium map as a basis. I'll also color code the different sections of the code to be able to better explain what these things mean
 
 

<?xml version="1.0" encoding="ISO-8859-1"?>
<World>
 <!-- World -->
 <load_scene file="/data/levels/custom_levels/sawmill/sawmill.diesel" use_lightset="true" materials="/data/levels/custom_levels/sawmill/materials.xml">
 
  <object name="world_bb" hidden="true"/>
 
  <object name="room01" hidden="true"/>
  <object name="Plane01" hidden="true"/>
 
  <global_ambient color="60 60 40"/>
 
 </load_scene>
 <load_scene file="/data/objects/lens/normal_lens.diesel">
  <object name="normal_lens" hidden="true"/>
 </load_scene>
 <load_scene file="/data/objects/lens/zoom_lens.diesel">
  <object name="zoom_lens" hidden="true"/>
 </load_scene>
 
 <script_data>
 
  <xi:include href="/data/levels/common/common.xml#xpointer(/common/*)"/>
 
  <area_group name="area01" area_name="area01" group="mp_players" interval="0.3" condition="1"/>
  <area_group name="area02" area_name="area02" group="mp_players" interval="0.3" condition="1"/>
  <area_group name="area03" area_name="area03" group="mp_players" interval="0.3" condition="1"/>
  <area_group name="area04" area_name="area04" group="mp_players" interval="0.3" condition="1"/> 
  <area_group name="area05" area_name="area05" group="mp_players" interval="0.3" condition="1"/>
  <area_group name="area06" area_name="area06" group="mp_players" interval="0.3" condition="1"/>
  <area_group name="area07" area_name="area07" group="mp_players" interval="0.3" condition="1"/>
  <area_group name="area08" area_name="area08" group="mp_players" interval="0.3" condition="1"/>
  <area_group name="area09" area_name="area09" group="mp_players" interval="0.3" condition="1"/>
  <area_group name="area10" area_name="area10" group="mp_players" interval="0.3" condition="1"/>
  <area_group name="area_mg1" area_name="area_mg1" group="mp_players" interval="0.3" condition="1"/>
  <area_group name="area_mg2" area_name="area_mg2" group="mp_players" interval="0.3" condition="1"/>
 
 
  <user name="wave01" type="once">
   <trigger type="UnitInArea" area="area01"/>
  <event name="activate_wave01"/>
  </user>
 
  <user name="wave02" type="once">
   <trigger type="UnitInArea" area="area02"/>
  <event name="activate_wave02"/>
  </user>
 
  <user name="wave03" type="once">
   <trigger type="UnitInArea" area="area03"/>
  <event name="activate_wave03"/>
  </user>
   
  <user name="wave04" type="once">
   <trigger type="UnitInArea" area="area04"/>
  <event name="activate_wave04"/>
  </user>
 
  <user name="wave05" type="once">
   <trigger type="UnitInArea" area="area05"/>
  <event name="activate_wave05"/>
  </user>     
 
  <user name="wave06" type="once">
   <trigger type="UnitInArea" area="area06"/>
  <event name="activate_wave06"/>
  </user>     
 
  <user name="wave07" type="once">
   <trigger type="UnitInArea" area="area07"/>
  <event name="activate_wave07"/>
  </user>     
 
  <user name="wave08" type="once">
   <trigger type="UnitInArea" area="area08"/>
  <event name="activate_wave08"/>
  </user>     
 
  <user name="wave09" type="once">
   <trigger type="UnitInArea" area="area09"/>
  <event name="activate_wave09"/>
  </user>     
 
  <user name="wave10" type="once">
   <trigger type="UnitInArea" area="area10"/>
  <event name="activate_wave10"/>
  </user>
     
  <user name="mg1" type="once">
   <trigger type="UnitInArea" area="area_mg1"/>
  <event name="activate_mg1"/>
  </user>     
 
  <user name="mg2" type="once">
   <trigger type="UnitInArea" area="area_mg2"/>
  <event name="activate_mg12"/>
  </user>     
 

  <event name="start_game">
   <element type="UnitInArea" area="area01" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area02" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area03" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area04" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area05" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area06" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area07" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area08" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area09" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area10" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area_mg1" state="activate" start_time="0.2"/>
   <element type="UnitInArea" area="area_mg2" state="activate" start_time="0.2"/>
  </event>
 
  <event name="activate_wave01">
   <element type="ActivateGroup" group_id="area01" start_time="1.0"/>
   <element type="UnitInArea" area="area01" state="deactivate" start_time="1"/>
  </event>
 
   <event name="activate_wave02">
   <element type="ActivateGroup" group_id="area02" start_time="3.0"/>
   <element type="UnitInArea" area="area02" state="deactivate" start_time="3"/>
  </event>
 
  <event name="activate_wave03">
   <element type="ActivateVehicle" vehicle_id="panhard1" start_time="1"/>
   <element type="ActivateGroup" group_id="area03" start_time="5.0"/>
   <element type="UnitInArea" area="area03" state="deactivate" start_time="3"/>
  </event>
 
  <event name="activate_wave04">
   <element type="ActivateGroup" group_id="area04" start_time="2.0"/>
   <element type="UnitInArea" area="area04" state="deactivate" start_time="1"/>
  </event>

   <event name="activate_wave05">
   <element type="ActivateGroup" group_id="area05" start_time="2.0"/>
   <element type="UnitInArea" area="area05" state="deactivate" start_time="1"/>
  </event>
 
  <event name="activate_wave06">
   <element type="ActivateGroup" group_id="area06" start_time="1.0"/>
   <element type="UnitInArea" area="area06" state="deactivate" start_time="1"/>
  </event>
 
   <event name="activate_wave07">
   <element type="ActivateGroup" group_id="area07" start_time="1.0"/>
   <element type="UnitInArea" area="area07" state="deactivate" start_time="1"/>
  </event>
   
  <event name="activate_wave08">
   <element type="ActivateGroup" group_id="area08" start_time="2.0"/>
   <element type="UnitInArea" area="area08" state="deactivate" start_time="3"/>
  </event>
 
  <event name="activate_wave09">
   <element type="ActivateGroup" group_id="area09" start_time="2.0"/>
   <element type="UnitInArea" area="area09" state="deactivate" start_time="3"/>
  </event>

    <event name="activate_wave10">
   <element type="ActivateGroup" group_id="area10" start_time="2.0"/>
   <element type="ActivateVehicle" vehicle_id="panhard0" start_time="1"/>
   <element type="OrderCar" vehicle_id="panhard0" order="move" position="-1337 -1138 1095" start_time="3"/>
   <element type="UnitInArea" area="area10" state="deactivate" start_time="3"/>
  </event>

    <event name="activate_mg1">
   <element type="ActivateGroup" group_id="area_mg1" start_time="4.0"/>
   <element type="UnitInArea" area="area_mg1" state="deactivate" start_time="6"/>
  </event>
 
  <event name="activate_mg2">
   <element type="ActivateGroup" group_id="area_mg2" start_time="3.0"/>
   <element type="UnitInArea" area="area_mg2" state="deactivate" start_time="1"/>
  </event>

  <player name="player1" mod_name="OnFoot">
   <spawn unit_name="ghost_player" object="spawn_player1"/>
  </player>
  <player name="player2" mod_name="OnFoot">
   <spawn unit_name="ghost_player" object="spawn_player2"/>
  </player>
  <player name="player3" mod_name="OnFoot">
   <spawn unit_name="ghost_player" object="spawn_player3"/>
  </player>
  <player name="player4" mod_name="OnFoot">
   <spawn unit_name="ghost_player" object="spawn_player4"/>
  </player>
 
 
  <gametype_info name="enemies_to_kill" value="50"/>
 
  <spawn_manager>
   <!--<xi:include href="/data/levels/merge_xml/common_spawn.xml#xpointer(/to_include/spawn/*)"/> -->
  </spawn_manager>
 
 </script_data>
</World>
 


Even thought his is a lot of stuff at one glance, you're probably able to spot some repetition here.
 
 
Text in this color is code that always remains the same.
 
It's just fluff that we don't really need to care about except for the words in red text -that is where the file has to have the name of your map in it. If you copy paste these scripts from one map to another, this is an area you must modify to match your map. 
 
If you were to write the above all from scratch into the blank placeholder mission.xml the editor creates for you, these words are usually "my_map" or your map's name. In any case, double check there to make sure it matches the map name. Also - always name maps and folders the same, never use spaces, etc - it'll save you and server administrators headaches later on.
 
The code in green is where the mission script tells the game engine that you want to use the listed areas as triggers. If you don't set them up like this, the game won't care to use them and nothing will ever trigger.   Again, note my naming convention.
 
And since computers are stupid or programmers want flexibility, you also have to use another batch of code marked in orange to tell the server what to do with the above areas - in this case and so far in all maps I have made the code is to tell the server that we are about to use the areas as triggers based on "UnitInArea" - i.e. if anyone of us should walk into it, go do something. One can also use "VehicleInArea" to trigger things, or, which I am working on in my next map, create a trigger based on the condition of an enemy unit (number of casualties equals a certain number, spawn something else, etc).  For now, stick to the code shown here, as it will serve you well in just about any map you'll make. These triggers also tell the server what "events" to run when they do get triggered. I named mine based on the area number e.g. "activate_wave01"
 
Pink text is where the first event of the script is defined. "Start_Game" is an event that happens on every map and in most maps it is used to activate the trigger zones. Yeah, we have defined them and we have told the server what to do when they get walked into, but hey, we did not tell the server to actually listen to anyone walking into those. Why is this necessary? Well, on really large maps and with slow computers, you don't want the server to be checking all these trigger areas for units walking into them. To cut down the load, you can activate the zones gradually, as folks wander across a map. However, I have never noticed any performance issues on servers by activating them all at once. The only maps that do it gradually are the single player missions by GRIN.
 
Green Text is the first real trigger event - this is where stuff is happening. The following area02 trigger event is more or less identical, and so are most of those following, except for area03 and area10, which both spawn a panhard.
 
The "activate_wave03" event launches a few AI soldiers like the two events above it, but it also spawns an stationary panhard (the one in the tunnel on that map) The code for that spawn is a single line  and if you named the crew and the vehicle as outlined earlier, they all should spawn together.
 
To make a Panhard actually go somewhere, we need another line of code in the event. The wave10 event in bright yellow is such an event. Note the coordinates in the line that gives the panhard a "move" order. That value comes from the world.xml file. As pointed out earlier, I simply place an extra panhard on my maps when editing them to create an object that has the exact coordinates I can use in the mission script. When I edit the script, this is where I use the coordinates.
 
The activation event for one of the MGs can be seen in blue - it is virtually identical to the regular AI group spawn events such as wave01, except the group name is different and matches exclusively the prop name of the MG and the group name you gave that single soldier to man the gun.
 
And there is one more line that needs to be edited: The number of enemies that can be killed on this map is shown in purlpe. This value works best for maps without random spawns. Otherwise, you just have to enter the highest value that can possibly be killed. If you leave the number too low, you will get things like 50 of 50 kills even if you shoot 124 enemies.
 
So much for the overview. Next some detail on each section.
 
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:54:38 PM
Let's take a closer look at some of these sections that may need manual editing
 
This code
 
<area_group name="area01" area_name="area01" group="mp_players" interval="0.3" condition="1"/>
 
at the beginning sets up a trigger area. What this tells the server in detail is the name of the area, in this case our "area01" which has to match those boxes you set up in your map. If you have a typo in here, the map will crash when you load it.
 
The "group=mp_players" pretty much stays the same at all times for our OGR maps. I think it means that it has to look for the ghosts to walk in there, and not AI. Interval is a value I have changed at times to make a trigger less likely to cause a spawn - it's a timer that looks for the length of the area penetration. If set to a higher value such as 10 seconds, a ghost has to actually be in the area for 10 seconds for the event to fire.
 
If the area is small and not necessarily on your route where all ghosts will walk, you can use it to randomize things such as a small sniper group or additional surprise ground troops. Leaving it at 0.3 seconds pretty much guarantees the event to fire immediately.
 
Condition? I think that's the number of ghosts that have to be in the area for this to fire. I've never used that to alter the effect, but it may be a nice touch for the end of a long map when you can adjust the level of opposition based on that counter, e.g. only trigger the dozen special forces if 4 ghosts walk into the zone.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:55:24 PM
Setting up a trigger:
 
  <user name="wave01" type="once">
   <trigger type="UnitInArea" area="area01"/>
  <event name="activate_wave01"/>
  </user>

 
Here you have not much to do - the "user name=" thing is just for you - name it what you want, as it is not used anywhere else. I think it makes sense to keep things numbered so you know what is what matching our areas.
 
The trigger line is where you tell the thing what to do - "UnitInArea" tells it to look for somebody walking it. Key value to enter correctly is "area01" for your "area01" in the map.
 
Event name is what is supposed to happen when a trigger condition happens. Again, you can pick whatever you want to call these events. I just used "activate_wave01" for this area, as it pretty much tells me what it's doing. Wave01 goes with area01, wave02 with area02, etc. You can call the event "idwic01" or whatever else fancies your mind, but you have to remember to use that exact term later in the script to identify the event.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:55:51 PM
The "start_game" event
 
 
  <event name="start_game">
   <element type="UnitInArea" area="area01" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area02" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area03" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area04" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area05" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area06" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area07" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area08" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area09" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area10" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area_mg1" state="activate" start_time="0.2"/>
   <element type="UnitInArea" area="area_mg2" state="activate" start_time="0.2"/>
  </event>

 
Nothing much to edit here on a normal map. All I am doing is "turning on" the areas as triggers, and I do it within 0.1 or 0.2 seconds of the map start. You could again get fancy here and change the area01 trigger activation time to something much higher. Combined with a small trigger zone that may surround the ghosts at spawn, this may mean if they leave quickly, they never get a chance to trigger that area as it won't listen for anyone being in there until your start_time counter runs down.
 
The only other code I have ever put into the start_game event is the stuff you need to do to prepare items to be blown up by C4 - that's for the advanced class, though.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:56:27 PM
Launching the first batch of enemy AI
 
  <event name="activate_wave01">
   <element type="ActivateGroup" group_id="area01" start_time="1.0"/>
   <element type="UnitInArea" area="area01" state="deactivate" start_time="1"/>
  </event>
 
 
This event follows the "start_game" event and it is what our area01 trigger activates once a ghost is found for more than 0.3 seconds within the boundaries of the area01 box(es) you put on your map in the editor.
 
The event_name line has to match the trigger setup from above in the script.
 
The elements listed here are first the one that makes the bad guys spawn. "ActivateGroup" is the type that looks in your world.xml files for all AI soldiers that were labelled with the group_id "area01" - if you have a typo in their group id, they simply won't spawn, but no harm done.  Start_time is the time between ghost walking into the trigger area and the server taking action to spawn the enemy AI. In some cases you may want to delay that time - really depends on the map and where your zone is and where the AI spawns.
 
The second element listed here,  <element type="UnitInArea" area="area01" state="deactivate" start_time="1"/>, was quite confusing to me at first. Turns out, all this line of code does is turn off the trigger. This saves some cpu on the server as the mission progresses. It also eliminates the chance for this area to trigger again, although I think that by default they only trigger once. I usually set the deactivate time to come after the last element has started, but I think it doesn't really matter.
 
Also, note the syntax of many of these entries: The event tag on the first line has no "/" before the end tag, but it has a matching full </event> tag at the bottom of the segment that allows it to bracket the stuff happening in between. The element tags on the other hand both end on a "/>" and thus don't need a </element> to follow them. Saves space, but it has caused some crashes on a recent map I made when I hand-typed the tags and didn't get that stuff right... the error was something about "expected element" or something else that didn't really tell me what was wrong.
Title: Re: GRAW Map Making for Dummis
Post by: Fishmonger on February 12, 2018, 01:57:08 PM
Let's have us a Panhard on the map:
 
  <event name="activate_wave03">
   <element type="ActivateVehicle" vehicle_id="panhard1" start_time="1"/>
   <element type="ActivateGroup" group_id="area03" start_time="5.0"/>
   <element type="UnitInArea" area="area03" state="deactivate" start_time="3"/>
  </event>
 
The event for wave03 duplicates the above code for wave01, except for the "ActivateVehicle" element:
 
   <element type="ActivateVehicle" vehicle_id="panhard1" start_time="1"/>

For a stationary panhard, there's not much to screw up. Make sure the vehicle_id matches the one you want (and if manned with a crew, make sure you follow the instructions to name them as shown earlier in the editor samples).
 
Don't bother putting passengers into a stationary panhard - I think they won't spawn in the APC anyway, or if they do, they'll just stay in back. I usually put a 2 man crew on a stationary panhard, so the gunner is up and the pistol-driver hops out and goes all rambo on you.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 01:59:06 PM
OK, panhards are only cool when they drive up and drop troops. This is how it's done
 
    <event name="activate_wave10">
   <element type="ActivateGroup" group_id="area10" start_time="2.0"/>
   <element type="ActivateVehicle" vehicle_id="panhard0" start_time="1"/>
   <element type="OrderCar" vehicle_id="panhard0" order="move" position="-1337 -1138 1095" start_time="3"/>
   <element type="UnitInArea" area="area10" state="deactivate" start_time="3"/>
  </event>
 
Note that the event "activate_wave10 doesn't have to contain any ground troops. You could set up a trigger that calls up nothing but a panhard or multiples. Not sure what the limit is, but I have never used more than two panhards at the same time. I recall reading that there's a limit of how many the server can handle simultaneously.
 
The key lines in the above event are
 
   <element type="ActivateVehicle" vehicle_id="panhard0" start_time="1"/>
   <element type="OrderCar" vehicle_id="panhard0" order="move" position="-1337 -1138 1095" start_time="3"/>
 
The activate element is identical to that of a staitonary panhard that is spawned. The "OrderCar" element is what makes it go.  As usual, make sure the vehicle_id matches the panhard you just activated. The position is what counts. I usually grab that out of the world file from my dummy destination panhards, that I then delete once their coordinates are transferred to the mission script line seen right here.
 
You can also go and fly around on the map and find the place you want to have to move to, hit F12 on the keyboard and use the coordinates from the little box that pops up at the bottom of the screen. I found the method with the placeholder more accurate, although I still see the panhards drive really stupid routes on some maps (Left_behind especially, where they run up against the hillsides...).
 
You can use multiple orders in more than one event for the same vehicle, although with Panhards that usually only works if the events are triggered in short succession. Once the crew gets out of the vehicle, they will never go back to it. Tanks are much better for multiple orders. There are also "waypoint" events, but I never have used them so far.
 
One more word about Panhard crews - wherever they get out of the vehicle, they become very aggressive recon troops who will move towards your fire. I don't think silencers have any impact on them, as they will find you at great distances away from the panhard. I have seen them walk across half a map to come up behind you at times... They make for good surprise squads :arrow:
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 01:59:37 PM
The MG activation:
 
    <event name="activate_mg1">
   <element type="ActivateGroup" group_id="area_mg1" start_time="4.0"/>
   <element type="UnitInArea" area="area_mg1" state="deactivate" start_time="6"/>
  </event>
 
Very much identical to the activation of normal enemy groups. Key here is to have the group_id of the single soldier that is to man the MG match the name of the MG prop in the world file and match the name of the trigger area. That way, they will always spawn together. I think one may be able to spawn MGs with a normal enemy group zone, but there may be some bugs as to which soldier will actually man the unit.
 
Just don't ask and use above code. If you want MGs to be random, we can do that with some more advanced code, or by placing the trigger areas in corners of the map that may not always be walked into.
 
The MG event also deactivates the trigger area just like the other events we have had.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:00:15 PM
Well, there you have it. Make a map with 10 waves of enemy AI, grouped into area01 through area10, add in two MGs called area_mg1 and area_mg2 with their respective AI shooter that carries the same group ID, slap one panhard on the map that is called panard1 with a crew of two, sharing group and vehicle_id with it, another panhard called panhard2 with crew and passengers called panhard2 and sharing the panhard2 vehicle ID, then set up the triggers on the map, change the name of the map on top of the code shown here, edit the max number of kills and put this file into your work\yourmapname\script folder as mission.xml and export the whole thing from within the editor as a draft. Go see what happens. You should have a working map if you don't have a typo anywhere.
 
If you don't want to copy paste the code from here, open up sawmill with the bundlereader.exe and extract the mission file called sawmill.xml and you'll have the above file as a starter.
 
If there are script errors, you will have GRAW crashes with a text window popping up showing you in some cryptic language what it didn't like. The most important thing in there is when it mentions "yourmapname.xml" it's talking about your script and there will be a number behind the alleged error - e.g. "group in void 121"
 
that number is the exact line in your mission script. Open it in an editor that can count lines for you and look for that line. In most cases, if you look hard enough, you can tell what you did wrong there.
 
that's about it for a basic script. I'll probably do a few more things about random groups and random events just to wrap this up. I don't really do maps without any random events any longer, as it is actually pretty darn easy to do and it adds a lot of replay-ability to every map while it won't cost much time at all to create those alternate AI groups and mission script lines.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:01:23 PM
warning - advanced content - do not attempt on first map :idea:
 
This is the Ghost Behavior map script (cut down to the parts that matter for this post)
 
Code: [Select]

<?xml version="1.0" encoding="ISO-8859-1"?>
<World>
 <!-- World -->
 <load_scene file="/data/levels/custom_levels/ghost_behavior/ghost_behavior.diesel" use_lightset="true" materials="/data/levels/custom_levels/ghost_behavior/materials.xml">
 
  <object name="world_bb" hidden="true"/>
 
  <object name="room01" hidden="true"/>
  <object name="Plane01" hidden="true"/>
 
  <global_ambient color="60 60 40"/>
 
 </load_scene>
 <load_scene file="/data/objects/lens/normal_lens.diesel">
  <object name="normal_lens" hidden="true"/>
 </load_scene>
 <load_scene file="/data/objects/lens/zoom_lens.diesel">
  <object name="zoom_lens" hidden="true"/>
 </load_scene>
 
 <script_data>
 
  <xi:include href="/data/levels/common/common.xml#xpointer(/common/*)"/>
 
  <area_group name="area01" area_name="area01" group="mp_players" interval="0.3" condition="1"/>
  <area_group name="area02" area_name="area02" group="mp_players" interval="0.3" condition="1"/>
  <area_group name="area_mg1" area_name="area_mg1" group="mp_players" interval="0.3" condition="1"/>
  <area_group name="area_mg2" area_name="area_mg2" group="mp_players" interval="0.3" condition="1"/>
 
 
  <user name="wave01" type="once">
   <trigger type="UnitInArea" area="area01"/>
   <event name="activate_wave01"/>
  </user>
 
  <user name="wave02" type="once">
   <trigger type="UnitInArea" area="area02"/>
   <event name="activate_wave02"/>
  </user>
 
  <user name="mg1" type="once">
   <trigger type="UnitInArea" area="area_mg1"/>
  <event name="activate_mg1"/>
  </user>     
 
  <user name="mg2" type="once">
   <trigger type="UnitInArea" area="area_mg2"/>
  <event name="activate_mg2"/>
  </user>     
 
 
 
  <event name="start_game">
   <element type="UnitInArea" area="area01" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area02" state="activate" start_time="0.1"/>
   <element type="UnitInArea" area="area_mg1" state="activate" start_time="0.3"/>
   <element type="UnitInArea" area="area_mg2" state="activate" start_time="0.3"/>
   <element type="SetIndestructable" name_id="ramp1" start_time="1.5"/>
   <element type="SetIndestructable" name_id="ramp2" start_time="1.5"/>
   <element type="SetIndestructable" name_id="ramp3" start_time="1.5"/>
  </event>
 
  <event name="activate_wave01">
   <element type="ActivateRandomGroup" group1="area01easy" chance1="45" group2="area01hard" chance2="85" start_time="1"/>
   <element type="UnitInArea" area="area01" state="deactivate" start_time="5"/>
  </event>
 
  <event name="activate_wave02">
   <element type="ActivateRandomGroup" group1="area02easy" chance1="50" group2="area02hard" chance2="90" start_time="1"/>
   <element type="UnitInArea" area="area02" state="deactivate" start_time="5"/>
  </event>
 
  <event name="activate_mg1">
   <element type="ActivateGroup" group_id="area_mg1" start_time="1.0"/>
   <element type="UnitInArea" area="area_mg1" state="deactivate" start_time="1"/>
  </event>
 
  <event name="activate_mg2">
   <element type="TriggerRandomEvent" event1="random_mg2" chance1="33" start_time="1"/>
   <element type="UnitInArea" area="area_mg2" state="deactivate" start_time="1"/>
  </event>
  <event name="random_mg2">
   <element type="ActivateGroup" group_id="area_mg2" start_time="1.0"/>
  </event>
 
 
  <player name="player1" mod_name="OnFoot">
   <spawn unit_name="ghost_player" object="spawn_player1"/>
  </player>
  <player name="player2" mod_name="OnFoot">
   <spawn unit_name="ghost_player" object="spawn_player2"/>
  </player>
  <player name="player3" mod_name="OnFoot">
   <spawn unit_name="ghost_player" object="spawn_player3"/>
  </player>
  <player name="player4" mod_name="OnFoot">
   <spawn unit_name="ghost_player" object="spawn_player4"/>
  </player>
 
 
  <gametype_info name="enemies_to_kill" value="146"/>
 
  <spawn_manager>
   <!--<xi:include href="/data/levels/merge_xml/common_spawn.xml#xpointer(/to_include/spawn/*)"/> -->
  </spawn_manager>
 
 </script_data>
</World>
 

Basically, the above would trigger two waves of AI with a randomizer picking between two groups each, triggers one normal MG and one that is randomized. There are also three objects that are set to indestructible, so you don't blow up those nice ramps that let you walk up on top of a building by throwing GLs on them.
 
Let's have a look at each of these new things in the next few posts
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:02:23 PM
The first new thing in this script are these three lines in the start_game event:
 
   <element type="SetIndestructable" name_id="ramp1" start_time="1.5"/>
   <element type="SetIndestructable" name_id="ramp2" start_time="1.5"/>
   <element type="SetIndestructable" name_id="ramp3" start_time="1.5"/>

What this does is alter three fences I placed on that map as a ramp, so that you cannot warp them with grenades to a shape that makes them unusable as walking ramps.  The first time I wanted to go up on the building I found those fences in rough shape and could not get up! so I named the fence props in the world.xml file as ramp1, ramp2 and ramp3, and came back to the script to use the code I last used when preparing trucks to be blown up on other maps. In this case there's no C4 at all and the three ramps remain on the map in fine shape no matter what you throw at them.  The same code can be used on vehicles you want to use to block certain routes on maps.
 
Note that if you have a large number of these on a map like I have on Expendable_Assets, there's some noticeable lag at the beginning of a match. Nothing wrong with that, just be aware of it.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:04:03 PM
Now for the main new item on this map - ActivateRandomGroup!
 
  <event name="activate_wave01">
   <element type="ActivateRandomGroup" group1="area01easy" chance1="45" group2="area01hard" chance2="85" start_time="1"/>
   <element type="UnitInArea" area="area01" state="deactivate" start_time="5"/>
  </event>

You'll notice that there's not much different here from a normal "ActivateGroup" element. The event name, the area triggers, everything else is identical in the script. What you had to do to make this work while placing AI on the map is create duplicate AI groups with different orders or skill levels for a single spawn zone. In this case for the area01 trigger, I chose two groups, called area01easy and area01hard. There are essentially duplicate enemy groups configured for the spawn and the script will randomly pick from them.
 
The random part is set up with the group1="area01easy" chance1="45" group2="area01hard" chance2="85"  part. The chances are done by allocating a certain number range below 100 for each event. In this case, area01easy has a 45% chance of happening, while the other will happen in 40% of the games played. Why 40% and not 85%? Because these chances are exclusive and you already allocated 0-45 to area01 easy. If number 46 through 85 comes up, you second group will spawn. The remaining 15% that aren't even listed would spawn nothing - those are the "freebie spawns" we all like so much on this map.
 
If you did this group1="area01easy" chance1="50" group2="area01hard" chance2="100"  there would be no freebie spawn, and both easy and hard groups would have an equal chance of happening.  I sometimes edit these values during map testing to see each group predictably, and temporarily set the chacnes to something like this to see the easy group:  group1="area01easy" chance1="99" group2="area01hard" chance2="100"  
 
This is all there is to the random spawn of AI groups. You can have up to 4 groups (chance1, chance2, chance3 and chance4 plus leave some percentage for the non-spawn to have a total of 5 possible outcomes for each spawn. I do that on Expendable assets on almost every single spawn, providing 5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5 possible variations of the map AI. You'll never see the same map twice, although you really only need to know about 70 different AI groups that will happen in 16 zones. :twisted:
 
Start small - do this with 2 groups - it already adds a lot of surprise to the map, and it saves you from an editor going down to 2fps when loading the human layer filled with 400 AI groups.
 
Now, there's a second way to do things randomly, and you'll have to use that one for MGs, Panhards, tanks, helis, but it also works for human AI. See next post with an MG as the example.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:05:11 PM
Triggering a random event, rather than spawning a random AI group, is done like in this MG2 random spawn example:
 
 
<event name="activate_mg2">
   <element type="TriggerRandomEvent" event1="random_mg2" chance1="33" start_time="1"/>
   <element type="UnitInArea" area="area_mg2" state="deactivate" start_time="1"/>
  </event>


  <event name="random_mg2">
   <element type="ActivateGroup" group_id="area_mg2" start_time="1.0"/>
  </event>

There are actually two events here. The first one is the one that is triggered by a ghost walking into a map trigger area called "area_mg2" (see full code several posts above to see that stuff) that in turn leads to the "activate_mg2" event. In this case the activation is actually not for certain, but replaced by a random trigger:
 
   <element type="TriggerRandomEvent" event1="random_mg2" chance1="33" start_time="1"/>

This is the most basic way the TriggerRandomEvent code can look - just a single event with a 33% chance, leaving 67% to a non-event scenario. You can have up to 4 events in that line of code. Example:
 
   <element type="TriggerRandomEvent" event1="random_mg2" chance1="33" event2="random_mg3" chance2="50" event3="random_mg4" chance3="65" event4="random_mg2" chance4="90"   start_time="1"/>

Doing it this way, and provided you have set up 4 MGs to be available for random spawn, can have 5 different outcomes. The outcome if a random number below 34 came up would be the event "random_mg2" and that is what is on the original script:
 
  <event name="random_mg2">
   <element type="ActivateGroup" group_id="area_mg2" start_time="1.0"/>
  </event>

 This part is what does the actual activation of the area_mg2 group, which is the MG and the guy shooting it. If you had a setup with 4 mg choices, you'd need the other three events in the script as well.
 
One thing you don't want to do ever is refer to the same group_id in different random triggers - e.g. you don't want area_mg2 to come up in two different random triggers, as I am certain the game will crash when it calls it up the second time.
 
I have used the random trigger to call up the very same panhard or groups of panhards at different start times, or to give them different move orders. So even though I have the same single vehicle on the map, I am choosing randomly between various different orders. Once you get a good feel for this stuff, you can probably come up with other ways to use the TriggerRandomEvent code. One idea would be to make a C4 charge appear for a shortcut on a big map randomly - forcing a check on that location and possible retreat if the area does not allow you to blow up the barrier.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:05:59 PM
Now we're pretty much done with the basics. Everything posted here so far will let you take a map, put your AI on it, set your triggers, change a few props, do the script and then export it from the editor. If the map is not too large, you could set the editor to 5 passes and medium quality in the export dialog for the lightmaps and let it crank out a finished map in a few hours. Done. You made a map.
 
There's one catch, though: if you should find a minor error such as a vehicle not moving where you want it to go, or you feel the need to place more or less AI in some areas, you will have to do that 2-4 hour export again. The editor does allow you to un-check the lightmaps box, so you can save a large chunk of that time, but it will still take a while to re-export the AI graph, create a new minimap, etc.
 
It is much MUCH faster to work with the bundler.exe tool. I will next describe how I use the bundler to make changes to a map in seconds, as well as to use the lightmaps that are already in the game from the original single player missions (which are too big for my computer to render better than low quality light maps on)
 
Don't confuse the bundler with the bundlereader.exe app - they do the exact opposite thing!
 
The bundler won't work with the directory structure the editor uses in the custom_levels folder, so you have to create at least one exported map of your work that then can be used as a basis for all future bundler work. I'll post some screen shots and detailed instructions later when I have time to put that together. It was one of the most complicated things to figure out for me, mostly because all the posts I saw were really not written to help a total noob like me in detail. Once I figured it out, it was actually extremely easy to use this tool and I can now do changes such as turn on all the street lights on a map in less than a minute of working in notepad and using the bundler. Also, fixing script errors now really is mostly a matter of finding the error, as once corrected, the bundler lets me put the updated file together in one keystroke.
 
I also use the bundler to get those custom minimaps into my maps - something you cannot do without it. More info on that after we have covered the basics of the bundler, which is an ugly command line tool :???: but with a few tricks you can make it less cumbersome.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:07:28 PM
One file that can easily be edited in notepad and wrapped back into the bundle with the bundler is the "description.xml" map. Even though you can do everything that needs to go in there in the editor, I find myself updating this file quite frequently (the date of the release, with each update, for example).
 
I just opened the description.xml from Gobo4 to make sure the map is really called "Gobo4" in game, which is something this file defines. To call it up properly in the server map cycle, I need that name right. So while I was doing that, why not have a look at what you can do here:
 
 
 
Code: [Select]
<?xml version="1.0" encoding="UTF-8"?>
<description>
 <menu name="Gobo4" mode="MPCoop" />
 <level_desc value="" />
 <level>
  <set value="ghetto"/>
  <set_graffiti value="0"/>
  <backdrop_cube value="atlas_mission_spec_editor/backdrop_cube_d"/>
  <mission_time value="day"/>
  <cube value="atlas_mission_specific/mission02_specific/cube"/>
 </level>
 <export>
  <export_name value="Gobo4"/>
  <gametype value="MPCoop"/>
  <lightmaps value="true"/>
  <ai_graph value="true"/>
  <lightmap_resolution value="medium"/>
  <lightmap_num_passes value="3"/>
 </export>
</description>

 
The code shows that the map maker was too lazy to give the level a description. The field <level_desc value="" />  contains the text you see at the map load screen.  I usually put at least some basic map info and the max kills, map date and other info in there.
 
 <menu name="Gobo4" mode="MPCoop" /> 
 
This is where the name of the map you see in the multiplayer menu shows up. The mode is important and more than once have I found my map export as "Domination" or other format. MPCoop is what we need for an OGR map. Double check your files if stuff doesn't look right when you join your map for testing.
 
The rest of the file has to do with the lighting in the game and is best left alone unless you really know what you're doing. This stuff is set in the editor under the Sky Environment menu and on the export screen where you pick day or night.
 
All the stuff in the lower half of the file is editor specific and has nothing to do with the map when you are in it.
 
While we're talking export - if you were to build your own map or modify an existing map enough that you have to render new light maps, try to do it on the medium level. If you run out of memory, don't just go to low quality right away - change the editor's video settings to 800x600 and turn everything in the menu off or to low. Then exit the editor, restart it, load your map and export now - amazingly, you just cleared up a few hundred megs of memory. The best looking maps out there are done in 5 passes at medium. I have never been able to come up with a working "high" quality export. Even my 3GB system with 768MB video card keeps running out or RAM on that level, or it produced goofy results like on sawmill, where the terrain looked like it was some flannel blanket with a nice flower pattern :???:
 
Once you export a map and like the terrain, you won't have to do this again due to the bundler. Only when you change props and static objects that throw shadows will you need to update the light maps. You are not creating textures in that process, but the shadow and light areas. All textures are in the game for all objects we use, so those are already high quality. The thing that gets goofy at the lower qualities is the lighting.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:12:13 PM
Ok, in preparation for the stuff on the bundler application - here's a link to the tutorial I used to figure it out:
 
https://www.ghostrecon.net/forums/index.php?showtopic=36760 (https://www.ghostrecon.net/forums/index.php?showtopic=36760)
 
 
The key items I took from the tutorial are to put my project maps in a folder structure down on the c: drive that looks like this:
 
c:\mymap
 
and inside that folder it's the same structure as in the BUNDLE files, not the structure you find in the editor temp files inside the custom levels folder. The easiest way to get your map into that structure is to simply unbundle it to the C: drive and rename what becomes a mymap.bundle folder to just \mymap. In it it's all going to be perfect.
 
the next thing that's important is to know your bundler command line with all the right switches. I saw many incorrect posts about this. Here's what works, given your files are in c:\mymap in the right structure:
 
C:\path_to_your_bundler_exe\bundler -vvb quick-bundle -r C:\MyMap -D mymap.bundle
 
On my system the command is somewhat more complex, as there are space in file names and everything needs to be wrapped in quotes to work. Here's the exact command I used to rebundle the thinning_the_herd map (and because it is such a mess, I keep a text file on my desktop that has this line of code in it. For new maps I edit the name of the map and save it for the next few days of use. I just copy/paste it from the text file into the dos box to do the below):
 
(https://www.speedcenter.com/graw/tutorial/pix/bundler_command_dos.gif)
 
 
When things work out alright, you will see a screen like this scroll by:
 
(https://www.speedcenter.com/graw/tutorial/pix/bundler_dos_results.gif)
 
The bundler also creates a text log that gets dumped next to the bundle file into c:\ when using the above synax - check in there for any possible errors.
 
 
I also have a screen of the directory structure of the unbundled raw files I keep editing and replacing before rebundling with the above command. In the picture below I am selecting the Left_Behind map minimap tga file to open and edit it in Photoshop:
 
(https://www.speedcenter.com/graw/tutorial/pix/find_minimap_here.gif)
 
 
The structure of the directories in these folders must always be the same
 
The minimap is in the /gui dir, while most of the stuff that needs frequent replacing while debugging a map are the world and script files in
C:\thinning_the_herd\data\levels\custom_levels\thinning_the_herd
 
and
 
C:\thinning_the_herd\data\levels\custom_levels\thinning_the_herd \xml
 
respectively.
 
Knowing this structure is also very important for recycling those light maps from the maps supplied with the game as single player missions, since this is where you exchange your low quality light maps with what you unbundle from the original mission file. You have to replace 3 files usuall to do that - two are in the same directory with the world.xml file and are called ambient_cubes.bin and massunit.bin, plus you may need to replace the texture_scope.xml with the one from the original mission if you have the old yellow-blue object issues. In the above example, that file sits here
 
C:\thinning_the_herd\data\levels\custom_levels\thinning_the_herd\texture_scope.xml
 
Note that I do a lot of editing in the GUI editor to move objects, etc that need updates from the last version. All I do after that is take the latest numbered world_nn.xml from the work directory inside /custom_levels of the game, copy it into the above extracted map structure where the world.xml sits, delete that file, rename the new one to world.xml and bingo, the map can be rebundled.
 
You can always remove map items that way, but when you move them or add them, you will have to do a complete lightmap render job, so make sure your map has everything on it before you render light maps. If you are using maps from the original games, you can always remove stuff. Adding is limited to a very small number of props that don't generate light maps of their own. I could post those props, but that would go off topic here.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:16:15 PM
and one more thing about how to reuse existing maps from the game:
 
since you more or less just link to the existing files in the game by replacing the texture scope file with one that came with the map you are reusing, you can delete those temp light maps that were exported when you created the first draft of your map in the game editor. Those files are in
 

C:\THINNING_THE_HERD
   data
      levels
         custom_levels
            thinning_the_herd
               xml
      textures
         custom_levels
            thinning_the_herd
               lightmaps
                  atlas0
                  atlas1
               gui

 
highlighted in yellow.  Or below a screen shot from the Left Behind map, where I deleted those files after updating the texture_scope.xml to point at files existing in the game already:

 
(https://www.speedcenter.com/graw/tutorial/pix/delete_lightmaps.gif)
 
These files can stay there, but it makes the final bundle unnecessarily large. Whenever you reuse lightmaps already in the game, the bundles are pretty small files. My big maps are much smaller than medium maps with custom light maps included in these directories.

To understand what is going on here, look inside of the texture_scope.xml the game editor exports and then compare that with the texture_scope.xml you are grabbing from the game level you started out with.

None of this applies when you make your own world - you have to render those light maps and obviously they have to stay in the bundle.


Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:18:16 PM
Quote from: sirgimmi;181080
(
German question about crashes in a given location on the map)
Hallo
 
noch eine Frage, ist es notwendig dass ich eine bestehende Map nehmen muss um eine MP zu erstellen oder kann ich auch mit einer vollkommen leeren Map eine MP erstellen? Ich meine von vorne weg mit dem Aufbau der Map beginnen?
 
Kann es sein dass deswegen immer mein GRAW nach ca 10min oder fast immer am gleichen Ort abstürzt?
 
Danke und Gruss
sirgimmi

you can use a custom made map - the idea of re-using existing maps is to save time on the creation part of the world (that's a whole new tutorial). Also, some of the large mission maps in the game are so detailed and complex that the editor that is in the game cannot render lightmaps for them: out of memory errors, even on a really powerful system. So you use what's there.
 
However, you can make/change maps all you want. Just make sure you can render the light maps at least in low quality 5 passes, better medium quality 5 passes. Otherwise you'll have black pavement areas and all sorts of strange lighting and textures issues.
 
Crashing somewhere on a particular map may have two reasons - bad world file (map) or bad script - how does it crash? If you get a text box with an error message, it's probably the script. If it just gets you a lockup, your have most likely an issue with the world file. Those are a real pain to diagnose...
 
Here a tip if you build your own maps: don't do anything with AI or areas or even AI Graph until you have walked around the entire map by yourself. Render out a map with just start and end zones, spawn dummies, and set up a OGR game just for yourself. Check the map for errors that way as the editor will do a lot more than the game will allow. Once things look good and work well, you can put AI and script to the map using the bundler tool as described above.
 
About panhards not moving: Where's your vehicle AI graph in relation to the panhard? It cannot move unless it spawns on that graph. See tutorial. If it is on the graph, are your order coordinates correct and is that destination reachable via the AI graph (nothing on the route blocking the approach)? And - note that even if Panhards have orders to move to a particular destination, they don't always drive there. They do have some brains and will stop if they encounter enemies and start shooting and unloading passengers way early, sometimes right at spawn.  MG on the panhards does not "react?" Do you see a crew on it? IF there's nobody on the gun, you didn't set up the vehicle/crew properly. Go check the tutorial again - it is very important to have the same VEHICLE ID and GROUP ID for the crew and the passengers and the vehicle.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:19:44 PM
Quote from: Jake Speed;181272
News from a time when Jake was still making maps!

Did you know that creating a new map deletes the old auto named one. Anyway I had 1 world file saved in a different directory to compare to the corrupted one and was able to save the 6 hours of work. Thanks for the help Fish
 
Jake Speed

good practice is to have a map name ready when you first hit the "New" button in the editor and get it named the way you want the place to be called in the future right off the bat. That whole My_Level stuff just causes headaches when it gets to finishing the map. There are a number of files that link to each other based on map name and some will actually be renamed to the map name when you export the project (the "mission.xml" script would suddenly be "my_level.xml" and you'd have to change all sorts of links to that in the "dsf" files, which are files you usually do not have to touch.
 
been there done that...
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:21:25 PM
Quote from: AmEyeBlind;181285
hi there
nice threat, good job.
do u have somekind of list what script cmds work on a dedicated server?
i seen u had problems with the two quaters map becouse of some commands.
would be good to know the no goes. dont want to creat crashing maps. ;)

All I know is that the trigger random event, randomgroup, and the normal group spawns work, that C4 stuff works, and tanks/panhards/heli orders are pretty good. Everything related to objectives beyond reaching zulu doesn't work, and most "compositions" only work on a single round. When dedicated servers are set to more than one round, those things don't trigger on a second run (Danger_Zone by RPGhard is an example - F18 air strike works only once, next round you gotta take out the tank with zeus). However, other things, such as the embassy explosion or gas station blowing up will work and repeatedly in multiple rounds on a dedicated server.
 
Bottom line - stay with the basics and you're gonna do fine on dedicated servers.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:23:18 PM
some basic information about creating maps from scratch.

I've just spent 5 days building a new city landscape from scratch and have probably found a pretty good approach in terms of what to do when, plus with Jake's help, I finally figured out how to move static objects up and down... it was one of those duh-moments, but hey, it will bring you sewers under the streets :arrow:
 
The map was supposed to be a city with some bombing damage similar to mission 12 map in the single player campaign.
 
I chose City as the texture base set and started with the black void only inhabited by our dummy soldier.
 
The key choice to make at that point was what to place first? Streets? Buildings? alternate? I chose buildings, leaving good sized gaps for roads where I felt like running some sort of road. You have to have a sense for how much space you will need for the road and sidewalk, plus it helps to have a rough idea about what the city should look like (where are the tall buildings, the lower ones, park, etc). I also made sure I worked somewhat into both directions from the dummy soldier starting point, as that will make it easier at the end to create the zone that will be shown in the minimap. IF you keep it square and just grow equally in all directions, you will only have to increase one digit in each value in zones.xml. I didn't quite get it that nicely, plus my area is more rectangular, yet it was still the easiest map so far to adjust my red box for the minimap zone shot.
 
Placing objects - F1 gives you basic help in the editor and tells you most things. Right button places object. If there's an obstruction, it won't unless you keep the button pressed for 2 seconds and "force" the static object to be placed. Don't overlap textures, but in some cases you have to do this for things like the highway overpass, which will work fine, but then the editor won't want to put roads or grass under it. Right click nice and long and it will do it!
 
To rotate the object, you need to click the mouse wheel button - each click rotates a static 90 degrees counter clockwise. Delete key comes in handy after each incorrect placement, then rotate again and drop the object with the right button until you get it to line up properly.
 
Some maps need you to place buildings, roads and walls at various altitudes. The maps that use custom terrain and the historic city static set, as well as sewers require that you move the plane up or down. The cursor/arrow keys on your keyboard do that! Each click is up or down 5 meters. There is no in-between option.
 
some static objects in the editor have alternate versions - see the possible pulldown menu on the bottom left of your screen. some buildings have normal and damaged versions, others come with alternate textures or slight 3D changes to make them look unique. That enlarges the number of unique looking objects quite a bit and allows you to build more realistic maps.
 
when you're done with roads and buildings, it's time to put "props" on the map. Those are things like garbage cans, light poles, traffic lights, walls, fences, trees, flower beds, bushes, etc - There's a LOT of stuff here to do. To save time, I usually pick one group of props or a single one and go all over the map to place it where I want it to occur, rather than to work on one corner of the map at a time, swapping props in the editor for each small area to complete them. You may want to do this at first, especially to learn what all these props on your list are, as the naming is not necessarily intuitive. You won't find a "tree" anywhere under the letter T - you need to look for flowerbed_tree or shanty_tree or street_tree or palm_tree... many other objects are named even less descriptive.
 
The biggest thing about placing props is to get them to snap to surfaces and not to overlap things like fences. You get the proper elevation with the "N" key - it changes the placement mode to "planar" and trees suddenly won't float in mid air, etc. However, sometimes you may want to place something at an odd elevation, for example in order to rotate it to lay it on it's side without half-burying it in the ground. Then you use the normal mode (toggle with N key again to turn off planar mode). To change that insertion elevation (the little green sphere tells you where it's gonna go) use the PageUp and PageDown keys. Tedious, but you don't use that mode very often. Just place and check, delete if not where you want it. I used this trick to get some fuel tanks below the map surface so that my C4 explosions are bigger and better than normal...
 
I reserve military type props for later in the build process, as I don't really have a clue where to set up a 50 cal until I get into the AI process. Sandbags are one of those things, but since you need them on the map for rendering the light maps properly, you gotta decide before you render where to place those. On my most recent map I forgot about sandbags and rendered 22 hours to get the map done - now I'd have to do this again to add sand bags. Guess I'll just add ammo crates for cover on the .50s instead, as those don't need light maps rendered (those are the little tricks you learn after you've made a dozen maps)
 
Once you feel like most of your props are in place, you can start loading up the roads with vehicles. You find those on the "Dynamic" menu. The vehicles that can actually move in the game are something I place with the AI later in the process.  Right click on map and click again to drop the thing once you hovered it and rotated it (cursor keys) to the position you want to place it.
 
Sound is another important element - place those once the landscape is pretty much all set. There are a few cues you need to know and type into the "cue" field correctly when placing them: birds, crickets, foliage, frogs, etc - I don't have a complete list, but if somebody wants it I can post those I know).
 
Sky environment - think day or night map, then pick a sky and memorize the mission it came from, since on map export, you should match the sky with the "cube" for the light source of that arrangement.
 
AI graph - gotta put that on the map. Wait until you are certain you will not change any props or even statics, because you'll end up with a bad graph. Make the world work first, render the lightmaps and walk around in the map before you begin wiht the AI stuff. Remember your vehicle AI graph has to be a single graph - cannot be broken into more than one connected network! If you place a barrier on a road that has an AI graph on it, it will break it in most cases, so do the barriers before you do AI graphs. You may change your mind about some barriers once you realize they seriously reduce your vehicle range on most maps.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:24:09 PM
I think I'll keep adding things here like in a blog as I learn new stuff. some items I ran into on the Fishtrap map over the last few days:
 
Sewers - if you want sewers under your city, build the sewers first, then put streets, sidewalks and grass over those areas to make sure no surface buildings are above the sewers. At least in the city set of objects, most buildings have a real "basement" that extends deep below the zero height surface and then blocks the sewers with black walls. I wasted a lot of time on these sewers adding them after the buildings, which in itself was already pretty darn difficult.  Don't repeat the same mistake.
 
Props brush - I finally figured out the file that stores the graffiti and garbage, antennas and other small items you paint on the landscape with the props brush: it's the "massunit.bin"file and can't be edited in a text editor if you want to make changes, however, if you were to take a map like mission08 and mod it to something like Dinner_out and you want to avoid graffiti to float in mid-air, you can just swap a blank massunit.bin into the editor directory of your project and use that instead of the one that came with the mission. Then add your own stuff. It is a lot of work to redo graffiti and garbage, but you will avoid crazy stuff like an antenna floating 5 feet above the roof of a guard tower, etc...
 
Map crashes on load? search the world.xml for objects at altitudes of less than "-5000"
 
I had some barrels fall off my map and land at -50,000.8-something  and apparently that was a problem once the map grew in size.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:25:26 PM
ok - got something else to add that is important only for those who make custom maps or modify objects on existing maps that force rendering new light maps. There's a RAM limitation I have run into before with Dinner_Out and other maps, which was the original reason for figuring out how to recycle existing maps using the bundler tool. However, right now I am working on a big custom landscape and here's what I found out this week that may affect one of your bigger projects:
 
what I did to render The_Last_Castle map:
 
I prepared the world file for minimal RAM load - absolutely nothing but static layer, props (small-static), electrical (no wiring), and sky environment. I have not tried to remove the sound but I doubt that that is a lot of RAM saved.  (you do that all in a text editor - copy a backup file somewhere, then go in and delete all but the stuff you must have in there to get light maps to render - saves RAM!)
 
then I started the editor in 800x600, low qual, trilinear filtering, low off off - whatever the lowest settings are, in windowed mode. I then QUIT the editor to restart it with those settings before even loading the map (Again, all this saves RAM). Restarted the editor, loaded the map and went to export lightmaps - kablammo - out of Memory!
 
Now that's usually where you throw in your towel and go to lower quality lightmaps. However, I am stubborn. Started up the editor, tabbed out to get the task manager up and check the process list to see RAM use, max ram use and VM use (gotta add those columns to the display). Tabbed back into the editor, loaded the map while looking at the taskmanager counting up and up towards the infamous 1GB barrier. So the second time around, it loads the map and I am at about 500MB RAM used and 500MB in virtual memory. That's when I went to the export and tried it one more time with medium settings... and wouldn't you know it - this time it went to about 975MB RAM used, about 990MB virtual memory and it started to render (you know you're good to go when you see 0% done....)
 
So the second time around when I had to change something on the map last night, I did the same procedure, because yet again, it crashed on the first render attempt, even though the map was SMALLER than the one that worked the night before. I had removed about 25 props, added 2 instead, both real small. Everything else the same, so I knew that the computer could render it. I went back to restarted it just like the day before, had my task manager up and again, second try, it did begin to render the map!
 
Moral of the story - don't give up after your first render attempt - do it twice. WHY that is, I do not know, as each time I am completely restarting the editor. Perhaps Windows needs to dump stuff from the virtual memory and the second time by it has done so and things work. Whatever it is, keep that in mind for rendering lightmaps on bigger maps.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:27:01 PM
Some new things I learned/discovered when working on The_Last_Castle and that make things much easier in the editor.
 
The thumb button on the mouse is worth its weight in gold! placed props and don't like where they are? Don't worry - just click that button on the mouse and drag that piece to where you want it (depending on grid settings obviously). I must confess I never used that button before and each object alsways had to be placed perfectly. Now it's a breeze to make sure things sit where I want them.
 
Also - the AI graph is one of those things where you want the nodes as far apart as possible but still connected with those green arms ('cause that saves RAM and the AI doesn't need extra nodes, just those that allow them to move around). Especially doing AI graphs up and down stairs was a pain before. Now I can drag those nodes around until those green connectors pop up to give me the ideal location. Endless hours of time saved! Actually, in the past I never put them on buildings unless I really needed that. Now, on the new map, AI goes anywhere you can go - up stairs, on roofs, etc
 
Need a building that doesn't exist? That's where I took a lesson from the Hocaga Beach map, where the map maker built all kinds of stairs and walls out of concrete blocks (the "ind_fence_base" and "-ind_fence_base_long" pieces used for the base of those bridge fences you see at the spawn of Cheeseburger Hill for example). Those are pretty darn nice "Lego blocks" to put together concrete walls. I put a few fortifications together using these things.
 
Need a staircase where there is none? "ind_small_stairs" is a nice little ramp that can be used to build  narrow custom staircase. I used this to get AI and ghosts up and down from some large fortress walls, wrapping this staircase in some walls so you can't see that they are actually floating in mid-air and don't have supports all the way to the floor. Works fine once you get good at placing things in 3D space without the planar function.
 
How do you place things in space where they don't snap on to something already there? Turn off the planar snap (N key) and then select an object of known elevation. Then use page up/down to move your  insertion sphere thingie to the height you want. Then place it, make sure your horizontal grid is where you need to (I usually only use 25 or 1) so you can then use the right mouse button to drag it to where you need it, and don't forget the mouse wheel clicking to rotate 90 degrees each click, arrow keys left/right to rotate freely.
 
I will post some screens of some custom structures once the map is released (don't want to spoil the fun before that first mission...)
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:29:06 PM
ok, so now that we all have at least heard about the sewers on Last Castle, here's how I did it:
 
(https://didnt.doit.wisc.edu/graw/stuff/screens/basement_castle.jpg)
 
since there are no ramps in sewers, I had to create several levels to drop the route low enough to stay below ground when finally heading west from the Castle Hill towards the exit. To do do that, I stacked the sewer entrance object to feed itself 5 times (I think that drops it 50 meters from the top).  The parts obviously aren't meant to mesh up with the door on the sewer level, but it was close enough, and I only needed to use some wall pieces to close the holes. This matters a lot on this map as there is no black basement below the horizon, but a bright yellowish light that would shine through any opening. This sky is the one that turns above-surface objects into a much more natural color, but it isn't dark below ground level.
 
The bunker at the end of the map (yeah, one day we'll get there...) is completely custom. The interior of it comes from the editor, but it was designed to mesh with the landscape of "Left_Behind" which you cannot use selectively - either all of it or nothing. That left me with a bunker you could look inside of like you can see inside of the buildings above in the picture of the sewers above. To close all those lids, I had to use concrete blocks meant for bridge railings and other pieces of the editor. Those things work almost like lego blocks and can get stuff built that you don't usually see on maps. The staircase in the mini fortress just west of the spawn location is a similar structure, built out of pieces meant for totally different things.
 
Doing these things only became possible for me once I realized how to toggle between planar and non-planar mode in placing and moving objects. When you know how to get something to a particular altitude in  3D space with the planar snap, you can then toggle it off and use the mouse thumb button to move it and place it exactly where it needs to go. Using grid for horizontal alignment gets all these things nicely stacked.  But realize that the time it takes to build a structure like my bunker is around 2 hours, while a normal building can be placed on the map in about 5 seconds, because it's already all done...
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:32:17 PM
Quote from: WadCutter45;183199

1. When using the Mission or MP maps as a basis, removing any unneeded AI Graph nodes will save alot of export time and memory. Just look at the "world_xx.xml" file and you will notice the first section is <ai_graph name="main"> ... This section, along with <ai_graph name="vehicle">, are where those nodes are located on your bare map made by GRIN. Removing any of these that arent in your new, playable area will save time and memory while bundling and loading to play the map.

the problem here is to identify what part of the XML removes the AI graph where you don't need it. I simply remove the AI graph anyway, since GRIN maps are notoriously sloppy about this stuff. On the Longest_Kilometer base map I found a half dozen or more Vehicle Graph AI nodes hidden below static objects, unconnected to the part that was visible from above the world surface. Had to go below to delete - eventually just deleted it all and put it on properly myself. All other benefits of cutting down the AI graph are rather negligible
 
 
Quote from: WadCutter45;183199

2. I have removed all unneeded "static" items from the areas that can't be seen or accessed by players. Another time and memory saver. I also am guessing that it saves time while exporting too, as the engine won't have to build lighmaps for those items not in the map... ?? On my current project, the map from Mission 02, I am only utilizing 2/3 of the existing map, so I have removed all topical itmes ( <small_static name="first"> ) from my map. I will let you know if this turns out to not be the case.

I tried that once when I was rendering a new set of lightmaps for one of those large maps. It didn't like the idea of having any "holes" in the map - so if you remove static bulding objects, I recommend to close all the holes in the landscape with grass or sidewalk tiles, just to avoid a crash when rendering.
 
Quote from: WadCutter45;183199

3. This might be covered in the (F1) "Help" of the Editor. When placing AI (Human layer), the default order of "Guard" in the settings brings up a small blue circle (guard area of the AI) with a single directional blue line. I assume the blue directional line points the AI in the direction he is to guard.... To set this to a desired direction and radius, just hover the cursor on an area of the greatest distance he will look, and "click" the mouse wheel. To check this you can momentarily change the Order to "Sniper" where a large yellow cone and focus point shows up. Also, later if you decide to change an AI, going form "Sniper" to "Guard", or "Guard" to "Sniper" is just a click away. ;)

the blue circle with that line seems to aim the guys attention, but the actual dummy that is dropped on the map points his body - red line on the ground is right arm, green line looking forward.
 
One thing I have not tested but I think it does work is to change guard attention to "idle" by first making them patrol at moveguard_idle, and then changing orders back to guard. The regular guard order contains "moveguard_recon" in the xml, which is a much more attentive guy. I am getting tired of attentive AI shooting be before they can literally even see me. So as of lately, I am putting more of them on the map but make them less attentive with the idle type orders. Guards are usualy stupid anyway, but a little more can't hurt :)
 
 
 
Quote from: WadCutter45;183199

4. To allow your level's small Browser map (the Browser that shows before game start or upon death in-game) to show the nice "Base" and "Zulu" areas, just check the "always visible" box in the Multiplayer layer before you export your map. And don't leave any other layer's "always visible" box checked, as those items/lines will show in you mini-map. I usually export while in the "Player" layer.

 
don't follow you there - this switch seems to only leave the area stuff visible in the editor when you leave that layer. In game, those two zones are marked anyway on the minimap
 
Quote from: WadCutter45;183199

5. CLOSE YOUR TAGS. If you manually edit your .xml files, always look at these ending lines before you close your document. It's so easy to "copy and paste" a mistake and leave off some vital portion of the code. empty spaces between lines seem to have no effect on the engine, but improper lines will crash the editor/game.

xml 101 here
 
Quote from: WadCutter45;183199

6. While editing the world_xx.xml file, items in some sections can be shuffled or changed in order, while other sections have a definite "unit_id" number assigned to them. What this means is, sections <areas name="first"> and <human name="first"> (Areas and Human layers) can be grouped together to add or remove them from your map to save frame rates while placing items in the Editor. The "Area layer" does not drag down frame rates like the "Human layer", but areas can be removed if you want to focus on a new section of map after finishing a previous one. Just save a backup copy of the world file, remove the unwanted Area and Human layers, and open the editor to start on the next section with much better frame rates.

I usually edit no more than 2 spawn zones at a time before dumping all human XML into an external backup file. With my random maps, I'd be down to 5fps by the 4th trigger area. On my last small map, I think I had over 800 different AI orders. That runs at less than 1fps if loaded in the editor all at once.
 
Much of my editing happens in notepad and not in the game editor and once you get a feel for how to shuffle things in and out you can get pretty effective with those two tools
 
Quote from: WadCutter45;183199

7. When using the above method, I copy my Human layers into custom files, naming them HumanArea01.xml, HumanArea02.xml, and so on. This saves disc space, if that is an issue, and makes it easy to do a custom, play-testing map, using only the areas you want to build and test-play. Just realize you must edit the mission.xml file before you export this.

I call them "AI_area01.txt" or something like that
 
Quote from: WadCutter45;183199

8. If disc (hard drive) space is an issue, here is one I tripped on. To make way-points for the AI (Human layer) with "Patrol" orders, you press the "Insert" key to enable this action, left-mouse clicking to make a point, right-click to remove any points, and press "Insert" again to disable. By default, the in-game Screen shot key is the "Insert" key..... and it stores those pics as .tga format in the "...\Ubisoft\Ghost Recon Advanced Warfighter\Settings\profiles\graw_profile_yourname " folder. And that folder gets HUGE if you place alot of waypoints for AI in the Editor as the "Insert" works there just as it does in-game. I deleted 1.5 GBs of screen shots taken every time I used that key in the Editor... Doh! Start GRAW game, and change that default key in the Options. Mine is the "P" key now.

yeah, 4mb a pop - I clean that out frequently. Each map I do usually accumulates about 2GB of files in there
 
Quote from: WadCutter45;183199

All in all, it's been an incredible learning experience for me. Hopefully, all my efforts will result in a decent Coop map that others will want to play more than once.

yeah, where's that map? I had a dozen maps released by the time I learned all this stuff you're talking about here :idea:
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:34:32 PM
Quote from: DeathMerc_39;185278
Hey Guys,
 
I have a 2 quick questions.... maybe they have been answered already.. go easy on me if they have.
 
Does anyone have or know where overhead shots of the original maps are available or is that a do-it-yourself-er?
 
Also; Controls in the editor.. any definitive layout of what does what or from your experiences? Help on that would be great....
 
Thanks in advance.
 
DM39 a.k.a. DChyper_39

use the bundle reader to find the TGA files that make up the minimaps for the original missions. Completely pointless if you remake them, because you have to customize the zones file anyway, redefining the game area would shift the map location and the pointers on it will be off. The minimap files are a quick export and you don't need to render lightmaps for those.
 
as for your second question - I have no idea what you want to know there. Just read the tutorial and you learn what does what. If you mean moving boxes around where you pick solders, I think click and drag is all it takes to get the menu to slide to a different corner
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:35:19 PM
Quote from: DeathMerc_39;185887
Hey Guys,
 
I ran across a modding wikki for GRAW2 on Ghostrecon.net.
Though it is for GRAW2 there are a few useful videos covering placing, scripting etc... check it out.
 
http://graw2.pbwiki.com (http://graw2.pbwiki.com)
 
DC_39

the one clip I looked at (bundler) was a very different process from what you do in GRAW, or I am just not doing it the same way. I suppose I could run some videos myself when I get bored and do some quick hands on tutorials. Maybe after my next big map is done, I'll do another small one like quick decision and record the processes that are hard to describe in text in some screen grab videos with voice over.
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:43:26 PM
I started a tutorial video section for this map making stuff - first 18 segments posted today.
WMV files only (should update those as it is almost 2021 :D)
 
Video Tutorials (http://www.speedcenter.com/graw/tutorial/video/video_tutorials.html)
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on February 12, 2018, 02:45:07 PM
here's something else I have been saving over the years - error messages that come up during map testing and their resolutions (the important part - saves you tons of time figuring out where to start looking for what you screwed up)
 
(this post needs an update - I have more info now in 2018)
 
 
 
this was caused by having triggers and areas defined calling for events that are not yet in the script:
 
Code: [Select]

Crash in application version: grpcrc1.35
data\lib\managers\worldmanager.dsf(-1): cant find member: _elements_vector in type <void>
SCRIPT STACK
 data\lib\managers\worldmanager.dsf(0)
 data\lib\managers\worldmanager.dsf(0)
 data\lib\managers\worldmanager.dsf(0)
 data\lib\managers\worldmanager.dsf(0)
 data\lib\setups\setup.dsf(0)
 data\levels\custom_levels\grasslands\grasslands.dsf(27)
 

this came up because there were references in triggers to areas that did not exist
 
Code: [Select]
Crash in application version: grpcrc1.35
data\lib\managers\worldmanager.dsf(-1): cant find member: add_trigger in type <void>
SCRIPT STACK
 data\lib\managers\worldmanager.dsf(0)
 data\lib\managers\worldmanager.dsf(0)
 data\lib\managers\worldmanager.dsf(0)
 data\lib\managers\worldmanager.dsf(0)
 data\lib\setups\setup.dsf(0)
 data\levels\custom_levels\tango_dont_surf\tango_dont_surf.dsf(27)
 

resason for this hud thing - I used "showmsg" element on dedicated server, which
apparently is not supported in OGR
 
Code: [Select]

Crash in application version: grpcrc1.35
data\lib\managers\eventmanager.dsf(-1): cant find member: hud in type <void>
SCRIPT STACK
 data\lib\managers\eventmanager.dsf(0)
 data\lib\managers\worldmanager.dsf(0)
 data\lib\setups\setup.dsf(0)
 data\levels\custom_levels\tango_dont_surf\tango_dont_surf.dsf(38)
 

here I didn't close a particular tag in the XML by forgetting a quote or a slash - line 2086 in the script
example:
 
 
<element type="Composition" id="F15_passover_sw start_time="5.0"/>
but it has to be
<element type="Composition" id="F15_passover_sw" start_time="5.0"/>
 
or
 
<element type="OrderTank" vehicle_id="tank1" order="set_fire_ready" value="true">
which must be
<element type="OrderTank" vehicle_id="tank1" order="set_fire_ready" value="true"/>
 
 
Code: [Select]
Wed Sep 03 11:11:58 2008
 
Crash in application version: grpcrc1.35
data\levels\custom_levels\tango_dont_surf\tango_dont_surf.xml (2086): Expected identifier
SCRIPT STACK
 data\levels\custom_levels\tango_dont_surf\tango_dont_surf.dsf(26)

here I was calling a random event with TriggerRandomEvent that wasn't in the script - left over from old map
Wed Sep 03 23:34:36 2008
 
 
Code: [Select]
Crash in application version: grpcrc1.35
data\lib\managers\actormanager.dsf(-1): cant find member: set_unit in type <void>
SCRIPT STACK
 data\lib\managers\actormanager.dsf(0)
 data\lib\managers\eventmanager.dsf(0)
 data\lib\managers\eventmanager.dsf(0)
 data\lib\managers\worldmanager.dsf(0)
 data\lib\setups\setup.dsf(0)
 data\levels\custom_levels\tango_dont_surf\tango_dont_surf.dsf(38)

reload of gauntlet map after round 1 worked- crashes all clients - reason was "ramirez" prop was used,
so never use that guy's corpse in the props list!
Sun Feb 15 19:31:11 2009
 
Code: [Select]
Crash in application version: grpcrc1.35
data\lib\script_network\gametype\gametypempcoop.dsf(-1): cant find member: base in type <void>

this happened mid map, recylcing an old script. When I hit a certain trigger, the map bomed. Repeatable. Turned out to be the
missing vehicle AI graph when it was firing a panhard event, even without the vehicle in the world file 9so a non-spawn that
usually would not crash the game)
 
Code: [Select]
data\lib\units\ai\soldier\sdriverlogics.dsf(-1): cant find member: search in type <void>
SCRIPT STACK
 data\lib\units\ai\soldier\sdriverlogics.dsf(0)
 data\lib\managers\aihivebrain.dsf(0)
 data\lib\managers\aihivebrain.dsf(0)
 data\lib\managers\aihivebrain.dsf(0)
 data\lib\managers\aihivebrain.dsf(0)
 data\lib\managers\aihivebrain.dsf(0)
 data\lib\setups\setup.dsf(0)
 data\levels\custom_levels\die_tryin\die_tryin.dsf(38)
 
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on December 16, 2020, 11:18:13 PM
 bumping this up so I remember to pin the thread. Cappy needed the link to the videos, I fixed the URLs on the first page

Title: Re: GRAW Map Making for Dummies
Post by: Cappy on December 22, 2020, 02:02:45 PM
Hi Fish,

Could you email me a copy of the bundle-reader or post on forum please.

Salutations,
Cappy
Title: Re: GRAW Map Making for Dummies
Post by: Fishmonger on December 23, 2020, 11:36:26 PM
Cappy, see attached zip