Edytor Poziomów

**Napiszcie jak poprosić kogoś o weryfikację poziomu pls.**

**Edytor poziomów** jest elementem gry wprowadzonym w wersji 1.0, który pozwala graczom tworzyć ich własne niestandardowe plansze. Posiadają oni również możliwosć wysłania ich do sieci. Każdy poziom może zostać oceniony, a osoba uprawniona (RobTop) może wystawić gwiazdki, bądź przyznać miano polecanego.

## Poziom w menu

    Każdy poziom wyświetlany jest w ten sam sposób, ukazując pewne informacje o nim. Podstawowy opis pojawia się w każdym wysłanym poziomie, w którym wymienione są poszczególne informacje:

* **Nazwa**: składa się z maksymalnie 20 znaków. Nienazwane etapy posiadają nazwę "Unnamed 0". Jeżeli dwa poziomy posiadają tą samą nazwę, jeden z nich doda do siebie cyfrę 2 itd. Nie mogą zawierać znaków specjalnych ani przekroczyć limitu znaków.

* **Opis**: składa się maksymalnie ze 140 znaków. Opisuje dany poziom, bądź służy jako wiadomość od autora.
* **Długość**: przedstawia w zakresie od tiny (malutkiego) do XL (dawniej Extra-Long):
	+ **Tiny**: mniej niż 10 sekund
	+ **Short**: 10-29 sekund
	+ **Medium**: 30-59 sekund
	+ **Long**: 1-2 minut
	+ **XL**: powyżej 2 minut

* **Muzyka**: wyświetla używaną muzykę.

* **Status weryfikacji**: określa, czy autor zweryfikował poziom. Jeżeli poziom został wysłany, wyświetla się napis "Uploaded".

* **Wersja i ID**: wyświetla wersję poziomu, która zmienia się wraz z ilością aktualizacji. ID jest specjalnym identyfikatorem, którym można wyszukiwać poziomy.

* **Prawa strona nawigacji**: pozwala usunąć, skopiować i przenieść do góry dany poziom, aby był widoczny na samym początku listy. Pozwala również wyświetlić samouczek.

## Opcje edytora

Edytor posiada zbiór opcji sporych rozmiarów, które można zobaczyć już za pierwszym razem. Poniżej znajdują się wszystkie spośród nich.

* Typy budowania
* Nawigacja
* Muzyka
* Początkowe ustawienia
* Kolory
* Edit Group

* **Build** - pozwala stawiać obiekty. Składa się z dużej ilości typów obiektów:
	+ **Bloki** - podstawowe bloki, ziemia i przeszkody.
	+ **Płytki** - cieńsze wersje bloków, które zachowują się podobnie do zwyczajnych, jednakże pojawiają się one w mniejszych rozmiarach. Z nieznanych powodów niewidzialne bloki znajdują się tutaj.
	+ **Kontury** - linie, które służą jako hitboxy dla różnego typu bloków. Pozwalają sprawić, aby dany obiekt stał się solidny.
	+ **Schody** - pagórkowate bloki, po których ikona może zjeżdżać. Istnieją strome i łagodne schodki. Zostały wprowadzone w wersji 1.8.
	+ **Ciernie i kolce** - różne typy kolców oraz cierni, które niszczą ikony.
	+ **Trójwymiarowe obiekty** - wszelkie dekoracje oraz kontury, których używa się do stworzenia efektów 3D.
	+ **Dekoracje** - niesolidne bloki, które służą do upiększania poziomów. Istnieją w nich dekoracje naziemne, powietrzne oraz specjalne, które biją w rytm muzyki.
	+ **Interakcyjne przedmioty** - składają się z pierścieni, odbijających płytek, portali i animowanych przedmiotów.
	+ **Piły** - dodane w wersji 1.4. Pojawiają się tam różne typy pił, które mogą służyć jako przeszkody powietrzne lub ziemne.
	+ **Efekty** - obiekty, których celem jest wprowadzanie specyficznych efektów. Przykładowymi są: triggery, zmiany kolorów, ślady cienia, przesuwanie się bloków, itd.
	+ **Custom** - specjalna zakładka, która pozwala dodawać nowe kombinacje bloków poprzez zaznaczenie ich i naciśnięcie na zielony przycisk z plusem. Należy pamiętać, że istnieje ograniczenie do 100 bloków.

