# Map Builder - poradnik dla osoby nietechnicznej Ten dokument jest celowo bez polskich znakow. Jezeli widzisz slowa typu "sciana", "podloga", "postac", "przejscie", to jest to zamierzone. ## 1. Najwazniejsza zasada Mapa ma warstwy: ```text 1. Podloga 2. Sciany 3. Drzwi / przejscia 4. Meble 5. Obiekty interaktywne 6. NPC / postacie 7. Interaction tile 8. Przejscia do innych map ``` Najpierw budujesz przestrzen, potem dodajesz rzeczy, potem dodajesz logike. Nie zaczynaj od NPC i eventow, jezeli jeszcze nie ma podlogi i scian. ## 2. Dobra kolejnosc pracy Rob mape w tej kolejnosc: ```text 1. Nowa mapa 2. Podlogi 3. Sciany 4. Drzwi zwykle 5. Meble bez akcji 6. Obiekty z akcjami 7. NPC 8. Interaction tile dla kazdego obiektu/NPC 9. Przejscia do innych map 10. Walidacja 11. Eksport mapy ``` ## 3. Podloga Podloga to pole, po ktorym gracz moze chodzic. W Map Builderze: ```text Tryb: Podloga ``` Klikasz albo przeciagasz po mapie. Zasada: ```text Podloga = gracz moze chodzic ``` ## 4. Sciana Sciana blokuje ruch. W Map Builderze: ```text Tryb: Sciana ``` Zasada: ```text Sciana = gracz nie moze przejsc ``` Nie zamykaj pomieszczenia bez drzwi. ## 5. Drzwi zwykle Drzwi zwykle to przejscie w scianie. W Map Builderze: ```text Tryb: Drzwi / przejscie ``` Takie drzwi sa przechodnie. Czyli wygladaja jak drzwi, ale nie blokuja ruchu. Uzywaj ich dla prostych wejsc miedzy pokojami. ## 6. Drzwi zamkniete Drzwi zamkniete to nie tylko tile. To obiekt. Robisz je jako: ```text Preset obiektu: Drzwi / wejscie ``` Potem w Interaction/Animation Editorze ustawiasz: ```text locked / closed = blokuje open = mozna przejsc ``` A w Scenario Editorze dodajesz akcje: ```text Otworz drzwi Zamknij drzwi Odblokuj drzwi ``` ## 7. Mebel bez akcji Mebel bez akcji to dekoracja albo przeszkoda. Przyklady: ```text biurko szafa kanapa regal maszyna jako dekoracja ``` W Map Builderze: ```text Tryb: Mebel ``` Dla duzych mebli zaznacz: ```text blokuje = tak ``` ## 8. Obiekt z akcjami Obiekt z akcjami to rzecz, ktora gracz moze kliknac. Przyklady: ```text serwer backupu biurko CFO quality desk linia produkcyjna terminal ``` W Map Builderze: ```text Tryb: Obiekt ``` Potem ustaw: ```text Object ID Nazwa Typ Sprite Interaction tile ``` Akcje dodajesz w Scenario Editorze. ## 9. NPC / postac NPC to osoba na mapie. Przyklady: ```text IT Admin CFO HR Quality Manager Plant Manager Audytor ``` W Map Builderze: ```text Preset obiektu: NPC / osoba ``` NPC zwykle blokuje ruch, bo gracz nie powinien wejsc w postac. Wazne: ```text NPC musi miec wolna kratke obok siebie. ``` Na tej kratce ustawiasz interactionTile. ## 10. Interaction tile Interaction tile to pole, na ktore gracz ma podejsc, zeby uzyc obiektu. Przyklad: ```text [ BIURKO ] [ GRACZ ] <- interactionTile ``` Zle interactionTile: ```text na scianie pod meblem za zamknietymi drzwiami poza mapa ``` Dobre interactionTile: ```text na wolnej podlodze obok obiektu osiagalne od startu gracza ``` ## 11. Przejscie do innej mapy Od wersji 1.1.0 mapa moze prowadzic do innej mapy. Przyklad: ```text Fabryka -> teren wokol fabryki ``` Najprosciej: 1. Wybierz preset: ```text Wyjscie do innej mapy ``` 2. Postaw obiekt na mapie. 3. Zaznacz go. 4. Po prawej wypelnij: ```text Docelowy plik mapy: data/maps/factory-yard-v01.json Spawn ID: SPAWN_FROM_FACTORY Label akcji: Wyjdz na teren zewnetrzny ``` 5. Kliknij: ```text Zastosuj ``` 6. Waliduj mape. Dokladny poradnik jest w: ```text docs/MULTI_MAP_TRANSITIONS_NON_TECH_GUIDE.md ``` ## 12. Eksport mapy Po zbudowaniu mapy kliknij: ```text Pobierz mape ``` Plik wrzucasz do: ```text data/maps/nazwa-mapy.json ``` W scenariuszu ustawiasz: ```json "mapFile": "data/maps/nazwa-mapy.json" ``` ## 13. Walidacja Klikaj: ```text Waliduj ``` Walidator sprawdza m.in.: ```text czy start gracza jest OK czy obiekty sa w mapie czy interactionTile jest wolny czy da sie dojsc do interactionTile czy mappingi sprite/tile istnieja czy przejscia miedzy mapami maja mapFile ``` ## 14. Najczestsze bledy ### Pokoj bez wejscia Naprawa: ```text Dodaj drzwi albo przejscie. ``` ### Interaction tile na scianie Naprawa: ```text Przesun interactionTile na wolna podloge. ``` ### Biurko z akcja jako zwykly mebel Naprawa: ```text Biurko z akcja rob jako Obiekt, nie jako Mebel. ``` ### Wyjscie do innej mapy bez powrotu Naprawa: ```text Dodaj przejscie powrotne na drugiej mapie. ``` ### Spawn na polu przejscia Naprawa: ```text Spawn ustaw jedna kratke dalej, zeby gracz nie zapetlil przejscia. ``` ## 15. Zlote zasady ```text 1. Najpierw podloga, potem sciany. 2. Kazdy pokoj musi miec wejscie. 3. Kazdy obiekt z akcja musi miec interactionTile. 4. Nie rob mapy za duzej na start. 5. Korytarze rob minimum na 2 kratki, jesli ma byc wygodnie. 6. Przejscia miedzy mapami rob zawsze z testem powrotu. 7. Po kazdej wiekszej zmianie klikaj Waliduj. 8. Nazwy map, obiektow i spawnow rob czytelne. ``` --- # Dodatek v1.3.0 - mapy testowe i analityka Ten dodatek jest bez polskich znakow. ## Jak budowac mape pod analityke Jezeli chcesz, zeby po warsztacie heatmapa i spaghetti mialy sens: 1. Rob wyrazne strefy. 2. Nie upychaj wszystkiego w jednym pokoju. 3. Najwazniejsze miejsca rob jako obiekty interaktywne. 4. Dawaj jasne nazwy obiektom. 5. Dawaj jasne nazwy przejsciom miedzy mapami. 6. Ustawiaj spawnPoints tak, zeby gracz nie pojawial sie w scianie ani w meblu. 7. Po zrobieniu mapy przejdz nia jak gracz. 8. Po tescie otworz Workshop Analytics i sprawdz, czy ruch jest czytelny. ## Przyklad dobrej struktury map ```text campus / teren zewnetrzny -> biuro -> hala -> magazyn hala -> serwerownia ``` Dzieki temu po grze widac, czy zespol odwiedzil wlasciwe miejsca. --- # Dodatek v1.3.2 - chodzace NPC i animowane maszyny Ten dodatek jest bez polskich znakow, zeby dobrze wyswietlal sie w narzedziach. ## Chodzacy NPC Jesli NPC ma sam chodzic, nie ustawiaj mu stalej kratki interactionTile. Zamiast tego ustaw autoInteractionTile. Najprostszy patrol: ```json "autoMove": { "enabled": true, "mode": "patrol", "speedMs": 900, "pingPong": true, "autoInteractionTile": true, "path": [ { "x": 7, "y": 6 }, { "x": 10, "y": 6 }, { "x": 10, "y": 9 } ] } ``` Najprostsze krecenie sie po okolicy: ```json "autoMove": { "enabled": true, "mode": "wander", "radius": 4, "speedMs": 1000, "autoInteractionTile": true } ``` ## Animowana maszyna Jesli masz kilka klatek maszyny, ustaw obiektowi: ```json "spriteId": "machine_line_animated", "animation": "running" ``` Maszyna stoi w miejscu, ale jej grafika zmienia sie co kilka setnych albo co sekunde, zaleznie od `frameDurationMs` w sprite-mapping. ## Dobre praktyki - Daj maksymalnie 1-2 chodzace NPC na jedna mape. - Nie dawaj chodzacemu NPC kluczowej akcji, jezeli ma uciekac po calej mapie. - Nie dawaj patrolu przez waskie drzwi, jezeli gracz ma tam czesto chodzic. - Animacja maszyny powinna byc spokojna, nie meczyc oczu. - Po dodaniu ruchu NPC przetestuj, czy gracz nadal moze dojsc do waznych obiektow. --- ## v1.5.0 - uzywanie spriteId po Animation Builderze Jesli zrobiles nowa animacje w Animation Builderze: ```text 1. Zapisz animacje do sprite-mapping.json. 2. Otworz Asset Library. 3. Sprawdz, czy nowy spriteId istnieje i nie ma czerwonego bledu. 4. Otworz Map Builder. 5. Dodaj obiekt albo NPC. 6. Wybierz nowy spriteId. 7. Jesli to maszyna, ustaw animation np. running. 8. Jesli to drzwi, ustaw stany w Interaction & Animation Editor. 9. Zapisz/eksportuj mape. 10. Przetestuj w grze. ``` Prosta zasada: ```text Animation Builder robi grafike i animacje. Asset Library sprawdza, czy mapping jest zdrowy. Map Builder stawia obiekt na mapie. Scenario Editor nadaje sens akcji i eventom. ``` ## Update v1.5.2 - Map Studio Od v1.5.2 Map Builder ma tryb Map Studio. Najwazniejsze nowe rzeczy: - wybor mapy jako karty z wyszukiwarka, - status aktualnie edytowanej mapy, - zapis mapy do biblioteki, - zapis jako nowy plik, - duplikowanie mapy, - generator budynku, - spawn pointy, - lista przejsc miedzy mapami, - test przejscia, - pathfinding preview, - mini mapa, - wysokosci i pietra jako dane projektowe, - pokaz tylko problemy. Pelny nowy poradnik jest w: ```text docs/MAP_BUILDER_STUDIO_NON_TECH_GUIDE.md ```