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.
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.