* **Edit** - wyświetla różne typy edycji zaznaczonych przedmiotów. Zakładka pozwala m.in. przesuwać, obracać bloki, zmieniać ich wielkość i położenie.

* **Delete** - usuwa zaznaczone obiekty, bądź dany typ bloków lub elementów.

* **Copy** - pozwala skopiować zaznaczony przedmiot.

* **Paste** - wkleja zaznaczone bloki w określone miejsce.

* **Copy & Paste** - kopiuje i natychmiastowo wkleja obiekt w to samo miejsce.

* **Edit Group** - pozwala przydzielać grupy danym obiektom, aby móc tworzyć różnego rodzaju warstwy lub interakcje z triggerami.

* **Edit Object** - wyświetla dostępne ustawienia i konfiguracje zaznaczonego przedmiotu.

* **De-select** - odznacza wcześniej zaznaczone obiekty. Zaznaczone przedmioty są podświetlone na zielono (w przypadku wklejonej kopii - na błękitno).

* **Warstwy** - wyświetla konkretne warstwy, bądź pozwala edytować tylko i wyłącznie na wybranej. Domyślnie ustawione jest "ALL", co pokazuje wszystkie dostępne warstwy, natomiast gracz może przełączać je za pomocą różowych strzałek.

* **Cofnij/powtórz** - cofa oraz ponawia wykonywane akcje.

* **Suwak postępu** - u góry ekranu znajduje się suwak, którym można poruszać się po planszy. Suwak umożliwia przesunięcie go trochę poza ostatnio ustawiony blok, aby zwiększyć wygodę budowania.

* **Uruchomienie muzyki** - włącza utwór muzyczny. Po planszy zacznie przejeżdżać zielona linia, która pędzi w zależności od ustalonej prędkości ruchu. Barwy również zmieniają się w zależności od położenia linii.

* **Rysowanie linii** - jest to forma testu poziomu, która pozwala rysować linie. Dzięki temu gracz może łatwiej dostosować przeszkody do danych skoków i zachowań postaci.

* **Przybliżenie** - zmniejsza lub zwiększa skalę przybliżenia, dzięki której można zobaczyć większy obszar, bądź łatwiej przyjrzeć się drobniejszym szczegółom.

* **Swipe** - umożliwia stawianie bloków poprzez przytrzymanie klawisza (lub palca w wersjach mobilnych) na ekranie i przeciągnięciu go po polu, w przeciwieństwie do pojedynczego klikania.

* **Free move** - daje możliwość swobodnego przemieszczania się po planszy bez potrzeby używania suwaka u góry.

* **Rotate** - wyświetla specjalny suwak, który pozwala obracać obiekty. Pojawia się tylko po zaznaczeniu danego przedmiotu.

* **Snap** - dostosowuje obiekt do danych kratek. Jeżeli opcja jest wyłączona, przedmiot stawiany jest w miejscu kursora/palca, nawet jeśli nie jest on dostosowany do kratek.

   Każdy poziom posiada swą specyficzną muzykę, którą można wybrać. Gracz ma do wyboru oficjalną muzykę oraz niestandardowe utwory, które może dodać poprzez wklejenie ID danej piosenki na Newgrounds.
Inną możliwością jest ustawienie czasu rozpoczęcia muzyki oraz opcji efektu zanikania i pojawienia się utworu.

   Naciśnięcie ikony z kołem zębatym wyświetli ustawienia początkowe poziomu. Dostępne są tam możliwości doboru początkowych kolorów, form, prędkości, tła, wyglądu podłogi oraz formy. Umożliwia to rozpoczęcie poziomu na różnorodne sposoby.
