Build a tiny prop arrangement before building an interior. A bench and two related objects are enough. This exercise teaches placement, naming, saving and deployment while avoiding the extra work of custom models, rooms and portals.
This is an additive map exercise. It does not teach removal of an existing building, replacement of vanilla collision, or editing someone else’s protected resource.
Work through the original three-prop source

Actual browser UI. Shapes are planning proxies, not a GTA V screenshot or proof of native export.
Download the three-prop project and XML. The JSON contains exactly three prop_roadcone02a placements at local X positions 0, 2 and 4, with identity rotations. It contains no game meshes. Its zero world origin and illustrative bounds are learning defaults, not a verified location or native acceptance fixture.
Open the JSON in Map Studio. Select the middle prop, change only its local Y coordinate and save a new JSON copy. Reopen that copy and compare all three placements. You should see two unchanged outer props and one changed middle prop; record the intended change before exporting.
Choose a clear world position in your own game and apply the origin deliberately. Do not mistake local coordinates for final world coordinates. Export source, then inspect it against the actual assets in CodeWalker before native compilation. Keep the exported XML separate from the native map that eventually goes in the resource.
Choose an uncomplicated location
Pick a flat, open area on your development server. Record a nearby coordinate and a recognizable landmark. Avoid locations already modified by another resource; otherwise your first debugging session may be about conflicts rather than your map.
Use props available in the game build your server actually runs. Inspect a suitable object in CodeWalker and note its archetype name. Do not assume an object shown under one DLC selection exists on every target build.
Create the project and map
Open the Project Window, create a new project, and save it to your working directory. Create a new YMAP in that project and give it a distinctive name such as cw_workshop_practice.
Add an entity to the new map. Set its archetype to the prop you inspected, then move and rotate it into position. Add two more entities to make a recognizable arrangement. Check the project tree after each operation: you want your new map, not an unintended edit to an existing game YMAP.
The CodeWalker README documents the Project Window and entity editing. Its old single-player example uses a specific historical DLC level. Do not treat that example as a universal FiveM setup instruction.
Make the exported map describe the right area
Inspect the positions of all three entities. A misplaced object far from the others can make the map much larger than intended.
Use the YMAP’s calculation controls for flags and extents, then save the YMAP. The Sollumz placement guide documents this calculation step. Repeat it after moving or adding entities; do not assume a previously calculated extent still describes the new map.
Keep your project file alongside the editable source. Put the actual saved .ymap into the deployable resource. Renaming an interchange file does not convert it into a game asset.
Package the smallest useful resource
For this exercise, the resource only places existing game archetypes. It does not define a custom YTYP.
resources/
[maps]/
cw_workshop_practice/
fxmanifest.lua
stream/
cw_workshop_practice.ymap
Create this fxmanifest.lua:
fx_version 'cerulean'
game 'gta5'
this_is_a_map 'yes'
The map marker is documented in the Cfx.re manifest reference. When you later add custom archetypes, the package has additional requirements; use the resource tutorial rather than copying this minimal example unchanged.
Test on a development server
Add the resource to your own development server. From the server console, discover newly added resources and start this one:
refresh
ensure cw_workshop_practice
Add ensure cw_workshop_practice to your server configuration for subsequent starts. Go to the recorded location and confirm that all three objects appear. Do not test only by restarting the resource while standing on it: also reconnect and approach from another location.
Check spacing, orientation and ground contact. Take a screenshot and record one correction to make. Back in CodeWalker, make that single change, recalculate as needed, export, and repeat. The point of the exercise is a repeatable edit–export–test cycle, not an impressive first map.
When nothing appears
Check the resource name, manifest filename and exported extension first. Confirm that the server actually started the resource and that you visited the correct coordinates. Then check whether the chosen archetypes are present in the target game build.
Do not jump straight to clearing caches or installing another editor. A wrong resource path and a missing model are different causes. The missing-interior troubleshooting guide shows how to separate packaging, placement and asset problems.
CodeWalker placement actions to verify
The Cfx.re placement lesson documents this sequence: open the project panel, use File → New → Ymap File, select that YMAP and use Ymap → New Entity. Assign the entity’s archetype and transform. Once the placements are ready, select the YMAP and run Calculate Extents and Calculate All Flags before saving.
For the exercise, compare the entity count and all transforms with your source record. Close and reopen the saved native map; the reopening step avoids mistaking unsaved editor state for correct output. Do not claim in-game success at this point.
Use the manifest generator with custom YTYP disabled only when all referenced archetypes are available from the target game. Then follow resource installation, walk around all three props and repeat after reconnecting. Record the game edition/build and every tool build used. If the source came from a trainer rather than CodeWalker, use the XML conversion guide first.
Keep a verifiable test record
Record the GTA V edition and build, CodeWalker version, resource revision, chosen world location, native reload result and FiveM reconnect result. Leave unfinished stages marked as unverified.
Download the empty mapping acceptance worksheet. It contains no fabricated screenshots, benchmarks or compatibility results.