Frameworki kodowe
Limity i błędy
Limity projektu oraz komunikaty, które możesz zobaczyć, razem z poprawkami.
Limity
| Limit | Wartość |
|---|---|
| Rozmiar źródła | 8 MiB |
| Rozmiar skompilowanej gry | 16 MiB |
| Pliki | 1000 |
| Frameworki | 64 |
| Pliki scenariuszy | 512 |
| Zestawy treści na framework | 512 |
| Zestawy treści na grę | 2048 |
| Akcje na framework | 96 |
| Akcje na grę | 192 |
| Funkcje ledgera na framework | 64 |
| Ramki na framework | od 1 do 16 |
| Ramki na grę | 128 |
| Sekcje na framework | 64 |
| Opcje danych wejściowych | od 2 do 128 |
| Zapisane kroki akcji na projekt | 512 |
| Kroków na akcję | 64 |
| Kroków na scenariusz | 32 |
| Sprawdzeń ledgera na scenariusz | 32 |
| Oczekiwanych zapisów na krok | 64 |
Wiersze powyżej ograniczają twoje źródło. Fabled kompiluje też twoje źródło w jedną grę, a ta skompilowana gra musi mieć mniej niż 16 MiB, zanim będzie można ją przygotować.
Serwer sprawdza te same limity jeszcze raz, gdy przygotowujesz grę, i jego werdykt jest ostateczny.
Błędy i poprawki
Każdy wiersz cytuje część komunikatu. Komunikat w The Forge może dodawać plik, linię lub nazwy, których dotyczy.
| Komunikat | Przyczyna | Poprawka |
|---|---|---|
| Project contains undeclared source files: rules/extra.ts. | Istnieją pliki, do których nic się nie odwołuje. Komunikat podaje do pięciu ścieżek oraz liczbę pozostałych plików. | Porównaj pliki drzewa z manifestem i schematami. Usunięcie funkcji ledgera zostawia jej plik reguł, więc usuń też ten plik. |
| Missing or misplaced project source. | Wymieniona ścieżka nie ma pliku albo plik jest w złym folderze. | Popraw ścieżkę albo dodaj plik. |
| Unrecognized key(s) in object | Plik JSON używa pola, którego format nie zna. | Usuń pole albo popraw jego pisownię. |
| Input name is hidden, so it must declare a defaultValue. | Ukryte dane wejściowe nie mają wartości domyślnej. | Dodaj defaultValue albo pokaż dane wejściowe. |
| must be one of its options | Wartości domyślnej nie ma na liście opcji. | Użyj jednej z opcji jako wartości domyślnej. |
| Parameter max_hp 99 is not between 1 and 40. | Scenariusz lub preset łamie ograniczenia danych wejściowych. | Zmień wartość albo ograniczenia. |
| is not assigned to any section | Sekcje istnieją, ale dane wejściowe nie należą do żadnej. | Dodaj dane wejściowe do sekcji. |
| Duplicate semantic identity or source path. | Dwa elementy mają to samo id albo ten sam plik źródłowy. | Daj każdemu własne id i plik. |
| Invalid child Framework constraint | Miejsce podrzędne wskazuje framework spoza gry. | Użyj id frameworka z tej gry. |
| Ledger function must target an existing scalar field. | To pole nie jest jednym z tych, które zwraca konstruktor. | Zwróć pole z konstruktora albo popraw nazwę. |
| must define the required 'name' value | Konstruktor nie zwraca nazwy. | Zwróć pole tekstowe o nazwie name. |
| The entry framework must be a character constructor. | Framework wejściowy z manifestu nie jest postacią. | Wskaż w entryFramework framework postaci. |
| while loops are not allowed | Reguła używa pętli, która może się nie skończyć. | Użyj for of. |
| is a host global and not part of the TypeScript subset | Reguła używa Math albo innego obiektu globalnego. | Użyj wywołań hosta, na przykład math.min. |
| import is not allowed | Reguła importuje kod. | Umieść logikę w samym pliku reguły. |
| must return a value on every reachable path | Funkcja z typem zwracanym ma ścieżkę bez return. | Zwróć wartość na każdej ścieżce albo zadeklaruj void. |
| is not declared on this schema | Akcja zapisuje pole, którego konstruktor nie zwraca. | Zwróć pole z konstruktora albo popraw nazwę. |
| FRAME_BINDING_UNKNOWN | Ramka wiąże pole, które nie istnieje. | Powiąż zadeklarowane pole. |
| ACTION_MISSING | Przycisk wskazuje alias akcji, który nie istnieje. | Zadeklaruj alias albo popraw nazwę. |
| Expected ordered writes | Akcja zapisała coś innego niż expectedWrites. | Popraw regułę albo oczekiwane zapisy. |
| Constructor output does not match its scenario. | expectedValues różni się od tego, co zwraca konstruktor. | Popraw scenariusz albo konstruktor. |
| SCENARIO_COVERAGE_MISSING | Akcja nie ma kroku scenariusza. | Dodaj co najmniej jeden krok dla akcji. |
| is a non-writable state field | Akcja zapisuje wartość, którą wylicza funkcja ledgera. | Zapisz pole przechowywane i pozwól funkcji ledgera wyliczyć resztę. |
| Action accesses require literal keys on self. | Akcja wskazuje pole przez wartość zamiast przez tekst zapisany w kodzie. | Wpisz nazwę pola w cudzysłowie. Użyj jednej akcji dla każdego pola. |
| functions but only the action | Plik akcji eksportuje dwie funkcje. | Eksportuj jedną funkcję na plik akcji albo współdziel plik między akcjami. Funkcje pomocnicze zostaw bez export. |
| the step expects it to be refused with | Krok oczekuje odmowy, ale akcja nie została odrzucona. | Usuń expectedRefusal albo popraw ofertę, aby odmawiała. |
| Add expectedRefusal | Krok listy został odrzucony, ale tego nie mówi. | Dodaj expectedRefusal z kodem i bez zapisów. |
| Every ledger function needs an executable scenario. | Funkcja ledgera nie ma wpisu na liście ledger żadnego scenariusza. | Dodaj wpis ledgera z id funkcji, currentValue i oczekiwanym wynikiem. |
| effectful action helpers are not supported | Funkcja pomocnicza zapisuje przez ledger.set lub ledger.add. | Niech funkcja pomocnicza zwraca wartość, a zapisz ją w akcji. |
| is not a writable state field | Lista fields wymienia pole, które nie jest zapisywane, na przykład wyprowadzane przez funkcję ledgera. | Wymień tylko zapisane pola, które zwraca konstruktor. |
| is not satisfied: roll.missing | Scenariusz używa metody roll bez zapisanych rzutów albo używa jej preset, a rzucać może tylko serwer. | W scenariuszu dodaj poolRolls z jednym slotem na wartość. Preset nie może używać roll, więc daj puli inną metodę dla presetów. |
| The roll dice must be one group such as | Kości w roll nie tworzą jednej grupy jak "3d6", na przykład 3d6x5. | Zapisz jedną grupę kości, a mnożnik umieść w kluczu multiplier. |
| outside the min/max of input | Kości mogą dać sumę, której wejście nie dopuszcza. | Poszerz min i max wejść albo zmień kości. |
| give exactly one roll per input. | Wartość count w roll różni się od liczby danych wejściowych puli. | Ustaw count na liczbę danych wejściowych. |
| must offer exactly the methods of pool | Opcje wejścia wybierającego metodę różnią się od metod puli. | Niech opcje będą nazwami metod, bez dodatków i braków. |
| Required | Brakuje klucza, którego potrzebuje format. Panel Problemy pokazuje listę JSON. | Przeczytaj ścieżkę na liście. Wskazuje brakujący klucz. Dodaj go. |
| Expected number, received string | Klucz schematu ma zły typ. Panel Problemy pokazuje listę JSON. | Przeczytaj path z listy. Wskazuje klucz, na przykład inputs, max_hp, min. Popraw tę wartość. |
The Forge wyświetla problemy dla każdego pliku w sekcji Problemy. Problem z regułą podaje też linię i kolumnę. Gdy konstruktor się nie zgadza, komunikat wymienia pierwsze różnice i kończy się liczbą pominiętych. Popraw wymienione i sprawdź ponownie.