Inną możliwością jest wybranie niestandardowej czcionki. Istnieje również opcja 2-player, która zmienia mechanikę duplikatu, uzależniając ją od innego klawisza (spacji). Inną opcją jest też wybranie muzyki: oficjalnej lub niestandardowej.

    Jedną z ważnych możliwości edytora są opcje kolorów, które umożliwiają tworzenie barwnych i klimatycznych poziomów. Od wersji 2.0 istnieje ogromna ilość kanałów, które można wybrać, aby przydzielić przedmiotowi daną barwę. Podobno w wersji 2.1 zostanie dodany nowy system barwienia.
Typy kolorów:

* **BG** - kolor tła.
* **G (lub GRND)** - pierwszorzędny kolor podłogi.
* **G2 (lub GRND2)** - drugorzędny kolor podłogi. Dotyczy tylko nowych typów ziemi dodanych w wersji 2.0.
* **Line** - linia podłogi.
* **Obj** - linie i kontury bloków.
* **3DL** - kolor linii trójwymiarowych dekoracji.
* **Col** - pozostałe, niestandardowe kanały kolorów.

Będąc w ustawieniach kolorów, gracz może ustalać je za pomocą HSV lub zwykłej palety kolorów. Istnieją również dodatkowe funkcje:

* **Opacity** - przezroczystość koloru.
* **Blending** - włączenie tego sprawi, że blok stanie się częściowo przezroczysty, a jego kontury staną się niewidoczne. Bloki bardziej "błyszczą" w tle.
* **Copy/paste** - możliwość skopiowania istniejącego już koloru, bądź wklejenia go do innego kanału.
* **Player 1-2 color** - przydziela barwę danego gracza (główną lub drugorzędną).

    Opcja Edit Group pozwala wprowadzać zmiany w grupach oraz w warstwach. Składa się z następujących funkcji:
* **Editor L/L2** - określa warstwę wyświetlaną w edytorze.
* **Z Order** - ustala priorytet danego obiektu. Wyższy priorytet sprawi, iż pojawi się on przed danym blokiem. Jeżeli jest niższy, pojawi się z tyłu. Nie działa on na bloki interakcyjne, np. monety.
* **Add Group ID** - pozwala wybrać grupę dla danego przedmiotu. Od wersji 2.0, gracz może przydzielić więcej niż jedną grupę, co pozwala na więcej możliwości. Wszystkie dodane grupy pojawią się w liście, a naciśnięcie na któreś z nich powoduje jego usunięcie. Jeżeli wszystkie zaznaczone bloki przynależą do grupy, przycisk będzie całkowicie szary, natomiast jeśli część z nich nie będzie do niego należeć, przybierze nieco niebieskawe barwy. Wybranie opcji "Next Free" przydzieli najbliższą nieużywaną grupę.
* **Z Layer** - pozwala przydzielić główny priorytet przedmiotu. Działa podobnie do Z Order, jednakże wpływa on też na dodatkowe obiekty, które nie działają w przypadku Z Order. Istnieją opcje "Top", "Mid", "Bot" i "Default". Jeżeli przedmioty posiadają te same priorytety, lecz inny Z Order, ten z wyższym Z Order będzie przykrywać ten z mniejszym. Jeżeli bloki posiadają priorytet "Top", będzie on przykrywał ikonę.
* **Don't Fade** - wyłącza efekt zanikania bloków, gdy wychodzą one poza ekran.
* **Group Parent** - opcja, która używana jest dla niestandardowych bloków. Ustala on priorytetowy blok w danej niestandardowej kombinacji.

## Triggery

*Główny artykuł*: Triggery

Triggery są specjalnymi obiektami, które pozwalają na ogrom nowych możliwości. Część z nich powstała w oficjalnym wydaniu, jednakże duża ich ilość została dodana w Update 2.0. Aby miały one wpływ na obiekty, muszą mieć ustaloną grupę, a dane bloki muszą być do niej przydzielone. Najwięcej triggerów dodano w aktualizacji 2.1.

* Color Trigger
* Move Trigger
* Pulse Trigger
* Alpha Trigger
* Toggle Trigger
* Spawn Trigger
* Trail Trigger
* Entrance/Exit Trigger
* Rotate Trigger

Color Trigger jest specjalnym elementem, który pozwala zmieniać barwę różnych części poziomu. Na samym początku powstały triggery zmieniające kolory tła, ziemi i kontur, jednakże w późniejszych aktualizacjach dodano też dodatkowe zmiany, zarówno jak i możliwość edycji niestandardowych kanałów kolorów.

Gracz może zmienić barwy, wybierając odpowiedni kanał i obsługując paletę kolorów. Możliwe jest również użycie funkcji "Blending" opisanej wyżej, zarówno jak i "Player Color". Opcjonalną funkcją jest kopiowanie istniejących już barw i wklejanie ich do danego triggera.

Użycie triggerów sprawi, że początkowa barwa zmieni się na stałe, bądź do momentu aż gracz nie postawi następnej zmiany, która przywróci lub ponownie zmieni kolor.

Znaczna ilość triggerów posiada opcję "Spawn Triggered" lub "Touch Triggered". Pierwsza opcja sprawia, że aktywują się one dopiero, gdy włączy je tzw. Spawn Trigger. Drugi powoduje aktywację za pomocą dotyku hitboxa danego obiektu.

    Move Trigger umożliwia tworzenie dynamicznych, ruchomych obiektów, które mogą posłużyć jako urozmaicenie, bądź jako kluczowy element danego pomysłu. Posiada on szereg następujących opcji:
* **Move X/Y** - ustala długość w blokach, którą dany obiekt ma przemierzyć w danym kierunku (X - poziomo, Y - pionowo). Jest ona wyrażona w pikselach (10 pikseli = jeden pełny blok). Suwak pozwala tylko i wyłącznie przesunąć do 100 lub -100, jednakże w polu da się wpisać większą lub mniejszą wartość.
* **Lock to player X/Y** - sprawia, że dane obiekty poruszają się z tą samą prędkością, co gracz. Odpowiednie użycie funkcji może sprawić, że bloki będą ruszały się tak samo jak gracz.
* **Easing** - określa sposób poruszania się bloków. Umożliwia ruchy od prostych przesunięć, po wybicia i cyrkulacyjne obroty. Funkcja ta posiada szereg możliwości i może być użyta zależnie od kreatywności gracza.
* **Target Group ID** - ustala grupę, którą ma ruszyć dany trigger.
* **Move Time** - długość w sekundach i milisekundach ruchu danej grupy obiektów. Pozwala ona określić prędkość ruchu bloków. Suwak pozwala na maksymalne 10 sekund, jednakże w polu można wpisać większą liczbę.

Move Trigger w edytorze wyświetlany jest jako różowe kółko z cyfrą, która określa daną grupę obiektów.

    Pulse Trigger pozwala stworzyć tymczasowe zmiany kolorów, bądź efekty "pulsowania", które często są używane w bardziej intensywnych segmentach. Oprócz tego, umożliwiają one również zmianę barw przedmiotów, których nie da się zmienić za pomocą Color Triggerów (np. portali, pierścieni). Posiada on paletę kolorów, sposób edycji barw, możliwość ustalenia grupy, na którą ma wpływać (naciśnięcie plusa umożliwi wybór głównych kanałów, np. BG). Posiada on też opcję HSV, która działa podobnie jak paleta, lecz ustala kolory za pomocą suwaków.
Opcje "Fade In", "Hold" oraz "Fade Out" służą do ustalenia czasu pojawiania się, utrzymywania i zanikania danego efektu. Czas ustalany jest w milisekundach i suwak może ustalić maksymalnie 10 sekund, jednakże w polu można wpisywać większe wartości. Opcja "Group" i "Channel" ustala, czy celem zmian ma być grupa, czy dany kanał.

Pulse Trigger wyświetlany jest jako żółte kółko z liczbą na nim, która określa grupę, na którą on wpływa.

Alpha Trigger pozwala ustalić przezroczystość danych przedmiotów. Działa podobnie do przezroczystości barw, jednakże wpływa on również na obiekty interakcyjne (portale, pierścienie, itd.). Umożliwia on również ustalanie tymczasowej przezroczystości, jak i stworzenie mniej widocznych lub niewidzialnych portali, pierścieni itd.

Obsługa ich jest bardzo prosta. Wystarczy ustalić ID danej grupy, przezroczystość i długość trwania efektu.

Alpha Triggery ukazują się jako błękitne kółka z liczbą na nich, która określa daną grupę.

Toggle Trigger jest specjalnym triggerem, który umożliwia aktywację i dezaktywację określonych grup obiektów. Dzięki temu twórcy poziomów mogą w szybki sposób usunąć lub włączyć dużą ilość przedmiotów na raz. Są one częstym wyborem dla osób, które używają aktywatorów tzw. "Low Detail Mode".

Toggle Triggery ukazują się jako czerwone kółka z liczbą na nich, która określa daną grupę.

Spawn Trigger jest specjalnym aktywatorem, który włącza triggery z włączoną funkcją "Spawn Triggered". W przeciwieństwie do pozostałych triggerów, nie da się ustawić, aby działanie było w stylu "Spawn Triggered".

Spawn Triggery ukazują się jako kółka o morskiej barwie z liczbą na nich.
Trail Trigger jest specjalnym obiektem, który służy jako walor estetyczny planszy. Włącza on tzw. efekt cienia, który podąża za ikoną. Często jest używany w szybszych lub bardziej napiętych segmentach. Istnieje jego aktywator i dezaktywator.

Entrance/Exit Trigger to specjalny trigger, który określa sposób pojawiania się i znikania bloków. Określane są blokami z różnego typu strzałkami obok nich. Istnieje wiele ich typów:

* Brak przejścia.
* Bloki pojawiają się, wychodząc z dołu i znikają, idąc w górę.
* Bloki pojawiają się, idąc w górę i znikając, spadając w dół.
* Bloki pojawiają się z prawej strony i znikają idąc w prawo.
* Bloki pojawiają się z lewej strony i znikają idąc w lewo.
* Bloki znikają z lewej strony i pojawiają się z prawej.
* Bloki znikają z prawej strony i pojawiają się z lewej.
* Bloki wyskakują zza gracza i znikają przed graczem.
* Bloki wyskakują przed graczem i znikają za nim.
* Bloki wyskakują jednocześnie z góry i doły, znikając w dół i w górę.
* Bloki wyskakują jednocześnie z dołu i góry, znikając w górę i w dół.

Pozwala kręcić się blokom, wokół innych lub wIokół własnej osi. Zostały dodane w aktualizacji 2.1. Mają budowę podobną do move triggera.

* Jak ma się kręcić (-360-360)
* Ile razy ma obrócić się o 360 stopni (0-10)
* Czas obracania (0-9999)
* Rodzaj obracania (np. none, back in out)
* Grupa centra
* Grupa objektu

## Inne opcje

* Opcje pauzy
* Inne informacje

Po naciśnięciu klawisza pauzy, wyświetla się menu wraz z wieloma innymi ustawieniami. Podstawowymi środkowymi są:

* **Resume** - powraca do edytora.
* **Save and Play** - zapisuje stan planszy i uruchamia jej test.
* **Save And Exit** - zapisuje stan planszy i wraca do menu gry.
* **Exit** - wraca do menu bez zapisywania stanu. Przed wyjściem gra zapyta czy gracz jest pewien wyboru.

W lewym boku znajduje się szereg dodatkowych opcji:

* **Preview Mode** - włącza tryb podglądu, który pokazuje jak poziom będzie wyglądał podczas gry. Funkcja została dodana w Update 2.0.
* **Show Ground** - wyświetla lub ukrywa podłogę. Usunięcie jej pozwala ustawiać pod nią bloki.
* **Grid On Top** - włącza linie, które pojawiają się wraz z triggerami, specjalnymi obiektami oraz pasek podczas uruchomienia muzyki.
* **Show Grid** - włącza lub ukryta kratki, które mogą ułatwić budowanie.
* **Show Object Info** - wyświetla wygląd po ustawieniach bloku, zarówno jak i informacje o nim.
* **Effect Lines** - włącza/wyłącza niebieskie linie triggerów.
* **Follow Player** - włącza/wyłącza podążanie kamery za graczem podczas testów.
* **Playtest Music** - włącza/wyłącza możliwość podsłuchu muzyki podczas pobytu w edytorze.
* **Ignore Damage** - wyłącza lub włącza kolizję z blokami podczas rysowania linii w edytorze.

* **Object Limit** - określa limit bloków możliwych do ustawienia. Wynosi on 30,000 obiektów. Start Pos i podzielony tekst nie zaliczają się do limitu.
* **Length** - wyświetla długość poziomu, jak i jego ilość minut i sekund.
* **Music Guidelines** - wyświetla lub wyłącza zasady i porady dotyczące korzystania z niestandardowej muzyki.
* **Help** - prowadzi do samouczka dotyczącego edytora.
* **Options** - pozwala ustalić sposób wyświetlania się przedmiotów w liście. Możliwe jest ustawienie ilości obiektów na linię i ilość linii.
* **Reset Unused** - resetuje nieużywane kanały kolorów i czyni je dostępnymi dla funkcji "Next Free".
* **Uncheck Portals** - odznacza portale w edytorze.

## Błędy

Jeżeli gracz podąży zbyt mocno poza tysięcznym kanałem kolorów, gra się zawiesi. Jest to prawdopodobnie błąd wersji Steam.

* Czasami można natrafić na tzw. "Move Bug", który powoduje, że wszelkie ruchome bloki na początku poziomu (lub w start pos) ulegną przesunięciu w odwrotną stronę. Błąd nie występuje zbyt często, jednakże może namieszać w poziomach, co może zmusić gracza do stawiania na nowo triggerów. RobTop potwierdził, że błąd zostanie poprawiony w wersji 2.1.
* W wersji Steam występuje rzadki błąd, który powoduje, że po zaznaczeniu danego obiektu i kliknięciu na następny, ten poprzedni się sklonuje (nie testowane na wersji mobilnej, prawdopodobnie nie występuje w niej).
* Również w wersji Steam, gdy włączymy przycisk testowania poziomu (odtworzenia poziomu w edytorze, tak jak normalny poziom), a potem przycisk 1, 2 lub 3, wyświetli się nam tabela Build, Edit lub Delete. Można w ten sposób edytować i przechodzić poziom jednocześnie.
* Po włączeniu ignore damage i odpowiednim ustawieniu pochyłych bloków jest szansa na to że nasza postać zatrzyma się w miejscu. Nie dotyczy to tylko fali.

## Ciekawostki

* Niektóre poziomy wyświetlają błędną długość:
	+ Five Nights Pollapo trwa tylko 45 sekund, a oryginał wyświetla długość "Long".
	+ Bloodbath oznaczony jest jako poziom XL, mimo że trwa nieco poniżej dwóch minut.
	+ Jeżeli ustawi się objekt przyspieszający lub spowalniający nad poziomem, a szybkość poziomu jest inna niż ten obiekt i wcześniej niż on, edytor pomyśli, że jest to szybkość np. 0.5 gdy tak na prawdę jest to szybkość np. 3.
	+ Jeżeli gracz pobierze kopię poziomu, często zdarza się, że w liście kopii wyświetli on długość "Tiny". Testowanie i zapisywanie poziomów naprawia ten błąd.
* Jeżeli gracz wprowadzi wulgarne słowo do nazwy etapu, zostanie ono zastąpione myślnikiem.
* W wersji 1.0 gracz mógł zweryfikować poziom w Practice Mode, jednakże w Update 1.1 zostało to usunięte.
* Samouczek ukazany w grze jest bardzo przestarzały i nigdy nie był aktualizowany od czasów oficjalnego wydania.
* Kolory od 1000 do 1006 i 1009 zarezerwowane są dla tła, linii, kontur oraz barw podłogi.
* Po wpisaniu niektórych polskich znaków (np.: Ł) pojawia się inna litera (np. A, B).